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.defaultDateFormatStrLib.defaultTimeFormat、および StrLib.defaultTimeStampFormat 変数を設定することによって、コード内にこれらのマスクを設定できます。 これらの変数は、Java ランタイム・プロパティーからデフォルト値を受け取ることができます。 詳しくは、このトピックの最後にリストされている参照トピックを参照してください。

例および論理フロー

次の SQL ステートメントには 2 つの文字フィールドがあり、これらには両方とも、関連する列が DATE 型であることを示す sqlDataCode 値があります。
get myrec with #sql{ 
   SELECT COL1 FROM TBL WHERE :dateChar1 = '2010-04-01' }
   into dateChar2;
照会は、EGL Java 生成プログラムまたは EGL デバッガーのいずれかによって、以下のように構成されます。
  1. dateChar1 フィールドの値を受け取ります。
  2. この値を EglDatabaseExits.dateExitToDB メソッドに渡します。
  3. メソッドによって返された値から JDBC Date オブジェクトを作成します。 オブジェクト作成では、StrLib.defaultDateFormat 変数の値に基づいて、ストリングから日付への変換を使用します。
  4. データベースと対話するとき、JDBC Date オブジェクトを使用します。
以下に、サンプル・データを取り出したときのイベントを示します。
  1. データベースから COL1 の値を取得します。この値は JDBC Date オブジェクトです。
  2. このオブジェクトからストリングを作成します。ストリング作成では、StrLib.defaultDateFormat 変数の値に基づいて、日付からストリングへの変換を使用します。
  3. このストリングを EglDatabaseExits.dateExitFromDB メソッドに渡します。
  4. このメソッドから返された値を 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 フォルダーを検索します。


フィードバック