• 検索結果がありません。

ASCII テキスト・ファイル

ドキュメント内 emulator_reference.ps (ページ 194-198)

通常、ASCII のテキスト・ファイルは、テキストを処理するプログラム (編集およ び印刷ルーチンなど) で使用されます。ASCII のテキスト・ファイルの特性は次の とおりです。

v レコードは ASCII 文字で構成されます。

v それぞれのレコードと次のレコードとの区切りには、復帰文字 (X’0D’) および改 行文字 (X’0A’) が使用されます。

v iSeries、eServer i5、または System i5 レコードの最後の末尾ブランクが切り捨て られるため、ASCII ファイルのワークステーション・レコードは可変長になる場 合があります。

ASCII テキスト・ファイルへのデータの転送: ASCII のテキスト・ファイルの作成 時には、iSeries、eServer i5、または System i5 から得られたデータは次のように変 更されます。

v 16 進フィールドは、ハーフバイトごとに ASCII の同等な文字に変更されます。

たとえば、X'D3' は ASCII の 4433 に拡張されて、ファイルに書き出されます。

エディターで表示したり印刷したりする場合には、このストリングは D3 として 表示されます。

v EBCDIC の文字フィールドは変換テーブルの定義に従って、 1 バイトごとに

ASCII 文字に変更され、マッピングされます。

v 日付、時刻、およびタイム・スタンプのデータは、変換テーブルで定義されてい るとおり、ASCII 文字にマッピングされます。

v 可変長フィールドおよびヌル・フィールドは固定長に変換され、後書きブランク

(文字、16 進数、日付、時刻、およびタイム・スタンプの場合) またはゼロ (2 進

数、ゾーン、およびパックの場合) がフィールドの最大長になるまで追加されま す。

注: 一部の EBCDIC 表示不能文字はワークステーションの ASCII の制御文字に

変換されます。 EBCDIC 文字フィールドに表示不能データが入っていると、

予期しない結果になることがあり、ASCII テキスト・ファイルは改変された ように見える場合があります。

たとえば、EBCDIC フィールドの中の X'05' は ASCII の X'09' に変換され ますが、これは水平タブ用の ASCII 制御文字です。ワークステーションのほ とんどのテキスト・エディターでは、ワークステーションのテキスト・ファ イルのデータが右にシフトして表示されるように、このタブ文字が処理され ます。

この問題を解決する 1 つの方法として、これらのフィールドを AS/400 シス テムで文字フィールドでなく 16 進フィールドとして定義する方法がありま す。

v 2 進フィールドは、ASCII の数値に変更されます。たとえば、小数部の桁がない X'FFD3' は、ASCII の 20202020202020202D3435 に拡張されます。エディターで 表示したり印刷したりする場合には、このストリングは -45 として表示されま す。

注: ASCII フィールドの長さは 2 進フィールドの長さによって異なります。

iSeries、eServer i5、または System i5 の 2 進数フィールドの長さは、2 または 4 バイトです。変換された ASCII フィールドの長さは、符号を含めて 6〜11 バ イトです。小数点にはさらに 1 バイトが追加されます。

表31 に、2 進フィールドの長さとその ASCII の長さのマッピングを示します。

31. バイナリーから ASCII フィールド長マッピング

2 進数の長さ ASCII の長さ 値の範囲

2 6 -32768 〜 32767

4 11 -2147483648 〜 2147483647

v ゾーン 10 進フィールドは ASCII の数値に変更されます。たとえば、フィールド 長が小数点の右側 2 桁を示す EBCDIC の F0F0F9F5F2D6 は、ASCII の

20202D39352E3236 に拡張されます。エディターで表示したり印刷したりする場

合には、このストリングは -95.26 として表示されます。変換されたワークステー

9 PC400 のデータ転送 177

ション・フィールドの長さは、システムのフィールドの長さに符号のための 1 バ イトを加え、小数点が指定されている場合には、さらに 1 バイトを加えた値に等 しくなります。

v パック 10 進フィールドは ASCII の数値に変更されます。たとえば、X'871D'

(小数点なし) は、ASCII の 2D383731 に変更されます。エディターで表示したり

印刷したりする場合には、このストリングは -871 として表示されます。

10 進数の 2 桁が 1 バイトにパックされているため、変換されたワークステーシ ョンのフィールドの長さは iSeries、eServer i5、または System i5 のフィールド の長さを 2 倍して、小数点 (指定されている場合) の 1 バイトを加えた値になり ます。この長さには常に符号が含まれています。負符号 (-) は負を示し、スペー スは正を示します。

ASCII テキスト・ファイルからのデータの転送: ASCII テキスト・ファイルからシ ステム・ファイルにデータを転送する場合は、そのデータは次のように変更されま す。

