Как вычислить пользовательскую метку времени в COBOL85 Tandem?
Я хочу рассчитать метку времени для пользовательской даты и времени. Например, 23.09.2022 4:30:45
1 ответ
Чтобы вычислить юлианскую временную метку текущей даты и времени, вы можете использовать JULIANTIMESTAMP с помощью ENTER TAL, но для пользовательской временной метки у нас есть COMPUTETIMESTAMP GPC.
Синтаксис из Справочного руководства GPC
jval := COMPUTETIMESTAMP ( date-n-time,
[error-mask] );
Типы данных
jval — 64-битная фиксированная временная метка по юлианскому календарю.
date-n-time представляет собой целочисленный массив даты и времени [ГГГГ,ММ,ДД,ЧЧ,,ММ,СС,МИЛ,МИК], все элементы массива являются обязательными.
маска-ошибки представляет собой целочисленный массив битов 1 или 0 длиной 8.
Итак, давайте перейдем к основному вопросу, как рассчитать пользовательскую временную метку в COBOL85. У меня есть небольшой пример.
?ANSI
?save param
?symbols
?inspect
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 USER-FLD-CUST PIC X(50).
01 ARR.
03 DT PIC S9(4) COMP OCCURS 8 TIMES.
01 VAL PIC 9(16).
01 JTIME PIC S9(18) VALUE 0.
01 CER.
03 ERR PIC S9(1) COMP OCCURS 8 TIMES.
PROCEDURE DIVISION.
PROGRAM-BEGIN.
MOVE 2022 TO DT(1).
MOVE 99 TO DT(2).
MOVE 30 TO DT(3).
MOVE 10 TO DT(4).
MOVE 00 TO DT(5).
MOVE 00 TO DT(6).
MOVE 000 TO DT(7).
MOVE 000 TO DT(8).
ENTER TAL "COMPUTETIMESTAMP" USING ARR , CER
GIVING JTIME.
IF JTIME = -1
DISPLAY "INVALID DATE"
ELSE
DISPLAY JTIME.
STOP RUN.