バインド制御パーツ

z/OS® では、SQL 表にアクセスするプログラム、ライブラリー、またはサービスを生成すると、ビルド計画に次のステップが組み込まれます。

バインド制御パーツは、 z/OS システム用に 生成される DB2 プログラムでのみ使用されます。 バインド制御の目的は、プログラムと DB2 が同一レベルになるようにすることです。 バインド制御パーツの情報は、DB2 プロセッサーに渡されるバインド制御ファイルの作成に使用されます。 バインド制御ファイルは、準備時に作成される DB2 計画の中に含まれるデータベース要求モジュール (DBRM) を指定します。

複数のバインド制御パーツを定義できます。bind ビルド記述子オプションは、 生成の出力時に含めるバインド制御パーツを示します。

デフォルトのバインド制御パーツの使用法

DB2 バインド・ステップでは、使用するバインド制御ファイルが EGL により生成されます。 デフォルトでは、生成中のプログラム、ライブラリー、またはサービス用の DBRM と、ランタイム環境に基づき必要となる EGL 提供 DBRM のみを含む計画がバインドされます。 EGL では、バインド・コマンドを作成するために次の組み込みテンプレートを使用します。
TSOLIB ACTIVATE DA('%DSNLOAD%')
ALLOC FI(DBRMLIB) SHR DA('%EZEPID%.%SYSTEM%.DBRMLIB')
CONCATD FI(DBRMLIB) SHR DA('%ELA%.SELADBRM')
DSN SYSTEM($DSYS%)
BIND PLAN(%EZEALIAS%) -
    MEMBER(%EZEALIAS%) -
    ACT(REP) -
    RETAIN -
    VALIDATE(BIND) -
    ISOLATION(CS)
*   OWNER(OWNERGRP)
組み込みテンプレートでは、実際のバインド・コマンドの生成を行いやすくするために、シンボリック・パラメーター (例えば、%SYSTEM%) を使用します。 例えば、プログラム MAILORDR を生成し、次の設定を指定するとします。
  • system ビルド記述子オプションを ZOSBATCH に設定する。
  • projectID ビルド記述子オプションを ORDERSYS に設定する
  • DSNLOAD 事前定義シンボリック・パラメーターを DSN8HLQ.DSNLOAD に設定する
  • ELA 事前定義シンボリック・パラメーターを ELAHLQ.V5R0M0 に設定する
  • DSYS 事前定義シンボリック・パラメーターを DSN8 に設定する
この場合、EGL によって次のようなバインド・コマンドが作成されます。
TSOLIB ACTIVATE DA('DSN8HLQ.DSNLOAD')
ALLOC FI(DBRMLIB) SHR DA('ORDERSYS.ZOSBATCH.DBRMLIB')
CONCATD FI(DBRMLIB) SHR DA('ELAHLQ.V5R0M0.SELADBRM')
DSN SYSTEM(DSN8)
BIND PLAN(MAILORDR)
    MEMBER(MAILORDR, ELADBRM4) -
    ACT(REP) -
    RETAIN -
    VALIDATE(BIND) -
    ISOLATION(CS)
*   OWNER(OWNERGRP)
ELADBRM4 は EGL 提供 DBRM で、z/OS バッチ環境で使用されます。

テンプレートとして使用するバインド制御パーツの設定

場合によっては、パッケージを既存の計画にバインドする方が好ましいことがあります。これを実行するには、特定の環境で使用されるすべてのバインドで使用するテンプレートを含んだ EGL バインド制御パーツを作成し、このパーツをワークスペースに保存しなければなりません。

例えば、次に類似した BIND_TEMPLATE という名前のバインド制御パーツを作成するとします。

TSOLIB ACTIVATE DA('%DSNLOAD%')
ALLOC FI(DBRMLIB) SHR DA('%EZEPID%.%SYSTEM%.DBRMLIB')
CONCATD FI(DBRMLIB) SHR DA('%ELA%.SELADBRM')
DSN SYSTEM(%DSYS%)
BIND PACKAGE(%MYCOLLECTIONNAME%) -
     MEMBER(%EZEALIAS%) -
     ACT(REP) -
     RETAIN -
     VALIDATE(BIND) -
     ISOLATION(CS)
