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

CEECBLDY は、日付を表すストリングを COBOL 整数形式に変換します。COBOL 整数形式は、1601 年 1 月 1 日以降の日数です。 このサービスは CEEDAYS に似ていますが、COBOL 整数形式でストリングを提供し、ANSI 組み込み関数と互換性があるという点で異なります。Language Environment の世紀ウィンドウにアクセスしたり、INTDATE(ANSI) コンパイラー・オプションでコンパイルされたプログラムに対して COBOL 組み込み関数を使って日付計算を行う場合は、CEECBLDY を使用してください。

CEECBLDY を呼び出すのは、COBOL 組み込み関数の入力として戻される値を使用する COBOL プログラムからだけにしてください。戻り値をその他の Language Environment の呼び出し可能サービスと共に使用したり、COBOL 以外のプログラムから CEECBLDY を呼び出さないでください。CEEDAYS と異なり、CEECBLDY の逆関数はありません。これは、CEECBLDY が、COBOL 組み込み関数と共に Language Environment の世紀ウィンドウ・サービスを使用して日付計算を行う COBOL ユーザーのみを対象にしているためです。 CEECBLDY の逆関数は、DATE-OF-INTEGER 組み込み関数と DAY-OF-INTEGER 組み込み関数によって提供されます。

1601 年以前の日付を処理するには、各年に 4000 を足し、整数形式に変換し、計算を行い、結果から 4000 を引き、変換して文字形式に戻します。デフォルトでは、2 桁で表した年は、システム日付の 80 年前に始まる 100 年の範囲内にあります。 したがって、1995 年には、2 桁の年のすべては、1915 年から 2014 年まで (1915 年と 2014 年を含む) の間の日付を表します。CEESCEN 呼び出し可能サービスを使用することにより、このデフォルト範囲を変更できます。
構文図を読む構文図をスキップする
構文

>>-CEECBLDY--(--input_char_date--,--picture_string--,----------->

>--output_ANSI_date--,--)--------------------------------------><

input_char_date (入力)
ハーフワード長の接頭部付き文字ストリング (VSTRING) で、picture_string で指定した形式に準拠した形式により、日付またはタイム・スタンプを表します。 文字数は 5 から 255 までとします (5 と 255 を含む)。input_char_date には、先行ブランクまたは後書きブランクを入れることができます。日付の構文解析は、最初の非ブランク文字から始まります。(ただし、ピクチ ャー・ストリングそのものに先行ブランクがある場合を除きます。この場合には、構文解析を開始する前に、CEECBLDY はこのブランク分だけスキップします。)有効な日付を picture_string で指定した日付の形式に従って 構文解析した後で、CEECBLDY は残りのすべての文字を無視します。 有効な日付の範囲は、1601 年 1 月 1 日から 9999 年 12 月 31 日までです (1601 年 1 月 1 日と 9999 年 12 月 31 日を含む)。input_char_date に指定できる有効な ピクチャー文字用語については、表 1 を参照してください。
picture_string (入力)
ハーフワード長の接頭部付き文字ストリング (VSTRING) で、input_char_date に指定した日付の形式を表します。picture_string 内の各文字は、input_char_date 内の文字に対応します。例えば、MMDDYY を picture_string として指定する場合、CEECBLDY は input_char_date の 060288 を 1988 年 6 月 2 日として読み取ります。スラッシュ (/) のような区切り文字がピクチャー・ストリングにある場合には、先行ゼロを省略することができます。例えば、CEECBLDY に対する以下の呼び出しは、それぞれ COBINTDATE に同じ値の 148155 (1988 年 6 月 2 日) を割り当てます。
MOVE '6/2/88' TO DATEVAL.
MOVE 'MM/DD/YY' TO PICSTR.
CALL CEECBLDY USING DATEVAL, PICSTR, COBINTDATE, fc);

MOVE '06/02/88' TO DATEVAL.
MOVE 'MM/DD/YY' TO PICSTR.
CALL CEECBLDY USING DATEVAL, PICSTR, COBINTDATE, fc);

MOVE '060288' TO DATEVAL.
MOVE 'MMDDYY' TO PICSTR.
CALL CEECBLDY USING DATEVAL, PICSTR, COBINTDATE, fc);

MOVE '88154' TO DATEVAL.
MOVE 'YYDDD' TO PICSTR.
CALL CEECBLDY USING DATEVAL, PICSTR, COBINTDATE, fc);

picture_string (HH:MI:SS YY/MM/DD など) にコロンまたはスラッシュなどの文字がある場合、それらの文字はプレー スホルダーとして扱われるか、無視されます。有効なピクチャー文字用語のリストについては 表 1 を、また有効なピクチャー・ストリングの例については 表 2 を参照してください。

picture_string に日本元号 <JJJJ> が入っている場 合には、input_char_date における YY の位置が日本元号 の年に置き換えられます。 例えば、1988 年は日本の昭和 63 年と同じです。表 2 の例も参照してください。 CEEDATE でサポートされている日本の年号のリストについては、表 3 を参照してください。

picture_string に元号記号 <CCCC> または <CCCCCCCC> が含まれている場合、input_char_dateYY の位置は、その元号年に置き換えられます。 表 2 の例も参照してください。

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 バイトの フィードバック・コード (言語によってはオプション)。このパラメーターを省略する場合は、呼び出し可能サービスの呼び出しを参照して、フィードバック・コードが省略されたことを示すための適切な構文を確認してください。

このサービスから生じる可能性のある記号条件は、以下のとおりです。

コード 重大度 メッセージ番号 メッセージ・テキスト
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>) が 0 であった。

使用上の注意

詳細情報

  1. 以下は、COBOL によって呼び出される CEECBLDY の例です。
           CBL LIB,QUOTE
          *Module/File Name: IGZTCBLD
          *************************************************
          **                                             **
          ** Function: Invoke CEECBLDY callable service  **
          ** to convert date to COBOL Integer format.    **
          ** This service is used when using the         **
          ** Lang. Environ. Century Window                **
          ** 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) 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.
          *************************************************
          ** 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 ANSI day: " INTEGER
               ELSE
                   DISPLAY "CEECBLDY failed with msg "
                       Msg-No of FC UPON CONSOLE
                   STOP RUN
               END-IF.
    
               GOBACK.