RPG - 我们如何使用 C 风格的“Return <Value>”语法返回参数

问题描述 投票:0回答:1

快速提醒。在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-midrange rpgle
1个回答
0
投票

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 语句返回。

© www.soinside.com 2019 - 2024. All rights reserved.