9.231.1 出力ファイル形式
現在、以下の出力形式に対応しています。例では以下の表記が使用されます。
<OptCR> |
任意のキャリッジ・リターン文字を示します。 |
<nl> |
改行(ライン・フィード)文字を示します。 |
<t> |
水平タブ文字を示します。 |
サポートされるdBASE III PLUSフィールド・フォーマット
最も一般的なファイル形式の一つです。Alpha、BLOB、CLOBフィールドは二重引用符(")で囲まれ、後続のブランクは削除されます。完全なブランクのフィールドは、1個のブランクを二重引用符で囲んで表示します(例: " ")。
Date、DateTime、Time、Char、およびStringフィールドは、Alphaと同じように保管されます。CharおよびStringフィールドでは、末尾ブランクは削除されません。
Integer、Float、Packed、およびSignedフィールドは、先頭に負の符号が付き、先頭のゼロは抑制され、また小数点が表示されます(必要な場合)。
ブール型フィールドは1バイトを占有します。FALSE値は、'F'で表示されます。TRUEは、'T'で表示されます。
個々のフィールドはコンマ(,)で区切られます。
各ファイル・レコードの長さを変えることができます。
レコード内の個々のフィールドの位置は、レコードごとに変えることができます。つまり「固定形式」のファイルではありません。例えば、以下のようになります。
"SMITH","IAN",2153,345.56,"ADM",-456.78<OptCR><nl>
このオプションは、メモ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 - 列化されたファイル (数値フィールドは先頭符号付き)
列化されたファイル、つまり「固定形式」のファイルを作成します。各ファイル・レコード長は一致します(ただし付加リストが使用された場合を除く。後記注意参照)。各レコード内の個々のフィールド位置は一致します。
フィールドの結果の列幅(すなわちファイル全体の「レコード・レイアウト」)は、次の規則により予測できます。
· Alpha、BLOB、CLOB Date、DateTime、Time、Char、およびStringフィールドは、データ・ディクショナリまたはRDMLファンクションで定義された長さと同一です。
· PackedおよびSignedフィールドの長さは、データ・ディクショナリまたはRDMLファンクションで定義された合計桁数+1(先頭符号用)です。これは「合計桁数」です。計算された記憶域やPackedフィールドのバイト長ではないので注意してください。
· 8バイトのIntegerフィールドは、出力ファイルの20バイトを占有します(先頭符号を含む)。
· 4バイトのIntegerフィールドは、出力ファイルの11バイトを占有します(先頭符号を含む)。
· 2バイトのIntegerフィールドは、出力ファイルの6バイトを占有します(先頭符号を含む)。
· 1バイトのIntegerフィールドは、出力ファイルの4バイトを占有します(先頭符号を含む)。
· 4バイトのFloatフィールドは14バイトを占有します(先頭符号を含む)。
· 8バイトのFloatフィールドは23バイトを占有します(先頭符号を含む)。
· 先頭に正の符号を表示しないAタイプやTタイプの形式とは異なり、この形式は必ず先頭に正または負の符号を含みます。符号なしであっても正の符号を持ちます。
フィールドに小数点がある場合(かつ小数点を削除するオプションが使用されていない場合)、長さに1を加えて小数点の表示を可能にします(ただし、Floatはドット'.'が必ず存在するため、これは適用されません)。例えば、以下のようになります。
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
コンマ・ファイル形式。Alpha、BLOB、CLOB Date、DateTime、Time、Char、およびStringフィールドが二重引用符で囲まれてないということを除いては、Aタイプのファイル形式とまったく同一です。
一般的なファイル形式。Alpha、BLOB、CLOB Date、DateTime、Time、Char、およびStringフィールドが二重引用符で囲まれてないということ、および個々のフィールドが水平タブ文字で区切られているということを除いては、Aタイプのファイル形式とまったく同一です。例えば、以下のようになります。
SMITH<t>IAN<t>2153<t>345.56<t>ADM<t>-456.78<OptCR><nl>