JVM COBOL 相互運用のバイト配列

JVM COBOL では、バイト配列は、JVM 専用タイプ java.lang.Byte[] を使用して保存されます。バイト配列は、01 レベルで COBOL テーブルとして宣言する必要があります。サイズは 01 定義の一部として定義できます。あるいは、ANY キーワードを使用して定義しないでおくこともできます。次に例を示します。

 01 b java.lang.Byte occurs any.

タイプ・バイト配列はオブジェクトですが、ネイティブ・エントリ・ポイントのリファレンスで渡すことができます。これは、一次元配列にのみ適用されます。

配列に含まれるバイトは、同じサイズのネイティブ・メモリのセクションに変更されずにコピーされ、この一部のメモリに対するリファレンスがネイティブ・コードに渡されます。これは、COBOL では pic x データに相当し、C では char* データに相当します。次に例を示します。

JVM COBOL:

    01 b java.lang.Byte occurs any. 
    01 i binary-long. 
    set size of b to 1024 
    perform varying i from 1 by 1 until i > 1024 
        set b(i) to i /8 
    end-perform 
    call "JVM_LOAD_NATIVE" "doStuff" 
    call "doStuffWith1k" using by reference b

ネイティブ COBOL:

    linkage section. 
    01 b pic x(1024). 
    ... 
    entry "doStuffWith1k" using by reference b. 
    ...