我的JCL有三个步骤:
第1步:流程 第2步:NDM 第3步:在NDM之后删除输出
我想要完成什么? 无论步骤2的返回代码是什么,我都想执行STEP 3.
我试过这个: COND =(16,GT)和COND =(16,ST,STEP 2),但它没有做我想做的事。
答案 0 :(得分:5)
使用COND=EVEN
可能会导致STEP运行,即使上一步是ABENDS。编码COND=(0,GT,STEP2)
应允许该步骤运行,但如果存在ABEND则不允许。
或者,您可以使用IF/THEN/ELSE/ENDIF
编码。
e.g。
//STEP2 EXEC PGM=NDM
//IF STEP2.RC >= 0 THEN
//STEP3 EXEC PGM=???
//ENDIF
或
//STEP2 EXEC PGM=NDM
//IF STEP2.RC GE 0 THEN
//STEP3 EXEC PGM=???
//ENDIF
即。可以使用>=
或GE
。
您可能会发现这有用IF/THEN/ELSE/ENDIF Statement Construct
或COND参数COND Parameter
答案 1 :(得分:4)
在最后一步的EXEC声明中尝试COND = EVEN。
来自文件:
COND = EVEN告诉MVS执行此作业步骤即使前一步骤 除非工作被MVS取消,否则同样的工作就会出现 操作
还有COND = ONLY:
COND = ONLY告诉MVS仅在前一步骤中执行此作业步骤 同样的工作就出现了。
COND的解释:
COND相当直观。描述是:
如果没有满足这些测试,系统将执行作业步骤; 如果满足任何测试,系统将跳过作业步骤 COND =参数已编码。
所以你的COND =(16,GT)表示"如果16大于之前任何步骤的返回代码,则不要执行此步骤"。因此,只有当所有前面的步骤都以RC>结束时,才会执行此步骤。 16。
COND =(16,ST,STEP 2)无效 - ST不是有效条件。有效的测试是:
EQ - equal
LT - less than
LE - less than or equal to
NE - not equal
GT - greater than
GE - greater than or equal to
要进行步骤运行,无论先前步骤的条件代码是什么,您都可以编码COND =(0,GT),这意味着如果0大于任何先前的返回代码(它赢得了& #39; t),跳过这一步。'。
为安全起见,您可以编码:
COND=((0,GT),EVEN)
因为即使上一步ABEND,EVEN也会执行此步骤。