That's begging the question. The only reason that you would need read-ahead is if you wanted he current behavior. Nothing else in the Converter works that way.
-- Shmuel (Seymour J.) Metz http://mason.gmu.edu/~smetz3 ________________________________________ From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of Tony Thigpen [t...@vse2pdf.com] Sent: Monday, March 30, 2020 9:29 AM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: PARM= vs PARMDD= and symbol substitution Actually, it makes sense to me, in a strange way. I don't know if I can describe why it makes sense, but I will try. 1) An // EXEC card is read and a 'step' begins. The // EXEC card itself must be interpreted. 2) The rest of the step 'stuff' (until the next // EXEC) is read in to the pre-processor. 3) The pre-processor first handles things that don't require read-ahead processing to the end of the step. 4) The pre-processor next handles things that did require read-ahead processing, such as "//PARMDD DD *,SYMBOLS=JCLONLY" that it could not process on the first pass. Now, why it worked without PARMDD is because the '// EXEC' is processed and intrepreted before all the "let's get the step stuff now" logic (step 2 above). Like I say, hard to describe. Tony Thigpen Windt, W.K.F. van der (Fred) wrote on 3/30/20 7:50 AM: > Based on the doc I expected these two JCL variations to behave 100% > equivalent (assuming the program van handle any parameter length): > > //STEP1 EXEC PGM=program,PARM='parameter with symbols' > > And > > //STEP1 EXEC PGM=program,PARM=PARMDD > //PARMDD DD *,SYMBOLS=JCLONLY > parameter with symbols > /* > But unexpected stuff happens when you add SET statements between job steps. > > // SET VRB=VALUE1 > //STEP1 EXEC PGM=program,PARM='&VRB' > //* > // SET VRB=VALUE2 > //STEP2 EXEC PGM=program,PARM='&VRB' > //* > // SET VRB=VALUE3 > //STEP3 EXEC PGM=program,PARM='&VRB' > > Behaves as expected. In STEP1 the program in invoked with parameter VALUE1, > in STEP2 with parameter VALUE2 and in STEP3 with parameter VALUE3. > > If I change the JCL to this: > > // SET VRB=VALUE1 > //STEP1 EXEC PGM=program,PARM=PARMDD > //PARMDD DD *,SYMBOLS=JCLONLY > &VRB > /* > //* > // SET VRB=VALUE2 > //STEP2 EXEC PGM=program,PARM=PARMDD > //PARMDD DD *,SYMBOLS=JCLONLY > &VRB > /* > //* > // SET VRB=VALUE3 > //STEP3 EXEC PGM=program,PARM=PARMDD > //PARMDD DD *,SYMBOLS=JCLONLY > &VRB > /* > > Does not behave 'logical' at all. In STEP1 the program is invoked with > parameter VALUE2, in STEP2 and STEP3 with parameter VALUE3. It seems SET > statement that follow the current EXEC statement (but before the next EXEC > statement) are processed before the PARMDD= parameter is constructed. > > I can't find any documentation that specifies this behavior. Is this a bug? > > Regardz, > > Fred! > > ----------------------------------------------------------------- > ATTENTION: > The information in this e-mail is confidential and only meant for the > intended recipient. If you are not the intended recipient, don't use or > disclose it in any way. Please let the sender know and delete the message > immediately. > ----------------------------------------------------------------- > > ---------------------------------------------------------------------- > 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 ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN