双方向データの処理

アラビア語およびヘブライ語などの双方向 (bidi) 言語とは、 テキストが右から左の順にユーザーに表示され、 テキスト内の数値およびラテン語英字ストリングが左から右に表示される言語のことです。また、 プログラム変数内に文字が現れる順序は異なる場合があります。COBOL 環境では、プログラム変数内のテキストは通常は表示 順、つまり、テキストが ユーザー・インターフェースに表示されるのと同じ順序になります。 Java™ 環境では、テキストは通常は論理 順、 つまり文字が入力フィールドに入力される順に保存されます。

順序付けスキーム、テキスト方向、およびその他の双方向フォーマット特性にはこのような違いがあるため、プログラムでは、双方向テキスト・ストリングをあるフォーマットから別のものへと変換する必要があります。
  • FormGroup フィールド内の双方向テキスト・ストリングのフォーマットを制御するには、双方向ランタイム・ファイルを使用します。
  • サーバーとクライアント間の双方向テキスト・ストリングのフォーマットを制御するには、双方向変換テーブルを使用します。
注: 双方向リテラル・ストリングを別のプログラミング言語から EGL にマイグレーションする場合には、マイグレーション の段階でこのストリングが論理 (入力) 順になっている必要があります。

双方向ランタイム・ファイル

bidiRuntime ビルド記述子オプションは、双方向ランタイム・ファイルを指定します。このファイル (XML フォーマット) には、アプリケーションに関連付けられた書式グループのフィールドの双方向動作を制御するオプションのセットが含まれています。これらのオプションのいくつかは、既存の BIDI プロパティーに対応しています。

EGL に双方向ランタイム・ファイルが追加されるまで (バージョン 7.5 より前) は、個々のプロパティーがこれらの動作を制御していました。それらのプロパティーは、引き続き EGL の一部です。ご使用のコードでこれらの個々のプロパティーを FormGroup に関連付ける場合、ランタイム・ファイルを変更すると、EGL はそれに従って個々のプロパティーの値を変更します。個々のプロパティーを変更する場合、EGL は新規の値を使用しますが、ランタイム・ファイルは更新しません。

双方向ランタイム・ファイルのセットアップ方法については、双方向ランタイム・ファイルの作成を参照してください。

双方向変換テーブル

EGL は、双方向変換テーブル (BCT) を使用して、「サーバー」フォーマットと「クライアント」フォーマット間の変換を実行します。ファイルは XML フォーマットで表され、.bct というファイル拡張子が付きます。EGL ウィザードを使用して、さまざまな BIDI フォーマット変換をサポートする 複数の BCT を作成することができます。 プログラムは変換テーブルの名前を参照して、属性変換を実行する方法を指示します。

どのような場合でも、bidi 変換テーブル参照は、 1 から 4 文字のファイル名に .bct 拡張子を付けて指定します。 例えば、hct1.bct という名前の bidi 変換テーブルを作成してある場合は、 プログラムの先頭に次の文を追加することによって、プログラムに formConversionTable という値を設定できます。
  sysVar.formConversionTable = "hct1.bct" ;
bidi 変換テーブルを使用するには、以下を実行する必要があります。
  • 実行する変換を指定する bidi 変換テーブルを作成します。 Java クライアントと COBOL ホストの間で受け渡しされるデータ、および Java 環境においてテキストまたは印刷書式で表示されるデータを変換するために必要なテーブルは異なることに注意してください。 「BIDI 変換テーブル」ウィザードを使用して、bidi 変換テーブル・ファイルをビルドします。詳しくは、双方向変換テーブルの作成を参照してください。
  • 生成時に使用する BIDI 変換テーブルを指定します。 BIDI 変換テーブルを指定する方法は、生成するコードによって異なります。
    • COBOL 環境で生成する場合は、以下のようにします。
      1. bidiConversionTable ビルド記述子オプションとして、COBOL 生成用に作成した BIDI 変換テーブルの名前を設定する。 BIDI 変換テーブルは、テーブルで要求される他の形式変換とともに、COBOL 環境用にリテラル・テキストの論理順から表示順への変換を制御します。
      2. 次の表に示すとおり、ASCII から EBCDIC へのコード・ページ変換を制御するために、clientCodeSet および serverCodeSet ビルド記述子オプションを設定する。
        表 1. clientCodeSet および serverCodeSet ビルド記述子オプションの値
        言語 clientCodeSet serverCodeSet
        アラビア語 IBM-864 IBM-420
        ヘブライ語 IBM-1255 IBM-424
    • リモート COBOL プログラムを呼び出す Java プログラムを生成する場合は、以下のいずれかの方法で、呼び出し先プログラムの callLink 要素の中に conversionTable プロパティーがあるように、リンケージ・オプション・パーツをカスタマイズします。
      • BIDI 変換テーブルを、そのプロパティーの値 (conversionTable="hct.bct" など) として指定する。
      • プロパティーを PROGRAMCONTROLLED に設定する。 これにより、他のプログラムが呼び出される前に、呼び出し側プログラムによって BIDI 変換テーブルが指定されます。 呼び出し元は、sysVar.callConversionTable システム変数に BIDI 変換テーブル名を割り当てることによって、テーブルを指定します。 sysVar.callConversionTable システム変数について詳しくは、「EGL 言語解説書」のトピック『callConversionTable』を参照してください。
    • EGL デプロイメント記述子 (.egldd) ファイルのサービスに EGL バインディングを指定している場合は、ローカル以外のプロトコルの conversionTable プロパティーに .bct ファイル名を指定する (例えば、conversionTable="hct1.bct")。
    • Java に生成する予定のプログラムを作成していて、かつ、そのプログラムが BIDI 言語テキストを持つテキスト書式または印刷書式を使用している場合は、書式を表示する前に変換テーブル名を sysVar.formConversionTable システム関数に割り当てる文をプログラムに追加する。