2

私は以下のシナリオに遭遇しましたが、前のステップでcondパラメーターがどのように機能するかについて少し混乱しています。

例えば......

//ステップ1EXEC //ステップ2EXECcond
=(0、ne、step1)
//ステップ3 EXEC cond =(0、ne、step2)

上記の場合、1つの入力ファイルに対してstep1 RCは4であったため、Step2はフラッシュアウトされましたが、step3は実行されました。
これは、jclがフラッシュされたステップrcを0と見なすのか、またはstep2が実行されなかったのにstep3が実行される原因となるのか混乱しているところです。

これに関する説明をいただければ幸いです。

4

1 に答える 1

7

ドキュメントから..。

CONDパラメーターを使用して、前のジョブ・ステップからの戻りコードをテストし、このジョブ・ステップをバイパスするかどうかを判別します。CONDパラメーターで1つ以上のテストを指定でき、特定のジョブ・ステップまたは処理が完了したすべてのジョブ・ステップからの戻りコードをテストできます。テスト条件のいずれかが満たされた場合、システムはCONDパラメーターをtrueと評価し、ジョブステップをバイパスします。CONDパラメーターで指定されたテスト条件のいずれも満たされない場合、システムはCONDパラメーターをfalseと評価し、ジョブ・ステップを実行します。

システムは、ジョブの現在の実行からの戻りコードに対してCONDパラメーター・テストを実行します。テストが以前にバイパスされたステップを返す場合、システムはテストをfalseと評価します。

イタリック体にしたテキストに注意してください。「システムはテストを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

または、コーディングすることもできます...

//STEP01 EXEC 
//CK01   IF STEP1.RC EQ 0 THEN
//STEP02 EXEC
//CK02   IF STEP2.RC EQ 0
//STEP03 EXEC
//CK02E  ENDIF
//CK01E  ENDIF
于 2012-03-24T03:39:38.877 に答える