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

Reply via email to