I have a weekly job which is run generally between Friday-Sunday.
However in special circumstances,this may change to any week day.
The o/p file has a field START-DATE which needs to be populated
with the date of MONDAY in that week.
Eg:
Job run on Friday(2008/05/02)
START DATE should be 2008/04/28
Job run on Saturday(2008/05/03)
START DATE should be 2008/04/28
Job run on Sunday(2008/05/04)
START DATE should be 2008/04/28
Could this be accomplished through DFSORT or is COBOL program the only way to achieve this?
Joined: 07 Dec 2007 Posts: 2205 Location: San Jose
Puspojit,
The following DFSORT JCL will give you the desired results. I assumed that your input file is 80 bytes as LRECL and FB RECFM. I also assumed that you wanted the START Date field propaged in pos 20 in CCYY-MM-DD format. if you need someother format then let me know and we can change the job accordingly.
We use the system symbol LWDAY system symbol which gives you the day of the week for current date. Based on this field we pick the date using IFTHEN statement
Code:
//STEP0100 EXEC PGM=ICEMAN
//SYMNAMES DD *
DAYNAME,S'&LWDAY'
//SYSOUT DD SYSOUT=*
//SORTIN DD *
RECORD - 01
RECORD - 02
RECORD - 03
RECORD - 04
RECORD - 05
RECORD - 06
RECORD - 07
//SORTOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY
OUTREC IFOUTLEN=80,
IFTHEN=(WHEN=INIT,OVERLAY=(81:DAYNAME,DATE1(-)-1,
DATE1(-)-2,DATE1(-)-3,DATE1(-)-4,DATE1(-)-5,DATE1(-)-6)),
IFTHEN=(WHEN=(81,3,CH,EQ,C'MON'),OVERLAY=(20:DATE1(-))),
IFTHEN=(WHEN=(81,3,CH,EQ,C'TUE'),OVERLAY=(20:084,10)),
IFTHEN=(WHEN=(81,3,CH,EQ,C'WED'),OVERLAY=(20:094,10)),
IFTHEN=(WHEN=(81,3,CH,EQ,C'THU'),OVERLAY=(20:104,10)),
IFTHEN=(WHEN=(81,3,CH,EQ,C'FRI'),OVERLAY=(20:114,10)),
IFTHEN=(WHEN=(81,3,CH,EQ,C'SAT'),OVERLAY=(20:124,10)),
IFTHEN=(WHEN=(81,3,CH,EQ,C'SUN'),OVERLAY=(20:134,10))
/*