[Introduction] [Datebook.dat/Datebook.dba] [Memopad.dat/Memopad.mpa]
[Todo.dat/Todo.tda] [Users.dat] [Not So FAQ's] [Home]

Palm Pilot Desktop Software ADDRESS.DAT and ADDRESS.ABA File Structure

Field Name Type Size Comments
Version Tag Char 4*Byte 0x00 0x01 0x42 0x41 (AB10) for Address
File Name CString   Fully Qualified Filename of file on PC
Table String CString   Custom Names followed by a Custom show header
Next Free Long 4*Byte Next Free Category ID
Category Count Long 4*Byte Count - 1 of the number of category entries (does not include Unfiled category)
Category entries Category-Entry   Occurs category count times
Resource ID Long 4*Byte Schema Resource ID
Fields per Row Long 4*Byte Schema Fields per row. Will be 30 for address.
Rec ID Pos Long 4*Byte Schema Record ID Position (index to field table entry that contains record id)
Rec Status Pos Long 4*Byte Schema Record Status Position (index to field table entry that contains record status)
Placement Pos Long 4*Byte Schema Placement Position (index to field table entry that contains record placement position)
Field Count Short 2*Byte Schema Field Count (number of fields in schema) Corrected April 19, 2000
Field Entry Short 2*Byte Schema field entry occurs field count times. For address the entries will be 1,1,1,5,5,5,5,1,5,1,5,1,5,1,5,1,5,5,5,5,5,5,5,6,1,5,5,5,5,1 Corrected April 19, 2000
Num Entries Long 4*Byte Record count * 30 (number of field entries in entire file, as noted, divide by 30 to arrive at actual record count)
Address entry Address-Entry   Occurs with record count

Category-Entry

Field Name Type Size Comments
Index Long 4*Byte Category Index
ID Long 4*Byte Category ID
Dirty Flag Long 4*Byte Category Dirty Flag
Long Name Cstring   Long Category Name
Short Name Cstring   Short Category Name

Address-Entry

Field Name Type Size Comments
Field Type Long 4*Byte value 1 Integer
Record ID Long 4*Byte
Field Type Long 4*Byte value 1 Integer
Status Field Long 4*Byte Bitwise Record Status: Pending = 0x08, Add = 0x01, Update = 0x02, Delete = 0x04, Archive = 0x80
Field Type Long 4*Byte value 1 Integer
Position Long 4*Byte
Field Type Long 4*Byte value 5 Cstring
Padding Long 4*Byte Always 0x0000
Name Cstring Last Name text
Field Type Long 4*Byte value 5 Cstring
Padding Long 4*Byte Always 0x0000
First Cstring First Name text
Field Type Long 4*Byte value 5 Cstring
Padding Long 4*Byte Always 0x0000
Title Cstring Title text
Field Type Long 4*Byte value 5 Cstring
Padding Long 4*Byte Always 0x0000
Company Cstring Company Name text
Field Type Long 4*Byte value 1 Integer
Phone 1 Label ID Long 4*Byte
Field Type Long 4*Byte value 5 Cstring
Padding Long 4*Byte Always 0x0000
Phone 1 Cstring Phone 1 text
Field Type Long 4*Byte value 1 Integer
Phone 2 Label ID Long 4*Byte
Field Type Long 4*Byte value 5 Cstring
Padding Long 4*Byte Always 0x0000
Phone 2 Cstring Phone 2 text
Field Type Long 4*Byte value 1 Integer
Phone 3 Label ID Long 4*Byte
Field Type Long 4*Byte value 5 Cstring
Padding Long 4*Byte Always 0x0000
Phone 3 Cstring Phone 3 text
Field Type Long 4*Byte value 1 Integer
Phone 4 Label ID Long 4*Byte
Field Type Long 4*Byte value 5 Cstring
Padding Long 4*Byte Always 0x0000
Phone 4 Cstring Phone 4 text
Field Type Long 4*Byte value 1 Integer
Phone 5 Label ID Long 4*Byte
Field Type Long 4*Byte value 5 Cstring
Padding Long 4*Byte Always 0x0000
Phone 5 Cstring Phone 5 text
Field Type Long 4*Byte value 5 Cstring
Padding Long 4*Byte Always 0x0000
Address Cstring Address text
Field Type Long 4*Byte value 5 Cstring
Padding Long 4*Byte Always 0x0000
City Cstring City text
Field Type Long 4*Byte value 5 Cstring
Padding Long 4*Byte Always 0x0000
State Cstring State text
Field Type Long 4*Byte value 5 Cstring
Padding Long 4*Byte Always 0x0000
Zip Cstring Zip text
Field Type Long 4*Byte value 5 Cstring
Padding Long 4*Byte Always 0x0000
Country Cstring Country text
Field Type Long 4*Byte value 5 Cstring
Padding Long 4*Byte Always 0x0000
Note Cstring Note text
Field Type Long 4*Byte value 6 Boolean
Private Long 4*Byte 1 = True
Field Type Long 4*Byte value 1 Integer
Category Long 4*Byte
Field Type Long 4*Byte value 5 Cstring
Padding Long 4*Byte Always 0x0000
Custom 1 Cstring Custom 1 text
Field Type Long 4*Byte value 5 Cstring
Padding Long 4*Byte Always 0x0000
Custom 2 Cstring Custom 2 text
Field Type Long 4*Byte value 5 Cstring
Padding Long 4*Byte Always 0x0000
Custom 3 Cstring Custom 3 text
Field Type Long 4*Byte value 5 Cstring
Padding Long 4*Byte Always 0x0000
Custom 4 Cstring Custom 4 text
Field Type Long 4*Byte value 1 Integer
Display Phone Long 4*Byte index to display phone

Cstrings

Cstrings are stored as follows:
  1. Strings less than 255 bytes are stored with the length specified in the first byte followed by the actual string.
  2. Zero length strings are stored with a 0x00 byte.
  3. Strings 255 bytes or longer are stored with a flag byte set to 0xFF followed by a short (2*Byte) that specifies the length of the string, followed by the actual string.

Field Types

The schema mechanism uses field types to identify the data. The meanings of the field types are in the table below.

Number Meaning
0 None
1 Integer
2 Float
3 Date
4 Alpha
5 Cstring
6 Boolean
7 Bitflag
8 RepeatEvent


Last updated: October 26, 2002