ネイティブ COBOL と Java の相互運用の利用可能な実装には、次の制限および制約事項が適用されます。
- COBOL プログラムは、実行可能ファイルまたは共有ライブラリにコンパイルする必要があります。INT/GNT にコンパイルされたプログラムや JVM COBOL のプログラムはサポートされません。
- コンパイラまたは Micro Focus ユーティリティから生成された Java ファイルは、いずれも変更しないでください。また、それらで使用されている API をユーザーの Java または COBOL アプリケーションで直接使用しないでください。これらはメインフレームでもサポートされません。
- JAVA-SHAREABLE で共有される COMP および COMP-5 データ項目の占有領域は、2 バイトまたは 4 バイトの倍数のいずれかにする必要があります。したがって、IBMCOMP 指令を使用してコンパイルすることをお勧めします。これらのサイズを満たさない項目がある場合、IBMCOMP
を使用せずにコンパイルしようとするとエラー (COBCH2369) が生成されます。
- DIALECT"ENTCOBOL" を使用してコンパイルする場合、共有作業場所節項目の名前の長さは 26 文字を超えてはなりません。
- JAVA-SHAREABLE および CHARSET(EBCDIC) を使用してコンパイルされたアプリケーションは、MFCODESET=1140 に制限されます。
- 本セクションで説明する Java 相互運用を含むアプリケーションは、Enterprise Server ではサポートされません。
- マルチスレッド COBOL アプリケーションはサポートされていません。
- IBM Enterprise COBOL 6.4 のコンパイラまたは cjbuild ユーティリティで生成された COBOL または Java ソース ファイルは、この COBOL 製品と互換性がありません。
- JAVA-CALLABLE 指令を使用してコンパイルするときは次のようになります。
- Java から COBOL に float (COMP-1 にマップ) または double (COMP-2 にマップ) を渡すことはサポートされていません。これは、COBOL 呼び出し規則の制限によるもので、COBOL から Java に COMP-1/COMP-2
を返すことができないためです。
- 32 ビット環境では、Java から COBOL に long (8 バイトの Java プリミティブ型、9(18) COMP-5 にマップ) を渡すことはサポートされていません。これは、COBOL 呼び出し規則の制限によるものです。
- 32 ビットにコンパイルされた COBOL では、GOBACK 文で 32 ビットの項目しか返すことができません。したがって、PIC 9(18) COMP-5 項目 (つまり long 型の項目) を Java メソッドに返すことはできません
(COBOL 呼び出し規則の制限)。