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


6.1.5 文字列オブジェクト操作

ここでは,Javaプログラム呼び出し機能が提供する文字列オブジェクト操作のサービスルーチンについて説明します。

〈この項の構成〉

(1) CBLJXTOSTRING

CBLJXTOSTRINGサービスルーチンは,英数字項目のデータを変換してStringオブジェクト(文字コードはUTF-16)を生成して,そのJavaオブジェクト参照を返します。

取得したStringオブジェクトのJavaオブジェクト参照の扱いは,必ずJavaオブジェクト参照の使用ガイドラインに従ってください。Javaオブジェクト参照の使用ガイドラインについては,「3.2.5 Javaオブジェクト参照の使用ガイドライン」を参照してください。

英数字項目のデータの文字コードは,COBOL2002で実行時に使用する文字コードに従います。Unicode機能と同時に使用する場合,英数字項目のデータの文字コードはUTF-8として扱います。COBOL2002の実行時環境変数CBLLANGの値と英数字項目のデータの文字コードの関係を次の表に示します。

表6‒5 環境変数CBLLANGの値と英数字項目のデータの文字コード

環境変数CBLLANGの値

英数字項目のデータの文字コード

指定なし,またはUNICODE以外

シフトJIS

UNICODE

UTF-8

COBOLで使用する文字集合については,マニュアル「COBOL2002 ユーザーズガイド」を参照してください。

形式
CALL 'CBLJXTOSTRING' USING  引数1  引数2  引数3  引数4.
引数
  • 引数1には,CBLJENV集団項目を指定します。CBLJENV集団項目については,「6.1.1 サービスルーチンで使用する引数」の「(1) CBLJENV集団項目」を参照してください。

  • 引数2には,英数字項目を指定します。

  • 引数3には,英数字項目のサイズ(バイト数)を持つ4バイト2進形式の数字項目を指定します。

  • 引数4には,Javaオブジェクト参照を受け取るポインタ項目を指定します。

戻り値

RETURN-CODE特殊レジスタには常に0を返します。

Stringオブジェクトの生成に失敗した場合は実行時エラーとなります。

規則
  • 英数字データの終わりの連続した半角空白文字は無視されます。

  • 英数字項目のデータの末尾が2バイト文字の1バイト目である場合は無視されます。

(2) CBLJNTOSTRING

CBLJNTOSTRINGサービスルーチンは,日本語項目のデータを変換してStringオブジェクト(文字コードはUTF-16)を生成し,そのJavaオブジェクト参照を返します。

取得したStringオブジェクトのJavaオブジェクト参照の扱いは,必ずJavaオブジェクト参照の使用ガイドラインに従ってください。Javaオブジェクト参照の使用ガイドラインについては,「3.2.5 Javaオブジェクト参照の使用ガイドライン」を参照してください。

日本語項目のデータの文字コードは,COBOL2002で実行時に使用する文字コードに従います。Unicode機能と同時に使用する場合,日本語項目のデータの文字コードはUTF-16として扱います。COBOL2002の実行時環境変数CBLLANGの値と日本語項目のデータの文字コードの関係を次の表に示します。

表6‒6 環境変数CBLLANGの値と日本語項目のデータの文字コード

環境変数CBLLANGの値

日本語項目のデータの文字コード

指定なし,またはUNICODE以外

シフトJIS

UNICODE

UTF-16

COBOLで使用する文字集合については,マニュアル「COBOL2002 ユーザーズガイド」を参照してください。

形式
CALL 'CBLJNTOSTRING' USING  引数1  引数2  引数3  引数4.
引数
  • 引数1には,CBLJENV集団項目を指定します。CBLJENV集団項目については,「6.1.1 サービスルーチンで使用する引数」の「(1) CBLJENV集団項目」を参照してください。

  • 引数2には,日本語項目を指定します。

  • 引数3には,日本語項目のサイズ(文字数)を持つ4バイト2進形式の数字項目を指定します。

  • 引数4には,Javaオブジェクト参照を受け取るポインタ項目を指定します。

戻り値

RETURN-CODE特殊レジスタには常に0を返します。

Stringオブジェクトの生成に失敗した場合は実行時エラーとなります。

規則

日本語データの終わりの連続した全角空白文字は無視されます。

(3) CBLJSTRINGTOX

CBLJSTRINGTOXサービスルーチンは,Stringオブジェクトの文字列(文字コードはUTF-16)を変換して英数字項目に格納します。

Stringオブジェクトの文字列は,COBOL2002で実行時に使用する文字コードに従って変換されます。Unicode機能と同時に使用する場合,英数字項目のデータの文字コードはUTF-8となります。COBOL2002の実行時環境変数CBLLANGの値と英数字項目のデータの文字コードの関係を次の表に示します。

