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

时间:2012-04-20 14:49:10

标签: db2 parameter-passing cobol cics

我有一张地图,用户在其中输入两个要在数据库表中更新的值。我写了两个程序,但我不知道如何将地图中输入的两个字段值传递给另一个程序。我开始知道我可以使用Linkage Section。但不知道语法或其上的任何细节。任何人都可以帮助我的语法。谢谢

2 个答案:

答案 0 :(得分: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,并且您希望将这些值传递给名为PROG2的第二个COBOL程序。 通常,这是在COBOL中使用 动态子程序调用。完成动态调用的典型方法是将名称设置为 将程序称为WORKING-STORAGE变量。为此我宣布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 Enterprise COBOL指南:Language Reference GuideProgramming Reference Guide

答案 1 :(得分: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.