0
Me tiré unas horas entendiendo qué hace este código... He usado siempre el DFSORT, el ICETOOL es relativamente nuevo y viene a ser la evolución del DFSORT. He formateado registros y filtrado con IFTHEN pero este ejemplo me ha impresionadoJCL Código:
//SORT EXEC PGM=ICETOOL //TOOLMSG DD SYSOUT=* //DFSMSG DD SYSOUT=* //INF DD DISP=SHR,DSN=&INFILE //OUTF DD DISP=OLD,DSN=&PILOTE //* //TMP DD DISP=MOD,DSN=&&TEMP,UNIT=SYSDA,SPACE=(CYL,(5,15)) //TMPH DD DISP=MOD,DSN=&&TEMP1,UNIT=SYSDA,SPACE=(CYL,(1,5)) //TMPH2 DD DISP=MOD,DSN=&&TEMP2,UNIT=SYSDA,SPACE=(CYL,(1,5)) //TMPD DD DISP=MOD,DSN=&&TEMP3,UNIT=SYSDA,SPACE=(CYL,(5,15)) //TMPD2 DD DISP=MOD,DSN=&&TEMP4,UNIT=SYSDA,SPACE=(CYL,(1,5)) //* //TOOLIN DD * COPY FROM(INF) USING(CPY1) SELECT FROM(TMPH) TO(TMPH2) ON(7,17,ZD) FIRST USING(CPY2) SELECT FROM(TMPD) TO(TMPD2) ON(7,17,ZD) FIRST USING(CPY3) COPY JKFROM TO(TMP) USING(CPY4) COPY FROM(TMP) TO(OUTF) USING(CPY5) /* //CPY1CNTL DD * INREC BUILD=(SEQNUM,6,PD,42:X'00001C',45:X'0000001C',49:1,1,51:1,450) OUTREC IFTHEN=(WHEN=GROUP, BEGIN=(51,1,ZD,EQ,0), END=(51,1,ZD,EQ,6), PUSH=(7:52,17)) SORT FIELDS=(7,17,ZD,A) OUTFIL FNAMES=TMPH,INCLUDE=(51,1,ZD,EQ,0) OUTFIL FNAMES=TMPD,INCLUDE=(51,1,ZD,NE,0) OUTFIL FNAMES=TMP,INCLUDE=(51,1,ZD,NE,0), IFTHEN=(WHEN=GROUP, BEGIN=(51,1,ZD,EQ,1), END=(51,1,ZD,GT,5), PUSH=(24:52,25)) /* //CPY2CNTL DD * SUM FIELDS=(42,3,PD) /* //CPY3CNTL DD * SUM FIELDS=(45,4,PD) /* //CPY4CNTL DD * JOINKEYS F1=TMPH2,FIELDS=(7,17,A) JOINKEYS F2=TMPD2,FIELDS=(7,17,A) REFORMAT FIELDS=(F1:1,44,F2:45,4,F1:49,452) /* //CPY5CNTL DD * SORT FIELDS=(7,17,ZD,A,1,6,PD,A) OUTREC BUILD=(SEQNUM,6,PD,7:7,494) OUTFIL FNAMES=OUTF,IFTHEN=(WHEN=(1,6,PD,EQ,1), OVERLAY=(24:DATENS(4MD),32:TIMENS(24),38:C'DNAX')) /*
Marcadores