1

我有一张地图,用户在其中输入两个要在数据库表中更新的值。我编写了这两个程序,但我不知道如何将在地图中输入的两个字段值传递给另一个程序。我开始知道我可以使用链接部分。但不知道它的语法或任何细节。谁能帮我语法。谢谢

4

2 回答 2

4

程序中应该有一些WORKING-STORAGE保存从 CICS 映射中检索到的值。例如:

01 SCREEN-DATA.
    05 SOME-FIELD         PIC X(10).
    05 SOME-OTHER-FIELD   PIC 9(4).

77  PROGRAM-NAME          PIC X(8) VALUE 'PROG2'.

假设调用了这个程序,PROG1并且您想将这些值传递给名为 的第二个 COBOL 程序PROG2。通常,这是在 COBOL 中使用动态子例程调用来完成的。完成动态调用的典型方法是将被调用程序的名称放入 WORKING-STORAGE 变量中。PROGRAM-NAME为此我宣布。数据可以作为单独的项目传递给被调用的程序:

CALL PROGRAM-NAME USING SOME-FIELD, SOME-OTHER-FIELD

以上是通过引用PROG2传递SOME-FILED的动态调用。SOME-OTHER-FIELD

PROG2通过其链接部分接收这些数据,如下所示:

  LINKAGE SECTION.
  01 LINKAGE-DATA.
     05 FIELD1          PIC X(10).
     05 FILED2          PIC 9(4).

的 PROCEDURE DIVISIONPROG2看起来像这样:

  PROCEDURE DIVISION USING FIELD1, FIELD2.

或者,您可以将整个记录作为单个参数传递PROG1

  CALL PROGRAM-NAME USING SCREEN-DATA

并且在PROG2

  PROCEDURE DIVISION USING LINKAGE-DATA.

最后,当PROG2完成它的工作时,它应该以GOBACKor结束EXIT PROGRAM。不要使用STOP RUN,因为这也会退出主程序 ( PROG1)。

COBOL 调用约定类似于大多数其他过程语言。参数可以通过引用(默认)、值或内容传递。大多数 COBOL 供应商都支持所有这些参数传递机制,但在实现上可能存在细微差别。以上示例适用于 IBM Enterprise COBOL。如果您使用的是不同版本的 COBOL,最好查看您的 COBOL 参考指南和 COBOL 编程指南。

您可以在线获取 IBM Enterprise COBOL 指南:Language Reference GuideProgramming Reference Guide

于 2012-04-20T16:16:19.577 回答
0

您可以像在两个批处理 COBOL 程序之间传递参数一样。但是,您必须小心,您还必须传递两个强制参数,即 DFHEIBLK 和 DFHCOMMAREA。

实际上,在您的调用程序中,您可能会在编译器列表中看到这两个参数已添加到 PROCEDURE DIVISION 中,因此您需要在调用程序中使用它们。我建议您在源代码中明确编写它们以提高可读性。

最后,它看起来像这样:

调用程序:

PROCEDURE DIVISION USING DFHEIBLK DFHCOMMAREA PARM1 PARM2 ... PARMXX.

调用程序:

WORKING-STORAGE SECTION.
01 PGM-NAME   PIC X(8).

PROCEDURE DIVISION.
     CALL PGM-NAME USING DFHEIBLK DFHCOMMAREA PARM1 PARM2 ... PARMXX
     END-CALL.
于 2014-08-06T07:59:15.340 回答