Skolusu
Senior Member
Joined: 07 Dec 2007 Posts: 2205 Location: San Jose
|
|
|
|
zh_lad,
The following DFSORT JCL will give you the desired results
Code: |
//STEP0100 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD DSN=Your 1 record date file,DISP=SHR
//SORTOUT DD DSN=&&S,DISP=(,PASS),SPACE=(TRK,(1,0),RLSE)
//SYSIN DD *
SORT FIELDS=COPY
INREC IFTHEN=(WHEN=INIT,OVERLAY=(89:+1,SUB,1,4,ZD,EDIT=(TTTT))),
IFTHEN=(WHEN=INIT,OVERLAY=(81:1,4,ZD,MOD,+4,EDIT=(T),
82:1,4,ZD,MOD,+100,EDIT=(TTT),85:1,4,ZD,MOD,+400,EDIT=(TTT),
93:89,4,ZD,MOD,+4,EDIT=(T),94:89,4,ZD,MOD,+100,EDIT=(TTT),
97:89,4,ZD,MOD,+400,EDIT=(TTT))),
IFTHEN=(WHEN=(85,3,ZD,EQ,0,OR,(81,1,ZD,EQ,0,AND,82,3,ZD,GT,0)),
OVERLAY=(88:C'L'),HIT=NEXT),
IFTHEN=(WHEN=(97,3,ZD,EQ,0,OR,(93,1,ZD,EQ,0,AND,94,3,ZD,GT,0)),
OVERLAY=(100:C'L'),HIT=NEXT),
IFTHEN=(WHEN=(07,02,ZD,EQ,01),OVERLAY=(11:1,4,5,2,ZD,EDIT=(TTT))),
IFTHEN=(WHEN=(07,02,ZD,EQ,02),
OVERLAY=(11:1,4,+031,ADD,5,2,ZD,EDIT=(TTT))),
IFTHEN=(WHEN=(07,02,ZD,EQ,03),
OVERLAY=(11:1,4,+059,ADD,5,2,ZD,EDIT=(TTT))),
IFTHEN=(WHEN=(07,02,ZD,EQ,04),
OVERLAY=(11:1,4,+090,ADD,5,2,ZD,EDIT=(TTT))),
IFTHEN=(WHEN=(07,02,ZD,EQ,05),
OVERLAY=(11:1,4,+120,ADD,5,2,ZD,EDIT=(TTT))),
IFTHEN=(WHEN=(07,02,ZD,EQ,06),
OVERLAY=(11:1,4,+151,ADD,5,2,ZD,EDIT=(TTT))),
IFTHEN=(WHEN=(07,02,ZD,EQ,07),
OVERLAY=(11:1,4,+181,ADD,5,2,ZD,EDIT=(TTT))),
IFTHEN=(WHEN=(07,02,ZD,EQ,08),
OVERLAY=(11:1,4,+212,ADD,5,2,ZD,EDIT=(TTT))),
IFTHEN=(WHEN=(07,02,ZD,EQ,09),
OVERLAY=(11:1,4,+243,ADD,5,2,ZD,EDIT=(TTT))),
IFTHEN=(WHEN=(07,02,ZD,EQ,10),
OVERLAY=(11:1,4,+273,ADD,5,2,ZD,EDIT=(TTT))),
IFTHEN=(WHEN=(07,02,ZD,EQ,11),
OVERLAY=(11:1,4,+304,ADD,5,2,ZD,EDIT=(TTT))),
IFTHEN=(WHEN=(07,02,ZD,EQ,12),
OVERLAY=(11:1,4,+334,ADD,5,2,ZD,EDIT=(TTT)))
OUTREC IFOUTLEN=80,
IFTHEN=(WHEN=(88,1,CH,EQ,C'L',AND,7,2,ZD,GT,2),
OVERLAY=(15:+1,ADD,15,03,ZD,EDIT=(TTT))),
IFTHEN=(WHEN=(15,3,ZD,LE,5,AND,100,1,CH,EQ,C' '),
OVERLAY=(11:89,4,15:+365,ADD,15,3,ZD,EDIT=(TTT))),
IFTHEN=(WHEN=(15,3,ZD,LE,5,AND,100,1,CH,EQ,C'L'),
OVERLAY=(11:89,4,15:+366,ADD,15,3,ZD,EDIT=(TTT)))
OUTFIL BUILD=(C'TARGET_DATE,C''',11,4,
15,3,ZD,SUB,+5,EDIT=(TTT),C'''',80:X)
//*
//STEP0200 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SYMNAMES DD DSN=&&S,DISP=SHR
//SORTIN DD DSN=your main input file,DISP=SHR
//SORTOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY
INCLUDE COND=(28,7,CH,GE,TARGET_DATE)
//* |
|
|