代码之家  ›  专栏  ›  技术社区  ›  Puneet Abichandani

我想执行一个JCL步骤,不管前一个步骤的RC是什么?

  •  0
  • Puneet Abichandani  · 技术社区  · 7 年前

    步骤1:过程 第2步:NDM

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

    我试过这个:

    2 回复  |  直到 7 年前
        1
  •  5
  •   MikeT    7 年前

    COND=EVEN 存在一个潜在的陷阱,即即使前一个步骤异常结束,该步骤也会运行。编码 COND=(0,GT,STEP2)

    或者,您可以使用 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
    

    i、 e.任一 >= GE

    你可能会发现这很有帮助 IF/THEN/ELSE/ENDIF Statement Construct

    或用于COND参数 COND Parameter

        2
  •  4
  •   Steve Ives    7 年前

    在最后一步EXEC语句中尝试COND=EVEN。

    从文件中:

    COND=EVEN告诉MVS执行此作业步骤,即使在 操作人员

    还有一个COND=ONLY:

    COND相当违反直觉。描述如下:

    如果这些测试都不满足,则系统执行作业步骤; COND=参数已编码。

    因此,您的COND=(16,GT)意味着“如果16大于之前任何步骤的返回代码,则不要执行此步骤”。因此,只有当前面的所有步骤都以RC>完成时,才会执行此步骤;16

    条件=(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)
    

    即使前一个步骤异常结束,as EVEN也会导致执行此步骤。