如何将参数从 CICS-COBOL 传递到 COBOL-DB2 程序



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

程序中应该有一些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,并且您希望将这些值传递给名为 PROG2 的第二个 COBOL 程序。通常,这是在 COBOL 中使用动态子例程调用。完成动态调用的典型方法是将将程序调用到工作存储变量中。我为此目的宣布PROGRAM-NAME。数据可能是作为单个项目传递给被调用的程序:

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

上面是对PROG2的动态调用,它通过引用传递SOME-FILEDSOME-OTHER-FIELD

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

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

PROG2的程序划分看起来像这样:

  PROCEDURE DIVISION USING FIELD1, FIELD2.

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

  CALL PROGRAM-NAME USING SCREEN-DATA

并在PROG2

  PROCEDURE DIVISION USING LINKAGE-DATA.

最后,当PROG2完成其工作时,它应该以GOBACKEXIT PROGRAM终止。不要将STOP RUN用作这也将退出主程序(PROG1)。

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

您可以在线获取 IBM 企业 COBOL 指南:语言参考指南和编程参考指南

您可以像在两个批处理 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.

最新更新