问题描述
我需要在 AS400 中为 ROBOT 进行日期计算(内置的 pgm 不能这样做),对于保留的命令变量。
机器人正在调用我的 cl 程序,cl 程序正在调用我的 rpgle 程序(因为 cl 程序无法进行我想要的日期计算)。
如何将 rpgle 程序中的日期计算结果返回到 CL 变量?以便 ROBOT 可以获取它。
我可以通过调用一个 rpgle 来更新 cl 程序中的变量吗?但是我该怎么做。
解决方法
从 CL
传递到 RPG
的参数是按地址传递的。因此,RPG
程序放置在参数中的任何值都将返回给 CL
程序。
这是一个调用 RPG 的 CL 程序:
PGM
dcl &rtndate *char 10
/* call RPG program. RPG program sets &rtnDate parm to date of yesterday */
/* in *ISO format. */
call test0290r parm(&rtnDate)
SNDPGMMSG MSG('yesterday date:' *BCAT &RTNDATE)
ENDPGM
和被调用的RPG程序:
** test0290r: return yesterdate as iso date.
h option(*srcstmt:*nodebugio)
** --------------------------- test0290r --------------------
** test0290r: return yesterdate as iso date.
dtest0290r pr extpgm('TEST0290R')
d outDate 10a
** --------------------------- test0290r --------------------
** test0290r: call open api using ifs_openNew.
dtest0290r pi
d outDate 10a
d ch80 s 80a varying
d yesterday_date s d
/free
yesterday_date = %date(%timestamp( )) - %days(1) ;
outDate = %char(yesterday_date:*iso) ;
*inlr = '1' ;
return ;
/end-free