将多行值从JCL流内传递到Cobol变量88

时间:2018-08-30 02:52:00

标签: cobol mainframe jcl

示例:

01  VAR1             PIC 9(05).      
    88 WS-VAR1  VALUE 1000 1001 1002 1003      
       1004 1009 2000 2002 3000 4000 4009           
       5000 5001 6000 7000 8000 2332 8484.

我们如何将JCL中的值作为流传递给Cobol程序变量88。 因此,无需更改程序即可更轻松地修改值。

我发现了两个解决方案:
1.使用内部索引表。这样二进制搜索将快速完成任务。
2.使用VSAM文件而不是在流中传递数据。 (可能性很小)

我认为二进制搜索绝对比88条件检查慢。 我正在尝试找到与88个条件检查等效的效率。

1 个答案:

答案 0 :(得分:5)

听起来您想从JCL PARM =或SYSIN传递值,以使COBOL程序独立于硬编码值。

此网络article对如何实现此目标有很好的解释。

JCL看起来像这样:

//* ******************************************************************* 
//* Step 2 of 4, Execute the COBOL program with a parameter. //*
//PARJ1S02 EXEC PGM=CBLPARC1, 
//             PARM='This is a Parameter from the EXEC and PARM= ...'

以及在COBOL程序链接部分:

  *****************************************************************
   LINKAGE SECTION.
   01  PARM-BUFFER.
       05  PARM-LENGTH         pic S9(4)   comp.
       05  PARM-DATA           pic X(256).

根据您的情况,您可以根据自己的条件验证在链接部分中传递的数据。因此,在通过验证后,您可以将其转换为测试的数值后,将其从链接部分中移出。