DB2 への EGL アクセスのための出口の作成
アプリケーションが DB2® データベースにデータを書き込んだり DB2 データベースからデータを取得するときに実行する出口コードを作成できます。
それぞれの出口の目的は、日付列、時刻列、およびタイム・スタンプ列に対応する CHAR 型値の値をフォーマット設定または変更することです。 この出口は、JDBC ドライバー・プロパティーや DB2 プリコンパイラー・オプションなどの他のメカニズムを使用して目的を達成できない場合に特に役立ちます。
以下の 6 つの出口が使用可能です。
- CHAR(10) 型の EGL フィールドに対応する日付列の入力および出力。
- CHAR(8) 型の EGL フィールドに対応する時刻列の入力および出力。
- CHAR(26) 型の EGL フィールドに対応するタイム・スタンプ列の入力および出力。
データベースへの入力では、ホスト変数の内容は影響を受けず、データベース列に送信される値のみが変更されます。出力では、ホスト変数の内容は変更されますが、列の値は影響を受けません。
COBOL または Java™ に対して生成されるデータ・アクセス・コードと一緒に使用するために、出口コードを以下のように作成します。
- データ・アクセス・コードが COBOL に対して生成される場合、それぞれの出口をそれら独自のロード・モジュールに配置します。詳しくは、『DB2 および COBOL 生成のための出口の作成』を参照してください。
- データ・アクセス・コードが Java に対して生成される場合、出口を単一 Java クラス内に作成します。詳しくは、『DB2 および Java 生成のための出口の作成』を参照してください。
収録されている出口は、影響を及ぼさないテンプレートです。
sqlDataCode 値の指定によるユーザー出口の使用可能化
実行時において、出口コードは sqlDataCode プロパティーに特定の値を指定して宣言されたホスト変数に対してのみ呼び出されます。
以下に、複数フィールドのプロパティーを含むレコード・パーツの例を示します。
Record TstabN type SQLRecord
{tableNames = [["ME.MYTABLE"]], fieldsMatchColumns = yes}
10 TS2 char(26) {column="TS2", isSqlNullable=yes, sqlDataCode=392};
10 TS1 char(26) {column="TS1", isSqlNullable=yes, sqlDataCode=392};
10 DATE1 char(10) {column="DATE1", isSqlNullable=yes, sqlDataCode=384};
10 TIME1 char(8) {column="TIME1", isSqlNullable=yes, sqlDataCode=388};
end
以下の例に示すように、SQL レコード外のフィールドがホスト変数として使用される場合もあります。
dataitem tstype char(26) {sqlDataCode=392} end
dataitem datetype char(10) {sqlDataCode=384} end
dataitem timetype char(8) {sqlDataCode=388} end
以下のすべての sqlDataCode 値が、出口呼び出しの原因となります。
| sqlDataCode 値 | NULL 可能 | SQL 列の型 |
|---|---|---|
| 384 385 |
YES NO |
DATE |
| 388 389 |
YES NO |
TIME |
| 392 393 |
YES NO |
TIMESTAMP |
EGL SQL 検索機能を使用すると、ユーザーに作成されるレコード・パーツ内の sqlDataCode 値が自動的に配置される、という設定が可能です。詳しくは、『SQL 検索設定の変更』を参照してください。
フィールドが NULL の場合のデータベース入力中や、列が NULL の場合のデータベース出力中には、特定フィールドの出口は呼び出されません。