v ASCII 文字データは、バイト単位で (iSeries、eServer i5、または System i5 のフ ィールド・タイプに基づいて) EBCDIC 文字、日付、時刻、タイム・スタンプの いずれかのデータに変換されるか、あるいは ASCII 2 バイトを EBCDIC 16 進 数バイトの 1 バイトに変更することによって EBCDIC 16 進数データに変換され ます。

v ASCII の数値データは、指定されたデータ・タイプに応じて、iSeries、eServer i5、または System i5 の 2 進数、ゾーン 10 進数、またはパック 10 進数のデー タに変更されます。

ASCII の数値フィールドには明示的な方法で負符号と小数点が保管されているた

め、iSeries、eServer i5、または System i5 とワークステーションではフィールド の長さが異なります。変換されたフィールドの長さがそのフィールドの使用と一 致するように、それぞれのフィールドは個々に変更されます。データ転送機能 は、ワークステーションのデータをシステムのフィールドに入れようとします。

v iSeries、eServer i5、または System i5 のヌル値可能フィールドの場合、ヌル値

(日付、時刻、およびタイム・スタンプを除く) を確実に検出することはできず、

ヌル値はアップロードされません。 iSeries、eServer i5、または System i5 の可 変長フィールドの場合、末尾ブランクは除去され、フィールドは可変長形式に変 換されます。

ASCII テキスト・ファイルからデータを転送する場合のエラー: ワークステーショ

ンの ASCII テキスト・ファイルから iSeries、eServer i5、または System i5 ファイ ルにデータを転送する場合、次のエラーが起こることがあります。

v ASCII のテキスト・ファイルのデータ・フィールドが長すぎて、iSeries、eServer

i5、または System i5 で定義したファイルのフィールドに入りません。この場合

には、データが切り捨てられます。これは、記述ファイルでシステム・ファイル に指定されたフィールドの長さ以上の文字データを定義した場合に起こります。

EBCDIC フィールドへのデータの転送時にこのエラーが起こるのは、超過バイト

がスペース以外の場合だけです。

16 進フィールドへのデータの転送時にこのエラーが起こるのは、超過バイトがゼ ロ以外の場合だけです。データが指定したフィールドに入るように、これらの超 過バイトは切り捨てられます。

v 数値データの値がシステムのフィールドには大きすぎます。最大値が使用されま す。このエラーは次の場合に起こります。

– フィールドの数値データが、そのフィールドに指定されたバイト数に入らな い。

– 数値フィールドの 10 進数の値に、そのフィールドに指定された桁数以上の値 が含まれている。

フィールドの値は、iSeries、eServer i5、または System i5 で指定されたバイト数 および桁数に対して指定できる最大値に設定されます。

v このフィールドのデータの小数点以下の桁数が大きすぎます。数値は四捨五入さ れます。このエラーは、フィールドの小数点以下の桁数の数値が iSeries、eServer

i5、または System i5 で指定された小数点以下の桁数の数値よりも大きい場合に

起こります。データは余分な最初の桁が 5 以上であれば切り上げられ、4 以下で あれば切り捨てられるので、これらの超過バイトは重要です。

v このフィールドのデータが正しくないか、またはデータ・タイプと一致しませ ん。このエラーは次の場合に起こります。

– ファイル記述で数値として定義されているフィールドに、数値以外のデータが あります。転送要求は、ファイルに正しくないデータを転送するのを防ぐため に終了します。

– 指定されたファイル記述の形式と一致しない ASCII の数値データがありま す。フィールドの中の小数点の位置が正しくない場合にもこのエラーが起こり ます。

– X'30' 〜 X'39' 以外の値、マイナス、プラス、または小数点があります。小数

点またはマイナスが重複しています。転送要求は、ファイルに正しくないデー タを転送するのを防ぐために終了します。

v このフィールドのデータがありません。デフォルト値が使用されます。このエラ ーは、データ・フィールドが定義されて、ファイルにデータがない場合に起こり ます。これは、定義されたすべてのデータが見つかる前にレコードの終わりに達 したことを意味します。

データが定義されていても検出されなかった 1 つ、または複数のフィールドにデ フォルト値が入りファイルに転送されます。デフォルト値は、文字フィールドの

場合には EBCDIC のスペース、数値フィールドおよび 16 進フィールドの場合に

はゼロです。

ユーザー独自のデフォルト値を指定するには、そのファイルの DDS でデフォル

ト値 (DFT) キーワードを使用してください。

v このレコードの終わりに余分なデータがあります。余分なデータは転送されませ ん。このレコードの終わりにあり、かつ、システムのデータ定義またはワークス テーションのファイル記述ファイルで定義されていないデータは、そのデータを 定義したり、変更したりする定義がないので、システム・ファイルには転送され ません。

9 PC400 のデータ転送 179

ASCII テキスト・ファイルからファイル記述ファイルを使用しないで

iSeries、eServer i5、または System i5 ファイルにデータを転送する場合は、そのフ ァイルに指定されたレコード長を超える余分なデータは転送されません。

ドキュメント内 emulator_reference.ps (ページ 194-198)