CEEDYWK—Calculate day of week from Lilian date

CEEDYWK calculates the day of the week on which a Lilian date falls. The day of the week is returned to the calling routine as a number between 1 and 7. The number returned by CEEDYWK is useful for end-of-week calculations.

Read syntax diagramSkip visual syntax diagram
Syntax

>>-CEEDYWK--(--input_Lilian_date--,--output_day_no--,--fc--)---><

input_Lilian_date (input)
A 32-bit binary integer representing the Lilian date, the number of days since 14 October 1582. For example, 16 May 1988 is day number 148138. The valid range of input_Lilian_date is between 1 and 3,074,324 (15 October 1582 and 31 December 9999).
output_day_no (output)
A 32-bit binary integer representing input_Lilian_date's day-of-week: 1 equals Sunday, 2 equals Monday, ..., 7 equals Saturday. If input_Lilian_date is invalid, output_day_no is set to 0 and CEEDYWK terminates with a non-CEE000 symbolic feedback code.
fc (output)
A 12-byte feedback code, optional in some languages, that indicates the result of this service. If you choose to omit this parameter, refer to Invoking callable services for the appropriate syntax to indicate that the feedback code was omitted.

The following symbolic conditions can result from this service:

Code Severity Message number Message text
CEE000 0 The service completed successfully.
CEE2EG 3 2512 The Lilian date value passed in a call to CEEDATE or CEEDYWK was not within the supported range.

Usage notes

  • z/OS UNIX consideration—In multithread applications, CEEDYWK affects only the calling thread.
  • COBOL consideration—The CEEDYWK callable service has different values than the COBOL ACCEPT statement with conceptual data item DAY-OF-WEEK. Use one or the other, not both.

Examples

  1. Following is an example of CEEDYWK called by C/C++.
    /*Module/File Name: EDCDYWK   */
    
    #include <string.h>
    #include <stdio.h>
    #include <leawi.h>
    #include <stdlib.h>
    #include <ceeedcct.h>
    
    int main (void) {
    
      _INT4 in_date, day;
      _FEEDBACK fc;
    
      in_date = 139370;  /* Thursday */
    
      CEEDYWK(&in_date,&day,&fc);
      if ( _FBCHECK ( fc , CEE000 ) != 0 ) {
         printf("CEEDYWK failed with message number %d\n",
                fc.tok_msgno);
         exit(2999);
      }
      printf("Lilian date %d, occurs on a ",in_date);
      switch(day) {
         case 1: printf("Sunday.\n");
                 break;
         case 2: printf("Monday.\n");
                 break;
         case 3: printf("Tuesday.\n");
                 break;
         case 4: printf("Wednesday.\n");
                 break;
         case 5: printf("Thursday.\n");
                 break;
         case 6: printf("Friday.\n");
                 break;
         case 7: printf("Saturday.\n");
                 break;
         default: printf(
               " ERROR! DAY RETURN BY CEEDYWK UNKNOWN\n");
                 break;
      }
    }
  2. Following is an example of CEEDYWK called by COBOL.
    CBL LIB,QUOTE
          *Module/File Name: IGZTDYWK
          ************************************************
          **                                            **
          ** CBLDYWK - Call CEEDYWK to calculate the    **
          **           day of the week from Lilian date **
          **                                            **
          ** In this example, a call is made to CEEDYWK **
          ** to return the day of the week on which a   **
          ** Lilian date falls. (A Lilian date is the   **
          ** number of days since 14 October 1582)      **
          **                                            **
          ************************************************
           IDENTIFICATION DIVISION.
           PROGRAM-ID. CBLDYWK.
           DATA DIVISION.
           WORKING-STORAGE SECTION.
           01  LILIAN                  PIC S9(9) BINARY.
           01  DAYNUM                  PIC S9(9) BINARY.
           01  IN-DATE.
               02  Vstring-length      PIC S9(4) BINARY.
               02  Vstring-text.
                   03  Vstring-char        PIC X,
                               OCCURS 0 TO 256 TIMES
                               DEPENDING ON Vstring-length
                                   of IN-DATE.
           01  PICSTR.
               02  Vstring-length      PIC S9(4) BINARY.
               02  Vstring-text.
                   03  Vstring-char        PIC X,
                               OCCURS 0 TO 256 TIMES
                               DEPENDING ON Vstring-length
                                   of PICSTR.
           01  FC.
               02  Condition-Token-Value.
               COPY  CEEIGZCT.
                   03  Case-1-Condition-ID.
                       04  Severity    PIC S9(4) BINARY.
                       04  Msg-No      PIC S9(4) BINARY.
                   03  Case-2-Condition-ID
                             REDEFINES Case-1-Condition-ID.
                       04  Class-Code  PIC S9(4) BINARY.
                       04  Cause-Code  PIC S9(4) BINARY.
                   03  Case-Sev-Ctl    PIC X.
                   03  Facility-ID     PIC XXX.
               02  I-S-Info            PIC S9(9) BINARY.
    
           PROCEDURE DIVISION.
           PARA-CBLDAYS.
          ** Call CEEDAYS to convert date of 6/2/88 to
          **     Lilian representation
               MOVE 6 TO Vstring-length of IN-DATE.
               MOVE "6/2/88" TO Vstring-text of IN-DATE(1:6).
               MOVE 8 TO Vstring-length of PICSTR.
               MOVE "MM/DD/YY" TO Vstring-text of PICSTR(1:8).
               CALL "CEEDAYS" USING IN-DATE, PICSTR,
                   LILIAN, FC.
    
          ** If CEEDAYS runs successfully, display result.
               IF  CEE000 of FC  THEN
                   DISPLAY Vstring-text of IN-DATE
                       " is Lilian day: " LILIAN
               ELSE
                   DISPLAY "CEEDAYS failed with msg "
                       Msg-No of FC UPON CONSOLE
                   STOP RUN
               END-IF.
           PARA-CBLDYWK.
    
          ** Call CEEDYWK to return the day of the week on
          ** which the Lilian date falls
               CALL "CEEDYWK" USING LILIAN , DAYNUM , FC.
    
          ** If CEEDYWK runs successfully, print results
               IF CEE000 of FC  THEN
                   DISPLAY "Lilian day " LILIAN
                       " falls on day " DAYNUM
                       " of the week, which is a:"
          ** Select DAYNUM to display the name of the day
          **     of the week.
                   EVALUATE DAYNUM
                     WHEN 1
                       DISPLAY "Sunday."
                     WHEN 2
                       DISPLAY "Monday."
                     WHEN 3
                       DISPLAY "Tuesday"
                     WHEN 4
                       DISPLAY "Wednesday."
                     WHEN 5
                       DISPLAY "Thursday."
                     WHEN 6
                       DISPLAY "Friday."
                     WHEN 7
                       DISPLAY "Saturday."
                   END-EVALUATE
               ELSE
                   DISPLAY "CEEDYWK failed with msg "
                       Msg-No of FC UPON CONSOLE
                   STOP RUN
               END-IF.
    
               GOBACK.
  3. Following is an example of CEEDYWK called by PL/I.