在我的JCL中有三个步骤:
步骤1:过程步骤2: NDM步骤3:在NDM之后删除输出
我想完成什么?无论步骤2的返回代码是什么,我都希望执行步骤3。
我试过这样做: COND=(16,GT)和COND=(16,ST,步骤2),但是它没有做我想做的事情。
发布于 2017-08-10 09:56:45
在最后一步的EXEC语句中尝试COND=EVEN。
从医学部:
COND=EVEN告诉MVS执行此作业步骤,即使同一作业中的前一步abends,除非该作业被MVS操作符取消。
还有一个COND=ONLY:
COND=ONLY告诉MVS,只有当同一作业中的前一步被执行时,才执行此作业步骤。
COND的解释:
康德是完全违反直觉的。描述如下:
如果不满足这些测试,系统将执行作业步骤;如果满足任何测试,系统将跳过编码COND=参数的作业步骤。
因此,您的COND=( 16,GT)意味着“如果16大于前面任何步骤的返回代码,则不要执行此步骤”。因此,只有当所有前面的步骤都以RC > 16完成时,这个步骤才会执行。
COND=(16,ST,步骤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大于以前的任何返回代码(它不会),跳过这个步骤。’
为了安全起见,你可以编码:
COND=((0,GT),EVEN)即使是前一步ABENDs,也会导致此步骤执行。
发布于 2017-08-10 12:58:01
即使在前面的步骤ABENDS中,使用COND=EVEN也有一个潜在的缺陷,即步骤将运行。编码COND=(0,GT,STEP2)应该允许运行该步骤,但如果存在ABEND,则不允许运行。
您也可以使用IF/THEN/ELSE/ENDIF编码。
例如:
//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/IF/ELSE/ENDIF语句构造
或用于COND参数COND参数。
https://stackoverflow.com/questions/45609661
复制相似问题