在 JCL proc 中,如何测试调用者是否未设置参数?

In a JCL proc, how to test whether a parameter was not set by the caller?

我想为 proc 中的参数提供默认值,为此我想知道如何测试 EXEC 调用是否定义了预期参数。

找到正确的方法:

//MYPROC  PROC  MYPAR=999
//*       [your proc code]
//        PEND

如果调用 EXEC 没有将 MYPAR 设置为某个值(也没有使它无效),它将默认为指定的 999。

参考:https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.1.0/com.ibm.zos.v2r1.ieab600/iea3b6_Examples_of_the_PROC_statement.htm

一种技术是使编目过程中的默认值产生 JCL 错误,从而确保执行 JCL 提供有效值。

//AEIOU   PROC DSNHLQ='SUPPLY_A_DSN_HLQ'  Force EXEC statement override
//*
//NOTHING  EXEC PGM=IEFBR14
//DD001    DD  DISP=OLD,DSN=&DSNHLQ..TEMP

另一种技术是编写一个简单的程序来验证任意参数,在 COBOL 术语中,您通过链接部分获取参数值,并根据从平面文件中读取的一组有效值进行验证。根据您的 SORT 产品,您可以通过创造性地使用控制卡来实现相同的目标。