コンパイラーはコンパイル時にはクラスの解決を行ないません。実行時にクラスが見付からない場合、実行時エラーが発生します。 これは、Java(TM) 環境から UnresolvedLinkException オブジェクトを受け取ったことによって示されます。
コンパイラーは、コンパイル時にはパラメーターのタイプのチェックは行ないません。 プロトタイプと呼び出されるメソッドとの間に矛盾があった場合、エラーを実行時に受け取ることになります。
Java オブジェクトは、RPG においてはオブジェクト参照子として見られます。 このオブジェクト参照子は整数値で、ポインターのように動作します。通常のオブジェクト参照子は正の値で、1 から始まって順に割り当てられます。JNI 機能 NewGlobalRef を使用して作成することができるグローバル参照は、負の値になります。 これらの値は、最小の負の数 (-2147483647) から始まって順に割り当てられます。
通常、これらの値は RPG コードの中では見えませんが、この情報が RPG コードをデバッグする時には役に立つことがあります。
String オブジェクトを Java メソッドに渡す必要がある場合は、次のようにして String オブジェクトを作成することができます。
D newString PR O EXTPROC(*JAVA D : 'java.lang.String' D : *CONSTRUCTOR) D value 65535A CONST VARYING D string S like(jstring) /free string = newString ('abcde'); ... /end-free
ストリングを、UCS-2 データまたはグラフィック・データとして指定して作成したい場合は、以下のコーディングを使用します。
D newStringC PR O EXTPROC(*JAVA D : 'java.lang.String' D : *CONSTRUCTOR) D value 16383C CONST VARYING D string S like(jstring) D graphicData S 15G D ucs2Data S 100C /free string = newStringC (%UCS2(graphicData)); ... string = newStringC (ucs2Data); /end-free
RPG が呼び出した Java メソッドが例外で終了した場合、RPG は Java 例外とシグナル・エスケープ・メッセージ RNX0301 を処理します。 このメッセージには例外のストリング値が含まれますが、Java が例外で終了するメソッドを呼び出した場合に通常使用可能なトレース情報は含まれません。
Java 例外トレース情報を参照するには、次のコマンドを実行します。
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.