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の値と英数字項目のデータの文字コードの関係を次の表に示します。
環境変数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の値と日本語項目のデータの文字コードの関係を次の表に示します。
環境変数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の値と英数字項目のデータの文字コードの関係を次の表に示します。
環境変数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の値と日本語項目のデータの文字コードの関係を次の表に示します。
環境変数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.
- 引数
-
-
引数1には,CBLJENV集団項目を指定します。CBLJENV集団項目については,「6.1.1 サービスルーチンで使用する引数」の「(1) CBLJENV集団項目」を参照してください。
-
引数2には,StringオブジェクトのJavaオブジェクト参照を持つポインタ項目を指定します。
-
- 戻り値
-
RETURN-CODE特殊レジスタには常に0を返します。
内容の出力に失敗した場合は実行時エラーとなります。
- 注意事項
-
CBLJDISPLAYサービスルーチンは,System.out.printlnでJavaの標準出力にデータを出力します。COBOLプログラムの出力先にStringオブジェクトの内容を出力したい場合は,英数字項目または日本語項目にデータを取得したあと,DISPLAY文を使用して出力してください。