Java と RPG 定義とデータ・タイプ

メソッドのパラメーターと戻り値のデータ・タイプは、サブプロシージャーのプロトタイピングの時と同様に指定します。 ただしデータ・タイプは、実際は Java™ データ・タイプにマップされます。次の表は、ILE RPG データ・タイプと Java データ・タイプとの対応表です。

QSYSINC/QRPGLESRC で JNI メンバーをコピーする場合、 そのファイル内の定義のように、LIKE を使用して RPG 変数およびパラメーターを定義することができます。 例えば、Java "int" タイプなどの変数を定義するには、それを LIKE(jint) と定義します。RPG および Java に関する以降の説明では、LIKE(jxxxx) で定義したすべての定義はモジュール内に QSYSINC/QRPGLESRC,JNI の /COPY を持つことが前提です。 この /COPY ファイルの使用について詳しくは、Java を使用するためのその他の RPG コーディングの節を参照してください。

表 1. Java データ・タイプの RPG 定義
Java データ・タイプ ILE RPG データ・タイプ RPG 定義
boolean 標識 N
byte1 整数 3I 0
文字 1A
byte[] 文字の長さ > 1 (3 を参照) nA
文字の長さ = 1 の配列 (4 を参照) 1A DIM(x)
日付 D
時刻 T
タイム・スタンプ Z
short 2 バイト整数 5I 0
char UCS-2 長さ = 1 1C
char[] UCS-2 の長さ > 1 (3 を参照) nC
UCS-2 の長さ = 1 の配列 (4 を参照) 1C DIM(x)
int 4 バイト整数 10I 0
long 8 バイト整数 20I 0
float 4 バイト浮動 4F
double 8 バイト浮動 8F
any object オブジェクト O CLASS(x)
any array 同等タイプの配列 (4 を参照) DIM(x)
注:
  1. Java byte タイプが文字 (1A) との間で変換される時は、ASCII 変換が行なわれます。Java byte タイプが整数 (3I) データ・タイプとの間で変換される場合は、ASCII 変換は行なわれません。
  2. Java でいかなるタイプを持つ配列の場合も、RPG で同等タイプの配列を定義することができますが、文字で長さが 1 より大きいか、または UCS-2 で長さが 1 より大きいデータ・タイプの配列は使用できないことに注意してください。
  3. UCS-2 で長さが 1 より大きいデータ・タイプおよび文字で長さが 1 より大きいデータ・タイプの場合、VARYING キーワードを使用することができます。Java byte[] および char[] は固定長で宣言することはできないため、一般的に VARYING キーワードの使用をお勧めします。
  4. Java 配列は固定長で宣言できないため、RPG の配列データ・タイプでは配列パラメーターとして一般に OPTIONS(*VARSIZE) をコーディングする必要があります。

ゾーン、パック、2 進、および符号なしのデータ・タイプは Java では使用できません。ゾーン、パック、2 進、または符号なしのフィールドをパラメーターとして 渡した場合、コンパイラーは適切な変換を行ないます。ただしその結果として、 切り捨てが行なわれるかまたは精度が失われる (あるいはその両方) 可能性があります。

メソッドを呼び出す際、コンパイラーが配列をパラメーターとして受け入れるのは、そのパラメーターが DIM キーワードを使用してプロトタイプされている場合のみです。

メソッドの戻り値またはパラメーターがオブジェクトである場合、プロトタイプに CLASS キーワードをコーディングすることにより、そのオブジェクトのクラスを提供する必要があります。 指定されたクラス名は、オブジェクトが戻されたりパラメーターが渡されたりするクラス名になります (呼び出されるメソッドのクラスを指定するには、EXTPROC キーワードを使用します)。

メソッドを静的メソッドとして呼び出そうとしている場合は、プロトタイプに STATIC キーワードを指定する必要があります。メソッドがコンストラクターである場合は、 *CONSTRUCTOR をメソッドの名前として指定する必要があります。

Java では、値として渡すことができるのは以下のデータ・タイプのみです。
boolean
byte
int
short
long
float
double

これらのタイプのパラメーターは、プロトタイプで VALUE キーワードを指定する必要があります。

オブジェクトは参照によってのみ、渡すことができることに注意してください。VALUE キーワードはタイプ O を使用して指定できません。Java は配列をオブジェクトと見なすため、配列へのパラメーター・マッピングも参照によって渡す必要があります。これには 文字配列およびバイト配列も含まれます。CONST キーワードが使用できます。