uCosminexus Interschema ユーザーズガイド

[目次][用語][索引][前へ][次へ]

11.5.1 Java言語の出口関数の定義

ユーザ組み込み関数の機能を,Java言語の出口関数中に記述します。

<この項の構成>
(1) Java言語の出口関数の仕様
(2) Java言語の出口関数の実装例

(1) Java言語の出口関数の仕様

Java言語の出口関数の仕様を次に示します。

(a) 引数

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

(凡例)
−:特にありません。

注※1
jp.co.Hitachi.soft.interschema2.exitfunc.ENVStringの定義については,「10.3.1 ENVStringクラス」を参照してください。

注※2
jp.co.Hitachi.soft.interschema2.exitfunc.DateTimeの定義については,「10.3.2 DateTimeクラス」を参照してください。

例えば,ユーザ組み込み関数ET_STRING FUNC099 (ET_INT, ET_INT)に対応するJava出口関数は,public static String func099(Object o, int a, int b)というシグニチャを持ちます。

(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クラスインスタンスを返す場合の戻り値についての制限事項を,次の表に示します。

表11-5 出口関数戻り値の制限

ユーザ組み込み関数戻り値型 Java言語で対応する型 制限
ET_STRING java.lang.String null,空文字列は設定できません。
ET_STREAM byte [] nullは設定できません。配列サイズは,1以上に設定する必要があります。
ET_DTM jp.co.Hitachi.soft.interschema2.exitfunc.DateTime nullは設定できません。
(c) Java言語の出口関数で使用できるJavaクラス

Interschemaが定義している出口関数で使用できるJavaクラスは,jp.co.Hitachi.interschema2.exitfuncパッケージで定義されています。jp.co.Hitachi.interschema2.exitfuncパッケージで定義されているJavaクラスについては,「10.1.4 jp.co.Hitachi.soft.interschema2.exitfuncパッケージのクラスの概要」を参照してください。

(2) Java言語の出口関数の実装例

Java言語の出口関数の実装例を次に示します。