CEEDYWK: 计算从 Lilian 日期开始的一周中的第几天

CEEDYWK 计算 Lilian 日期作为介于 1 和 7 之间的数字的星期几。

CEEDYWK 返回的数字对于周终计算很有用。

CALL CEEDYWK 语法

读取语法图跳过可视语法图CALL"CEEDYWK"USING输入_Lilian_日期,输出日编号,FC.
input_Lilian_date (输入)
32 位二进制整数,表示 Lilian 日期,即自 1582 年 10 月 14 日以来的天数。

例如, 1988 年 5 月 16 日是第 148138 号日。 input_Lilian_date 的有效范围在 1 到 3,074,324 (1582 年 10 月 15 日和 9999 年 12 月 31 日) 之间。

output_day_no (输出)
32 位二进制整数,表示 input_Lilian_date的星期几: 1 等于 Sunday , 2 等于 Sunday ,.。 . , 7 等于星期六。

如果 input_Lilian_date 无效,那么 output_day_no 将设置为 0 ,并且 CEEDYWK 将终止并返回 non-CEE000 符号反馈代码。

fc (输出)
指示此服务结果的 12 字节反馈代码 (可选)。

表 1. CEEDYWK 符号条件
符号反馈代码 严重性 消息号 消息文本
CEE000 0 -- 服务已成功完成。
CEE2EG 3 2512 在对 CEEDATE 或 CEEDYWK 的调用中传递的 Lilian 日期值不在受支持的范围内。

示例


************************************************
**                                            **
** Function: 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) COMP.
             04  Msg-No      PIC S9(4) COMP.
         03  Case-2-Condition-ID
                   REDEFINES Case-1-Condition-ID.
             04  Class-Code  PIC S9(4) COMP.
             04  Cause-Code  PIC S9(4) COMP.
         03  Case-Sev-Ctl    PIC X.
         03  Facility-ID     PIC XXX.
     02  I-S-Info            PIC S9(9) COMP.

 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.