CEEDATE: 将 Lilian 日期转换为字符格式
CEEDATE 将表示 Lilian 日期的数字转换为以字符格式写入的日期。 输出是字符串,例如 2010/04/23。
- input_Lilian_date (输入)
- 表示 Lilian 日期的 32 位整数。 Lilian 日期是自 1582 年 10 月 14 日以来的天数。 例如, 1988 年 5 月 16 日是 Lilian 日号 148138。 Lilian 日期的有效范围是 1 到 3,074,324 (1582 年 10 月 15 日至 9999 年 12 月 31 日)。
- picture_string (输入)
- 半字长度前缀字符串,表示 output_char_date的 必需 格式,例如
MM/DD/YY。 picture_string 中的每个字符表示 output_char_date中的一个字符。 如果诸如斜杠 (/) 之类的定界符出现在图片字符串中,那么它们将按原样复制到 output_char_date。如果 picture_string 包含日语 Era 符号
<JJJJ>,那么 output_char_date 中的YY位置将替换为日语 Era 中的年号。 例如, 1988 年等于昭和时代的日本第 63 年。 - output_char_date (输出)
- 将 input_Lilian_date 转换为 picture_string指定的格式所生成的固定长度 80 个字符的字符串。 如果 input_Lilian_date 无效,那么 output_char_date 将设置为所有空白,并且 CEEDATE 将以 non-CEE000 符号反馈代码终止。
- fc (输出)
- 指示此服务结果的 12 字节反馈代码 (可选)。
| 符号反馈代码 | 严重性 | 消息号 | 消息文本 |
|---|---|---|---|
| CEE000 | 0 | -- | 服务已成功完成。 |
| CEE2EG | 3 | 2512 | 在对 CEEDATE 或 CEEDYWK 的调用中传递的 Lilian 日期值不在受支持的范围内。 |
| CEE2EM | 3 | 2518 | 在对日期/时间服务的调用中指定了无效的图片字符串。 |
| CEE2EQ | 3 | 2522 | 传递给 CEEDATE 的图片字符串中使用了年代(<JJJJ>、<CCCCC> 或 <CCCCCCC>),但 Lilian 日期值不在支持的范围内。 无法确定纪元。 |
| CEE2EU | 2 | 2526 | CEEDATE 返回的日期字符串被截断。 |
| CEE2F6 | 1 | 2534 | 在对 CEEDATE 或 CEEDATM 的调用中为月份或工作日名称指定的字段宽度不足。 输出已设置为空格。 |
用法说明: CEEDATE 的逆函数是 CEEDAYS ,它将字符日期转换为 Lilian 格式。
示例
************************************************
** **
** Function: CEEDATE - convert Lilian date to **
** character format **
** **
** In this example, a call is made to CEEDATE **
** to convert a Lilian date (the number of **
** days since 14 October 1582) to a character **
** format (such as 6/22/98). The result is **
** displayed. The Lilian date is obtained **
** via a call to CEEDAYS. **
** **
************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID. CBLDATE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 LILIAN PIC S9(9) BINARY.
01 CHRDATE PIC X(80).
01 IN-DATE.
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 IN-DATE.
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 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.
*************************************************
** Call CEEDAYS to convert date of 6/2/98 to **
** Lilian representation **
*************************************************
MOVE 6 TO Vstring-length of IN-DATE.
MOVE '6/2/98' TO Vstring-text of IN-DATE(1:6).
MOVE 8 TO Vstring-length of PICSTR.
MOVE 'MM/DD/YY' TO Vstring-text of PICSTR(1:8).
CALL 'CEEDAYS' USING IN-DATE, PICSTR,
LILIAN, FC.
*************************************************
** If CEEDAYS runs successfully, display result**
*************************************************
IF CEE000 of FC THEN
DISPLAY Vstring-text of IN-DATE
' is Lilian day: ' LILIAN
ELSE
DISPLAY 'CEEDAYS failed with msg '
Msg-No of FC UPON CONSOLE
STOP RUN
END-IF.
*************************************************
** Specify picture string that describes the **
** required format of the output from CEEDATE, **
** and the picture string's length. **
*************************************************
MOVE 23 TO Vstring-length OF PICSTR.
MOVE 'ZD Mmmmmmmmmmmmmmz YYYY' TO
Vstring-text OF PICSTR(1:23).
*************************************************
** Call CEEDATE to convert the Lilian date **
** to a picture string. **
*************************************************
CALL 'CEEDATE' USING LILIAN, PICSTR,
CHRDATE, FC.
*************************************************
** If CEEDATE runs successfully, display result**
*************************************************
IF CEE000 of FC THEN
DISPLAY 'Input Lilian date of ' LILIAN
' corresponds to: ' CHRDATE
ELSE
DISPLAY 'CEEDATE failed with msg '
Msg-No of FC UPON CONSOLE
STOP RUN
END-IF.
GOBACK.
下表显示了 CEEDATE 的样本输出。
| 输入_Lilian_日期 | picture_string | 输出日期 |
|---|---|---|
| 148138 | YY |
98 |
YYMM |
9805 | |
YY-MM |
98-05 | |
YYMMDD |
980516 | |
YYYYMMDD |
19980516 | |
YYYY-MM-DD |
1998-05-16 | |
YYYY-ZM-ZD |
1998-5-16 | |
<JJJJ> YY.MM.DD |
Showa 63.05.16 (在 DBCS 字符串中) | |
| 148139 | MM |
05 |
MMDD |
0517 | |
MM/DD |
05/17 | |
MMDDYY |
051798 | |
MM/DD/YYYY |
05/17/1998 | |
ZM/DD/YYYY |
5/17/1998 | |
| 148140 | DD |
18 |
DDMM |
1805 | |
DDMMYY |
180598 | |
DD.MM.YY |
18.05.98 | |
DD.MM.YYYY |
18.05.1998 | |
DD Mmm YYYY |
1998 年 5 月 18 日 | |
| 148141 | DDD |
140 |
YYDDD |
98140 | |
YY.DDD |
98.140 | |
YYYY.DDD |
1998.140 | |
| 148142 | YY/MM/DD HH:MI:SS.99 |
98/05/20 00:00:00.00 |
YYYY/ZM/ZD ZH:MI AP |
1998/5/20 上午 0:00 | |
| 148143 | WWW., MMM DD, YYYY |
SAT , 1998 年 5 月 21 日 |
Www., Mmm DD, YYYY |
萨特 一九九八年五月二十一日 | |
Wwwwwwwwww, Mmmmmmmmmm
DD, YYYY |
一九九八年五月二十一日 (星期六) | |
Wwwwwwwwwz, Mmmmmmmmmz
DD, YYYY |
一九九八年五月二十一日 (星期六) |
