ASCII テキスト・ファイルへのデータの転送
ASCII のテキスト・ファイルの作成時には、iSeries、eServer™ i5、または System i5® から得られたデータは次のように変更されます。
- 16 進フィールドは、ハーフバイトごとに ASCII の同等な文字に変更されま す。例えば、X'D3' は ASCII の 4433 に拡張されて、ファイルに書き出されます。エディターで表示したり印刷したりする場合には、この ストリングは D3 として表示されます。
- EBCDIC の文字フィールドは変換テーブルの定義に従って、 1 バイトごとに ASCII 文字に変更され、マッピングされます。
- 日付、時刻、およびタイム・スタンプのデータは、変換テーブルで定義されてい るとおり、ASCII 文字にマッピングされます。
- 可変長フィールドおよびヌル・フィールドは固定長に変換され、 後書きブランク (文字、16 進数、日付、時刻、およびタイム・スタンプの場合) または ゼロ (2 進数、ゾーン、およびパックの場合) がフィールドの最大長になるまで追加されます。 注: 一部の EBCDIC 表示不能文字はworkstationの ASCII の制御文字に変換されます。EBCDIC 文字フィールドに表示不能データが入っていると、予期しない結果になる ことがあり、ASCII テキスト・ファイルは改変されたように見える場合があります。
例えば、EBCDIC フィールドの中の X'05' は ASCII の X'09' に変換されますが、これは水平タブ用の ASCII 制御文字です。workstationのほとんどのテキスト・エディターでは、workstationのテキスト・ファイルのデータが 右にシフトして表示されるように、このタブ文字が処理されます。
この問題を解決する 1 つの方法として、これらのフィールドを AS/400 システムで 文字フィールドでなく 16 進フィールドとして定義する方法があります。
- 2 進フィールドは、ASCII の数値に変更されます。例えば、小数部の桁がない X'FFD3' は、ASCII の 20202020202020202D3435 に拡張されます。エディターで表示したり印刷したりする場合には、このストリングは -45 と して表示されます。 注: ASCII フィールドの長さは 2 進フィールドの長さによって異なります。
iSeries、eServer i5、または System i5 の 2 進数フィールドの長さは、2 または 4 バイトです。変換された ASCII フィールドの長さは、符号を含めて 6~11 バイトです。小数点にはさらに 1 バイトが追加されます。
表 1 に、2 進フィールドの長さとその ASCII の長さの マッピングを示します。
2 進数の長さ | ASCII 長さ | 値の範囲 |
---|---|---|
2 | 6 | -32768 ~ 32767 |
4 | 11 | -2147483648 ~ 2147483647 |
- ゾーン 10 進フィールドは ASCII の数値に変更されます。例えば、フィールド長が小数点の右側 2 桁を示す EBCDIC の F0F0F9F5F2D6 は、ASCII の 20202D39352E3236 に拡張されます。エディターで表示したり印刷したりす る場合には、このストリングは -95.26 として表示されます。変換されたworkstation・フィールド の長さは、システムのフィールドの長さに符号のための 1 バイトを加え、 小数点が指定されている場合には、さらに 1 バイトを加えた値に等しくなります。
- パック 10 進フィールドは ASCII の数値に変更されます。例えば、X'871D' (小数点なし) は ASCII の 2D383731 に変更されます。エディターで表示したり印刷したりする場合には、このストリングは -871 として 表示されます。
10 進数の 2 桁が 1 バイトにパックされているため、変換されたworkstationのフィールドの長さは iSeries、eServer i5、または System i5 のフィールドの長さを 2 倍して、小数点 (指定されている場合) の 1 バイトを加えた値になります。この長さには常に符号が含まれています。負符号 (-) は負を示し、スペースは正を示します。