Rational Developer for System z
Enterprise COBOL for z/OS バージョン 4.1 プログラミング・ガイド


Java ストリングの取り扱い

COBOL は、Java ストリング・データを Unicode で表します。 Java ストリングを COBOL プログラムで表すには、jstring クラスのオブジェクト参照としてストリングを宣言してください。 続いて、JNI サービスを使用して、COBOL 英数字または国別 (Unicode) データを設定するか、オブジェクトから抽出します。

Unicode 用のサービス: jstring オブジェクト参照と COBOL USAGE NATIONAL データ項目 これらのサービスへのアクセスは、JNINativeInterface 環境構造の関数ポインターを使用して行います。

表 1. jstring 参照と国別データ間の変換サービス
サービス 入力引数 戻り値
NewString1
  • JNI 環境ポインター
  • COBOL 国別データ項目などの、Unicode ストリングへのポインター
  • ストリングの文字数。2 進数フルワード
jstring オブジェクト参照。
GetStringLength
  • JNI 環境ポインター
  • jstring オブジェクト参照
jstring オブジェクト参照の Unicode 文字数。2 進数フルワード。
GetStringChars1
  • JNI 環境ポインター
  • jstring オブジェクト参照
  • ブール・データ項目を指すポインター、または NULL
  • jstring オブジェクトから抜き出された Unicode 文字の配列を指すポインター、または NULL (操作が失敗した場合)。ポインターは、ReleaseStringChars を使用して解放されるまで有効。
  • ブール・データ項目へのポインターが NULL でないとき、ブール値は、ストリングのコピーが作成される場合には true に、コピーが作成されない場合には false に 設定される。
ReleaseStringChars
  • JNI 環境ポインター
  • jstring オブジェクト参照
  • GetStringChars から戻された Unicode 文字の配列へのポインター
なし。配列のストレージは解放される。
  1. システムがメモリー不足の場合、このサービスは例外を throw します。

EBCDIC 用のサービス: jstring オブジェクト参照と COBOL 英数字データ (PIC X(n)) との間の変換を行うには、以下の z/OS サービス (JNI の拡張) を使用してください。 これらのサービスへのアクセスは、JNI 環境構造 JNINativeInterface の関数ポインターを使用して行います。

表 2. jstring 参照と英数字データ間の変換サービス
サービス 入力引数 戻り値
NewStringPlatform
  • JNI 環境ポインター
  • jstring オブジェクトに変換するヌル終了 EBCDIC 文字ストリングへのポインター
  • 結果のための jstring オブジェクト参照へのポインター
  • ストリングの Java エンコード名へのポインター。ヌル終了 EBCDIC 文字ストリング 1 として表す
2 進数フルワード整数としての戻りコード:
 0
正常。
-1
誤った形式の入力データまたは正しくない入力文字。
-2
非サポート・エンコード。jstring オブジェクト参照ポインターは NULL に設定されます。
GetStringPlatformLength
  • JNI 環境ポインター
  • 長さのための jstring オブジェクト参照
  • 結果のための 2 進数フルワード値へのポインター
  • ストリングの Java エンコード名へのポインター。ヌル終了 EBCDIC 文字ストリング 1 として表す
2 進数フルワード整数としての戻りコード:
 0
正常。
-1
誤った形式の入力データまたは正しくない入力文字。
-2
非サポート・エンコード。jstring オブジェクト参照ポインターは NULL に設定されます。

2 番目の引数が参照するヌル終了バイトなど、変換した Java ストリングを 保持するために必要な出力バッファーの長さ (バイト単位) を、3 番目の引数に戻します。

GetStringPlatform
  • JNI 環境ポインター
  • ヌル終了ストリングに変換する jstring オブジェクト参照
  • 変換済みストリングのための出力バッファーへのポインター
  • 2 進数フルワード整数としての出力バッファーの長さ
  • ストリングの Java エンコード名へのポインター。ヌル終了 EBCDIC 文字ストリング 1として表す
2 進数フルワード整数としての戻りコード:
 0
正常。
-1
誤った形式の入力データまたは正しくない入力文字。
-2
非サポート・エンコード。出力ストリングはヌル・ストリングに設定されます。
-3
変換バッファーがいっぱいです。
  1. ポインターが NULL の場合、Java file.encoding プロパティーからのエンコードが使用されます。

これらの EBCDIC サービスは、IBM Java 2 Software Development Kit の一部である DLL としてパッケージされています。 サービスの詳細については、IBM Java 2 Software Development Kit の jni_convert.h を参照してください。

サービスを呼び出すには、CALL literal ステートメントを使用してください。 呼び出しは、libjvm.x DLL サイド・ファイルを介して解決されます。このファイルは、オブジェクト 指向言語を使用する COBOL プログラムのリンク手順に含める必要があります。

例えば、次のコードは、EBCDIC ストリング 'MyConverter' から Java ストリング・オブジェクトを作成します。 (このコード・フラグメントは、例: COBOL で書かれた J2EE クライアントで詳細に示す、J2EE クライアント・プログラムからのものです。)

Move z"MyConverter" to stringBuf
Call "NewStringPlatform" 
  using by value JNIEnvPtr 
                 address of stringBuf
                 address of jstring1
                 0
  returning rc 

EBCDIC サービスが、COBOL プログラムから呼び出す唯一の JNI サービスである 場合には、JNI.cpy コピーブックをコピーする必要はありません。また、JNI 環境 ポインターとのアドレス可能度を設定する必要もありません。

UTF-8 用のサービス: Java ネイティブ・インターフェースでは、jstring オブジェクト参照と UTF-8 ストリングとの間の変換用のサービスも提供しています。 これらのサービスは、COBOL プログラムでの使用にはお勧めしません。 z/OS プラットフォームで UTF-8 文字ストリングを取り扱うことは難しいためです。


ご利用条件 | フィードバック

このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)