双方向データの処理
アラビア語およびヘブライ語などの双方向 (bidi) 言語とは、 テキストが右から左の順にユーザーに表示され、 テキスト内の数値およびラテン語英字ストリングが左から右に表示される言語のことです。また、 プログラム変数内に文字が現れる順序は異なる場合があります。COBOL 環境では、プログラム変数内のテキストは通常は表示 順、つまり、テキストが ユーザー・インターフェースに表示されるのと同じ順序になります。 Java™ 環境では、テキストは通常は論理 順、 つまり文字が入力フィールドに入力される順に保存されます。
- FormGroup フィールド内の双方向テキスト・ストリングのフォーマットを制御するには、双方向ランタイム・ファイルを使用します。
- サーバーとクライアント間の双方向テキスト・ストリングのフォーマットを制御するには、双方向変換テーブルを使用します。
双方向ランタイム・ファイル
EGL に双方向ランタイム・ファイルが追加されるまで (バージョン 7.5 より前) は、個々のプロパティーがこれらの動作を制御していました。それらのプロパティーは、引き続き EGL の一部です。ご使用のコードでこれらの個々のプロパティーを FormGroup に関連付ける場合、ランタイム・ファイルを変更すると、EGL はそれに従って個々のプロパティーの値を変更します。個々のプロパティーを変更する場合、EGL は新規の値を使用しますが、ランタイム・ファイルは更新しません。
双方向ランタイム・ファイルのセットアップ方法については、双方向ランタイム・ファイルの作成を参照してください。
双方向変換テーブル
EGL は、双方向変換テーブル (BCT) を使用して、「サーバー」フォーマットと「クライアント」フォーマット間の変換を実行します。ファイルは XML フォーマットで表され、.bct というファイル拡張子が付きます。EGL ウィザードを使用して、さまざまな BIDI フォーマット変換をサポートする 複数の BCT を作成することができます。 プログラムは変換テーブルの名前を参照して、属性変換を実行する方法を指示します。
sysVar.formConversionTable = "hct1.bct" ;
- 実行する変換を指定する bidi 変換テーブルを作成します。 Java クライアントと COBOL ホストの間で受け渡しされるデータ、および Java 環境においてテキストまたは印刷書式で表示されるデータを変換するために必要なテーブルは異なることに注意してください。 「BIDI 変換テーブル」ウィザードを使用して、bidi 変換テーブル・ファイルをビルドします。詳しくは、双方向変換テーブルの作成を参照してください。
- 生成時に使用する BIDI 変換テーブルを指定します。
BIDI 変換テーブルを指定する方法は、生成するコードによって異なります。
- COBOL 環境で生成する場合は、以下のようにします。
- bidiConversionTable ビルド記述子オプションとして、COBOL 生成用に作成した BIDI 変換テーブルの名前を設定する。 BIDI 変換テーブルは、テーブルで要求される他の形式変換とともに、COBOL 環境用にリテラル・テキストの論理順から表示順への変換を制御します。
- 次の表に示すとおり、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 システム関数に割り当てる文をプログラムに追加する。
- COBOL 環境で生成する場合は、以下のようにします。