Tags
concatenate, dfsort, ICETOOL, include, into, mainframe, MERGE, multiple, omit, records, rows, single, SORT
ICETOOL has an option RESIZE which is helpful when we want to create large record (single row) by combining multiple rows. User need to know the input LRECL and the new LRECL needed for the output file.
Suppose you have input file (LRECL = 10) with each record length of 10 bytes, if you want to combine 3 records and create an output file (LRECL = 30) with 30 bytes, then use below sort jcl
//STEP01 EXEC PGM=ICETOOL
//SYSPRINT DD SYSOUT=*
//INFILE DD DISP=SHR,DSN=YOUR.INPUT.FILE
//OUTFILE DD DSN=YOUR.OUTPUT.FILE,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(5,1),RLSE),
// DCB=(RECFM=FB,LRECL=30,BLKSIZE=0)
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//TOOLIN DD *
RESIZE FROM(IN1) TO(OUT1) TOLEN(30)
//*
Ex:
Input File
1111111111
1111111111
1111111111
2222222222
2222222222
2222222222
Output File
111111111111111111111111111111
222222222222222222222222222222
Suppose you also have header and trailer records and you want to skip them and perform the above resize only on detail records, then use below sort jcl
//STEP01 EXEC PGM=ICETOOL
//SYSPRINT DD SYSOUT=*
//INFILE DD DISP=SHR,DSN=YOUR.INPUT.FILE
//OUTFILE DD DSN=YOUR.OUTPUT.FILE,
// DISP=(NEW,CATLG,DELETE),
// SPACE=(CYL,(5,1),RLSE),
// DCB=(RECFM=FB,LRECL=30,BLKSIZE=0)
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//TOOLIN DD *
RESIZE FROM(IN1) TO(OUT1) TOLEN(30) USING(CTL1)
//CTL1CNTL DD *
OMIT COND=(1,1,CH,EQ,C’H’,OR,1,1,CH,EQ,C’T’)
/*
Ex:
Input File
HHHHHHHHHH
1111111111
1111111111
1111111111
2222222222
2222222222
2222222222
TTTTTTTTTT
Output File
111111111111111111111111111111
222222222222222222222222222222
——————————————————————————————————–
If you would like to Earn Free Stocks, Credit card Points and Bank account Bonuses, Please visit My Finance Blog
——————————————————————————————————–
You may also like to look at: