Я хочу найти разницу между двумя метками времени, используя COBOL - PullRequest
1 голос
/ 14 июля 2010

Я хочу найти разницу между двумя временными метками, используя COBOL.моя метка времени составляет 16 байт, а вот бывшая.одной отметки времени: 2010060314314826 Укажите пример кода

Ответы [ 4 ]

1 голос
/ 14 июля 2010

Если вы работаете в среде мэйнфреймов IBM с поддержкой LE, попробуйте поискать: CEESECS - преобразовать метку времени в секунды .Используя эту процедуру, вы можете преобразовать каждую из ваших меток времени в секунды в Лилианах, а затем вычесть одну из другой, чтобы получить результат в секундах.

В этом же руководстве вы найдете код COBOL , чтобы сделать именно то, что вынаходясь в поиске.Единственное изменение, которое необходимо внести в этом примере, - это формат отметки времени следующим образом:

MOVE "YYYYMMDDHHMISS99" TO Vstring-text of PICSTR.

Вы можете преобразовать количество секунд в количество дней, часов, минут и т. Д., Используя CEESECI - конвертировать секунды в целые числа сервис.Опять же, приведены конкретные примеры COBOL.

0 голосов
/ 23 февраля 2011

Cobol 85 имеет встроенные функции даты, которые помогут.

COMPUTE FOO = FUNCTION INTEGER-OF-DATE(YYYYMMDD).
COMPUTE FOO2 = FUNCTION INTEGER-OF-DATE(DATEVAR).

COMPUTE DIFF = FOO2 - FOO.
0 голосов
/ 14 июля 2010

Если в вашей версии Cobol нет математики даты / времени, у вас есть два варианта:

1) преобразовать отметку даты в число секунд в году, начиная с некоторой произвольной даты в прошлом (например, 17 ноября 1978 г.)), сделайте то же самое с датой / временем, с которым вы сравниваете его, выполните простое вычитание между двумя результатами, а затем преобразуйте полученное количество секунд обратно в разницу времени дельты или

2) вычтитекаждую часть даты / времени отдельно, учитывайте количество дней в каждом месяце и високосные годы (если вы хотите, чтобы он работал более 4 лет).эта опция становится действительно волосатой и имеет очень высокую частоту отказов, поэтому я не рекомендую ее.

0 голосов
/ 14 июля 2010

Скорее всего, отформатировано как:

ГГГГ ММ ДД ЧЧ ММ СС CC

ПЕРЕМЕСТИТЕ отметки времени в двух полях, таких как:

 01 field-to-load.
    03 year   pic(9999).
    03 month  pic(99).
    03 day    pic(99).
    03 hour   pic(99).
    03 min    pic(99).
    03 sec    pic(99).
    03 cents  pic(99).

и выполните дату /арифметика времени с уровнями 03.

Если ваши временные метки не являются данными типа отображения, вам может потребоваться выполнить предыдущее преобразование.Если вам нужно больше подробностей об этом, опубликуйте определение поля для поля метки времени.

Я надеюсь, что вас не забанят в SO за публикацию кода cobol.

HTH.

Редактировать

Здесь вы можете найти программу HP COBOL для расчета разницы дат.Вам нужно только добавить логику (час, мин, сек), очень просто.

...