Created On: 06 January 2011
Problem:
Given a date for example yyyymmdd how can we establish the day of the week (for example Sunday, Monday etc.)
Resolution:
The following program may help:
*****************************************
*****************************************
Working-storage section.
01 INPUT-DATE.
05 INPUT-YY PIC 9(4).
05 INPUT-MM PIC 9(2).
05 INPUT-DD PIC 9(2).
01 INTEGER-DATE REDEFINES INPUT-DATE.
05 INT-DATE PIC 9(8).
*
01 WEEK-DAY PIC 9.
01 DISP-DATE.
05 FILLER PIC X(9) VALUE
"Monday ".
05 FILLER PIC X(9) VALUE
"Tuesday ".
05 FILLER PIC X(9) VALUE
"Wednesday".
05 FILLER PIC X(9) VALUE
"Thursday ".
05 FILLER PIC X(9) VALUE
"Friday ".
05 FILLER PIC X(9) VALUE
"Saturday ".
05 FILLER PIC X(9) VALUE
"Sunday ".
01 FILLER REDEFINES DISP-DATE.
05 DISP-DAY PIC X(9) OCCURS 7.
*
Procedure Division.
START-UP.
DISPLAY SPACES.
*
*NOTE: FUNCTION CURRENT-DATE returns an Alphanumeric
* value and therefore the accepting field must
* be alphanumeric.
*
* MOVE FUNCTION CURRENT-DATE TO INPUT-DATE. (For todays date)
*
* or
ACCEPT INT-DATE AT 1001.
* This returns the day of week for a given date, where 0 is
* Sunday, 1 is Monday etc...
COMPUTE WEEK-DAY =
* FUNCTION REM (FUNCTION INTEGER-OF-DATE (INT-DATE), 7) 1.
FUNCTION REM (FUNCTION INTEGER-OF-DATE (INT-DATE), 7).
* Because Sunday is 0 this needs to be adjusted for the subscript
* for the DISP-DATE table.
IF WEEK-DAY = 0
MOVE 7 TO WEEK-DAY.
DISPLAY DISP-DAY (WEEK-DAY) AT 1201.
STOP RUN.
*****************************************
*****************************************
Working-storage section.
01 INPUT-DATE.
05 INPUT-YY PIC 9(4).
05 INPUT-MM PIC 9(2).
05 INPUT-DD PIC 9(2).
01 INTEGER-DATE REDEFINES INPUT-DATE.
05 INT-DATE PIC 9(8).
*
01 WEEK-DAY PIC 9.
01 DISP-DATE.
05 FILLER PIC X(9) VALUE
"Monday ".
05 FILLER PIC X(9) VALUE
"Tuesday ".
05 FILLER PIC X(9) VALUE
"Wednesday".
05 FILLER PIC X(9) VALUE
"Thursday ".
05 FILLER PIC X(9) VALUE
"Friday ".
05 FILLER PIC X(9) VALUE
"Saturday ".
05 FILLER PIC X(9) VALUE
"Sunday ".
01 FILLER REDEFINES DISP-DATE.
05 DISP-DAY PIC X(9) OCCURS 7.
*
Procedure Division.
START-UP.
DISPLAY SPACES.
*
*NOTE: FUNCTION CURRENT-DATE returns an Alphanumeric
* value and therefore the accepting field must
* be alphanumeric.
*
* MOVE FUNCTION CURRENT-DATE TO INPUT-DATE. (For todays date)
*
* or
ACCEPT INT-DATE AT 1001.
* This returns the day of week for a given date, where 0 is
* Sunday, 1 is Monday etc...
COMPUTE WEEK-DAY =
* FUNCTION REM (FUNCTION INTEGER-OF-DATE (INT-DATE), 7) 1.
FUNCTION REM (FUNCTION INTEGER-OF-DATE (INT-DATE), 7).
* Because Sunday is 0 this needs to be adjusted for the subscript
* for the DISP-DATE table.
IF WEEK-DAY = 0
MOVE 7 TO WEEK-DAY.
DISPLAY DISP-DAY (WEEK-DAY) AT 1201.
STOP RUN.
Incident #2494958
Old KB# 32812
#DAYOFWEEK