快速提醒。在RPG中,我们如何使用C风格的“返回值”语法返回参数,而不是传入参数列表?使用 RPGLE /免费。
// pgm: PARM1
dcl-pr PARM2 EXTPGM('PARM2');
PrOption char(1) const;
RET char(5) ;
end-pr;
dcl-s RET char(5) ;
Eval RET='';
callP PARM2('1':RET);
*inlr = *on;
return;
// pgm: PARM2
dcl-pr PARM2 EXTPGM('PARM2');
PrOption char(1) ;
RET char(5) ;
end-pr;
dcl-pI PARM2 ;
PrOption char(1) ;
RET char(5) ;
end-pI;
// do some stuff
Eval Ret= '1';
Eval *inlr = *on;
//Return RET;
return;
IBM i 上的 RPG 程序不支持 *PGM 对象的返回值。
仅子过程支持返回值。
// pgm: PARM1
dcl-pi PARM1 EXTPGM('PARM1');
PrOption char(1) const;
RET char(5) ;
end-pi;
ret = SubProc2('1');
*inlr = *on;
return;
dcl-proc SubProc2;
dcl-pi *n char(5);
PrOption char(1);
end-pi;
return '00001';
end-proc;
*RPG 和 COBOL 的 PGM 返回代码 由系统处理。
运行RPG IV程序发送的返回码是:
- 0 --> 程序启动时,或者在调用程序之前通过CALL操作
- 1 --> 当程序结束且 LR 设置为打开时
- 2 --> 当程序因错误而结束时(C、D、F 或 S 对查询消息的响应)
- 3 --> 当程序因停止指示器(H1-H9)而结束时
ILE C 程序
整数返回代码的当前值由 ILE C 程序中的最后一个 ILE C return 语句返回。