DB2 および Java 生成のための出口の作成
このトピックは『DB2® への EGL アクセスのための出口の作成』の延長で、Java™ 生成について特に述べたものです。
ソース・コード
デフォルトで実行される出口コードは、com.ibm.etools.egl.java.runtime_version (version は製品バージョン) 内の fda7.jar ファイルにあります。クラス名は EglDatabaseExits です。
下の表に、このクラス内のメソッドを示します。
| メソッド名 | 用途 | 入出力の型 |
|---|---|---|
| dateExitToDB | データベース入力の前に、DATE 型のホスト変数からデータベースに割り当てられる値を変更します。 | String |
| dateExitFromDB | データベース出力の後、DATE 型のホスト変数に配置される値を変更します。 | String |
| timeExitToDB | データベース入力の前に、TIME 型のホスト変数からデータベースに割り当てられる値を変更します。 | String |
| timeExitFromDB | データベース出力の後、TIME 型のホスト変数に配置される値を変更します。 | String |
| timestampExitToDB | データベース入力の前に、TIMESTAMP 型のホスト変数からデータベースに割り当てられる値を変更します。 | String |
| timestampExitFromDB | データベース出力の後、TIMESTAMP 型のホスト変数に配置される値を変更します。 | String |
package egl.io.sql;
public class EglDatabaseExits
{
/**
* Does custom formatting of a string used as input to a DATE column.
*
* @param input - the value from EGL.
* @return a string in the format which will then be formatted
by StrLib.defaultDateFormat.
*/
public static String dateExitToDB( String input ) { return input; }
/**
* Does custom formatting of a string value fetched from a DATE column.
*
* @param input - the value from the DATE column, formatted
according to StrLib.defaultDateFormat.
* @return a string, will be assigned to an EGL variable.
*/
public static String dateExitFromDB( String output ) { return output; }
/**
* Does custom formatting of a string used as input to a TIME column.
*
* @param input - the value from EGL.
* @return a string in the format that will then be formatted
by StrLib.defaultTimeFormat.
*/
public static String timeExitToDB( String input ) { return input; }
/**
* Does custom formatting of a string value fetched from a TIME column.
*
* @param input - the value from the TIME column, formatted
according to StrLib.defaultTimeFormat.
* @return a string which will be assigned to an EGL variable.
*/
public static String timeExitFromDB( String output ) { return output; }
/**
* Does custom formatting of a string used as input to a TIMESTAMP column.
*
* @param input - the value from EGL.
* @return a string in the format which will then be formatted
by StrLib.defaultTimestampFormat.
*/
public static String timestampExitToDB( String input ) { return input; }
/**
* Does custom formatting of a string value fetched from a TIMESTAMP column.
*
* @param input - the value from the TIMESTAMP column, formatted
according to StrLib.defaultTimestampFormat.
* @return a string, will be assigned to an EGL variable.
*/
public static String timestampExitFromDB( String output ) { return output; }
}
ここに示すとおり、日付、時間、およびタイム・スタンプについて設定するマスクは、これらの出口に送信したり、これらの出口から受信したりするデータに影響を与えます。StrLib.defaultDateFormat、StrLib.defaultTimeFormat、および StrLib.defaultTimeStampFormat 変数を設定することによって、コード内にこれらのマスクを設定できます。 これらの変数は、Java ランタイム・プロパティーからデフォルト値を受け取ることができます。詳しくは、このトピックの最後にリストされている参照トピックを参照してください。
例および論理フロー
get myrec with #sql{
SELECT COL1 FROM TBL WHERE :dateChar1 = '2010-04-01' }
into dateChar2;
- dateChar1 フィールドの値を受け取ります。
- この値を EglDatabaseExits.dateExitToDB メソッドに渡します。
- メソッドによって返された値から JDBC Date オブジェクトを作成します。 オブジェクト作成では、StrLib.defaultDateFormat 変数の値に基づいて、ストリングから日付への変換を使用します。
- データベースと対話するとき、JDBC Date オブジェクトを使用します。
- データベースから COL1 の値を取得します。この値は JDBC Date オブジェクトです。
- このオブジェクトからストリングを作成します。ストリング作成では、StrLib.defaultDateFormat 変数の値に基づいて、日付からストリングへの変換を使用します。
- このストリングを EglDatabaseExits.dateExitFromDB メソッドに渡します。
- このメソッドから返された値を dateChar2 フィールドに割り当てます。
使用上の注意
カスタムの EglDatabaseExits クラスを使用する、生成された Java コードをデバッグまたは実行するには、EGL Java ランタイム JAR ファイルである fda7.jar より前になるようにクラスパス内にこのクラスを配置します。EGL デバッガーでは、クラスパス設定か、プロジェクトの「Java のビルド・パス (Java Build Path)」プロパティーを使用できます。
一般的に、生成された Java バッチ・プログラムのクラスパスを Eclipse 内で設定する最も簡単な方法は、プロジェクトの「Java のビルド・パス (Java Build Path)」プロパティーを使用することです。Eclipse 以外では、CLASSPATH 環境変数または -classpath コマンド・ライン引数を使用します。
生成されたコードをコンパイルするときは、カスタムの EglDatabaseExits クラスをクラスパスに含める必要はありません。
生成された Java コードを Apache Tomcat サーバーまたは WebSphere® Application Server でデバッグまたは実行するには、カスタム・クラスを WEB-INF/classes フォルダーのデプロイメント Web プロジェクト内に配置します。いずれのサーバーも、そのフォルダーを検索してから fda7.jar ファイルが配置されている WEB-INF/lib フォルダーを検索します。