On Mon, 30 Mar 2020 09:29:35 -0400, Tony Thigpen wrote: >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. > Sucks. WAD. Sucks.
I raised this issue here several years ago and got the (condescending, IIRC) explanation: Of course it works that way. The converter(?) builds a control block listing all EXPORTed JCL symbol definitions for the step and passes that to the interpreter. I suspect the substitution is actually performed by JES during execution. I had tried to use different values of the same symbol name in multiple SYSINs in the same step. I resorted to a cumbersome renaming so names would be distinct. IBM could have done better. IBM doesn't care. -- gil ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN