将cobol中的值返回到RPG

时间:2013-11-06 11:12:14

标签: ibm-midrange cobol rpgle

我从rpgle调用了一个cobol程序。我想将cobol程序中的值返回到rpgle。我是新手,并不确定我是否采取了正确的方式。有人可以解释我这样做的程序。下面是我在rpgle中用来调用cobol的命令。

callp prog(id:name);

在cobol我使用

working storage section.
linkage section.
01 newid.
01 newname.
procedure division using newid, newname.

如果在cobol中编辑值,值newidnewname会自动传递给rpg还是有其他方法吗?如何将cobol中的值传递回rpgle。

1 个答案:

答案 0 :(得分:4)

你有正确的基础知识。只要您在两个程序中提供匹配的字段定义,这应该没问题。在ILE COBOL Linkage部分中,您需要添加参数名称所引用的定义。您没有PICLIKE条款。

在您的ILE RPG程序中,您需要为COBOL代码的调用定义原型。原型中的参数定义需要 match the format of the parameters 在COBOL中。如果您在一侧使用打包,分区或二进制整数,则必须在另一侧使用相同的parm。

(见http://pic.dhe.ibm.com/infocenter/iseries/v7r1m0/index.jsp?topic=%2Frzase%2Fsc092540419.htm

例如,在RPG PROG1中,您可能会遇到类似的事情:

 D   someID                       7p 0                                                         
 D   someName                    10a                                                            

 D addInfo         PR                  EXTPROG("PROG2")                                                    
 D                                7p 0 
 D                               10a                                                            

         callp addInfo (someID:someName);

         // or omit the optional callp opcode

         addInfo (someID:someName);

然后在COBOL PROG2中,你可能会有:

  working storage section.
  linkage section.
  01 newid           pic s9(7)    packed-decimal.
  01 newname         pic x(10).

  procedure division using newid, newname.

此时最简单的选择是将它们编译为单独的程序。但也可以使用ILE技术将COBOL过程组合到最终的RPG程序对象中。但是把它保存了一段时间。