COBOL2002 Javaプログラム呼び出し機能ガイド


4.1.1 COBOL2002のコンパイラオプションを指定するときの注意事項

Javaプログラム呼び出し機能を使用するCOBOLプログラムのコンパイル時に,コンパイラオプションを指定する場合の注意事項について説明します。

COBOL2002のコンパイラオプションについては,マニュアル「COBOL2002 ユーザーズガイド」を参照してください。

〈この項の構成〉

(1) -BigEndianコンパイラオプション(バイナリデータをビッグエンディアン形式で取り扱う)

-BigEndianコンパイラオプションを指定してコンパイルすると,COBOLプログラムの2進形式の数字項目および内部浮動小数点項目をビッグエンディアン形式で取り扱うことができます。

注※

-BigEndianコンパイラオプションは,システムのエンディアンがリトルエンディアン形式の場合に有効です。

Javaプログラム呼び出し機能を使用するプログラムで,-BigEndianコンパイラオプションを指定するときの注意事項を次に示します。

サービスルーチンの引数
  • -BigEndian,Binコンパイラオプションを指定したとき,サービスルーチンの引数に直接指定するJavaのデータと対応しない4バイト2進形式の数字項目の定義では,USAGE句にCOMPではなく,COMP-5を指定してください。

    対象の数字項目については,各サービスルーチンの注意事項を確認してください。

    なお,USAGE句にCOMP-5を指定する場合は,-Comp5コンパイラオプションを指定する必要があります。

  • Javaの型がchar型のとき,対応するCOBOLデータ項目を日本語項目1文字(PIC N)として定義した場合も,データの内容はビッグエンディアン形式となります。

実行時に指定する環境変数

-BigEndianコンパイラオプションの指定に従って,環境変数CBLJRTBIGENDIANを指定してください。指定しない場合,システムのエンディアンの形式で扱われます。

環境変数CBLJRTBIGENDIANについては,「6.2.2 実行時環境変数の詳細」の「(1) CBLJRTBIGENDIAN」を参照してください。

(2) -DynamicLinkコンパイラオプション(動的なリンクを使用する)

-DynamicLink,Callコンパイラオプションを指定してコンパイルすることで,定数指定のCALL文の呼び出し先を動的にリンクできます。

Javaプログラム呼び出し機能のサービスルーチンを呼び出すCOBOLプログラムに-DynamicLink,Callコンパイラオプションを指定してコンパイルしたとき,Javaプログラム呼び出し機能の実行時ライブラリを,動的にロードするライブラリの検索対象に指定する必要があります。

COBOL2002の実行時環境変数の指定例を次に示します。

CBLLDLL=cbl2kjrt.dll

(3) -JPNコンパイラオプション(日本語項目の扱いを指定する)

-JPN,Alnumまたは-JPN,V3JPNコンパイラオプションを指定してコンパイルすると,COBOLプログラムの日本語項目の空白の扱いを指定できます。

Javaプログラム呼び出し機能の文字列操作では,英数字項目と日本語項目とでは,残りの領域を補う空白の扱いが異なります。Javaプログラム呼び出し機能での空白の扱いを次の表に示します。

表4‒1 Javaプログラム呼び出し機能での空白の扱い

サービスルーチンの引数

領域を補う空白の扱い

英数字項目として扱う場合

半角空白(X'20')

日本語項目として扱う場合

全角空白(X'8140')

-JPNコンパイラオプションを指定する場合の注意事項を次に示します。

日本語項目からJavaに渡すStringオブジェクトを生成する場合
  • -JPN,Alnumまたは-JPN,V3JPNコンパイラオプションを指定するときは,CBLJXTOSTRINGサービスルーチンを呼び出してStringオブジェクトを生成してください。このとき,長さを指定する引数には,日本語項目の文字数ではなく,英数字項目として扱ったときの長さ(バイト数)を指定してください。

  • -JPN,V3JPNSpaceコンパイラオプションを指定するときは,CBLJNTOSTRINGサービスルーチンを呼び出してStringオブジェクトを生成してください。

Stringオブジェクトを日本語項目の値に変換する場合
  • -JPN,Alnumまたは-JPN,V3JPNコンパイラオプションを指定するときは,CBLJSTRINGTOXサービスルーチンを呼び出して値を変換してください。このとき,長さを指定する引数には,日本語項目の文字数ではなく,英数字項目として扱ったときの長さ(バイト数)を指定してください。

  • -JPN,V3JPNSpaceコンパイラオプションを指定するときは,CBLJSTRINGTONサービスルーチンを呼び出して値を変換してください。