Martin Kline wrote:

| //BUILD   EXEC PGM=IEBGENER                          
| //SYSUT1   DD  *                                     
| RECORD 1 PLUS SOME EXTRANEOUS CHARACTERS  > 40       
| RECORD 2 PLUS SOME EXTRANEOUS CHARACTERS  > 40       
| RECORD 3 PLUS SOME EXTRANEOUS CHARACTERS  > 40       
| RECORD 10 PLUS SOME EXTRANEOUS CHARACTERS > 40       
| RECORD 11 PLUS SOME EXTRANEOUS CHARACTERS > 40       
| RECORD 12 PLUS SOME EXTRANEOUS CHARACTERS > 40       
| //SYSUT2   DD  DISP=(,PASS),SPACE=(TRK,1),           
| //             DSN=&ORIG,                           
| //             RECFM=FB,LRECL=80,BLKSIZE=8000        
| //SYSIN    DD  DUMMY                                 
| //SYSPRINT DD  SYSOUT=*                              
| //*----------------------------------------------    
| //*  COPY THE FIRST 40 BYTES OF EACH INPUT RECORD    
| //*----------------------------------------------    
| //SORT1   EXEC PGM=SORT                              
| //SORTIN   DD  DISP=(OLD,PASS),DSN=&ORIG            
| //SORTOUT  DD  DISP=(,PASS),UNIT=SYSDA,SPACE=(TRK,1),
| //             DCB=(RECFM=FB,LRECL=24,BLKSIZE=2400), 
| //             DSN=&TEMP1                           
| //SORTMSG  DD  DUMMY                              
| //SYSIN    DD  *                                     
|  SORT FIELDS=(1,8,CH,A)                              
|  OUTREC FIELDS=(1,40)                                
| //*-----------------------------------------------   
| //*  EXPAND THE RECORDS FROM THE COPY                
| //*-----------------------------------------------   
| //SORT2   EXEC PGM=SORT                              
| //SORTIN   DD  DISP=(OLD,PASS),DSN=&TEMP1           
| //SORTOUT  DD  DISP=(,PASS),UNIT=SYSDA,SPACE=(TRK,1),
| //             DCB=*.SORT1.SORTIN,DSN=&TEMP2        
| //SORTMSG  DD  DUMMY                              
| //SYSIN    DD  *                                     
|  SORT FIELDS=(3,7,CH,A)                              
| //*                                                  

> how many bytes will be in the output TEMP2 file? 

The answer centers around the answers to two questions: 

(1) What DCB characteristics will the SORTOUT data set 
    in step SORT2 actually end up having?

(2) How does the SORT utility behave with that DCB?

The answers are as follows:

(1) DCB=*.SORT1.SORTIN on the SORTOUT DD statement in
    step SORT2 is useless, because there is no DCB in
    the JFCB to copy (because there was no DCB on the
    referenced DD statement). And there will still be 
    none after the step executes, because that DDNAME
    will have been OPENed for INPUT.

    Consequently, data set &TEMP2 will be allocated
    with undefined DCB characteristics (of interest). 

    It is possible that SMS or installation controls
    or OEM products could cause this to be different,
    so not all sites will necessarily experience the
    same results.

(2) In step SORT2, ICEMAN will discover that the output
    data set has "missing" DCB characteristics and will
    copy the DCB characteristics from the &TEMP1 data
    set referenced by DDNAME SORTIN. I don't know what
    SYNCSORT will do but it should probably do exactly
    the same thing (at least it used to do so, in my 
    memory).

Thus, the DCB of &TEMP2 will, I predict, end up being
LRECL=24. Hence, with 6 input records, there will be
6 * 24 = 144 bytes in the &TEMP2 data set. 

Ulrich Krueger wrote: 

> I suspect that your TEMP2 dataset ended up with a LRECL=80 
> (as requested by the DCB=*.SORT1.SORTIN referback), 

Nope. It will end up being LRCEL=24 as discussed above.

> but you only had 24 bytes of data in each record (as 
> truncated by the DCB of SORT1.SORTOUT). 

That is true, but only because the SORT utility normally
ensures that the SORTOUT data set will have an LRECL that
is consistent with the SORTIN data set (and NOT because 
of the DCB=*.SORT1.SORTIN referback).


The key to understanding all of this is the fact that 
the DCB=*.SORT1.SORTIN parameter on the SORTOUT DD 
statement in step SORT2 accomplishes exactly nothing. 

--
WB

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

Reply via email to