View previous topic :: View next topic
Author
Message
iniyavan555 Currently Banned New User Joined: 21 Feb 2012Posts: 8 Location: india
Hi All,
I need to Display the day of the week of the provious date.
Actaully my dataset will contain Yesterdays Data,I have to display the Data of the week along with the Yesterdays date.Is it Possuiblw thru JCL ,I need to avoid cobol.
Actaully todays date is 14/04,My dataset will contain 13/04
13/04/2012 xxxxx
13/04/2012 yyyyy
I have to display as
FRI 13/04/2012 xxxxx
FRI 13/04/2012 yyyyy
Thanks,
Shanth
Back to top
prino Senior Member Joined: 07 Feb 2009Posts: 1306 Location: Vilnius, Lithuania
JCL can only be used to direct the execution of programs, you cannot use it to fulfil your requirements. PERIOD!
Back to top
Bill Woodger Moderator Emeritus Joined: 09 Mar 2011Posts: 7309 Location: Inside the Matrix
Why do you have to avoid Cobol? Some allergy?
Which Sort product do you have?
Look in its manual for date functions, and do some intelligent searching hear and with google for day mnemonics.
Back to top
Bill O'Boyle CICS Moderator Joined: 14 Jan 2008Posts: 2501 Location: Atlanta, Georgia, USA
You can probably do this using DATE Functions in a REXX exec....
Back to top
David Robinson Active User Joined: 21 Dec 2011Posts: 199 Location: UK
Indeed you can. The Rexx statement -
SAY DATE("W",'13/04/12',"E")
will return the value "Friday". You will need to drop the century from your input date and convert the output to "FRI".
Back to top
saiprasadh Active User Joined: 20 Sep 2006Posts: 154 Location: US
Hi,
I mentioned sort card for DFSORT & SYNCSORT
DFSORT:
Code:
//STEP010 EXEC PGM=SORT
//SORTIN DD *
13/04/2012 XXXXX
13/04/2012 YYYYY
/*
//SORTOUT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY
INREC OVERLAY=(20:4,2,22:1,2,24:7,4)
OUTREC FIELDS=(1:20,8,Y4W,WEEKDAY=CHAR3,4:X,5:1,16,80:X)
/*
Output:
Code:
FRI 13/04/2012 XXXXX
FRI 13/04/2012 YYYYY
Sync Sort:
Code:
//STEP030 EXEC PGM=SORT
//SORTIN DD *
13/04/2012 XXXXX
13/04/2012 YYYYY
14/04/2012 YYYYY
15/04/2012 YYYYY
16/04/2012 YYYYY
/*
//SORTOUT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY
INREC OVERLAY(21:1,2,23:4,2,25:7,4,
29:((21,2,ZD,ADD,
((+13,MUL,(23,2,ZD,ADD,+1)),DIV,+5),
ADD,
(25,4,ZD,MOD,+100),
ADD,
((25,4,ZD,MOD,+100),DIV,+4),
ADD,
((25,4,ZD,DIV,+100),DIV,+4)),
SUB,
(+2,MUL,(25,4,ZD,DIV,+100))),MOD,+7,
80:X)
OUTREC IFTHEN=(WHEN=(43,1,ZD,EQ,0),
BUILD=(1:C'SAT ',5:1,16,80:X)),
IFTHEN=(WHEN=(43,1,ZD,EQ,1),
BUILD=(1:C'SUN ',5:1,16,80:X)),
IFTHEN=(WHEN=(43,1,ZD,EQ,2),
BUILD=(1:C'MON ',5:1,16,80:X)),
IFTHEN=(WHEN=(43,1,ZD,EQ,3),
BUILD=(1:C'TUE ',5:1,16,80:X)),
IFTHEN=(WHEN=(43,1,ZD,EQ,4),
BUILD=(1:C'WED ',5:1,16,80:X)),
IFTHEN=(WHEN=(43,1,ZD,EQ,5),
BUILD=(1:C'THU ',5:1,16,80:X)),
IFTHEN=(WHEN=(43,1,ZD,EQ,6),
BUILD=(1:C'FRI ',5:1,16,80:X))
/*
Output:
Code:
FRI 13/04/2012 XXXXX
FRI 13/04/2012 YYYYY
SAT 14/04/2012 YYYYY
SUN 15/04/2012 YYYYY
MON 16/04/2012 YYYYY
Formula to find Day of the week is mentioned in below link
http://en.wikipedia.org/wiki/Zeller%27s_congruence
Back to top
Skolusu Senior Member Joined: 07 Dec 2007Posts: 2205 Location: San Jose
saiprasadh,
I am not sure if you got the Zeller's_congruence formula correct. can you run the same jobs once again with the following sample data and check if you get the right day of week against the current year calendar?
Code:
01/01/2012
01/02/2012
01/03/2012
01/04/2012
01/05/2012
01/06/2012
02/01/2012
02/02/2012
02/03/2012
02/04/2012
02/05/2012
03/01/2012
03/02/2012
03/04/2012
03/05/2012
04/02/2012
04/03/2012
04/04/2012
04/05/2012
You will end up getting 75 records with incorrect day of week for the current year 2012 using the formula you have shown above.
Back to top
saiprasadh Active User Joined: 20 Sep 2006Posts: 154 Location: US
Hi Kolusu,
You are right i didn't select the right formula. Please find the sort card after correction
Code:
//STEP010 EXEC PGM=SORT
//SORTIN DD *
01/01/2012 XXXXX
01/02/2012 XXXXX
01/03/2012 XXXXX
01/04/2012 XXXXX
01/05/2012 XXXXX
01/06/2012 XXXXX
02/01/2012 XXXXX
02/02/2012 XXXXX
02/03/2012 XXXXX
02/04/2012 XXXXX
02/05/2012 XXXXX
03/01/2012 XXXXX
03/02/2012 XXXXX
03/04/2012 XXXXX
03/05/2012 XXXXX
04/02/2012 XXXXX
04/03/2012 XXXXX
04/04/2012 XXXXX
04/05/2012 XXXXX
/*
//SORTOUT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSIN DD *
SORT FIELDS=COPY
INREC IFTHEN=(WHEN=INIT,
OVERLAY(21:1,2,23:4,2,25:7,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=(4,2,ZD,EQ,1,OR,4,2,ZD,EQ,2),
OVERLAY(21:1,2,23:4,2,ZD,ADD,+12,TO=ZD,LENGTH=2,
25:7,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))
OUTREC IFTHEN=(WHEN=(43,1,ZD,EQ,0),
BUILD=(1:C'SAT ',5:1,16,80:X)),
IFTHEN=(WHEN=(43,1,ZD,EQ,1),
BUILD=(1:C'SUN ',5:1,16,80:X)),
IFTHEN=(WHEN=(43,1,ZD,EQ,2),
BUILD=(1:C'MON ',5:1,16,80:X)),
IFTHEN=(WHEN=(43,1,ZD,EQ,3),
BUILD=(1:C'TUE ',5:1,16,80:X)),
IFTHEN=(WHEN=(43,1,ZD,EQ,4),
BUILD=(1:C'WED ',5:1,16,80:X)),
IFTHEN=(WHEN=(43,1,ZD,EQ,5),
BUILD=(1:C'THU ',5:1,16,80:X)),
IFTHEN=(WHEN=(43,1,ZD,EQ,6),
BUILD=(1:C'FRI ',5:1,16,80:X))
/*
Output:
Code:
SUN 01/01/2012 XXXXX
WED 01/02/2012 XXXXX
THU 01/03/2012 XXXXX
SUN 01/04/2012 XXXXX
TUE 01/05/2012 XXXXX
FRI 01/06/2012 XXXXX
MON 02/01/2012 XXXXX
THU 02/02/2012 XXXXX
FRI 02/03/2012 XXXXX
MON 02/04/2012 XXXXX
WED 02/05/2012 XXXXX
TUE 03/01/2012 XXXXX
FRI 03/02/2012 XXXXX
TUE 03/04/2012 XXXXX
THU 03/05/2012 XXXXX
SAT 04/02/2012 XXXXX
SUN 04/03/2012 XXXXX
WED 04/04/2012 XXXXX
FRI 04/05/2012 XXXXX
Back to top
iniyavan555 Currently Banned New User Joined: 21 Feb 2012Posts: 8 Location: india
Hi Saiprasadh,
The code worked fine.
Thanks,
Shanth
Back to top
Please enable JavaScript!