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

Reply via email to