Sri, stunning as usual !
ICETOOL is really terrific ..... and I've learnt much more (CHANGE for instance). Thanks a lot. Max Il giorno gio 9 gen 2020 alle ore 02:16 Sri h Kolusu <[email protected]> ha scritto: > > Please "light us" with the trick. > > Max, > > Here is the trick job I was talking about. Basically you resize the record > into 4 byte chunks and use 4 IFTHEN statements to space out the record. > This job will work for any LRECL 1-9999(assuming you adjust the pos and > lengths) and if you want to handle LRECL (10000 - 32760), then it would be > a 5 byte resize. > > //*************************************************************** > //** CREATE SAMPLE DATA WITH LRECL=101 AND RECFM=FB ** > //*************************************************************** > //STEP0050 EXEC PGM=SORT > //SYSOUT DD SYSOUT=* > //SORTIN DD * > H 01 COMMENT: "01" IS SIGNIFICANT DATA COLUMNS > D 12345XYZ ABC DEF > D 45678GHI JKL MNO > H 05 COMMENT: "05" IS SIGNIFICANT DATA COLUMNS > D 12345XYZ ABC DEF > D 45678GHI JKL MNO > H 10 > D 1234567890 ABCDEFGHIJKL > D 9876543210 MNOPQWRSTUVWXYZ > H 98 > Y A234567890 ABCDEFGHIJKL > Y B876543210 MNOPQWRSTUVWXYZ > Y C876543210 MNOPQWRSTUVWXYZ > H 99 > Z A234567890 ABCDEFGHIJKL > Z B876543210 MNOPQWRSTUVWXYZ > Z C876543210 MNOPQWRSTUVWXYZ > //SORTOUT DD DSN=&&IN,DISP=(,PASS),SPACE=(CYL,(1,1),RLSE) > //SYSIN DD * > OPTION COPY > INREC IFOUTLEN=101, > IFTHEN=(WHEN=(1,3,CH,EQ,C'Y A'),OVERLAY=(3:98C'A',C'@')), > IFTHEN=(WHEN=(1,3,CH,EQ,C'Y B'),OVERLAY=(3:98C'B',C'#')), > IFTHEN=(WHEN=(1,3,CH,EQ,C'Y C'),OVERLAY=(3:98C'C',C'$')), > IFTHEN=(WHEN=(1,3,CH,EQ,C'Z A'),OVERLAY=(3:99C'X',C'@')), > IFTHEN=(WHEN=(1,3,CH,EQ,C'Z B'),OVERLAY=(3:99C'Y',C'#')), > IFTHEN=(WHEN=(1,3,CH,EQ,C'Z C'),OVERLAY=(3:99C'Z',C'$')) > /* > //*************************************************************** > //** BLANK OUT THE DETAIL RECORD WITH LENGTH VALUE ON HEADER ** > //*************************************************************** > //STEP0100 EXEC PGM=ICETOOL > //TOOLMSG DD SYSOUT=* > //DFSMSG DD SYSOUT=* > //INP DD DISP=SHR,DSN=&&IN > //TMP DD DSN=&&TMP,DISP=(,PASS),SPACE=(CYL,(1,1),RLSE) > //OUT DD SYSOUT=* > //TOOLIN DD * > RESIZE FROM(INP) TO(TMP) TOLEN(004) USING(CTL1) > RESIZE FROM(TMP) TO(OUT) TOLEN(108) USING(CTL2) > //CTL1CNTL DD * > OMIT COND=(3,2,ZD,LT,1) > INREC IFOUTLEN=108, > IFTHEN=(WHEN=INIT, > BUILD=(C'00',2X,1,101)), > IFTHEN=(WHEN=GROUP,BEGIN=(5,1,CH,EQ,C'H'), > PUSH=(03:7,2)), > IFTHEN=(WHEN=INIT, > OVERLAY=(01:01,4,ZD,ADD,+2,EDIT=(TTTT), > 01:5,1,CHANGE=(4,C'H',C'0101'), > NOMATCH=(1,4))) > > OUTFIL IFOUTLEN=4, > IFTHEN=(WHEN=GROUP,RECORDS=27,PUSH=(6:1,4,ID=8)), > IFTHEN=(WHEN=INIT, > OVERLAY=(20:SEQNUM,4,ZD,START=0,INCR=4,RESTART=(6,12), > 26:06,4,ZD,SUB,20,4,ZD,ZD,LENGTH=4)), > IFTHEN=(WHEN=(26,4,ZD,EQ,-1),OVERLAY=(4:1X)), > IFTHEN=(WHEN=(26,4,ZD,EQ,-2),OVERLAY=(3:2X)), > IFTHEN=(WHEN=(26,4,ZD,EQ,-3),OVERLAY=(2:3X)), > IFTHEN=(WHEN=(26,4,ZD,LE,-4),OVERLAY=(1:4X)) > /* > //CTL2CNTL DD * > OUTFIL BUILD=(5,101) > /* > > Thanks, > Kolusu > > > ---------------------------------------------------------------------- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to [email protected] with the message: INFO IBM-MAIN > ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
