CEEDATM: 将秒转换为字符时间戳记

CEEDATM 将表示自 1582 年 10 月 14 日 00:00:00 以来的秒数的数字转换为字符串。 输出是字符串时间戳记,例如 1988/07/26 20:37:00

CALL CEEDATM 语法

读取语法图跳过可视语法图CALL"CEEDATM"USING输入秒数,picture_string,输出时间戳,FC.
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 字节反馈代码 (可选)。
表 1. CEEDATM 符号条件
符号反馈代码 严重性 消息号 消息文本
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
输入秒数 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

示例:日期和时间图片字符串

相关参考资料
图片字符术语和字符串