9.219.1 出力ファイル形式

現在、以下の出力形式に対応しています。例では以下の表記が使用されます。

<OptCR>

任意のキャリッジ・リターン文字を示します。

<nl>

改行(ライン・フィード)文字を示します。

<t>

水平タブ文字を示します。

A - 通常の区切りファイル

B - DBFファイル

C - 列化されたファイル (数値フィールドは先頭符号付き)

D - 列化されたファイル (数値フィールドに先頭符号なし)

O - コンマ区切りファイル

T - 水平タブ区切りファイル

サポートされるdBASE III PLUSフィールド・フォーマット

A - 通常の区切りファイル

T (TRUE) または F (FALSE) のいずれかとなるブール値以外の英数字の値は二重引用符(")で囲まれます。

Alpha と Char で空の値は、二重引用符の間に 1 つのスペースが含まれます (例: " ")。 

String 値の末尾ブランクは削除されません。 

Integer、Float、Packed、およびSignedフィールドは、先頭に負の符号が付き、先頭のゼロは抑制され、また小数点が表示されます(必要な場合)。 

個々のフィールドはコンマ(,)で区切られます。 

各ファイル・レコードの長さを変えることができます。 

レコード内の個々のフィールドの位置は、レコードごとに変えることができます。つまり「固定形式」のファイルではありません。例えば、以下のようになります。 

     "SMITH","IAN",2153,345.56,"ADM",-456.78<OptCR><nl>

B - DBFファイル

このオプションは、メモDBFファイルなしで、BIFにdBASE III PLUSの作成を指示します。このファイルも一般的なファイル形式であり、Microsoft Excelなどの他の環境と情報を交換する場合に使用します。詳細については、「サポートされるdBASE III PLUSフィールド・フォーマット」を参照してください。

このオプションには制限があります。サポートされるタイプとサポートされないタイプを以下に示します。 

サポートされるタイプ 

Alpha/Char/String (254バイトまで)。このタイプは文字として保管されます。 

PackedおよびSigned。このフィールドの値はDBF数値として保管されます。 

Date。このフィールドの値はDBF日付として保管されます。 

DateTime。このフィールドの値はDBFタイムスタンプとして保管されます。変換処理中に小数部はなくなります。 

タイムスタンプ値はDBFファイルの8バイトを占有します。2つの長整数型で、一方は日付でもう一方は時間です。 日付はBC4713/01/01(ユリウス日)からの日数です。時間は、時×3600000L+分×60000L+秒×1000Lです。ユリウス通日の計算方法の詳細については、「ユリウス通日」を参照してください。

Timeフィールドの値はDBFタイムスタンプとして保管されます。ただし、使用されるのは最後の2バイトだけです。最初の2バイトの値は、1900-01-01です。 

Integerフィールドの値はDBF数値として保管されます。1バイトのIntegerは符号を含める4バイトを占有します。2バイトのIntegerは符号を含める6バイトを占有します。4バイトのIntegerは符号を含める11バイトを占有します。8バイトのIntegerは20バイトを占有します。値は初めに文字列(基数10)に変換されます。文字列の長さが必要な長さよりも短い場合、右側にブランクが埋め込まれます。 

Floatフィールドの値はDBF倍精度浮動小数点数として保管されます。 

ブール型フィールドの値はDBF論理値として保管されます。 

サポートされないタイプ 

Alpha、Char、254バイトを超えるString、8バイトのInteger、BLOB、およびCLOB 

C - 列化されたファイル (数値フィールドは先頭符号付き)

列化されたファイル、つまり「固定形式」のファイルを作成します。各ファイル・レコード長は一致します(ただし付加リストが使用された場合を除く。後記注意参照)。各レコード内の個々のフィールド位置は一致します。 

フィールドの結果の列幅(すなわちファイル全体の「レコード・レイアウト」)は、次の規則により予測できます。

     A(12) A(9) S(4,0) P(9,2) A(3) P(7,2)
..........:........:....:..........:..:........ SMITH IAN +2153+0000345.56ADM-00456.78<OptCR><nl>

D - 列化されたファイル (数値フィールドに先頭符号なし)

Packed、Signed、Integer、Floatフィールドに先頭符号が付かないことを除いては、"C"タイプと全く同一のファイルを作成します。例えば、次のようになります。

小数点を含む場合:

     A(12) A(9) S(4,0)P(9,2) A(3) P(7,2)
..........:........:...:.........:..:....... SMITH IAN 21530000345.56ADM00456.78<OptCR><nl>

小数点が削除されている場合: 

     A(12) A(9) S(4,0)P(9,2) A(3) P(7,2)
..........:........:...:........:..:...... SMITH IAN 2153000034556ADM0045678<OptCR><nl>

フィールドの結果の列幅予測に適用される規則は、Packed、Signed、Integer、またはFloatフィールドを除いて、すべて"C"タイプの規則と同じです。Packed、Signed、Integer、またはFloatフィールドは結果から1を減じる必要があります。

Floatフィールドの注意事項:

Floatフィールドの値は「科学的表記」表示タイプに変換されます。

例えば、以下のようになります。

「科学的表記」表示タイプで、いくつかのCコンパイラにより処理可能な倍精度浮動小数点数の最大値は次の値です。

1.7976931348623158E+308 

O - コンマ区切りファイル

コンマ・ファイル形式。Alpha、BLOB、CLOB Date、DateTime、Time、Char、およびStringフィールドが二重引用符で囲まれてないということを除いては、Aタイプのファイル形式とまったく同一です。 

T - 水平タブ区切りファイル

一般的なファイル形式。Alpha、BLOB、CLOB Date、DateTime、Time、Char、およびStringフィールドが二重引用符で囲まれてないということ、および個々のフィールドが水平タブ文字で区切られているということを除いては、Aタイプのファイル形式とまったく同一です。例えば、以下のようになります。 

     SMITH<t>IAN<t>2153<t>345.56<t>ADM<t>-456.78<OptCR><nl>