Tags

, , , , , , , , , , , ,

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

Advertisements