On Tue, 2 Nov 2021 11:39:17 -0500, Tom Wasik wrote:

>How the internal reader handles instream data sets is documented here:
>https://www.ibm.com/docs/en/zos/2.4.0?topic=reader-record-length-sysin-data-sets
>https://www.ibm.com/docs/en/zos/2.4.0?topic=reader-sysin-record-formats
>Also note that JES2 and JES3 work differently.  
>
Thanks.  I had neglected to check the JES hooks,  But the JCL Ref. for "DD *" 
amd
"DD DATA" ought to include citations of that JES passage.

An omission I discovered by experiment which should be documented:
    If no record exceeds 80 bytes (even if lengths differ),
    attributes will be RECFM=FB,LRECL=80.

>But bottom line, for JES2, everything is based on the actual length of each 
>record written.  This gets a little tricky with TSO SUBMIT (or ISPF SUBMIT) 
>commands.  SUBMIT always writes records with a record length of 80.  So all 
>instream data sets are RECFM F and LRECL 80 when SUBMIT is involved.  For 
>other uses of the internal reader, as already stated, the RECFM is F if all 
>records are the same length (including if there are 0 or 1 records).  If the 
>lengths of the record vary, the RECFM is V.  CC is supported if the JCL 
>(records) are written with CC (eg using IEBGENER from a RECFM VBM data set) 
>and the RECFM is adjusted accordingly (fun rules for if there are both ASA and 
>machine CC).
>   
That "fun rule" ought to be documented.  Your second citation says,
" ... If both ASA and Machine carriage control are detected, the record format 
will be set in the RECFM."
It ought to show RECFM=what?

>Instream data set LRECL for RECFM F data sets is the length of the records.  
>If there are 0 records (null data set), it is the length of the DD * or DD 
>DATA card (very old rule).  For RECFM V data sets, the LRECL is set to the 
>length of the longest record in the instream data.  
>
ITYM 4 + the length of the longest record.

Very terrible "very old rule"  Is it documented?

>Note for all of this, each instream data set is processed separately.  So each 
>data set can have a different LRECL/RECFM.
>
Is that documented?

>As for LRECL on the DD * or DD DATA card, JES2 ignored this until APAR 
>OA60172.  Starting with that APAR, if an instream data set is RECFM F and 
>LRECL is specified, JES2 will pad records for the data set up to the LRECL 
>specified.  This helps when using instream data concatenated to other RECFM F 
>data sets.
>
>This is not to say that LRECL was totally ignored on a DD * or DD DATA card.  
>When the DCB access method is used to read an instream data set (vs ACB/RPLs), 
>the size of the buffer the access method passes to JES is determined by the 
>LRECL specified on the DD.  Also note that in a concatenation, the RECFM is 
>determined by the first DD in the concatenation.  A customer trying to 
>concatenate a RECFM V data set to a RECFM F instream data set with LRECL 
>specified led to APAR OA62088.  You see the fix for APAR OA60172 added too 
>much padding to an instream data set.  Basically, LRECL on the instream DD 
>statement in that case included the 4 byte RDW prefix but the ACB/RPL 
>interface passes the actual length so padding to LRECL made the record 4 bytes 
>too long.
>
>Hopefully this enlightens a bit on how all this works.

I submitted an RCF yesterday.

>Tom
>JES2 Development

Thanks,
gil

----------------------------------------------------------------------
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