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" <peter.far...@broadridge.com> To: IBM-MAIN@LISTSERV.UA.EDU Date: 07/12/2017 02:38 PM Subject: Is there a SORT day-of-week function? Sent by: IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU> 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 lists...@listserv.ua.edu with the message: INFO IBM-MAIN ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN