AFAIK a space is not permitted in PL/I between an identifier and the left 
parenthesis for the subscripts. If that is correct then

    IF (1) = (2);

can easily be recognized as an IF statement.

Id do, however, agree that it is very bad form to knowingly use a keyword as an 
identifier.


--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3

________________________________________
From: IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU> on behalf of 
Bernd Oppolzer <bernd.oppol...@t-online.de>
Sent: Tuesday, July 16, 2019 2:22 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Where put the notional constant in a condition (Was RE: JCL COND 
Parameter)

This double meaning of =, together with the absence of reserved words
makes PL/1 parsing extremely hard. Consider for example

IF (1) = (2);

now what does that mean?

Given a declaration

DCL IF (25) BIN FIXED (31);

that is, if IF is an array of integers, the "IF" statement above is a
valid assignment
of 2 to the array element 1. The PL/1 compiler does not know that the
statement
above is no IF statement before it encounters the semicolon; before that
it has
to consider both possibilities ... this is completely different from
most other
languages (only Fortran has similar issues).

I always thought that nobody would be as silly as to name his or her
identifiers IF,
but then I observed a program containing the following:

DCL IA BIN FIXED (15)  /* index for TABA */
DCL IB BIN FIXED (15)  /* index for TABB */
DCL IC BIN FIXED (15)  /* index for TABC */
DCL ID BIN FIXED (15)  /* index for TABD */
DCL IE BIN FIXED (15)  /* index for TABE */
DCL IF BIN FIXED (15)  /* index for TABF */

the coder probably didn't even notice the use of IF as variable name :-))

Long live PL/1 :-)))

Kind regards

Bernd


Am 16.07.2019 um 20:04 schrieb Seymour J Metz:
> One of the things that I liked about Algol was that "=" was always a 
> comparison operator; assignment was ":=". But even in PL/I that particular 
> error is impossible: the "=" in "IF foo=bar" can never be interpreted as 
> assignment.
>
>
> --
> Shmuel (Seymour J.) Metz
> http://mason.gmu.edu/~smetz3
>

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to