krisprems
Active Member
Joined: 27 Nov 2006 Posts: 649 Location: India
|
|
|
|
kregen
I dont know if a built in function is availbale in DFSORT to do this, but i have resolved this using IFTHEN clause.
The code goes like this
Code: |
//*******************************************************
//STEP1 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD *
20050205
20080702
20070101
20070107
20081231
20080201
/*
//SORTOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY
INREC IFTHEN=(WHEN=(5,2,ZD,EQ,01),
OVERLAY=(10:07,02,ZD,LENGTH=4),HIT=NEXT),
IFTHEN=(WHEN=(5,2,ZD,EQ,02),
OVERLAY=(10:+31,ADD,07,02,ZD,LENGTH=4),HIT=NEXT),
IFTHEN=(WHEN=(5,2,ZD,EQ,03),
OVERLAY=(10:+59,ADD,07,02,ZD,LENGTH=4),HIT=NEXT),
IFTHEN=(WHEN=(5,2,ZD,EQ,04),
OVERLAY=(10:+90,ADD,07,02,ZD,LENGTH=4),HIT=NEXT),
IFTHEN=(WHEN=(5,2,ZD,EQ,05),
OVERLAY=(10:+120,ADD,07,02,ZD,LENGTH=4),HIT=NEXT),
IFTHEN=(WHEN=(5,2,ZD,EQ,06),
OVERLAY=(10:+151,ADD,07,02,ZD,LENGTH=4),HIT=NEXT),
IFTHEN=(WHEN=(5,2,ZD,EQ,07),
OVERLAY=(10:+181,ADD,07,02,ZD,LENGTH=4),HIT=NEXT),
IFTHEN=(WHEN=(5,2,ZD,EQ,08),
OVERLAY=(10:+212,ADD,07,02,ZD,LENGTH=4),HIT=NEXT),
IFTHEN=(WHEN=(5,2,ZD,EQ,09),
OVERLAY=(10:+243,ADD,07,02,ZD,LENGTH=4),HIT=NEXT),
IFTHEN=(WHEN=(5,2,ZD,EQ,10),
OVERLAY=(10:+273,ADD,07,02,ZD,LENGTH=4),HIT=NEXT),
IFTHEN=(WHEN=(5,2,ZD,EQ,11),
OVERLAY=(10:+304,ADD,07,02,ZD,LENGTH=4),HIT=NEXT),
IFTHEN=(WHEN=(5,2,ZD,EQ,12),
OVERLAY=(10:+334,ADD,07,02,ZD,LENGTH=4),HIT=NEXT),
IFTHEN=(WHEN=(1,4,ZD,GT,+0000),
OVERLAY=(20:1,4,ZD,MOD,+4,LENGTH=2),HIT=NEXT),
IFTHEN=(WHEN=(20,1,ZD,EQ,+0,&,5,2,ZD,GE,02),
OVERLAY=(10:10,3,ZD,ADD,+1,LENGTH=4),HIT=NEXT),
IFTHEN=(WHEN=(10,3,ZD,GT,+000),
OVERLAY=(10:10,3,ZD,DIV,+7,LENGTH=4))
OUTREC BUILD=(1,15)
/*
|
SORTOUT contains
Code: |
----+----1----+
20050205 5
20080702 26
20070101 0
20070107 1
20081231 52
20080201 4
|
Where column 1 to 8 is your i/p date and from 10 to 12 it is week number.
Please let me know, if i could help you more! |
|