3.2.2 文字列操作のコーディング
COBOLプログラムとJavaプログラムでは,文字列データとして内部的に処理する文字コードが異なります。また,Javaプログラムの引数に直接COBOLの英数字項目や日本語項目を指定することはできません。これらの文字列操作のために次の機能が用意されています。
-
英数字項目/日本語項目からJavaに渡すStringオブジェクト※を生成する機能
-
Javaから受け取ったStringオブジェクト※を英数字項目/日本語項目の値に変換する機能
- 注※
-
java.lang.Stringクラスのオブジェクトです。内部的な文字コードはUTF-16です。
- 〈この項の構成〉
(1) Javaプログラム呼び出し機能で使用する文字コード
Javaプログラム呼び出し機能を使用する場合,COBOLプログラムで使用できる文字コードは,COBOL2002で使用する文字コードと同じです。Unicode機能を使用してCOBOLが扱うデータをUnicodeとして扱うこともできます。取り扱う文字コードとUnicode機能については,マニュアル「COBOL2002 ユーザーズガイド」のUnicode機能の説明を参照してください。
Unicode機能と同時に使用する場合,UCS-4の範囲(UCS-2の範囲を含む)のUnicode文字を使用できます。
(2) 英数字項目/日本語項目からJavaに渡すStringオブジェクトを生成する機能
次に示すサービスルーチンが用意されています。
-
CBLJXTOSTRINGサービスルーチン
英数字項目の値からStringオブジェクトを生成する。
-
CBLJNTOSTRINGサービスルーチン
日本語項目の値からStringオブジェクトを生成する。
英数字項目/日本語項目からStringオブジェクトを生成する例を次に示します。
01 X-ITEM PIC X(256). 01 X-ITEM-LEN PIC S9(9) USAGE COMP VALUE 256. 01 N-ITEM PIC N(256). 01 N-ITEM-LEN PIC S9(9) USAGE COMP VALUE 256. 01 X-STROBJ USAGE POINTER. 01 N-STROBJ USAGE POINTER. *> 英数字項目からStringオブジェクトを生成する。 MOVE '日立製作所' TO X-ITEM. CALL 'CBLJXTOSTRING' USING CBLJENV X-ITEM X-ITEM-LEN X-STROBJ. *> 日本語項目からStringオブジェクトを生成する。 MOVE N'日立製作所' TO N-ITEM. CALL 'CBLJNTOSTRING' USING CBLJENV N-ITEM N-ITEM-LEN N-STROBJ. |
CBLJXTOSTRINGサービスルーチンについては,「6.1.5 文字列オブジェクト操作」の「(1) CBLJXTOSTRING」を参照してください。
CBLJNTOSTRINGサービスルーチンについては,「6.1.5 文字列オブジェクト操作」の「(2) CBLJNTOSTRING」を参照してください。
(3) Javaから受け取ったStringオブジェクトを英数字項目/日本語項目の値に変換する機能
次に示すサービスルーチンが用意されています。
-
CBLJSTRINGTOXサービスルーチン
Stringオブジェクトの文字列をCOBOLで使用する文字コードに変換して,英数字項目に格納する。
-
CBLJSTRINGTONサービスルーチン
Stringオブジェクトの文字列をCOBOLで使用する文字コードに変換して,日本語項目に格納する(Unicode機能と同時に使用する場合は,データを変換しない)。
- 注意事項
-
CBLJSTRINGTONサービスルーチンを呼び出してStringオブジェクトの文字列を変換するとき,変換後に1バイトになる文字が含まれないようにしてください。1バイトになる文字が含まれている場合の動作は保証されません。
Stringオブジェクトを英数字項目/日本語項目の値に変換して格納する例を次に示します。
01 X-STROBJ USAGE POINTER. 01 X-ITEM PIC X(256). 01 X-ITEM-LEN PIC S9(9) USAGE COMP VALUE 256. 01 N-STROBJ USAGE POINTER. 01 N-ITEM PIC N(256). 01 N-ITEM-LEN PIC S9(9) USAGE COMP VALUE 256. *> Stringオブジェクトの文字列を英数字項目に格納する。 CALL 'CBLJSTRINGTOX' USING CBLJENV STROBJ X-ITEM X-ITEM-LEN. *> Stringオブジェクトの文字列を日本語項目に格納する。 CALL 'CBLJSTRINGTON' USING CBLJENV STROBJ N-ITEM N-ITEM-LEN. |
Stringオブジェクトは,CBLJINVOKEサービスルーチンを使ってStringオブジェクトのメソッドを呼び出すことで,直接操作することもできます。
CBLJSTRINGTOXサービスルーチンについては,「6.1.5 文字列オブジェクト操作」の「(3) CBLJSTRINGTOX」を参照してください。
CBLJSTRINGTONサービスルーチンについては,「6.1.5 文字列オブジェクト操作」の「(4) CBLJSTRINGTON」を参照してください。