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


3.2.2 文字列操作のコーディング

COBOLプログラムとJavaプログラムでは,文字列データとして内部的に処理する文字コードが異なります。また,Javaプログラムの引数に直接COBOLの英数字項目や日本語項目を指定することはできません。これらの文字列操作のために次の機能が用意されています。

注※

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オブジェクトを生成する機能

次に示すサービスルーチンが用意されています。

英数字項目/日本語項目から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オブジェクトを英数字項目/日本語項目の値に変換する機能

次に示すサービスルーチンが用意されています。

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」を参照してください。