我从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中编辑值,值newid
和newname
会自动传递给rpg还是有其他方法吗?如何将cobol中的值传递回rpgle。
答案 0 :(得分:4)
你有正确的基础知识。只要您在两个程序中提供匹配的字段定义,这应该没问题。在ILE COBOL Linkage部分中,您需要添加参数名称所引用的定义。您没有PIC
或LIKE
条款。
在您的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程序对象中。但是把它保存了一段时间。