将多行值从JCL instream传递到Cobol变量88
例如:将多行值从JCL instream传递到Cobol变量88,cobol,mainframe,jcl,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中的值作为instream传递给Cobol程序变量88。 因此,在不更改程序的情况下修改值将更容易 我发现了两种解
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中的值作为instream传递给Cobol程序变量88。
因此,在不更改程序的情况下修改值将更容易
我发现了两种解决方案:1.使用内部索引表。因此,二进制搜索将快速完成任务。
2.使用VSAM文件而不是在流中传递数据。(可能性较小) 我认为二进制搜索肯定比88条件检查慢。
我正试图找到与88条件检查等效的效率。听起来您想从JCL PARM=或SYSIN传递一个值,以使COBOL程序独立于硬编码值 这个网站很好地解释了你是如何做到这一点的 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).
在您的情况下,可以根据您的条件验证在链接部分中传递的数据。因此,一旦验证,您可以在将该值转换为用于测试的数字值后从链接部分移动该值。听起来您想从JCL PARM=或SYSIN传递一个值,以使COBOL程序独立于硬编码值 这个网站很好地解释了你是如何做到这一点的 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).
在您的情况下,可以根据您的条件验证在链接部分中传递的数据。因此,一旦验证,您可以在将该值转换为用于测试的数值后,将该值从链接部分移动。您不能。您要做的是使用
表格
,从JCL加载表格并搜索表格。感谢Bruce为您提供的快速答案。还有别的办法吗?我将从中选择更好的方法。您是否希望像PARM='nnnn'一样从JCL中获取一个值?“我认为88是一条红鲱鱼。”霍格斯特罗姆:任何简单有效的解决方案都可以。你不能。您要做的是使用表格
,从JCL加载表格并搜索表格。感谢Bruce为您提供的快速答案。还有别的办法吗?我将从中选择更好的方法。您是否希望像PARM='nnnn'一样从JCL中获取一个值?我认为88是一个骗局。@Hogstrom任何简单有效的解决方案都可以。我相信PARM
限制为100字节。要传递超过100个字节,必须使用PARMDD
,然后执行的程序必须调用CEE3PR2
来检索该值。我不认为CEE3PR2是必要的,除非您在LE环境中(当然是COBOL),您使用了CEE3PRM,并且您现在可能正在处理超过100个字节的传递的parmd值。TSO调用命令处理也有一个愚蠢的100字节限制,您必须玩游戏(使用地址LINKMVS从REXX调用效果很好)。对于非LE代码,R1指向的区域是相同的,只是更长。@zarchasmpgmr我关于100字节限制的陈述是基于我对CEE3PR2的关注。一个带有链接部分的主程序应该足够了,该链接部分由一个01条目、一个05 9(5)二进制和一个05 X(32000)组成。如果我们的zPDT稳定下来……我相信PARM
限制在100字节以内。要传递超过100个字节,必须使用PARMDD
,然后执行的程序必须调用CEE3PR2
来检索该值。我不认为CEE3PR2是必要的,除非您在LE环境中(当然是COBOL),您使用了CEE3PRM,并且您现在可能正在处理超过100个字节的传递的parmd值。TSO调用命令处理也有一个愚蠢的100字节限制,您必须玩游戏(使用地址LINKMVS从REXX调用效果很好)。对于非LE代码,R1指向的区域是相同的,只是更长。@zarchasmpgmr我关于100字节限制的陈述是基于我对CEE3PR2的关注。一个带有链接部分的主程序应该足够了,该链接部分由一个01条目、一个05 9(5)二进制文件和一个05 X(32000)组成…