bodatrinadh
Active User
Joined: 05 Jan 2007 Posts: 101 Location: chennai (India)
|
|
|
|
Hi Ramsri
Quote: |
Bill Woodger got me right.....Is it possible to achieve it in SYNCSORT?
|
It can be achieved in SYNCSORT 1.4.0.1R.. Not sure in 1.3.2...
The below code will give you Day for your Date Vales...
Code: |
//STEP010 EXEC PGM=SORT
//SORTIN DD *
20121008 20121014
20121023 20121028
20121105 20121113
//SORTOUT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY
INREC IFTHEN=(WHEN=INIT,
OVERLAY(21:7,2,23:5,2,25:1,4,61:16,2,63:14,2,65:10,4,
29:(21,2,ZD,
ADD,
((+26,MUL,(23,2,ZD,ADD,+1)),DIV,+10),
ADD,
25,4,ZD,
ADD,
(25,4,ZD,DIV,+4),
ADD,
(+6,MUL,(25,4,ZD,DIV,+100)),
ADD,
(25,4,ZD,DIV,+400)),MOD,+7,
69:(61,2,ZD,
ADD,
((+26,MUL,(63,2,ZD,ADD,+1)),DIV,+10),
ADD,
65,4,ZD,
ADD,
(65,4,ZD,DIV,+4),
ADD,
(+6,MUL,(65,4,ZD,DIV,+100)),
ADD,
(65,4,ZD,DIV,+400)),MOD,+7,
80:X)),
IFTHEN=(WHEN=(5,2,ZD,EQ,1,OR,5,2,ZD,EQ,2),
OVERLAY(21:7,2,23:5,2,ZD,ADD,+12,TO=ZD,LENGTH=2,
25:1,4,ZD,SUB,+1,TO=ZD,LENGTH=4,
29:(21,2,ZD,
ADD,
((+26,MUL,(23,2,ZD,ADD,+1)),DIV,+10),
ADD,
25,4,ZD,
ADD,
(25,4,ZD,DIV,+4),
ADD,
(+6,MUL,(25,4,ZD,DIV,+100)),
ADD,
(25,4,ZD,DIV,+400)),MOD,+7,
80:X)),
IFTHEN=(WHEN=(14,2,ZD,EQ,1,OR,14,2,ZD,EQ,2),
OVERLAY(61:16,2,63:14,2,ZD,ADD,+12,TO=ZD,LENGTH=2,
65:1,4,ZD,SUB,+1,TO=ZD,LENGTH=4,
69:(61,2,ZD,
ADD,
((+26,MUL,(63,2,ZD,ADD,+1)),DIV,+10),
ADD,
65,4,ZD,
ADD,
(65,4,ZD,DIV,+4),
ADD,
(+6,MUL,(65,4,ZD,DIV,+100)),
ADD,
(65,4,ZD,DIV,+400)),MOD,+7,
80:X)),
IFTHEN=(WHEN=(43,1,ZD,EQ,0),
BUILD=(1:C'SAT ',5:1,17,83:83,1)),
IFTHEN=(WHEN=(43,1,ZD,EQ,1),
BUILD=(1:C'SUN ',5:1,17,83:83,1)),
IFTHEN=(WHEN=(43,1,ZD,EQ,2),
BUILD=(1:C'MON ',5:1,17,83:83,1)),
IFTHEN=(WHEN=(43,1,ZD,EQ,3),
BUILD=(1:C'TUE ',5:1,17,83:83,1)),
IFTHEN=(WHEN=(43,1,ZD,EQ,4),
BUILD=(1:C'WED ',5:1,17,83:83,1)),
IFTHEN=(WHEN=(43,1,ZD,EQ,5),
BUILD=(1:C'THU ',5:1,17,83:83,1)),
IFTHEN=(WHEN=(43,1,ZD,EQ,6),
BUILD=(1:C'FRI ',5:1,17,83:83,1))
OUTREC IFTHEN=(WHEN=(83,1,ZD,EQ,0),
OVERLAY=(25:C'SAT ')),
IFTHEN=(WHEN=(83,1,ZD,EQ,1),
OVERLAY=(25:C'SUN ')),
IFTHEN=(WHEN=(83,1,ZD,EQ,2),
OVERLAY=(25:C'MON ')),
IFTHEN=(WHEN=(83,1,ZD,EQ,3),
OVERLAY=(25:C'TUE ')),
IFTHEN=(WHEN=(83,1,ZD,EQ,4),
OVERLAY=(25:C'WED ')),
IFTHEN=(WHEN=(83,1,ZD,EQ,5),
OVERLAY=(25:C'THU ')),
IFTHEN=(WHEN=(83,1,ZD,EQ,6),
OVERLAY=(25:C'FRI '))
|
Output :-
Code: |
MON 20121008 20121014 SUN
TUE 20121023 20121028 SUN
MON 20121105 20121113 TUE
|
2. This Step will give your desire output...
Code: |
//*
//STEP010 EXEC PGM=SORT
//SORTIN DD *
MON 20121008 20121014 SUN
TUE 20121023 20121028 SUN
MON 20121105 20121113 TUE
//SORTOUT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
INREC IFTHEN=(WHEN=(1,3,CH,EQ,C'TUE'),
OVERLAY=(1:C'MON ',5:DATEADD=(5,8,DTNS=(4MD),-1,DAY))),
IFTHEN=(WHEN=(25,3,CH,EQ,C'TUE'),
OVERLAY=(25:C'MON ',14:DATEADD=(14,8,DTNS=(4MD),-1,DAY)))
SORT FIELDS=COPY
|
Output:-
Code: |
MON 20121008 20121014 SUN
MON 20121022 20121028 SUN
MON 20121105 20121112 MON
|
Note :- The above code is tested on SYNCSORT FOR Z/OS 1.4.0.1R
Thanks
-3nadh |
|