CEECBLDY は、日付を表すストリングを 1600 年 12 月 31 日から数えた日数に変換します。 日時の呼び出し可能サービスの世紀ウィンドウにアクセスする場合や、COBOL 組み込み関数を使用して日付計算を実行する場合には、CEECBLDY を使用します。
このサービスは CEEDAYS と似ていますが、COBOL 組み込み関数と互換性のある COBOL 整数形式でストリングを戻す点が異なります。
| CALL CEECBLDY の構文 |
|---|
|
文字ストリングに含められる文字数は 5 から 255 文字です。input_char_date には、先行または末尾ブランクを含めることができます。日付の構文解析は、最初の非ブランク文字から始まります (ピクチャー・ストリング自体に先行ブランクが含まれる場合は、CEECBLDY がその位置を正確にスキップした後、構文解析が始まります)。
CEECBLDY は、picture_string で指定された日付形式によって判別される有効な日付を解析したら、残りの文字をすべて無視します。有効な日付範囲は、1601 年 1 月 1 日から 9999 年 12 月 31 日です。
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_date の YY の位置に、日本元号での年号が入ります。例えば、1988 年は日本の昭和 63 年に相当します。
input_char_date に有効な日付が含まれていない場合は、output_Integer_date が 0 に設定され、CEECBLDY が終了して非 CEE000 シンボリック・フィードバック・コードが戻されます。
output_Integer_date は整数なので、output_Integer_date では日付計算を容易に行うことができます。うるう年や年末偏差は計算に影響しません。
| シンボリック・フィードバック・コード | 重大度 | メッセージ番号 | メッセージ・テキスト |
|---|---|---|---|
| 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.
関連参照
ピクチャー文字項およびストリング