CEESECI: 将秒转换为整数
CEESECI 将表示自 1582 年 10 月 14 日 00:00:00 以来的秒数的数字转换为表示年,月,日,小时,分钟,秒和毫秒的二进制整数。
当需要以数字格式而不是字符格式输出时,请使用 CEESECI 代替 CEEDATM。
- 输入秒数
- 64 位长浮点数,表示自 1582 年 10 月 14 日 00:00:00 以来的秒数,不计入闰秒。
例如, 1582 年 10 月 15 日的 00:00:01 是第二个数字 86,401 (24 * 60 * 60 + 01)。 input_seconds的有效取值范围为86400到265621679, 999.999 ( 23:59:59.999 31 December 9999)。
如果 input_seconds 无效,那么除反馈代码以外的所有输出参数都将设置为 0。
- output_year (输出)
- 表示年份的 32 位二进制整数。
output_year 的有效值范围为 1582 到 9999 (包括 1582 到 9999)。
- output_month (输出)
- 表示月份的 32 位二进制整数。
output_month 的有效值范围是 1 到 12。
- output_day (输出)
- 表示日的 32 位二进制整数。
output_day 的有效值范围为 1 到 31。
- output_hours (输出)
- 表示小时的 32 位二进制整数。
output_hours 的有效值范围是 0 到 23。
- output_minutes (输出)
- 表示分钟的 32 位二进制整数。
output_minutes 的有效值范围是 0 到 59。
- output_seconds (输出)
- 表示秒数的 32 位二进制整数。
output_seconds 的有效值范围是 0 到 59。
- output_毫秒 (输出)
- 表示毫秒的 32 位二进制整数。
output_毫秒 的有效值范围是 0 到 999。
- fc (输出)
- 指示此服务结果的 12 字节反馈代码 (可选)。
| 符号反馈代码 | 严重性 | 消息号 | 消息文本 |
|---|---|---|---|
| CEE000 | 0 | -- | 服务已成功完成。 |
| CEE2E9 | 3 | 2505 | 对 CEEDATM 或 CEESECI 的调用中的 input_seconds 值不在受支持的范围内。 |
使用说明
- CCEESECI 的逆函数是 CEEISEC ,它将表示年,月,日,小时,秒和毫秒的单独二进制整数转换为秒数。
- 如果输入值是 Lilian 日期而不是秒数,那么将 Lilian 日期乘以 86,400 (一天中的秒数) ,并将新值传递给 CEESECI。
示例
*************************************************
** **
** Function: Call CEESECI to convert seconds **
** to integers **
** **
** In this example a call is made to CEESECI **
** to convert a number representing the number **
** of seconds since 00:00:00 14 October 1582 **
** to seven binary integers representing year, **
** month, day, hour, minute, second, and **
** millisecond. The results are displayed in **
** this example. **
** **
*************************************************
IDENTIFICATION DIVISION.
PROGRAM-ID. CBLSECI.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 INSECS COMP-2.
01 YEAR PIC S9(9) BINARY.
01 MONTH PIC S9(9) BINARY.
01 DAYS PIC S9(9) BINARY.
01 HOURS PIC S9(9) BINARY.
01 MINUTES PIC S9(9) BINARY.
01 SECONDS PIC S9(9) BINARY.
01 MILLSEC PIC S9(9) BINARY.
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-CBLSECS.
*************************************************
** 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,
INSECS, FC.
IF NOT CEE000 of FC THEN
DISPLAY 'CEESECS failed with msg '
Msg-No of FC UPON CONSOLE
STOP RUN
END-IF.
PARA-CBLSECI.
*************************************************
** Call CEESECI to convert seconds to integers
*************************************************
CALL 'CEESECI' USING INSECS, YEAR, MONTH,
DAYS, HOURS, MINUTES,
SECONDS, MILLSEC, FC.
*************************************************
** If CEESECI runs successfully, display results
*************************************************
IF CEE000 of FC THEN
DISPLAY 'Input seconds of ' INSECS
' represents:'
DISPLAY ' Year......... ' YEAR
DISPLAY ' Month........ ' MONTH
DISPLAY ' Day.......... ' DAYS
DISPLAY ' Hour......... ' HOURS
DISPLAY ' Minute....... ' MINUTES
DISPLAY ' Second....... ' SECONDS
DISPLAY ' Millisecond.. ' MILLSEC
ELSE
DISPLAY 'CEESECI failed with msg '
Msg-No of FC UPON CONSOLE
STOP RUN
END-IF.
GOBACK.
