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


CEECBLDY - 日付から COBOL 整数形式への変換

CEECBLDY は、日付を表すストリングを 1600 年 12 月 31 日から数えた日数に変換します。 日時の呼び出し可能サービスの世紀ウィンドウにアクセスする場合や、COBOL 組み込み関数を使用して日付計算を実行する場合には、CEECBLDY を使用します。

このサービスは CEEDAYS と似ていますが、COBOL 組み込み関数と互換性のある COBOL 整数形式でストリングを戻す点が異なります。

CALL CEECBLDY の構文
構文図を読む構文図をスキップする>>-CALL--"CEECBLDY"--USING--input_char_date,--picture_string,--->
 
>--output_Integer_date,--fc.-----------------------------------><
 
input_char_date (入力)
picture_string の指定に準拠した形式で日付またはタイム・スタンプを表す、ハーフワード長の接頭部の付いた文字ストリング。

文字ストリングに含められる文字数は 5 から 255 文字です。input_char_date には、先行または末尾ブランクを含めることができます。日付の構文解析は、最初の非ブランク文字から始まります (ピクチャー・ストリング自体に先行ブランクが含まれる場合は、CEECBLDY がその位置を正確にスキップした後、構文解析が始まります)。

CEECBLDY は、picture_string で指定された日付形式によって判別される有効な日付を解析したら、残りの文字をすべて無視します。有効な日付範囲は、1601 年 1 月 1 日から 9999 年 12 月 31 日です。

picture_string (入力)
input_char_date で指定された日付の形式を示す、ハーフワード長の接頭部の付いた文字ストリング。

picture_string 内の各文字は、input_char_date 内の文字に対応します。例えば、MMDDYY を picture_string として指定すると、CEECBLDY は input_char_date の値 060288 を 1988 年 6 月 2 日として読み取ります。

スラッシュ (/) などの区切り文字がピクチャー・ストリング内にある場合は、先行ゼロを省略することができます。 例えば、次の CEECBLDY の呼び出しは、同じ値 141502 (1988 年 6 月 2 日) をそれぞれ COBINTDTE に割り当てます。

MOVE '6/2/88' TO DATEVAL-STRING.
MOVE 6 TO DATEVAL-LENGTH.
MOVE 'MM/DD/YY' TO PICSTR-STRING.
MOVE 8 TO PICSTR-LENGTH.
CALL CEECBLDY USING DATEVAL, PICSTR, COBINTDTE, FC.

MOVE '06/02/88' TO DATEVAL-STRING.
MOVE 8 TO DATEVAL-LENGTH.
MOVE 'MM/DD/YY' TO PICSTR-STRING.
MOVE 8 TO PICSTR-LENGTH.
CALL CEECBLDY USING DATEVAL, PICSTR, COBINTDTE, FC.

MOVE '060288' TO DATEVAL-STRING.
MOVE 6 TO DATEVAL-LENGTH.
MOVE 'MMDDYY' TO PICSTR-STRING.
MOVE 6 TO PICSTR-LENGTH.
CALL CEECBLDY USING DATEVAL, PICSTR, COBINTDTE, FC.

MOVE '88154' TO DATEVAL-STRING.
MOVE 5 TO DATEVAL-LENGTH.
MOVE 'YYDDD' TO PICSTR-STRING.
MOVE 5 TO PICSTR-LENGTH.
CALL CEECBLDY USING DATEVAL, PICSTR, COBINTDTE, FC.

picture_string にコロンやスラッシュなどの文字 (例: HH:MI:SS YY/MM/DD) が含まれる場合はプレースホルダーと見なされますが、それ以外の場合は無視されます。

picture_string に日本元号のシンボル <JJJJ> が含まれる場合は、input_char_dateYY の位置に、日本元号での年号が入ります。例えば、1988 年は日本の昭和 63 年に相当します。

output_Integer_date (出力)
COBOL 整数日付 (1600 年 12 月 31 日から数えた日数) を表す 32 ビットの 2 進整数。例えば、1988 年 5 月 16 日は、日数 141485 に相当します。

input_char_date に有効な日付が含まれていない場合は、output_Integer_date が 0 に設定され、CEECBLDY が終了して非 CEE000 シンボリック・フィードバック・コードが戻されます。

output_Integer_date は整数なので、output_Integer_date では日付計算を容易に行うことができます。うるう年や年末偏差は計算に影響しません。

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

表 84. CEECBLDY のシンボリック条件
シンボリック・フィードバック・コード 重大度 メッセージ番号 メッセージ・テキスト
CEE000 0 サービスが正しく完了した。
CEE2EB 3 2507 CEEDAYS または CEESECS に渡されたデータが不十分です。リリアン日付の値は計算されませんでした。
CEE2EC 3 2508 CEEDAYS または CEESECS に渡された日付値が無効です。
CEE2ED 3 2509 CEEDAYS または CEESECS に渡された元号が認識されませんでした。
CEE2EH 3 2513 CEEISEC、CEEDAYS、CEESECS のいずれかの呼び出しで渡された入力日付が、対応範囲内にありませんでした。
CEE2EL 3 2517 CEEISEC 呼び出し内の月の値が認識されませんでした。
CEE2EM 3 2518 日時サービスへの呼び出しに無効なピクチャー・ストリングが指定されました。
CEE2EO 3 2520 CEEDAYS が数値フィールド内に非数値データを検出したか、あるいは日付ストリングとピクチャー・ストリングが一致しませんでした。
CEE2EP 3 2521 CEEDAYS または CEESECS に渡された <JJJJ>、 <CCCC>、または <CCCCCCCC> の元号年数値がゼロでした。

使用上の注意

CBL LIB
      *************************************************
      **                                             **
      ** Function: Invoke CEECBLDY callable service  **
      ** to convert date to COBOL integer format.    **
      ** This service is used when using the         **
      ** Century Window feature of the date and time **
      ** callable services mixed with COBOL          **
      ** intrinsic functions.                        **
      **                                             **
      *************************************************
       IDENTIFICATION DIVISION.
       PROGRAM-ID. CBLDY.
      *
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01  CHRDATE.
           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 CHRDATE.
       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  INTEGER                 PIC S9(9) BINARY.
       01  NEWDATE                 PIC 9(8).
       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.
      *************************************************
      ** Specify input date and length               **
      *************************************************
           MOVE 25 TO Vstring-length of CHRDATE.
           MOVE '1 January 00'
               to Vstring-text of CHRDATE.
      *************************************************
      ** Specify a picture string that describes     **
      ** input date, and set the string's length.    **
      *************************************************
           MOVE 23 TO Vstring-length of PICSTR.
           MOVE 'ZD Mmmmmmmmmmmmmmz YY'
                     TO Vstring-text of PICSTR.
      *************************************************
      ** Call CEECBLDY to convert input date to a    **
      ** COBOL integer date                          **
      *************************************************
           CALL 'CEECBLDY' USING CHRDATE, PICSTR,
                                 INTEGER, FC.
      *************************************************
      ** If CEECBLDY runs successfully, then compute **
      **     the date of the 90th day after the      **
      **     input date using Intrinsic Functions    **
      *************************************************
           IF CEE000 of FC  THEN
               COMPUTE INTEGER = INTEGER + 90
               COMPUTE NEWDATE = FUNCTION
                   DATE-OF-INTEGER (INTEGER)
               DISPLAY NEWDATE
                   ' is Lilian day: ' INTEGER
           ELSE
               DISPLAY 'CEEBLDY failed with msg '
                   Msg-No of FC UPON CONSOLE
               STOP RUN
           END-IF.
      *
           GOBACK.

関連参照
ピクチャー文字項およびストリング


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

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