uCosminexus Interschema ユーザーズガイド
ユーザ組み込み関数の機能を,Java言語の出口関数中に記述します。
Java言語の出口関数の仕様を次に示します。
Java言語の出口関数の第1引数には,java.lang.Object型を指定する必要があります。第2引数以降には,ユーザ組み込み関数の引数のデータ型(Interschemaの定義型)をJava言語のデータ型に置き換えたデータ型を指定します。ユーザ組み込み関数の引数のデータ型とJava言語のデータ型の対応を,次の表に示します。
表11-4 ユーザ組み込み関数の引数のデータ型とJava言語のデータ型の対応
ユーザ組み込み関数のデータ型(Interschema定義型) | 対応するJava言語のデータ型 | 備考 |
---|---|---|
ET_INT | int | signed 32Bit |
ET_REAL | double | 64Bit format IEEE754 |
ET_STRING(戻り値) | java.lang.String | − |
ET_ENVSTRING(引数) | jp.co.Hitachi.soft.interschema2.exitfunc.ENVString※1 | − |
ET_STREAM | byte [] | − |
ET_DTM | jp.co.Hitachi.soft.interschema2.exitfunc.DateTime※2 | − |
例えば,ユーザ組み込み関数ET_STRING FUNC099 (ET_INT, ET_INT)に対応するJava出口関数は,public static String func099(Object o, int a, int b)というシグニチャを持ちます。
Java言語の出口関数内でエラーが発生した場合,呼び出し元に例外をスローすることでエラーを通知します。この場合,ユーザがExitFuncExceptionクラスのインスタンスに設定したエラーコードが,ログファイルに出力されて,変換は中止されます。また,DateTimeオブジェクトの生成に失敗したときは,Interschemaが0x20000004以上のエラーコードを設定して,ExitFuncExceptionをスローします。ExitFuncExceptionクラスについては,「10.3.4 ExitFuncExceptionクラス」を参照してください。
Java言語の出口関数内で警告が発生した場合,呼び出し元にExitFuncWarning例外をスローすることで警告を通知します。この場合,Interschemaは,ユーザがExitFuncWarningクラスのインスタンスに設定した値を,Java言語の出口関数の戻り値として使用するため,ユーザが例外に設定したエラーコードがログファイルに出力された後,変換処理は続行されます。ExitFuncWarningクラスについては,「10.3.3 ExitFuncWarningクラス」を参照してください。
Java言語の出口関数から,ExitFuncExceptionクラス又はExitFuncWarningクラス以外の例外をスローしないでください。
Java言語の出口関数から,直接又はExitFuncWarning例外を通して,基本型以外のJavaクラスインスタンスを返す場合の戻り値についての制限事項を,次の表に示します。
ユーザ組み込み関数戻り値型 | Java言語で対応する型 | 制限 |
---|---|---|
ET_STRING | java.lang.String | null,空文字列は設定できません。 |
ET_STREAM | byte [] | nullは設定できません。配列サイズは,1以上に設定する必要があります。 |
ET_DTM | jp.co.Hitachi.soft.interschema2.exitfunc.DateTime | nullは設定できません。 |
Interschemaが定義している出口関数で使用できるJavaクラスは,jp.co.Hitachi.interschema2.exitfuncパッケージで定義されています。jp.co.Hitachi.interschema2.exitfuncパッケージで定義されているJavaクラスについては,「10.1.4 jp.co.Hitachi.soft.interschema2.exitfuncパッケージのクラスの概要」を参照してください。
Java言語の出口関数の実装例を次に示します。
package usrpackagename; import jp.co.Hitachi.soft.interschema2.exitfunc.ExitFuncException; /** * Javaによる出口関数を定義します。 * */ public class UFunc { /** * 二つの整数値を受け取り,その剰余を返します。 * この関数のettrans.iniの定義は以下のようになります。 * ET_INT FUNC001 (ET_INT, ET_INT) * 第一引数のObjectは明示的には記述しません。 * 関数名FUNC001は任意に付けた名前であり,Java * メソッド名と一致させる必要はありません。 */ public static int func001 throws ExitFuncException (Object obj, int a, int b){ if ( b == 0 ) throw new ExitFuncException(-1); return a % b; } }
All Rights Reserved, Copyright (C) 2000, Information-technology Promotion Agency, Japan.
All Rights Reserved. Copyright (C) 2005, 2008, Hitachi, Ltd.
All Rights Reserved, Copyright (C) 1985-1998, Microsoft Corporation.