COBOL から Java にデータを送信する際には、そのデータが適切な Java データ型に変換されます。同様に、Java プログラムが COBOL にデータを返信する際にも、Java データ型から COBOL データ型への変換が行われます。次の表は、Java と COBOL の間でデータがやり取りされる際に行われる型変換を示しています。データ型によっては、手続き型 COBOL とネイティブのオブジェクト指向 (OO) COBOL Java ドメインのどちらを使用しているかによって処理結果が異なる場合があります。表中の「COBOL」欄は .cobcall(…) で手続き型 COBOL に適用される規則、「ネイティブ OO COBOL」欄は .cobinvoke() でネイティブ OO COBOL Java ドメインに適用される規則を示しています。
Java データ型 | .cobcall(...) で使用される COBOL データ型 | .cobinvoke() で使用されるネイティブ OO COBOL データ型 | 説明 |
---|---|---|---|
byte | pic s99 comp-5 | pic s99 comp-5
pic s99 comp |
1 バイトの符号付き整数 |
short | pic s9(4) comp-5 | pic s9(4) comp-5
pic s9(4) comp |
2 バイトの符号付き整数 |
int | pic s9(9) comp-5 | pic s9(9) comp-5
pic s9(9) comp |
4 バイトの符号付き整数 |
long | pic s9(18) comp-5 | pic s9(18) comp-5
pic s9(18) comp1 |
8 バイトの符号付き整数 |
boolean | pic 99 comp-5 | pic 99 comp-5 | 0 は false、0 以外の値は true |
char (Unicode) | pic 9(4) comp-5 | pic s9(4) comp | Java の文字はすべて、2 バイトの Unicode 文字で表される |
float | comp-11 | comp-1 1 | 浮動小数点数値 |
double | comp-2 1 | comp-2 1 | 倍精度浮動小数点数値 |
String | mf-jstring2 pointer3 |
pic x(n) | 容量は常に 0。COBOL プログラムに渡される文字列は読み取り専用で、変更できないものと考える必要がある |
StringBuffer4 | mf-jstring2 pointer3 |
pic x(n) | 容量はバッファーの合計サイズ、サイズはバッファーに格納されている文字列の長さとなる |
object | pointer | object reference | あらゆる Java オブジェクト。手続き型 COBOL では、返されたポインターを JNI 呼び出しに使用できる (「Java からの手続き型 COBOL の呼び出し」の章の「COBOL での JNI の使用」を参照) |
object[] | pointer | jarray クラスのインスタンスへのオブジェクト参照 | Java オブジェクトの配列。手続き型 COBOL では、返されたポインターを JNI 呼び出しに使用できる (「Java からの手続き型 COBOL の呼び出し」の章の「COBOL での JNI の使用」を参照)。jarray は、Java 配列の内容にアクセスするためのネイティブ OO COBOL クラス (「Jarray クラスの使用方法」を参照) |
DataType | structure | structure | 複合データ構造体 |
Comp3 | comp-3 | comp-3 | COMP(UTATIONAL)-3 または PACKED-DECIMAL |
Pointer(StringBuffer)
Pointer(String, int capacity) |
pic x(99) | pic x(99) | String や StringBuffer をラップすることによって、正しいサイズが割り当ててられた状態で COBOL プログラムに渡し、COBOL 側で Java オブジェクトを安全に編集できるようにする
StringBuffer の容量は、COBOL 側で編集可能な最大長として使用される |
java.sql.Date(long)
CobolDate(date) |
0x jyear pic 9(4).
0x filler pic x. 0x jmonth pic 99. 0x filler pic x. 0x jday pic 99. |
cobcall と同じ | 標準 SQL Date 型 |
java.sql.time(long)
CobolTime(time) |
0x jhour pic 99.
0x filler pic x. 0x jminute pic 99. 0x filler pic x. 0x jseconds pic 99. |
cobcall と同じ | 標準 SQL Time 型 |
CobolBigDecimal(java.math.BigDecimal) |
pic s9(19)v9(19) comp-3 | cobcall と同じ | COBOL 側での BigDecimal 値の更新を可能にする CobolBigDecimal ラッパー クラス。CobolBigDecimal() のコンストラクターは初期値をとる。更新後の値を取得するには、getValue() メソッドを使用する |
CobolBigInteger(java.math.BigInteger) |
pic S9(38) comp-3 | cobcall と同じ | COBOL 側での BigInteger 値の更新を可能にする CobolBigInteger ラッパー クラス。CobolBigInteger() のコンストラクターは初期値をとる。更新後の値を取得するには、getValue() メソッドを使用する |
CustomRecord | Structure | Structure | Java でオブジェクト配列として表される、複合データ構造体 |
CobolN ational | pic x(n) (usage 句に national を使用) | cobcall と同じ | UTF-16 文字列を生成して COBOL に渡すための Java クラス |
1 このパラメーターは参照渡しのみです。浮動小数点データ型の場合は、この制約が適用されるのは UNIX プラットフォームに限定されます。long データ型の場合は、32 ビット プラットフォームでは参照渡しのみ、64 ビット プラットフォームでは参照渡しおよび値渡しが可能です。 2 .cobcall(...) で mf-jstring を使用します。受信側の COBOL プログラムで Java の String または StringBuffer にアクセスするには、ptr2string ポインターを使用する必要があります。mf-jstring を使用すると、COBOL プログラムから Java オブジェクトのサイズおよび容量にアクセスできます。 3 .cobcall(...) でポインターを使用します。 4 StringBuffer オブジェクトは、pic x(n) データ項目としてネイティブ OO COBOL メソッドで受け取れますが、pic x(n) を使用して StringBuffer パラメーターを含む Java メソッドにデータを渡すことはできません。 |
上記の表の「COBOL」欄にも「ネイティブ OO COBOL」欄にも含まれない COBOL データ型への変換は、サポートされていません。ここに挙げられていない型の COBOL データ項目を使用するには、サポートされる型の中間データ項目を使用して、必要なデータ項目の中間データ項目との間でデータを転記します。