Peter,
DFSORT has an array of date related functions. To answer your question,
yes we can find the day of the week and even the week number too. We can
also get the NEXT or PREV day of the week based on a date.
Here is a simple example of getting the day of the week.
//STEP0100 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SYMNAMES DD *
DAYOFWEEK,S'&LWDAY'
//SORTIN DD *
PETER
//SORTOUT DD SYSOUT=*
//SYSIN DD *
OPTION COPY
INREC OVERLAY=(10:DAYOFWEEK)
//*
The output will be
PETER THU
If you need to create the NEXT day of week date based on the day of the
week of the current date then you can use the following
//STEP0100 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SORTIN DD *
PETER
//SORTOUT DD SYSOUT=*
//SYSIN DD *
OPTION COPY
INREC IFOUTLEN=80,
IFTHEN=(WHEN=INIT,
OVERLAY=(10:DATE1,
81:10,8,Y4T,WEEKDAY=CHAR3)),
IFTHEN=(WHEN=(81,3,SS,EQ,C'MON,TUE'),
OVERLAY=(20:10,8,Y4T,NEXTDFRI,TOGREG=Y4T)),
IFTHEN=(WHEN=(81,3,SS,EQ,C'WED,THU,FRI,SAT,SUN'),
OVERLAY=(20:10,8,Y4T,NEXTDMON,TOGREG=Y4T))
OUTFIL REMOVECC,
HEADER1=(10:'CURRDATE',20:'NEXTDATE',/,
10:'--------',20:'--------')
The output from this is
CURRDATE NEXTDATE
-------- --------
PETER 20170713 20170717
If you need to go back to previous days then also it is quite simple.
Simply change the NEXTDday to PREVDday
NEXTDday can be used to calculate the next specified day for a date field.
As a simple example, you could use the following to calculate the next
Friday for a C'ccyyddd' date as a C'ccyy.ddd' date:
3,7,Y4T,NEXTDFRI,TOJUL=Y4T(.)
PREVDday can be used to calculate the previous specified day for a date
field. As a simple example, you could use the following to calculate the
previous Wednesday for a P'yyddd' date as a C'ccyymmdd' date:
51,3,Y2U,PREVDWED,TOGREG=Y4T
Further if you have any questions please let me know
Thanks,
Kolusu
DFSORT Development
IBM Corporation
From: "Farley, Peter x23353" <[email protected]>
To: [email protected]
Date: 07/12/2017 02:38 PM
Subject: Is there a SORT day-of-week function?
Sent by: IBM Mainframe Discussion List <[email protected]>
Is there any way in SORT control cards (either DFSORT or SYNCSORT) to test
for a certain day of the week? Something like this, assuming '3'
represents the DOW value for Wednesday:
OUTREC IFTHEN=(WHEN=(DOW(&DATE1),EQ,3),
BUILD=(C'WEDNESDAY=DATE VALUE +
5',&DATE1+5)),
IFTHEN=(WHEN=(DOW(&DATE1),NE,3),
BUILD=(C'NOT-WEDNESDAY=DATE VALUE +
3',&DATE1+3))
I have searched in both vendors' FM's but I did not find any indication of
such a function.
I know I can handle such a requirement in an exit routine (and more
flexibly as well), but I was hoping someone already needed such a function
and one of the vendors already provided a solution, maybe with an SPE
(documented or not).
TIA for any help you can provide.
Peter
This message and any attachments are intended only for the use of the
addressee and may contain information that is privileged and confidential.
If the reader of the message is not the intended recipient or an
authorized representative of the intended recipient, you are hereby
notified that any dissemination of this communication is strictly
prohibited. If you have received this communication in error, please
notify us immediately by e-mail and delete the message and any attachments
from your system.
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN