DBase III format
| Byte | Description | |
| 0 | 03h, version number (83h if there are memo fields) | |
| 1-3 | Last update, YY, MM, DD | |
| 4-7 | number of records, 32 bit integer | |
| 8-9 | length of the header structure, 16 bit integer | |
| 10-11 | length of a record, 16 bit integer | |
| 12-31 | reserved | |
| 32-N | Field
Descriptors This is an array of 32-byte descriptors, one for each field in the record, up to 128 fields. |
|
| Byte | Description | |
| 0-10 | Field Name (padded with nul) | |
| 11 | Field
Type C Character N Numeric (-.0123456789) L Logical (YyNnTtFf) (? if not initialized) D Date (YYYYMMDD) M memo |
|
| 12-15 | reserved | |
| 16 | Field Length | |
| 17-31 | reserved | |
| N+1 | 0Dh field terminator | |
Data records begin
after the header.
One byte precedes each record: blank if valid record otherwise
asterisk represents a deleted record. No separators, delimiters
or terminators are used in the data records. All fields are packed.
Memo fields:
A memo field is 10 bytes wide, and is the alpanumeric representation
of a block number (starting with 1) in the corresponding ".dbt"
file. You may assume a memo is less than 500 bytes to avoid the
case of "chaining" blocks. The text within a block is
terminated with two bytes of 0h1A. Blocks are 512 bytes. The first
(zero) block can be ignored.
Date last updated: 08/15/04