在jcl中刷新了步骤返回码

Har*_*nya 1 jcl return-code

我遇到了下面的情节,我对cond参数如何适用于前一步骤而感到困惑.

例如......

// STep 1 EXEC
//步骤2 EXEC cond =(0,ne,step1)
//步骤3 EXEC cond =(0,ne,step2)

在上述情况下,一个输入文件step1 RC为4,因此Step2被刷新,但步骤3已执行.
这是我很困惑的地方,即使step2没有被执行,jcl看到刷新的步骤rc为0或是什么导致step3执行.

任何关于此的解释都表示赞赏并感谢提前.

csc*_*eid 6

文档 ......

使用COND参数测试先前作业步骤的返回代码,并确定是否绕过此作业步骤.您可以在COND参数上指定一个或多个测试,并且可以测试特定作业步骤或已完成处理的每个作业步骤的返回代码.如果满足任何测试条件,系统会将COND参数评估为true并绕过作业步骤.如果未满足COND参数上指定的任何测试条件,则系统将COND参数评估为false并执行作业步骤.

系统对当前执行作业的返回代码执行COND参数测试.如果测试返回先前绕过的步骤,则系统将测试评估为false.

请注意我用斜体字的文字.因为"系统将测试评估为错误",所以执行作业步骤.换句话说,EXEC语句的COND参数正如记录的那样工作.至于为什么参数被设计为以这种方式工作,我担心当它在大约40多年前发明时我不在这个领域工作,因此不能说原始开发人员的推理.

您可能希望查看IF语句,它提供了测试给定步骤是否已运行以及测试其返回代码的功能.

//STEP01 EXEC 
//CK01   IF STEP1.RC EQ 0 THEN
//STEP02 EXEC
//CK01E  ENDIF
//CK02   IF STEP2.RUN & STEP2.RC EQ 0
//STEP03 EXEC
//CK02E  ENDIF
Run Code Online (Sandbox Code Playgroud)

或者,您可以编码......

//STEP01 EXEC 
//CK01   IF STEP1.RC EQ 0 THEN
//STEP02 EXEC
//CK02   IF STEP2.RC EQ 0
//STEP03 EXEC
//CK02E  ENDIF
//CK01E  ENDIF
Run Code Online (Sandbox Code Playgroud)