CEEDATM: 将秒转换为字符时间戳记
CEEDATM 将表示自 1582 年 10 月 14 日 00:00:00 以来的秒数的数字转换为字符串。 输出是字符串时间戳记,例如 1988/07/26
20:37:00。
- input_seconds (输入)
- 64 位长浮点数,表示自 1582 年 10 月 14 日 00:00:00 以来的秒数,不计入闰秒。
例如, 1582 年 10 月 15 日的 00:00:01 是第二个数字 86,401 (24 * 60 * 60 + 01)。 输入秒数的有效范围为86400到265621679, 999.999 ( 23:59:59.999 31 December 9999)。
- picture_string (输入)
- 半字长度前缀字符串,表示 output_timestamp的 必需 格式,例如
MM/DD/YY HH:MI AP。picture_string 中的每个字符表示 output_timestamp中的一个字符。 如果在图片字符串中使用了斜杠 (/) 之类的定界符,那么会将它们按原样复制到 output_timestamp。
如果 picture_string 包含日语 Era 符号
<JJJJ>,那么 output_timestamp 中的YY位置表示日语 Era 中的年份。 - output_timestamp (输出)
- 将 input_seconds 转换为 picture_string指定的格式所生成的固定长度 80 个字符的字符串。
如果需要,输出将截断为 output_timestamp的长度。
如果 input_seconds 无效,那么 output_timestamp 将设置为所有空白,并且 CEEDATM 将使用 non-CEE000 符号反馈代码终止。
- fc (输出)
- 指示此服务结果的 12 字节反馈代码 (可选)。
| 符号反馈代码 | 严重性 | 消息号 | 消息文本 |
|---|---|---|---|
| CEE000 | 0 | -- | 服务已成功完成。 |
| CEE2E9 | 3 | 2505 | 对 CEEDATM 或 CEESECI 的调用中的 input_seconds 值不在受支持的范围内。 |
| CEE2EA | 3 | 2506 | 传给 CEEDATM 的图片字符串中使用了一个时代(<JJJJ>、<CCCCC> 或 <CCCCCCCCC>),但输入的秒数值不在支持的范围内。 无法确定纪元。 |
| CEE2EM | 3 | 2518 | 在对日期或时间服务的调用中指定了无效的图片字符串。 |
| CEE2EV | 2 | 2527 | CEEDATM 返回的时间戳记字符串已截断。 |
| CEE2F6 | 1 | 2534 | 在对 CEEDATE 或 CEEDATM 的调用中为月份或工作日名称指定的字段宽度不足。 输出已设置为空格。 |
用法说明: CEEDATM 的逆函数是 CEESECS ,它将时间戳记转换为秒数。
示例
*************************************************
** **
** Function: CEEDATM - convert seconds to **
** character time stamp **
** **
** In this example, a call is made to CEEDATM **
** to convert a date represented in Lilian **
** seconds (the number of seconds since **
** 00:00:00 14 October 1582) to a character **
** format (such as 06/02/88 10:23:45). The **
** result is displayed. **
** **
*************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID. CBLDATM.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 DEST PIC S9(9) BINARY VALUE 2.
01 SECONDS COMP-2.
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 TIMESTP PIC X(80).
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-CBLDATM.
*************************************************
** Call CEESECS to convert time stamp of 6/2/88**
** at 10:23:45 AM to Lilian representation **
*************************************************
MOVE 20 TO Vstring-length of IN-DATE.
MOVE '06/02/88 10:23:45 AM'
TO Vstring-text of IN-DATE.
MOVE 20 TO Vstring-length of PICSTR.
MOVE 'MM/DD/YY HH:MI:SS AP'
TO Vstring-text of PICSTR.
CALL 'CEESECS' USING IN-DATE, PICSTR,
SECONDS, FC.
*************************************************
** If CEESECS runs successfully, display result**
*************************************************
IF CEE000 of FC THEN
DISPLAY Vstring-text of IN-DATE
' is Lilian second: ' SECONDS
ELSE
DISPLAY 'CEESECS failed with msg '
Msg-No of FC UPON CONSOLE
STOP RUN
END-IF.
*************************************************
** Specify required format of the output. **
*************************************************
MOVE 35 TO Vstring-length OF PICSTR.
MOVE 'ZD Mmmmmmmmmmmmmmz YYYY at HH:MI:SS'
TO Vstring-text OF PICSTR.
*************************************************
** Call CEEDATM to convert Lilian seconds to **
** a character time stamp **
*************************************************
CALL 'CEEDATM' USING SECONDS, PICSTR,
TIMESTP, FC.
*************************************************
** If CEEDATM runs successfully, display result**
*************************************************
IF CEE000 of FC THEN
DISPLAY 'Input seconds of ' SECONDS
' corresponds to: ' TIMESTP
ELSE
DISPLAY 'CEEDATM failed with msg '
Msg-No of FC UPON CONSOLE
STOP RUN
END-IF.
GOBACK.
下表显示了 CEEDATM 的样本输出。
| 输入秒数 | picture_string | 输出时间戳 |
|---|---|---|
| 12,799,191 和601.000 | YYMMDD |
880516 |
HH:MI:SS |
19:00:01 | |
YY-MM-DD |
88-05-16 | |
YYMMDDHHMISS |
880516190001 | |
YY-MM-DD HH:MI:SS |
88-05-16 19:00:01 | |
YYYY-MM-DD HH:MI:SS AP |
1988-05-16 07:00:01 下午 | |
| 12,799,191 和661.986 | DD Mmm YY |
88 年 5 月 16 日 |
DD MMM YY HH:MM |
88 年 5 月 16 日 19:01 | |
WWW, MMM DD, YYYY |
MON , MAY 16 , 1988 年 | |
ZH:MI AP |
下午 7:01 | |
Wwwwwwwwwz, ZM/ZD/YY |
5/16/88 ,星期一 | |
HH:MI:SS.99 |
19:01:01.98 | |
| 12,799,191 和662.009 | YYYY |
1988 |
YY |
88 |
|
Y |
8 |
|
MM |
05 |
|
ZM |
5 |
|
RRRR |
V |
| 输入秒数 | picture_string | 输出时间戳 |
|---|---|---|
| 12,799,191 和662.009 | MMM |
MAY |
Mmm |
May |
|
Mmmmmmmmmm |
May |
|
Mmmmmmmmmz |
May |
|
DD |
16 |
|
ZD |
16 |
|
DDD |
137 |
|
HH |
19 |
|
ZH |
19 |
|
MI |
01 |
|
SS |
02 |
|
99 |
00 |
|
999 |
009 |
|
AP |
PM |
|
WWW |
MON |
|
Www |
Mon |
|
Wwwwwwwwww |
Monday |
|
Wwwwwwwwwz |
Monday |
