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