> 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 lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to