CEEDAYS は、日付を表すストリングをリリアン形式に変換します。リリアン形式では、グレゴリオ暦の開始日 (1582 年 10 月 14 日 金曜日) から数えた日数として日付を表します。
CEEDAYS を COBOL 組み込み関数と併用しないでください。CEECBLDY は、組み込み関数を使用するプログラムに使用します。
| CALL CEEDAYS の構文 |
|---|
|
文字ストリングに含められる文字数は 5 から 255 文字です。input_char_date には、先行または末尾ブランクを含めることができます。日付の構文解析は、最初の非ブランク文字から始まります (ピクチャー・ストリング自体に先行ブランクが含まれる場合は、CEEDAYS がその位置を正確にスキップした後、構文解析が始まります)。
CEEDAYS は、picture_string で指定された日付形式によって判別される有効な日付を解析したら、残りの文字をすべて無視します。有効な日付範囲は、1582 年 10 月 15 日から 9999 年 12 月 31 日です。
picture_string 内の各文字は、input_char_date 内の文字に対応します。例えば、MMDDYY を picture_string として指定すると、CEEDAYS は input_char_date の値 060288 を 1988 年 6 月 2 日として読み取ります。
スラッシュ (/) などの区切り文字がピクチャー・ストリング内にある場合は、先行ゼロを省略することができます。例えば、次の CEEDAYS の呼び出しは、同じ値 148155 (1988 年 6 月 2 日) をそれぞれ lildate に割り当てます。
CALL CEEDAYS USING '6/2/88' , 'MM/DD/YY', lildate, fc. CALL CEEDAYS USING '06/02/88', 'MM/DD/YY', lildate, fc. CALL CEEDAYS USING '060288' , 'MMDDYY' , lildate, fc. CALL CEEDAYS USING '88154' , 'YYDDD' , lildate, fc.
picture_string にコロンやスラッシュなどの文字 (例: HH:MI:SS YY/MM/DD) が含まれる場合はプレースホルダーと見なされますが、それ以外の場合は無視されます。
picture_string に日本元号のシンボル <JJJJ> が含まれる場合は、input_char_date の YY の位置に、日本元号での年号が入ります。例えば、1988 年は日本の昭和 63 年に相当します。
input_char_date に有効な日付が含まれていない場合は、output_Lilian_date が 0 に設定され、CEEDAYS が終了して非 CEE000 シンボリック・フィードバック・コードが戻されます。
output_Lilian_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: CEEDAYS - convert date to **
** Lilian format **
** **
*******************************************
IDENTIFICATION DIVISION.
PROGRAM-ID. CBLDAYS.
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 LILIAN PIC S9(9) BINARY.
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 16 TO Vstring-length of CHRDATE.
MOVE '1 January 2005'
TO Vstring-text of CHRDATE.
*************************************************
** Specify a picture string that describes **
** input date, and the picture string's length.**
*************************************************
MOVE 25 TO Vstring-length of PICSTR.
MOVE 'ZD Mmmmmmmmmmmmmmz YYYY'
TO Vstring-text of PICSTR.
*************************************************
** Call CEEDAYS to convert input date to a **
** Lilian date **
*************************************************
CALL 'CEEDAYS' USING CHRDATE, PICSTR,
LILIAN, FC.
*************************************************
** If CEEDAYS runs successfully, display result**
*************************************************
IF CEE000 of FC THEN
DISPLAY Vstring-text of CHRDATE
' is Lilian day: ' LILIAN
ELSE
DISPLAY 'CEEDAYS failed with msg '
Msg-No of FC UPON CONSOLE
STOP RUN
END-IF.
GOBACK.
関連参照
ピクチャー文字項およびストリング