2

JES2環境で、依存関係を持つ一連のジョブを起動するJCLを実装しようとしています。次に例を示します。

JOB_A  -> JOB_B   ) 
JOB_C  -> JOB_D   ) -> JOB_E

つまり、JOB_Eは、JOB_BとJOB_Dが終了したときにのみ起動されます。

JOB_AとJOB_Cのジョブ内部リーダーを介してJOB_BとJOB_Dを起動できますが、JOB_Eの依存関係を作成できません。

JCLリソースロックを調べて、JOB_Eが必要とするJOB_BおよびJOB_Dのデータセットをロックできるようにしました。これにより、JOB_Eは、すべてのデータセットが使用可能な場合にのみ開始されますが、JCLはSTEPレベルのデータセットのみを要求し、後で解放します。JCLが開始前にすべてのデータセットを要求できる場合、次のように、JOBにある種のミューテックスを実装できます。

 JOB_A locks data set DSN_A
 JOB_B waits to get data set DSN_A
 JOB_C locks data set DSN_C
 JOB_D waits to get data set DSN_C
 JOB_E waits to get data set DSN_A and DSN_C

これを行う方法?

スケジューラーにアクセスせずに開発環境でJCLのセットをテストするには、これが必要です。

4

2 に答える 2

2

スケジューラーにアクセスせずに開発環境でテストするためにこれが必要であるというあなたのコメントは、あなたのショップが本番環境用のスケジューラーを持っているかどうか疑問に思います。含まれている場合、テストでは実際に本番環境で使用されるものをテストしません。まだ行っていない場合は、考えてみてください。

あなたの質問に答えて、1つのテクニックは、あるジョブの最後のステップでIEBGENERなどのユーティリティを使用して、次のジョブを送信することです。

たとえば、JOB_Aの最後のステップでは、INTRDRを指すJOB_BおよびSYSUT2の実行JCLを含むSYSUT1を使用してIEBGENERを実行します。これは使用できる手法の1つですが、JOB_BとJOB_Dの両方が完了した後にJOB_Eを実行する必要があるため、他のジョブに干渉しないようにJOB_Eを実行するのは難しい場合があります。

もう1つの手法は、バッチモードでRexxを使用内部リーダーを使用してジョブをサブミットし、SDSFRexxインターフェースを使用してジョブが完了するのを監視することです。基本的に、一連のジョブに固有の特別な目的のジョブスケジューラを作成します。

更新、10年後...

z / OS 2.2以降、IBMは、「ジョブのグループおよびジョブ自体の実行順序を定義する」JES2実行制御ステートメントを追加しました。この機能を使用する前に、z/OSシステムプログラマーでいくつかの構成を行う必要があります。

于 2011-07-01T02:32:42.520 に答える
0

PRODセットが完全に異なり、xyzスケジューラーによって処理される一連のジョブをテストするために、なぜ貴重な時間を費やすのか疑問に思っています。気にしないでください、私が狂ったように聞こえても、lemmeも私の提案をします:

前提:ジョブは管理可能なCPUを使用し、並列実行する必要はありません。

トリガーBトリガーCトリガーDトリガーE(価値がないことはわかっていますが、テストはうまくいきます)私があなただったらどうするかを考えて、ここに置きます。私は主に私のテストが迅速かつうまくいくために必要です。レムはあなたの決まり文句を知っています。

さて、lemmeは、仮想的で主観的なスケジューリングを作成するREXXを使用してジョブの送信を管理できるような解決策について、両方に感謝します。

于 2011-07-02T06:30:54.307 に答える