在 RPG 中,使用文件中的 *job 格式的日期

In RPG, use a date, in *job format from a file

我正在尝试在 RPG 程序中转换文件中的日期(它来自 DSPJRN 命令,因此字段 si 6 数字,采用 JOB 格式)。 我想在我的程序中将其用作日期,但无法正确实现。

我试图描述类型为 "D" 的字段:日期,关键字 datfmt(*job) 以从文件中转换值,但 datfmt(*job) 不正确(错误 RNF0612)

我尝试使用 RTVJOBA DATFMT(&FMT) 从 CLP 程序中检索作业日期格式​​,并使用 RPG 中的变量像这样转换日期

eval ztJODATE = %date(JODATE:FMT)

但无法编译:错误 RNF0606。我认为我不能在 %date 内置函数中使用格式变量。

这是做我想做的事情的方法吗,还是我必须在 SQL 中转换日期值才能在 RPG 中使用它的值? PS: 我不想在我的 RPG 程序中硬编码格式!

检索和处理日志条目的推荐方法是使用 IBM i 提供的编程接口之一,而不是将 DSPJRN 用于输出文件。

您还可以为输出文件使用 *TYPE3 或更高格式。不是单独的作业格式数据和时间字段,而是一个 char(26) 系统时间戳字段。

话虽如此,有一个 Convert Date and Time Format (QWCCVTDT) API 接受 '*JOB' 作为输入格式说明符..

您可以为 %DATE 指定 *JOBRUN。

eval      ztJODATE = %date(JODATE:*JOBRUN)

请注意,RPG 在模块初始化期间检索作业日期格式​​,因此如果您在程序 运行 期间更改作业日期格式​​,RPG 将无法理解日期。