表6‒7 環境変数CBLLANGの値と英数字項目のデータの文字コード

環境変数CBLLANGの値

英数字項目のデータの文字コード

指定なし,またはUNICODE以外

シフトJIS

UNICODE

UTF-8

COBOLで使用する文字集合については,マニュアル「COBOL2002 ユーザーズガイド」を参照してください。

形式
CALL 'CBLJSTRINGTOX' USING  引数1  引数2  引数3  引数4.
引数
  • 引数1には,CBLJENV集団項目を指定します。CBLJENV集団項目については,「6.1.1 サービスルーチンで使用する引数」の「(1) CBLJENV集団項目」を参照してください。

  • 引数2には,StringオブジェクトのJavaオブジェクト参照を持つポインタ項目を指定します。

  • 引数3には,英数字データを受け取る英数字項目を指定します。

  • 引数4には,英数字項目のサイズ(バイト数)を持つ4バイト2進形式の数字項目を指定します。

戻り値

RETURN-CODE特殊レジスタには常に0を返します。

データ変換に失敗した場合は実行時エラーとなります。

規則
  • 英数字項目の余った部分には半角空白文字が挿入されます。

  • 英数字項目の末尾の文字が2バイト文字の1バイト目になる場合は半角空白が設定されます。

(4) CBLJSTRINGTON

CBLJSTRINGTONサービスルーチンは,Stringオブジェクトの文字列(文字コードはUTF-16)を変換して日本語項目に格納します。

Stringオブジェクトの文字列は,COBOL2002で実行時に使用する文字コードに従って変換されます。Unicode機能と同時に使用する場合,日本語項目のデータの文字コードはUTF-16となります。COBOL2002の実行時環境変数CBLLANGの値と日本語項目のデータの文字コードの関係を次の表に示します。

表6‒8 環境変数CBLLANGの値と日本語項目のデータの文字コード

環境変数CBLLANGの値

日本語項目のデータの文字コード

指定なし,またはUNICODE以外

シフトJIS

UNICODE

UTF-16

COBOLで使用する文字集合については,マニュアル「COBOL2002 ユーザーズガイド」を参照してください。

形式
CALL 'CBLJSTRINGTON' USING  引数1  引数2  引数3  引数4.
引数
  • 引数1には,CBLJENV集団項目を指定します。CBLJENV集団項目については,「6.1.1 サービスルーチンで使用する引数」の「(1) CBLJENV集団項目」を参照してください。

  • 引数2には,StringオブジェクトのJavaオブジェクト参照を持つポインタ項目を指定します。

  • 引数3には,日本語データを受け取る日本語項目を指定します。

  • 引数4には,日本語項目のサイズ(文字数)を持つ4バイト2進形式の数字項目を指定します。

戻り値

RETURN-CODE特殊レジスタには常に0を返します。

データ変換に失敗した場合は実行時エラーとなります。

規則

日本語項目の余った部分には全角空白文字が挿入されます。

注意事項

Unicode機能を使用していない場合,Javaプログラムから渡されたStringオブジェクトのデータの内容を変換したときに,1バイトとなる文字が含まれているときの動作は保証しません。

(5) CBLJSTRLENGTH

CBLJSTRLENGTHサービスルーチンは,Stringオブジェクトの文字列の文字数を返します。

形式
CALL 'CBLJSTRLENGTH' USING  引数1  引数2  引数3.
引数
  • 引数1には,CBLJENV集団項目を指定します。CBLJENV集団項目については,「6.1.1 サービスルーチンで使用する引数」の「(1) CBLJENV集団項目」を参照してください。

  • 引数2には,StringオブジェクトのJavaオブジェクト参照を持つポインタ項目を指定します。

  • 引数3には,文字数を受け取る4バイト2進形式の数字項目を指定します。

戻り値

RETURN-CODE特殊レジスタには常に0を返します。

長さの取得に失敗した場合は実行時エラーとなります。

(6) CBLJDISPLAY

CBLJDISPLAYサービスルーチンは,Stringオブジェクトの内容をJavaプログラムの標準出力に出力します。

形式
CALL 'CBLJDISPLAY' USING  引数1  引数2.
引数
戻り値

RETURN-CODE特殊レジスタには常に0を返します。

内容の出力に失敗した場合は実行時エラーとなります。

注意事項

CBLJDISPLAYサービスルーチンは,System.out.printlnでJavaの標準出力にデータを出力します。COBOLプログラムの出力先にStringオブジェクトの内容を出力したい場合は,英数字項目または日本語項目にデータを取得したあと,DISPLAY文を使用して出力してください。