非 CICS 環境では、PSB スケジューリングは CICS® 環境とは異なる方法で処理されます。 以下のセクションでは、PSB スケジューリングと、実行時の代替 PSB の使用について説明します。
IMS/VS、IMS™ BMP、および z/OS® バッチのプログラム実行中に、DL/I の初期化によって、単一の PSB がスケジュールされます。 この PSB は、1 つのバッチ・ジョブ・ステップまたは IMS トランザクションに対してのみ使用可能なものです。
実行単位内のすべての EGL プログラムおよび非 EGL プログラムは、同じ PSB を共用する必要があります。 実行単位には、プログラムへ制御権移動 の形式で transfer 文を 使用して呼び出されるか移動先になるすべてのプログラムが含まれます。 IMS BMP および z/OS バッチの場合は、実行単位には、 トランザクションへ制御権移動 の形式で transfer 文を使用して移動先となるすべてのプログラムも含まれます。 IMS/VS の場合、トランザクションへ制御権移動 の形式で transfer 文を使用して移動する先のプログラムは、移動元のプログラムとは異なる実行単位にあります。
IMS/VS の場合は、IMS システム定義で使用する PSB を指定します。 IMS PSB は、プログラム名と同じ名前でなければなりません。 PSB は、IMS トランザクションの開始時にスケジュールされます。
IMS BMP および z/OS バッチの場合は、バッチ・ジョブの実行に使用される JCL で、使用する PSB 名を指定します。 PSB は、IMS BMP または z/OS バッチ・ジョブの開始時にスケジュールされます。
作業論理単位 (LUW) は、コミット点またはロールバックが発生するたびに終了します。
z/OS バッチと IMS BMP の場合、 実行単位は、transfer 文または call 文を使用して制御権移動を相互に行うすべての EGL プログラムと非 EGL プログラムから構成されます。 非 EGL プログラムの場合は、OS XCTL マクロまたは call 文を使用するすべての移動もこれに含まれます。
IMS/VS の場合、実行単位は単一トランザクションに相当し、 プログラムへの制御権移動形式の transfer 文または call 文を使用して制御権移動を相互に行うすべての EGL プログラムおよび非 EGL プログラムから構成されます。 非 EGL プログラムの場合は、call 文を 使用するすべての移動もこれに含まれます。
z/OS バッチの場合、 DL/I を使用しない EGL プログラムは、プログラムが SQL テーブルに対して変更を行った場合にのみ、 コミット点を発行します。 コミット点は、非 EGL プログラムによって行われた SQL テーブルへの変更の場合には発生しません。
IMS/VS およびトランザクション指向 IMS BMP プログラム (I/O PCB と関連付けられたシリアル・ファイルをスキャンするプログラム) の場合、sysLib.commit() は無視されます。 コミット点は、I/O PCB に対して GU (get unique) 呼び出しが行われるたびに発生します。
バッチ・プログラムを実行する場合は、sysLib.commit() を使用して定期的にデータベースの更新をコミットできます。 もしくは、EGLTDLI() を使用してシンボリック・チェックポイント関数と再開関数を実装することもできます。 sysLib.commit() とシンボリック・チェックポイント関数は、両方ともにデータベースの更新をコミットします。 ただし、シンボリック・チェックポイント関数により、 制御合計や、コミット点の発生時に処理された最後のデータベース・レコードのキーなどの情報を保存することも可能になります。 プログラムは、正常に完了しない場合、最後のコミット点にバックアウトされます。 シンボリック・チェックポイントを使用して情報を保存した場合は、 プログラムを再開するときに、DL/I 再開 (XRST) 呼び出しを使用して、保存されたデータを復元できます。 この情報を使用して、処理が停止したデータベース内ポイントで処理を再開できます。
関連概念:
DL/I データベース・サポート
関連項目:
call
converse
CICS 環境のための DL/I 考慮事項
EGLTDLI()
transfer