View previous topic :: View next topic
Author
Message
sagarnsydney New User Joined: 12 Dec 2008Posts: 16 Location: sydney
I have a requirement to convert date from the format 25DEC10 to 2010/12/25.
Regards,
Sagar
Back to top
Guest
Hi Sagar,
I have come up with this solution:
Code:
//SORTIN DD *
25DEC10
//SORTOUT DD SYSOUT=*
//SYSIN DD *
OPTION COPY
INREC IFTHEN=(WHEN=(3,3,CH,EQ,C'JAN'),OVERLAY=(8:C'20',6,2,
C'/01/',1,2)),
IFTHEN=(WHEN=(3,3,CH,EQ,C'FEB'),OVERLAY=(8:C'20',6,2,
C'/02/',1,2)),
IFTHEN=(WHEN=(3,3,CH,EQ,C'MAR'),OVERLAY=(8:C'20',6,2,
C'/03/',1,2)),
IFTHEN=(WHEN=(3,3,CH,EQ,C'APR'),OVERLAY=(8:C'20',6,2,
C'/04/',1,2)),
IFTHEN=(WHEN=(3,3,CH,EQ,C'MAY'),OVERLAY=(8:C'20',6,2,
C'/05/',1,2)),
IFTHEN=(WHEN=(3,3,CH,EQ,C'JUN'),OVERLAY=(8:C'20',6,2,
C'/06/',1,2)),
IFTHEN=(WHEN=(3,3,CH,EQ,C'JUL'),OVERLAY=(8:C'20',6,2,
C'/07/',1,2)),
IFTHEN=(WHEN=(3,3,CH,EQ,C'AUG'),OVERLAY=(8:C'20',6,2,
C'/08/',1,2)),
IFTHEN=(WHEN=(3,3,CH,EQ,C'SEP'),OVERLAY=(8:C'20',6,2,
C'/09/',1,2)),
IFTHEN=(WHEN=(3,3,CH,EQ,C'OCT'),OVERLAY=(8:C'20',6,2,
C'/10/',1,2)),
IFTHEN=(WHEN=(3,3,CH,EQ,C'NOV'),OVERLAY=(8:C'20',6,2,
C'/11/',1,2)),
IFTHEN=(WHEN=(3,3,CH,EQ,C'DEC'),OVERLAY=(8:C'20',6,2,
C'/12/',1,2))
OUTREC BUILD=(8,10)
/*
Assumption: Year after 2000.
Devil13
There definitely is a better solution
Back to top
sagarnsydney New User Joined: 12 Dec 2008Posts: 16 Location: sydney
Hi devil13,
Thanks for quick response. Is there any other way using date predefined functions in SORT to achieve the result....
Sagar
Back to top
Skolusu Senior Member Joined: 07 Dec 2007Posts: 2205 Location: San Jose
sagarnsydney,
There are no built-in functions to convert the date in text form. Here is another way of getting the desired results which also performs a date validity check.
Code:
//STEP0100 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD *
25DEC10
//SORTOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY
INREC IFOUTLEN=80,
IFTHEN=(WHEN=INIT,OVERLAY=(81:3,3,1,2,6,2)),
IFTHEN=(WHEN=INIT,FINDREP=(STARTPOS=81,
INOUT=(C'JAN',C'01',C'FEB',C'02',C'MAR',C'03',
C'APR',C'04',C'MAY',C'05',C'JUN',C'06',
C'JUL',C'07',C'AUG',C'08',C'SEP',C'09',
C'OCT',C'10',C'NOV',C'11',C'DEC',C'12'))),
IFTHEN=(WHEN=INIT,OVERLAY=(81,6,Y2W,TOGREG=Y4T(/)))
//*
Back to top
Please enable JavaScript!