2.8 从JCL向PROGRAM传递参数

从JCL向程序传递参数有两种方式。

第1种方式:通过EXEC语句的PARM参数,如:

        //STEP1   EXEC PGM=ABC,PARM=(‘F1’)

针对这种方式,程序ABC需要于COBOL的LINKAGE SECTION做如下定义(具体说明参见COBOL部分)。

        01  LINK-AREA.
    05 LINK-LEN      PIC S9(04) BINARY.
    05 LINK-FCN      PIC X(02).

则在STEP1将程序运行起来后,变量LINK-FCN的值即为F1。需要注意的是,LINK-AREA必须是LINKAGE SECTION下第1个01层定义的变量。

第2种方式:通过SYSIN语句指定输入数据流,如:

        //STEP1   EXEC PGM=ABC
        //SYSIN   DD *
        F1001
        //*

在这种方式下,程序ABC需要于WORKING-STORAGE节定义接受变量。

        01  WK-ACCEPT-AREA.
            05 WK-ACCEPT-FCN PIC X(02).
            05 WK-ACCEPT-SEQ     PIC 9(03).

并在过程部中执行操作:ACCEPT WK-ACCEPT-AREA。这样,FCN和SEQ中的值就分别等于‘F1’和1。

请留意这两种方式中,输入数据值的表达方式的不同,在第1种方式中,LINK-LEN定义参数的长度,占2个额外的字节,实际的参数紧跟着长度之后;对于第2种方式,直接提供参数的值,没有额外的长度字段。