DB2 および COBOL 生成のための出口の作成
このトピックは『DB2® への EGL アクセスのための出口の作成』の延長で、COBOL 生成について特に述べたものです。
ソース・コード
収録されている出口のソースを確認するには、z/OS® 上の Rational® COBOL Runtime for zSeries インストール済み環境に組み込まれている SELASAMP PDS のメンバーを見直します。下の表に、対象となるメンバーを示します。
| メンバー名 | 用途 | 入出力の型 |
|---|---|---|
| ELADT2DB | データベース入力の前に、DATE 型のホスト変数からデータベースに割り当てられる値を変更します。 | CHAR(10) へのポインター |
| ELADT2PG | データベース出力の後、DATE 型のホスト変数に配置される値を変更します。 | CHAR(10) へのポインター |
| ELATI2DB | データベース入力の前に、TIME 型のホスト変数からデータベースに割り当てられる値を変更します。 | CHAR(8) へのポインター |
| ELATI2PG | データベース出力の後、TIME 型のホスト変数に配置される値を変更します。 | CHAR(8) へのポインター |
| ELATS2DB | データベース入力の前に、TIMESTAMP 型のホスト変数からデータベースに割り当てられる値を変更します。 | CHAR(26) へのポインター |
| ELATS2PG | データベース出力の後、TIMESTAMP 型のホスト変数に配置される値を変更します。 | CHAR(26) へのポインター |
日付、時間、およびタイム・スタンプについて設定するマスクは、これらの出口に送信したり、これらの出口から受信したりするデータに影響を及ぼしません。StrLib.defaultDateFormat、StrLib.defaultTimeFormat、および StrLib.defaultTimeStampFormat 関数を設定することによって、コード内にマスクを設定できます。これらの関数は、同じ名前のビルド記述子オプションからデフォルト値を受け取ることができます。
例および論理フロー
次の SQL ステートメントには 2 つの文字フィールドがあり、これらには両方とも、関連する列が DATE 型であることを示す sqlDataCode 値があります。
get myrec with #sql{
SELECT COL1 FROM TBL WHERE :dateChar1 = '2010-04-01' }
into dateChar2;
照会は以下のように構成されます。
- dateChar1 フィールドの値を受け取ります。
- この値を ELADT2DB 出口プログラムに渡します。
- データベースと対話するとき、出口プログラムから返された新しい日付値を使用します。
以下に、サンプル・データを取り出したときのイベントを示します。
- データベースから COL1 の値を取得します。
- 値を ELADT2PG プログラムに渡します。
- このプログラムから返された値を dateChar2 フィールドに割り当てます。
ロード・モジュール
収録されているロード・モジュールは、z/OS 上の Rational COBOL Runtime for zSeries インストール済み環境に組み込まれている SELALMD PDS のメンバーです。
これらの出口を使用可能にした場合、EGL 生成プログラムは、必要な各出口に対してリンク・エディット制御カード内に INCLUDE SELALMD(exitpgm) ステートメントを生成します。
- 出口を変更しない場合、サンプル出口がリンクされて実行されます。これらは値を変更しません。
- 出口を変更して、これらを新規データ・セットに配置した場合、ビルド・スクリプトのリンク・エディット・ステップで新規データ・セットを参照する必要があります。 特に、収録されている JCL 内の項目よりも前に SELALMD DD ステートメントへの参照を追加する必要があります。
- 変更された出口が今後変更される場合、プログラムを再生成または再リンクして変更を取得する必要があります。