Java データ型の変換規則

制約事項: 次の説明はネイティブ コードのみに該当します。

COBOL から Java にデータを送信するときには、そのデータが適切な Java データ型に変換されます。同様に、Java プログラムが COBOL にデータを返信するときにも、Java データ型から COBOL データ型への変換が行われます。次の表は、Java と COBOL の間でデータがやり取りされるときに行われる型変換を示しています。データ型の場合は、手続き型 COBOL と OO COBOL Java ドメインのどちらを使っているかによって処理結果が異なります。表中の「COBOL」欄は、.cobcall(…) で手続き型 COBOL に適用される規則、「オブジェクト COBOL」欄は .cobinvoke() でオブジェクト COBOL Java ドメインに適用される規則を示しています。

Java データ型 COBOL Object 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-jstring 2

pointer 3

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 と同じ JDBC で使用される標準 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 と同じ JDBC で使用される標準 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 データ項目を使用するには、サポートされる型の中間データ項目を使用して、必要なデータ項目の中間データ項目との間でデータを転記します。