Oppolzer - Informatik / Blog


Blog-Hauptseite      Neuester Artikel      Älterer Artikel      Neuerer Artikel      Älterer gleiche Kategorie      Neuerer gleiche Kategorie

PL1-L - Fehler im PL/1-Makroprozessor im Zusammenhang mit ANSWER

Subject:

Re: Internal preprocessor error

From:

Bernd Oppolzer <bernd.oppolzer@T-ONLINE.DE>

Reply-To:

PL1 (language) discussions <PL1-L@LISTSERV.DARTMOUTH.EDU>

Date:

2014.02.17 10:59:22


Hello list members,

just to keep you informed:

P. and myself continued the communication on this topic by private mail,
I sent P. some sources with the problem narrowed down to this error message
from the preprocessor

IBM3997I S    2802.0    Internal preprocessor error: no WHEN clause
                        satisfied within EXP_GET_STR_LEN

it is indeed a problem in the preprocessor and P. will PTF it in the near
future. As always, P. was very helpful with this problem.

Thank you,
have a nice day

Bernd



Am 11.02.2014 22:24, schrieb P.E.:
> Hi Bernd,
>
> but I can explain the messages about the unmatched quotes:
>
> the lines
>
>           R = '** ENDE UPRO '' !! ';
>           ANSWER (R) SKIP;
>
> will try to put out the text
>
>          ** ENDE UPRO ' !!
>
> but before the text is put out it must be rescanned and when it is an umatched
> quote will be found and the message you see will be issued.
>
> The same thing happens (with more quotes involved) with the lines
>
>           R = '   L(''['' !! PGMNAME !! ''] ';
>           ANSWER (R) SKIP;
>
> The rescanning (and the messages) can be avoided by adding NOSCAN to the ANSWER
> statements or by insuring no answer text is quite that incomplete.
>
> - P.
>
>
>
>
> From:        Bernd Oppolzer <bernd.oppolzer@T-ONLINE.DE>
> To:        PL1-L@listserv.dartmouth.edu,
> Date:        02/11/2014 11:57 AM
> Subject:        Internal preprocessor error
> Sent by:        "PL1 (language) discussions" <PL1-L@listserv.dartmouth.edu>
>
>
>
> Hello all,
>
> I have some difficulties with a PL/1 macro (preprocessor function)
> I wrote. The macro tries to activate another macro by producing an
> output string containing the call of the other macro using ANSWER
> statements.
>
> When I do it like this, all works well:
>
>  %XTRACEB: PROC ();
>
>           DCL R CHAR;
>
>           R =      'ZAKQTRCP IF_PRINT_TRACE_LEVEL ';
>           R = R !! '   (TRACE_LEVEL_DIAGNOSTIC) ';
>           R = R !! '   L(''['' !! PGMNAME !! ''] ';
>           R = R !! '** START UPRO '' !! ';
>           R = R !! 'PROCNAME () !! '' **'') ';
>           R = R !! 'ENDIF_TRACE;';
>           ANSWER (R) SKIP;
>
>           %END;
>
> I get the coding that the ZAKQTRCP macro provides.
>
> When I do it like this
>
>  %XTRACEE: PROC ();
>
>           DCL R CHAR;
>
>           R = 'ZAKQTRCP IF_PRINT_TRACE_LEVEL ';
>           ANSWER (R) SKIP;
>           R = '   (TRACE_LEVEL_DIAGNOSTIC) ';
>           ANSWER (R) SKIP;
>           R = '   L(''['' !! PGMNAME !! ''] ';
>           ANSWER (R) SKIP;
>           R = '** ENDE UPRO '' !! ';
>           ANSWER (R) SKIP;
>           R = 'PROCNAME () !! '' **'') ';
>           ANSWER (R) SKIP;
>           R = 'ENDIF_TRACE;';
>           ANSWER (R) SKIP;
>
>           %END;
>
> I get the following messages:
>
>
> MACRO (Built:20100917) Messages
> Message       Line.File Message Description
> IBM3983I S    2802.0    Premature end-of-source in scan.
> IBM3961I S    2802.0    End-of-source has been encountered after an
>                         unmatched quote.
> IBM3961I S    2802.0    End-of-source has been encountered after an
>                         unmatched quote.
> IBM3997I S    2802.0    Internal preprocessor error: no WHEN clause
>                         satisfied within EXP_GET_STR_LEN
> No Compiler Messages
>
>
> and the Compiler ends without producing anything.
>
> The line 2802 refers to the source line of the first macro call XTRACEE.
> Compilation stops after processing this line. I have no idea what
> EXP_GET_STR_LEN is; maybe an internal procedure name of the preprocessor.
> It is in any case no name of my program.
>
> The difference IMO is (apart from minor differences between the two macros)
> that in the first case the whole text is built in variable R and there is only one
> ANSWER statement; in the second case, there are many ANSWER statements -
> which should be possible - in other situations, it worked without problem.
>
> Of course, the solution was to code both macros like the first one. But anyway:
> what do you think of this? Is this an error in the preprocessor that should be
> resolved? Or: do I use some sort of strange feature that is not supported?
>
> The compiler is EP V3.9, AFAIK - didn't copy the release information,
> but: see the build date in 2010, above.
>
> Thank you, kind regards
>
> Bernd
>
>
>

Blog-Hauptseite      Neuester Artikel      Älterer Artikel      Neuerer Artikel      Älterer gleiche Kategorie      Neuerer gleiche Kategorie