ランタイム環境が異なるとデータを解釈する方法にも差が生じるので、ある環境から別の環境に渡すデータは、プログラム上での変換が必要な場合があります。 データ変換が実行されるタイミングは、 Java™ の実行時です。
この場合は、 呼び出し先プログラムを参照する callLink エレメントの変換テーブルを指定できます。または、(callLink エレメントの中で) システム変数 sysVar.callConversionTable が実行時に変換テーブルを識別するよう指示することもできます。
この場合は、 制御の転送先のプログラムを参照する asynchLink エレメントの変換テーブルを指定できます。または、(asynchLink エレメントの中で) システム変数 sysVar.callConversionTable が実行時に変換テーブルを識別するよう指示することもできます。
この場合は、 システム変数 sysVar.formConversionTable で双方向変換テーブルを指定します。
例えば、コードが 2 つの再定義レコードのいずれかに値を割り当てるときに、 それぞれが、別のプログラムに渡されるレコードとして同じメモリー領域を参照する場合に、 実行時変換を使用します。値を割り当てる再定義レコードに応じて、 渡すデータの特性が異なると想定します。この場合、データ変換の要件は、生成時には不明です。
この場合のテーブル名は、実行時に必要な種類の変換を表すシンボルになります。
言語 | 呼び出し先プログラムのプラットフォーム | ||
---|---|---|---|
UNIX® | Windows® 2000/NT/XP | z/OS UNIX システム・サービスまたは iSeries™ Java | |
アラビア語 | CSOJ1046 | CSOJ1256 | CSOJ420 |
中国語 (簡体字) | CSOJ1381 | CSOJ1386 | CSOJ1388 |
中国語 (繁体字) | CSOJ950 | CSOJ950 | CSOJ1371 |
キリル文字言語 | CSOJ866 | CSOJ1251 | CSOJ1025 |
デンマーク語 | CSOJ850 | CSOJ850 | CSOJ277 |
東ヨーロッパ言語 | CSOJ852 | CSOJ1250 | CSOJ870 |
英語 (英国) | CSOJ850 | CSOJ1252 | CSOJ285 |
英語 (米国) | CSOJ850 | CSOJ1252 | CSOJ037 |
フランス語 | CSOJ850 | CSOJ1252 | CSOJ297 |
ドイツ語 | CSOJ850 | CSOJ1252 | CSOJ273 |
ギリシャ語 | CSOJ813 | CSOJ1253 | CSOJ875 |
ヘブライ語 | CSOJ856 | CSOJ1255 | CSOJ424 |
日本語 | CSOJ943 | CSOJ943 | CSOJ1390 (カタカナ SBCS)、CSOJ1399 (ラテン語 SBCS) |
韓国語 | CSOJ949 | CSOJ949 | CSOJ1364 |
ポルトガル語 | CSOJ850 | CSOJ1252 | CSOJ037 |
スペイン語 | CSOJ850 | CSOJ1252 | CSOJ284 |
スウェーデン語 | CSOJ850 | CSOJ1252 | CSOJ278 |
スイス・ドイツ語 | CSOJ850 | CSOJ1252 | CSOJ500 |
トルコ語 | CSOJ920 | CSOJ1254 | CSOJ1026 |
プログラムを Java から呼び出す場合に、 リンケージ・オプション・パーツで変換テーブルの値を指定しない場合は、 デフォルトの変換テーブルは英語 (米国) 用の変換テーブルになります。
レコードと構造体のデータ変換は、副構造のない構造体項目の宣言が基本になります。
型が CHAR、DBCHAR、または MBCHAR のデータは、(EGL 生成の起動側で変換される場合) Java 変換テーブルに従って変換されます。
充てん文字データ項目 (名前のないデータ項目) の場合や、型が DECIMAL、 PACF、HEX、または UNICODE のデータ項目の場合は、変換が実行されません。
MBCHAR データの EBCDIC から ASCII への変換では、変換ルーチンによってシフトイン・シフトアウト (SO/SI) 文字が削除され、この文字数と同じ数のブランクがデータ項目の末尾に追加されます。ASCII から EBCDIC への変換では、変換ルーチンによって 2 バイトのストリングの前後に SO/SI 文字が挿入され、フィールドに収容できる有効な最後の文字で値が切り捨てられます。 MBCHAR フィールドが可変長レコード内にあり、現行レコードの末尾が MBCHAR フィールド内にある場合、レコード長は SO/SI 文字の挿入または削除を反映するように調整されます。レコード長は、現行レコードの末尾がどこにあるかを示しています。
型が BIN のデータ項目では、呼び出し側または呼び出し先のプラットフォームで Intel® の 2 進数形式が使用され、 もう一方のプラットフォームではその形式が使用されていない場合、バイト数を基準にしたデータ項目の順序が変換ルーチンによって逆になります。
型が NUM または NUMC のデータ項目では、変換ルーチンが CHAR アルゴリズムを使用して、最後のバイトを除くすべてのバイトを変換します。符号ハーフバイト (フィールドの最後のバイトのうちの最初の半バイト) は、次の表に示す 16 進値に従って変換されます。
NUM 型 の EBCDIC | NUMC 型 の EBCDIC | ASCII |
---|---|---|
F (正符号) | C | 3 |
D (負符号) | D | 7 |