我试图在一个RPG程序中转换一个文件中的日期(它来自DSPJRN命令,所以字段si 6数字,JOB格式).我想在我的程序中使用它作为日期,但我不能正确地实现它。
我试图描述一个类型为 "D "的字段:日期,关键字datfmt(*job)来转换文件中的值,但datfmt(*job)不正确(错误RNF0612)
我试着用RTVJOBA DATFMT(&FMT)从CLP程序中获取工作Date格式,并使用RPG中的变量来转换日期,就像这样。
eval ztJODATE = %date(JODATE:FMT)
但它不能编译:错误RNF0606。我想我不能在%date内置函数中使用格式变量。
这是做我想做的事情的一种方法吗,或者说在RPG程序中使用日期值之前,我被迫在SQL中转换日期值?
你可以指定*JOBRUN为%DATE。
eval ztJODATE = %date(JODATE:*JOBRUN)
注意,RPG是在模块初始化时检索工作日期格式的,所以如果在程序运行时改变工作日期格式,RPG将无法理解日期。
与其使用DSPJRN到一个输出文件,不如使用IBM i提供的一个程序接口来检索和处理日志条目。
你也可以使用*TYPE3或更高格式的输出文件。 没有单独的作业格式化数据&时间字段,而是有一个单一的char(26)系统时间戳字段。
说了这么多,还有一个 转换日期和时间格式(QWCCVTDT)API 接受 '*JOB'
作为一个输入格式指定器。