无论上一步的RC是什么,我都想执行JCL步骤?

时间:2017-08-10 09:28:19

标签: conditional mainframe jcl

我的JCL有三个步骤:

第1步:流程 第2步:NDM 第3步:在NDM之后删除输出

我想要完成什么? 无论步骤2的返回代码是什么,我都想执行STEP 3.

我试过这个: COND =(16,GT)和COND =(16,ST,STEP 2),但它没有做我想做的事。

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也会执行此步骤。