我从 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。
最佳答案
你的基础知识是正确的。只要您在两个程序中提供匹配的字段定义就应该没问题。在 ILE COBOL 链接部分中,您需要添加参数名称所指内容的定义。您没有 PIC
或 LIKE
子句。
在您的 ILE RPG 程序中,您需要定义一个原型(prototype)来调用 COBOL 代码。原型(prototype)中的参数定义需要 match the format of the parameters 在 COBOL 中。如果您在一侧使用打包、分区或二进制整数,则必须在另一侧对该参数使用相同的值。
(参见 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 程序对象中。但留到下次再说吧。
关于ibm-midrange - 返回从 cobol 到 rpg 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19810554/