複数のリージョンで JCL 作業を共有するためにエンタープライズ サーバーのクラスター化機能を活用する方法を検証します。
このデモンストレーションでは、共有データセット (
catalog および
spool) にアクセスする JCL ジョブをクラスターで正常に実行し、同時にデータセットの完全性を維持する方法について検証します。
- Enterprise Developer を起動します。
- Web ブラウザで URL http://localhost:86 を指定します。メインの Enterprise Server Administration ホーム画面が表示されます。
- 左側のパネルで [Import] をクリックします。[Import server information] 画面が表示されます。
- デモンストレーション用のクラスター化リポジトリの場所、%PUBLIC%\Documents\Micro Focus\Enterprise Developer\Samples\Mainframe\CICS\Classic\CLUSTER\repos を入力し、[Next] を 3 回クリックして、[OK] をクリックします。画面がメインの [Enterprise Server] ホーム画面に戻り、リージョンのリストに新たにインポートされたリージョン、ESCLMGR、ESCLCLI1、ESCLCLI2 が表示されます。
- ESCLMGR サーバーの行で [Edit] をクリックします。[Configuration Information] ボックスで、ES_CLUSTER_SYSTEM_DIR 環境変数が適切であることを確認 (必要に応じて更新) します。通常またはデフォルトのインストールでは、%PUBLIC%\Documents\Micro Focus\Enterprise Developer\Samples\Mainframe\CICS\Classic\CLUSTER\system のよう
に設定されます。
- ESCLCLI1 および ESCLCLI2 サーバーでも上記の手順を繰り返します。
- [File > Import > General > Existing Projects into Workspace] をクリックして cluster プロジェクトを Eclipse にインポートします。[Next] をクリックします。
- デモンストレーション用のプロジェクト、%PUBLIC%\Documents\Micro Focus\Enterprise Developer\Samples\Mainframe\CICS\Classic\CLUSTER に移動し、[OK] をクリックします。
- デモンストレーション用のプロジェクトが選択されており、[Copy projects into workspace] がオフであることを確認し、[Finish] をクリックします。[Navigator] ウィンドウにデモンストレーション用のプロジェクトが開きます。ここでプロジェクトの名前、CLUSTER を右クリックして [Build Project] を選択できます。プロジェクトがエラーなしでビルドされます。
- プロジェクトの内容を検証します。主なコンポーネントは次のとおりです。
- LCKSLEEP.JCL
- これはデータセット SYSI.CLUSTER.MYFILE でロックを取得し、LCKSLEEP.CBL を呼び出して 25 秒間スリープします。
- NOWAIT.JCL
- これはデータセット SYSI.CLUSTER.ANOTHER でロックを取得し、LCKSLEEP.CBL を呼び出して 5 秒間スリープします。
- WAIT4LCK.JCL
- これはデータセット SYSI.CLUSTER.MYFILE (LCKSLEEP.JCL と同じデータセット) でロックを取得し、WAIT4LCK.CBL を呼び出して 25 秒間スリープします。
- LCKSLEEP.CBL
- このプログラムはファイルを開き、そのファイルに書き込みを行い、スリープしてファイルを閉じます。
- WAIT4LCK.CBL
- このプログラムはファイルを開き、そのファイルに書き込みを行って閉じます。
- getosinf.cbl
- これはオペレーティング システムを決定し、これにより LCKSLEEP.CBL が正しい sleep API を呼び出すことができます。
- mfchkfs.cbl
- これは、ファイル操作の誤りを判定します。
- [Start > All Programs > Micro Focus Enterprise Developer > Tools > Enterprise Developer Command Prompt (32-bit)] を選択します。Enterprise Developer のコマンド プロンプトが表示されます。
- 次のコマンドを入力して ESCLMGR リージョンを起動します。
casstart /rESCLMGR
ESCLMGR リージョンが起動したら、casstart /rESCLCLI1 と casstart /rESCLCLI2 を入力し残り 2 つのリージョンを起動します。
- サーバー エクスプローラーで [ESCLMGR] を右クリックし、[Associate with project] を選択して、[CLUSTER] が選択されていることを確認します。
- サーバー エクスプローラーで [Local [localhost:86]] を右クリックし、[Refresh] を選択します。これによりサーバーのリストが最新のステータスに更新されます。
- 3 つのリージョンが起動したら、付属の JCL ジョブをサブミットする必要があります。[COBOL Explorer] タブで、jcl フォルダーを展開し、LCKSLEEP.JCL を右クリックして [Submit to Enterprise Server] を選択します。この手順を WAIT4LCK.JCL と NOWAIT.JCL でも繰り返します。次の連続したイベントが発生します。
- ジョブ LCKSLEEP が実行を開始し、25 秒間スリープします。
- ジョブ NOWAIT が実行を開始し、5 秒間スリープして正常に完了します。
- ジョブ WAIT4LCK が起動しますが、LCKSLEEP.JCL を待ってデータセットをリリースします。
- ジョブ LCKSLEEP が実行を正常に完了します。
- ジョブ WAIT4LCK が実行を継続し、正常に完了します。
ESCLCLI1 and ESCLCLI2 のコンソール ログに表示されるメッセージによってこの動作を確認できます。
ESCLCLI1 コンソール ログのサンプル抜粋
130212 10410153 4944 ESCLCLI1 CASSI5012I Successfully negotiated with ES Cluster manager ESCLMGR 10:41:01
130212 10410173 6840 ESCLCLI1 CASBJ0005I Batch initiator started for job classes "A" 10:41:01
130212 10410174 4944 ESCLCLI1 CASSI9025I RNLDEFs received and installed from ES Cluster Manager ESCLMGR. 10:41:01
130212 10410214 6708 ESCLCLI1 CASSI1600I SEP initialization completed successfully 10:41:02
130212 10410235 6860 ESCLCLI1 CASSI1600I SEP initialization completed successfully 10:41:02
130212 10410235 6708 ESCLCLI1 CASSI5021I PLTPI Phase 2 - No PLT Specified 10:41:02
130212 10580934 6840 ESCLCLI1 JCLCM0188I JOB01001 LCKSLEEP JOB STARTED 10:58:08
130212 10580955 6840 ESCLCLI1 Sleeping time will be 0000000025 seconds 10:58:09
130212 10583555 6840 ESCLCLI1 JCLCM0182I JOB01001 LCKSLEEP JOB ENDED - COND CODE 0000 10:58:34
ESCLCLI2 コンソール ログのサンプル抜粋
130212 10412143 7184 ESCLCLI2 CASSI5012I Successfully negotiated with ES Cluster manager ESCLMGR 10:41:21
130212 10412163 7260 ESCLCLI2 CASBJ0005I Batch initiator started for job classes "B" 10:41:21
130212 10412164 7184 ESCLCLI2 CASSI9025I RNLDEFs received and installed from ES Cluster Manager ESCLMGR.
130212 10412204 7172 ESCLCLI2 CASSI1600I SEP initialization completed successfully 10:41:21
130212 10412205 7272 ESCLCLI2 CASSI1600I SEP initialization completed successfully 10:41:22
130212 10412225 7172 ESCLCLI2 CASSI5021I PLTPI Phase 2 - No PLT Specified 10:41:22
130212 10581625 7260 ESCLCLI2 JCLCM0188I JOB01002 NOWAIT JOB STARTED 10:58:15
130212 10581646 7260 ESCLCLI2 Sleeping time will be 0000000005 seconds 10:58:16
130212 10582246 7260 ESCLCLI2 JCLCM0182I JOB01002 NOWAIT JOB ENDED - COND CODE 0000 10:58:21
130212 10582326 7260 ESCLCLI2 JCLCM0188I JOB01003 WAIT4LCK JOB STARTED 10:58:23
130212 10582346 7260 ESCLCLI2 MVSXR0092I JOB01003 WAIT4LCK Waiting for exclusive use of dataset
"SYSI.CLUSTER.MYFILE". 10:58:23
130212 10583546 7260 ESCLCLI2 MVSXR0093I JOB01003 WAIT4LCK Required datasets have been acquired.
Execution resumed. 10:58:34
130212 10583566 7260 ESCLCLI2 JCLCM0182I JOB01003 WAIT4LCK JOB ENDED - COND CODE 0000 10:58:35
- サーバーを停止するには、コマンド casstop /rESCLMGR、casstop /rESCLCLI1、casstop /rESCLCLI2 をエンタープライズ サーバーのコマンド プロンプトで発行します。
この演習では、データセットを共有せずに、
エンタープライズ サーバーによって複数の JCL ジョブを並行して実行する方法のデモンストレーションを行いました。データセットを共有する 2 つの JCL ジョブは並行して実行しません。これらのジョブはデータセットの完全性を維持するために個別に実行します。