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 組み込み関数によって提供されます。
構文 >>-CEECBLDY--(--input_char_date--,--picture_string--,-----------> >--output_ANSI_date--,--)--------------------------------------><
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_date の YY の位置は、その元号年に置き換えられます。 表 2 の例も参照してください。
このサービスから生じる可能性のある記号条件は、以下のとおりです。
コード | 重大度 | メッセージ番号 | メッセージ・テキスト |
---|---|---|---|
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 であった。 |
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.