2

我从 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.

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

4

1 回答 1

4

你有基本的权利。只要您在两个程序中都提供匹配的字段定义,那应该没问题。在 ILE COBOL 链接部分中,您需要添加参数名称所指内容的定义。你没有PICorLIKE子句。

在您的 ILE RPG 程序中,您需要定义一个原型来调用您的 COBOL 代码。原型中的参数定义需要 与 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 程序对象中。但是再保存一次。

于 2013-11-06T20:24:31.993 回答