Rational Developer for System z
COBOL for Windows バージョン 7.5 プログラミング・ガイド


CEEDYWK - リリアン日付からの曜日の計算

CEEDYWK は、リリアン日付の曜日を 1 から 7 までの数字として計算します。

CEEDYWK から戻される数値から、曜日を計算することができます。

CALL CEEDYWK の構文
構文図を読む構文図をスキップする>>-CALL--"CEEDYWK"--USING--input_Lilian_date,--output_day_no,--->
 
>--fc.---------------------------------------------------------><
 
input_Lilian_date (入力)
リリアン日付 (1582 年 10 月 14 日から数えた日数) を表す 32 ビットの 2 進整数。

例えば、1988 年 5 月 16 日は、日数 148138 に相当します。input_Lilian_date の有効範囲は 1 から 3,074,324 (1582 年 10 月 15 日から 9999 年 12 月 31 日) です。

output_day_no (出力)
input_Lilian_date の曜日を表す 32 ビットの 2 進整数 (1 = 日曜日、2 = 月曜日、. . . 7 = 土曜日)。

input_Lilian_date が無効な場合は、output_day_no が 0 に設定され、CEEDYWK が終了して非 CEE000 シンボリック・フィードバック・コードが戻されます。

fc (出力)
このサービスの結果を示す 12 バイトのフィードバック・コード (オプション)。

表 88. CEEDYWK のシンボリック条件
シンボリック・フィードバック・コード 重大度 メッセージ番号 メッセージ・テキスト
CEE000 0 サービスが正しく完了した。
CEE2EG 3 2512 CEEDATE または CEEDYWK への呼び出しで渡されたリリアン日付値が、対応範囲内にありませんでした。

CBL LIB
      ************************************************
      **                                            **
      ** 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.

ご利用条件 | フィードバック

Copyright IBM Corporation 1996, 2008.
このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)