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 コーディングの節を参照してください。
| 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) |
- Java byte タイプが文字 (1A) との間で変換される時は、ASCII 変換が行なわれます。Java byte タイプが整数 (3I) データ・タイプとの間で変換される場合は、ASCII 変換は行なわれません。
- Java でいかなるタイプを持つ配列の場合も、RPG で同等タイプの配列を定義することができますが、文字で長さが 1 より大きいか、または UCS-2 で長さが 1 より大きいデータ・タイプの配列は使用できないことに注意してください。
- UCS-2 で長さが 1 より大きいデータ・タイプおよび文字で長さが 1 より大きいデータ・タイプの場合、VARYING キーワードを使用することができます。Java byte[] および char[] は固定長で宣言することはできないため、一般的に VARYING キーワードの使用をお勧めします。
- Java 配列は固定長で宣言できないため、RPG の配列データ・タイプでは配列パラメーターとして一般に OPTIONS(*VARSIZE) をコーディングする必要があります。
ゾーン、パック、2 進、および符号なしのデータ・タイプは Java では使用できません。ゾーン、パック、2 進、または符号なしのフィールドをパラメーターとして 渡した場合、コンパイラーは適切な変換を行ないます。ただしその結果として、 切り捨てが行なわれるかまたは精度が失われる (あるいはその両方) 可能性があります。
メソッドを呼び出す際、コンパイラーが配列をパラメーターとして受け入れるのは、そのパラメーターが DIM キーワードを使用してプロトタイプされている場合のみです。
メソッドの戻り値またはパラメーターがオブジェクトである場合、プロトタイプに CLASS キーワードをコーディングすることにより、そのオブジェクトのクラスを提供する必要があります。 指定されたクラス名は、オブジェクトが戻されたりパラメーターが渡されたりするクラス名になります (呼び出されるメソッドのクラスを指定するには、EXTPROC キーワードを使用します)。
メソッドを静的メソッドとして呼び出そうとしている場合は、プロトタイプに STATIC キーワードを指定する必要があります。メソッドがコンストラクターである場合は、 *CONSTRUCTOR をメソッドの名前として指定する必要があります。
boolean
byte
int
short
long
float
double
これらのタイプのパラメーターは、プロトタイプで VALUE キーワードを指定する必要があります。
オブジェクトは参照によってのみ、渡すことができることに注意してください。VALUE キーワードはタイプ O を使用して指定できません。Java は配列をオブジェクトと見なすため、配列へのパラメーター・マッピングも参照によって渡す必要があります。これには 文字配列およびバイト配列も含まれます。CONST キーワードが使用できます。