示例:
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个条件检查等效的效率。
答案 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).
根据您的情况,您可以根据自己的条件验证在链接部分中传递的数据。因此,在通过验证后,您可以将其转换为测试的数值后,将其从链接部分中移出。