*    OWNER(OWNERGRP)

直前の例の MYCOLLECTIONNAME は、ユーザー定義シンボリック・パラメーターです。これを作成し、ビルド記述子パーツに値を設定することができます。 もう 1 つのシンボリック・パラメーターは、EGL 組み込みテンプレートで使用されるのと同じものです。

テンプレートとして機能する EGL バインド制御パーツを作成するほか、次のアクションも実行しなければなりません。
  • ビルド記述子パーツの変更。 バインド制御パーツ (BIND_TEMPLATE) を指すように bind ビルド記述子オプションを設定する必要があります。
  • 次のような状況では、EGL 提供の DBRM のパッケージを各 DB2 計画にバインドしてください。
    • ランタイム環境が DB2 のみを使用する z/OS バッチの場合に、EGL 提供 DBRM が ELADBRM4 である
    • ランタイム環境が DB2 作業データベースを使用した IMS/VS の場合に、EGL 提供 DBRM が ELADBRM3 である

プログラム固有のバインド制御パーツの設定

計画をバインドする場合、各プログラムで異なるバインド・コマンドが必要となるケースがよくあります。 この理由は、単一実行単位用のすべてのプログラム (例: CICS® または IMS™ トランザクション、または単一バッチ・ジョブ・ステップ) は、単一バインド・コマンドを使用してバインドされる必要があるためです。これを実行するには、プログラム固有のバインド制御パーツを作成し、プログラムの計画を、同じ実行単位にある他のすべてのプログラムにバインドします。 これを行うには、次の 2 つの手法があります。
  1. プログラム固有のバインド制御パーツを、プログラム、ライブラリー、またはサービスと同じ名前で作成します。 デフォルトで、EGL は生成されるバインド制御パーツと同じ名前のパーツを探します。
  2. プログラム固有のバインド制御パーツを、プログラム、ライブラリー、またはサービスと異なる名前で作成します。 この場合、プログラム、ライブラリー、またはサービスを生成するときは必ず、bind ビルド記述子オプションをバインド制御パーツの名前に設定する必要があります。
例えば、ProgramA が ProgramB を呼び出し、この両方のプログラムで SQL が使用される場合は、両方のプログラムの DBRM を含み、z/OS バッチで使用可能な DB2 計画をバインドするために、次のようなプログラム固有のバインド制御パーツが必要になります。
TSOLIB ACTIVATE DA('DSN8HLQ.DSNLOAD')
ALLOC FI(DBRMLIB) SHR DA('ORDERSYS.ZOSBATCH.DBRMLIB')
CONCATD FI(DBRMLIB) SHR DA('ELAHLQ.V5R0M0.SELADBRM')
DSN SYSTEM(DSN8)
BIND PLAN(MYABPLAN) -
     MEMBER(PROGRAMA,PROGRAMB,ELADBRM4) -
     ACT(REP) -
     RETAIN -
     VALIDATE(BIND) -
     ISOLATION(CS) -
*    OWNER(OWNERGRP)
ELADBRM4 は EGL 提供 DBRM で、DB2 を使用する場合に必ず z/OS バッチ環境で必要になります。

ProgramA という名前のバインド制御パーツと、ProgramB という名前の同一のバインド制御パーツを作成できます。この結果、EGL はプログラム固有のバインド制御パーツを自動的に検出します。 代わりに、MYABPLAN という名前の単一バインド制御パーツを作成し、 ProgramA または ProgramB のいずれかを生成するときは必ず、bind ビルド記述子オプションを MYABPLAN を指すように設定してもかまいません。

EGL を使用した SQL データベース内のデータに対するアクセスについては、トピック『SQL データ・アクセス』および「EGL 言語解説書」の関連トピックを参照してください。


フィードバック