DB2® の表にアクセスするプログラムで構成されるシステムを作成するときに、各プログラムのデータベース要求モジュール (DBRM) すべてを 1 つの DB2 プランにバインドすることを望まない場合があります。
セキュリティーおよび保守上の理由で、プログラムで構成されるシステム内のいくつかの DB2 プランにアクセスできます。このセクションでは、CICS® for z/OS® で複数の DB2 プランにアクセスする場合に考えられる方式のうち 3 つについて説明します。最初の 2 つの方式は、トランザクション ID を変更する方法を説明しています。3 番目の方式では、DB2 Dynamic Plan Selection 機能を使用します。
RDO DB2ENTRY 定義または DB2TRAN 定義で DB2 プラン名とトランザクション ID を関連付けた場合、トランザクション ID を変更することにより DB2 プラン名を変更できます。RDO DB2ENTRY および DB2TRAN の定義の詳細については、ご使用のバージョンの DB2 の適切なリソース定義マニュアルを参照してください。
EGL システム変数 sysVar.transactionID を使用すると、セグメント化されたトランザクション ID を動的に変更できます。セグメント化プログラムを実行するときに、sysVar.transactionID の値をトランザクション ID として使用して、各 converse ステートメントの直後にプログラムを再度開始します。sysVar.transactionIDを使用してトランザクション ID を動的に変更する簡単な例を、次の図に示します。ここで、トランザクション ID の初期値は「Menu」です。

| アプリケーション: | APPA | APPB | APPC |
| トランザクション ID (converse 後): | AAAA | BBBB | CCCC |
| DB2 プラン: | PLANA | PLANB | PLANC |
...
sysVar.transactionID="AAAA"; // Set new transaction ID
converseInfoform(); // Converse information form to user
readDB2Record(); // Retrieve data from a DB2 table
...
メニュー・プログラム、またはタスク指向プログラム (converse ステートメントの前) には、SQL ステートメントはありません。
各タスク指向プログラムの DBRM は固有の DB2 プランにバインドされ、RDO DB2ENTRY または DB2TRAN 定義内の固有のトランザクション ID に関連付けられます。これは、converse ステートメントの前に sysVar.transactionID に移動されるトランザクション ID です。converse ステートメントの後で、新規トランザクション ID に関連付けれた DB2 プランを使用して新規トランザクションが開始されます。
トランザクション ID AAAA、BBBB、および CCCC は、RDO DB2ENTRY 定義内で DB2 プラン PLANA、PLANB、および PLANC にそれぞれ関連付けられます。
この関連付け方式は、セグメント化プログラム内でのみ使用できます。 ただし、CICS プログラムの場合、transfer to transaction ステートメントの使用、または DB2 プランを動的に選択することにより、さまざまな DB2 プランにアクセスできます。
この方式は、transfer to transaction ステートメントを使用してプログラム間で制御を移動する場合に役立ちます。 transfer to transaction ステートメントを使用して 1 つのプログラムから別のプログラムに転送すると、トランザクション ID が変更されます。 これにより、RDO DB2ENTRY 定義で新規トランザクション ID を別の DB2 プランに関連付けると、新規 DB2 プランにアクセスできます。
この方式では、z/OS CICS トランザクションの DB2 プラン名を動的に選択する機能を提供する、DB2 動的プラン選択を使用します。 DB2 動的プラン選択は、DB2 プラン名の代わりに RDO DB2ENTRY 定義に PLANEXITNAME を定義するオプションを提供します。出口プログラムは、z/OS CICS トランザクションの DB2 プランを選択します。 この機能を使用すると、複数のプランを 1 つのトランザクション ID に関連付けることができます。DB2 の動的プラン選択の詳細については、ご使用の DB2 システムの資料を参照してください。
作業論理単位 (LUW) 内の最初の SQL ステートメントが、出口プログラムを開始します。