В RPG используйте дату в формате * job из файла - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь преобразовать в программе RPG дату из файла (это из команды DSPJRN, поэтому поле si 6 цифра c, в формате JOB). Я хочу использовать это как дату в моей программе, но не могу достичь ее правильно.

Я попытался описать поле с типом "D": дата, ключевое слово datfmt (* job) для преобразования значение из файла, но datfmt (* job) неверно (ошибка RNF0612)

Я попытался получить формат даты задания из программы CLP с помощью RTVJOBA DATFMT (& FMT) и использовать переменную в RPG преобразовать дату как эта

eval ztJODATE = %date(JODATE:FMT)

, но она не компилируется: ошибка RNF0606. Я думаю, что я не могу использовать переменную для формата во встроенной функции% date.

Это способ делать то, что я хочу, или я вынужден преобразовать значение даты в SQL перед использованием его значения в RPG? PS: я не хочу жестко кодировать формат в моей программе RPG!

Ответы [ 2 ]

3 голосов
/ 24 апреля 2020

Вы можете указать * JOBRUN для% DATE.

eval      ztJODATE = %date(JODATE:*JOBRUN)

Обратите внимание, что RPG получает формат даты задания во время инициализации модуля, поэтому, если вы изменяете формат даты задания во время работы программы, RPG не поймет дату.

2 голосов
/ 23 апреля 2020

Вместо того, чтобы использовать DSPJRN для выходного файла, рекомендуемый способ извлечения и обработки записей журнала будет заключаться в использовании одного из программных c интерфейсов, предоставляемых IBM i.

Для вывода можно также использовать формат * TYPE3 или более поздней версии файл. Вместо отдельных полей данных и времени, отформатированных заданием, есть одно поле системной метки времени char (26).

Сказав это, существует API преобразования формата даты и времени (QWCCVTDT) , который принимает '*JOB' в качестве спецификатора формата ввода.

...