|
Documentation: HP200LX Database format |
|
Here is the first document of the long awaited 100LX database file format. I plan to follow up with a dump (with accompanying information) of a typical database, and a document that describes the special features in the Appointment book. Please be patient! This information is for instructive purposes only. This isn't a part of my real job--I'm doing it to help those with interest in writing programs to read/write 100LX databases. Please don't hold me responsible for inaccuracies or errors, because I'm sure I've got some in here. This information is intended for those who know what they're doing (i.e. don't call customer support with questions, because they won't have the foggiest idea what you're talking about). Because I get a lot of email about 100LX issues, I must ask that if you have any questions, *please direct them to this forum.* I simply do not have time to directly answer everyone's questions, and I don't want to have to stop responding to people's mail. If you post your questions to comp.sys.palmtops or CompuServe, not only will it give the "leaders of the pack" a chance to respond, but the discourse will probably help others too. Thank you. (I'm not trying to be a jerk, I'm just trying to help people *and* have time for my real job!) Andrew J. Gryc Format of the 100LX database files The structure of all database files in the HP100LX is essentially the same. The applications that use the database engine are the Phone Book, General Database, Note Taker, World Time, Appointment Book. (The Appointment book has additional structure that will be detailed in a later document.) I'll explain the format of a general database first. The database engine is designed around a few primary principles. Although you don't need to know them to understand the format, it may help in seeing why certain design decisions were made. The first is flexibility (i.e. complexity!). All the information to enter and view data for a database is contained within the file. Except for the appointment book, all the database apps are actually different incarnations of the same program, differentiated by the initial file that is created. The second principle is that the data modifications are made to the file as they happen. Only enough of the file to work with is in memory at one time. Thus, the file can grow much larger than available RAM (unlike the 95LX which kept the entire file in memory). It also provides higher protection for the data from disasters (i.e. reboots, lockups, battery dying, etc.). The third principle is that all actions are "undoable". This means that the engine cannot throw away information that might be undone until that data is no longer accessible. Structures used in this document The structures given are in Microsoft C for an IBM PC or compatible. A RECORDHEADER structure precedes every record in the database (including the DBHEADER, but not the signature). OFFSET NAME TYPE Contents
0 Record Type char Type of record.
The types of records are:
Number Name Content
0 TYPE_DBHEADER Header for database. First record in db.
4 TYPE_CARDDEF Information on the card layout.
5 TYPE_CATEGORY List of categories for the database.
6 TYPE_FIELDDEF Definition record for each field
7 TYPE_VIEWPTDEF Viewpoint (sort and subset) definition
9 TYPE_NOTE Note record
10 TYPE_VIEWPTTABLE Table of viewpoint entries
11 TYPE_DATA Data record
12 TYPE_LINKDEF Smart clip record
13 TYPE_CARDPAGEDEF Info struct for multiple card database
14 TYPE_ ??? (in appointment db)
15 TYPE_SMARTCLIP see TYPE_LINKDEF (in appointment db)
14..30 TYPE_USER Defined by the application:
31 TYPE_LOOKUPTABLE Pointers to all other records in the db.
1 Record Status char Record status (0x01=Garbage,
0x02=Modified)
2..3 Length unsigned int Length of record *including* header (i.e.
a zero byte record would have 6 as the
length).
4..5 Record Number int Sequential record index. Each
record type uses its own index
starting at 0.
The timestamp structure is used in the database header for reconciliation. The date portion (bytes 0..2) and the time portion (bytes 3..4) are used separately in subset strings. 0 Year char 0..199 = 1900..2099 1 Month char 0..11 = Jan..Dec 2 Day char 0..30 = 1st..31st 3..4 Minute int 0..1439 = 12:00am..11:59pm 0..3 UNUSED longint Window class handler. Reconstructed
upon loading from fielddef information.
4..5 x int X position in pixels (0..639)
6..7 y int Y position in pixels (0..199)
8..9 w int width in pixels
10..11 h int height in pixels
12..13 LogicalSize int Size of buffer for edit-type fields (as
opposed to screen size). Includes null
terminator.
For radio fields, an index of the radio type.
For check boxes, a bit mask for that check on.
14..17 Style longint LHAPI window style. Most styles are not used.
Styles per LHAPI are as follows:
STYLE_NOSHADOW 0x00004000L
STYLE_COMBOEDIT 0x00008000L
STYLE_DATETIME 0x00010000L
STYLE_CHECKBOX 0x00020000L Should be set for a check box
STYLE_NO_PARENT_KEY 0x00040000L
STYLE_PUSHB_WIDTH 0x00080000L
STYLE_PUSHBUTTON 0x00100000L
STYLE_COMBOLIST 0x00200000L
STYLE_RADIO 0x00400000L Should be set for a radio button
STYLE_GRAY 0x00800000L
STYLE_XYRELATIVE 0x01000000L
STYLE_WHCHAR 0x02000000L
STYLE_NOBORDER 0x04000000L
STYLE_LEAF 0x08000000L
STYLE_NOTIFY 0x10000000L
STYLE_NOFOCUS 0x20000000L
STYLE_SAVEUNDER 0x40000000L
STYLE_INVISIBLE 0x80000000L
18..19 Parent int Index of the parent window (all windows
within a group box give the index of the
group as their parent). -1 if no parent
(top level window).
Used for column arrangment in viewpoint definition 0 Field Number char Index of fielddef to use for this column 1 Width char Width of column in characters. Every record in the database has an entry in the lookup table. 0..1 Size int Size of record (including record header)
2..3 Filters int if bit 0x0001..0x8000 is set, indicates
that a switch to viewpoint 0..15 requires
this record to be sorted/filtered afresh.
The "dirty bit" for keeping track of
what records have been changed since last
visiting a viewpoint.
4 Flags char 128 = Deleted
5..7 Offset char[3] 3 bytes of offset (0..16 Meg) Lowest..Highest
Gives disk seek address of record.
Database records in approximate order The first 4 bytes in the file are the Database Signature. OFFSET NAME TYPE Contents 0..3 FileID char 0x68 0x63 0x44 0x00 Following this are the database records. Only the first record (the database header) is in a fixed location. All other records may occur in any order in the file. Only one of these records is in a database. It immediately follows the signature. 0..5 Record Header RECORDHEADER Although the format of a RECORDHEADER
is above, specifically for this
record it is:
0x00 0x00 0x19 0x00 0x00 0x00
6..7 Release Ver int Database release ver (0x0102)
8 FileType char 'D' = General database and phone book
'W' = World Time
'N' = Notetaker
'2' = Appointment book
9 File Status char Bits : 0x01=Database already open
0x02=A record modified since
last reconcile
10..11 CurrentViewpt int Record num of current viewpoint
12..13 NumRecords int Count of all records in database
14..17 LookupSeek longint File offset of lookup table. If 0,
it means that the lookup table is
missing (i.e., the user has rebooted
before the file was closed), and it
must be reconstructed by walking
through the database and reading record
headers.
18..22 LastReconcile DBTIMESTAMP When database was last reconciled
(or creation date if never reconciled).
23..24 ViewptHash int "Magic" hash generated from the
following system settings:
Country, CodePage, Sort,
Keyboard, Language, KEYBEZ active.
Normally (on a US 100LX with no changes
to these settings) this is 0x8437.
Used to keep viewpt tables from
going out of date if system sort
order changes. If on DB_Open
this number mismatches, all
viewpoint tables are flagged as
invalid and are recreated as needed.
Contains the positioning information for the windows in the database card. All records (even on multiple pages) share the same carddef; the card page def record details the spliting of fields into multiple pages. There is only one record of this type. 0..5 Record Header RECORDHEADER See RECORDHEADER structure above.
0x04 0x?? 0x?? 0x?? 0x00 0x00
6... Windows 1..n PACKEDWINDOW Array of PACKED windows for each
field in the database. The
relationship is one-to-one with
the FIELDDEF records. The number
of PACKEDWINDOWS is computed by
the number of FIELDDEF records.
Defines each field in the database. There is one FIELDDEF record for every field (even non-data fields). The FIELDDEF records refer to the position of information in DATA records in the file. The database engine uses the information in the FIELDDEFS to provide sort, subsetting, and string retrieval functions. Although in the general databases, all information in the data records is pointed to by FIELDDEFs, DATA records can contain additional information. This allows you to keep binary or non-user accessible info in the records (the appointment book does this with record links). 0..5 Record Header RECORDHEADER See RECORDHEADER structure above.
0x06 0x?? 0x?? 0x?? 0x00 0x??
6 FieldType char Type of field:
Num Name Description
0 BYTEBOOL_FIELD Checkbox: points to a bit in a byte
1 WORDBOOL_FIELD points to a bit in a word
2 STRING_FIELD Points to ASCIIZ string
3 PHONE_FIELD Treated as a String by the database
4 NUMBER_FIELD Numbers are stored as ASCIIZ strings,
but compare as numbers
5 CURRENCY_FIELD Treated as a number by the database
6 CATEGORY_FIELD Stored as an ASCIIZ string with ';'
separating each selection
7 TIME_FIELD int: Minutes since midnight
8 DATE_FIELD points to char array[3];
array[0] is Year: 0 starts at 1900
array[1] is Month from 0..11
array[2] is Day from 0..30
9 RADIO_FIELD dataoffset points to actual offset of
radio button byte
10 NOTE_FIELD The field is a note (which resides in a
separate record); dataoffset points to the
record number of the note. If no note is
attached, the record number pointed to should
be -1.
11 GROUP_FIELD Used for Groupboxes; no data is attached
12 STATIC_FIELD Used for Static Text; no data is attached
13 MULTILINE_FIELD Same as a string, but the field can have CR/LFs
14 LIST_FIELD Doubles as a STATIC_FIELD
15 COMBO_FIELD Doubles as a STRING_FIELD
16 USER_FIELD The applications can define their own
field types starting at USER_FIELD NOTE:
The FIELDDEF for user defined fields
MUST have the status bit set to
FIELDDEF_CALLBACK and a FieldCallback
function provided.
7 FieldID char Used to identify unique fields by
applications--not used.
8..9 DataOffset int Offset of data into data record. If info
is at fixed position in record, do not set
FIELDDEF_RELATIVE. If in a variable position,
set FIELDEF_RELATIVE. Then DataOffset points
at a fixed place in the record where the true
offset of the data (a int) can be found.
10 Flags char Combination of the following bits:
FIELDDEF_NODATA 0x80 The fielddef does not have any associated data
FIELDDEF_RESERVED 0x40 The fielddef record is reserved (don't use)
FIELDDEF_RELATIVE 0x20 The dataoffset does not point to the actual
data, but points to a word. This word is the
offset to the data.
FIELDDEF_NULLTITLE 0x10 The window related to the fielddef has no
title.
11..12 Reserved int Only used by some fields.
BYTEBOOL_FIELD,WORDBOOL_FIELD : bitmask of bit to check
RADIO_FIELD : value to stuff into data byte
CATEGORY_FIELD : record number of associated CATEGORY_TYPE rec
13..33 Name char Space for 20 chars with trailing 0.
This record is only present if there is more than one card per record in the database. You cannot have this record if there is only one card in the database. 0..5 Record Header RECORDHEADER See RECORDHEADER structure above.
0x0d 0x?? 0x28 0x00 0x00 0x00
6..25 Reserved PWINDOW
26..27 CurrPage int Used by Card to track current page
28..29 PageCount int 2..4 for number of pages
30..33 PageStart char [4] Index of control starting each page
34..37 PageSize char [4] Number of controls on each page
Holds all the categories for the database. A null terminated string, with semicolons separating each category. Maximum size of the string is 256 bytes. 0..5 Record Header RECORDHEADER See RECORDHEADER structure above.
0x05 0x?? 0x?? 0x?? 0x00 0x00
6... CategoryString chars e.g. "Fred;Jolly"
A data record. The data in the record is accessed by the fielddefs. The layout below is not required, but is what is output by the built-in applications (except the appointment book). The first few bytes are the fixed fields. They are in the same place in every record. They are radio buttons, checkboxes, times, and dates. Also in this group are relative fields--all the string fields generated by the native 100LX apps are relative. The relative fields give the real offset of the string in the record so that unused space can be packed out. 0..5 Record Header RECORDHEADER See RECORDHEADER structure above.
0x0b 0x?? 0x?? 0x?? 0x?? 0x??
6..n Fixed fields int Either fixed fields or pointers to
variable fields. Number of entries
is determined by the fielddefs.
n+1 Null placeholder char A 0 byte. All null strings in the
record are compressed to point to
this single byte, instead of putting
in multiple nulls.
n+2..m Relative fields char Null terminated strings. The number
is determined by the fielddefs.
Record attached to a data record. Each note field has its own record. In the 100LX, only data records with notes have note records; the Omnibook 300 has note records for every data record (even if the note is empty). 0..5 Record Header RECORDHEADER See RECORDHEADER structure above.
0x09 0x?? 0x?? 0x?? 0x?? 0x??
6..n Note chars From 0..32767 characters. The note
cannot have characters 0x00 or 0xff.
SMART CLIP DEFINITION or LINKDEF (12) Smart-clip (also called link-def) definitions are used for smart-clipping and printing. At least one must be present to print. 0..5 Record Header RECORDHEADER See RECORDHEADER structure above.
0x0c 0x?? 0x?? 0x?? 0x?? 0x??
6..7 String Length int Length of Link string (following name)
8..9 Flags int Flags:
0x02 = Linkdef can't be deleted by user
10..41 Name char [32] Name
42..n Link String char Info representing the smart-clip.
Every viewpoint (that is, sort/filter/column arrangement combination) has a viewpoint definition. It describes the columns and their widths, the sort fields, and the SSL string for filter matching. Only 16 viewpoints can be created. 0..5 Record Header RECORDHEADER See RECORDHEADER structure above.
0x07 0x?? 0x?? 0x?? 0x?? 0x00
6..7 Token Length int Length of SSL Token representation
8..9 String Length int Length of SSL String representation
10..11 Flags int Flags for the viewpoint:
1 Viewpoint Unnamed Viewpoint is the "Unnamed viewpoint"
2 Viewpoint NoDelete Viewpoint cannot be deleted by user
4 Viewpoint General Viewpoint was entered as SSL string, not Card
12 Reserved char
13..44 Name char [32] Name of viewpoint
45..50 Sort Field int [3] Index of fielddef to sort; -1 means no
more fields.
51..56 Ascending int [3] 1=ascending,0=descending for above
corresponding Sort Fields
57..96 ColumnArrange COLUMN INFO [20] Array of column information; -1 is last
column
97..n SSL Tokens char SSL Tokens in RPN-style --length is
given by Token Length.
n+1..m SSL String char String form of SSL statement
Although a complete description will not be given on how to create SSL token strings, here is a list of the recognized tokens: 0x00 ERROR_TOKEN (used only in parsing--not in SSL token strings)
0x0c LPAREN_TOKEN (used only in parsing--not in SSL token strings)
0x0d RPAREN_TOKEN (used only in parsing--not in SSL token strings)
0x01 NOT_TOKEN ( ! )
0x02 OR_TOKEN ( | )
0x03 AND_TOKEN ( & )
0x04 EQ_TOKEN ( = )
0x05 LE_TOKEN ( <= )
0x06 LT_TOKEN ( < )
0x07 GE_TOKEN ( >= )
0x08 GT_TOKEN ( > )
0x09 NE_TOKEN ( <> )
0x0a IN_TOKEN ( -> )
0x0b CONTAINS_TOKEN ( # )
0x0e SEPARATOR_TOKEN ( , )
0x0f TO_TOKEN ( .. )
0x10 NUMBER_TOKEN Followed by number in ASCIIZ
0x11 STRING_TOKEN Followed by string in ASCIIZ
0x12 NAME_TOKEN Followed by Name index (int)
0x13 BOOLNAME_TOKEN Followed by BoolName index (int)
0x14 TIME_TOKEN Followed by time (int)
0x15 DATE_TOKEN Followed by date (3 chars)
0x16 CATEGORY_TOKEN Followed by Category in ASCIIZ
0x17 USERTYPE_TOKEN Followed by user type (char), size (int), and
actual usertype data.
0x1a STAR_TOKEN ( * )
0x19 PLACEHOLDER_TOKEN
0x18 EOL_TOKEN END OF TOKEN STRING
For every viewpoint definition, there is a corresponding viewpoint table. This correspondence is one-to-one; the 0th VIEWPTDEF references the 0th VIEWPTTABLE. The viewpoint table contains all the records in sorted order that meet that viewpoint's SSL filter. The viewpoint table allows multiple viewpoints to be managed much quicker than reconstructing the viewpoint from scratch each time it is accessed. 0..5 Record Header RECORDHEADER See RECORDHEADER structure above.
0x0a 0x?? 0x?? 0x?? 0x?? 0x00
6..n Data Record Index int array A data record index for all records
in the viewpoint. If the table is
a single entry of -1, it has been
invalidated--the next switch to the
viewpoint will recreate it from
scratch.
This table gives the disk address and type of every record in the database. If it is absent (and the LookupSeek in the header is 0), then the database engine will recreate on opening by stepping through the file. It is therefore not crucial that it is present. 0..5 Record Header RECORDHEADER See RECORDHEADER structure above.
0x1f 0x?? 0x?? 0x?? 0x00 0x00
6..n Lookup Entries PACKEDLOOKUP Lookup entries for disk records
This record is always the last record in the database (if present). If it is there, it is followed by a small table called the TypeFirst table that has no record header. This table gives the beginning lookup entries for each group of record types. The correct lookup entry to use for Record Type X, Record Number Y is given by looking at Lookup Entry [TypeFirst[X] + Y]. 0..63 TypeFirst Table int [32] First lookup entry for record types
0..31.
Here is the second document of the 100LX database file format. This is a dump of a very simple database, with very brief explanations of what some of the more important pieces are. You will need the first document titled "Format of the 100LX database files" to read along with this. Using that document, you should be able to pick apart the contents of the individual records. This information is for instructive purposes only. This isn't a part of my real job--I'm doing it to help those with interest in writing programs to read/write 100LX databases. Please don't hold me responsible for inaccuracies or errors, because I'm sure I've got some in here. This information is intended for those who know what they're doing (i.e. don't call customer support with questions, because they won't have the foggiest idea what you're talking about). Because I get a lot of email about 100LX issues, I must ask that if you have any questions, *please direct them to this forum.* I simply do not have time to directly answer everyone's questions, and I don't want to have to stop responding to people's mail. If you post your questions to comp.sys.palmtops or CompuServe, not only will it give the "leaders of the pack" a chance to respond, but the discourse will probably help others too. Thank you. (I'm not trying to be a jerk, I'm just trying to help people *and* have time for my real job!) Andrew J. Gryc Dump of Database file radio.gdb =====================================================
SIGNATURE>>
000000: 68 63 44 00 hcD.
=====================================================
HEADER>>
000004: 00 00 19 00 00 00 02 01 44 00 00 00 23 00 b9 02 ........D...#...
000014: 00 00 5d 03 14 2c 00 c8 7b ..]..,..{
RECORD HEADER>>
Type: 0 (TYPE_DBHEADER) Status: 00 Length: 25 (0019) Record #: 0
Status =
Release number:102 File type:'D' File status:00
************ General Database/Phone Book File ************
Current viewpt:0 Number records:35 Lookup seek address:0002b9
Last reconciled on: 4/21/93 0:44
Magic Viewpt Sort Key:0x7bc8
=====================================================
RECORD HEADER>>
00001d: 05 02 07 00 00 00 ......
Type: 5 (TYPE_CATEGORY) Status: 02 Length: 7 (0007) Record #: 0
Status = Modified
RECORD>>
000023: 00 .
=====================================================
RECORD HEADER>>
000024: 04 02 1a 00 00 00 ......
Type: 4 (TYPE_CARDDEF) Status: 02 Length: 26 (001a) Record #: 0
Status = Modified
RECORD>>
00002a: 01 00 00 00 02 00 0d 00 fe 00 0f 00 1f 00 01 00 ................
00003a: 00 00 ff ff ..ÿÿ
=====================================================
RECORD HEADER>>
00003e: 06 02 12 00 00 00 ......
Type: 6 (TYPE_FIELDDEF) Status: 02 Length: 18 (0012) Record #: 0
Status = Modified
RECORD>>
000044: 02 00 00 00 20 00 00 6e 61 6d 65 00 .... ..name.
=====================================================
RECORD HEADER>>
000050: 07 02 62 00 00 00 ..b...
Type: 7 (TYPE_VIEWPTDEF) Status: 02 Length: 98 (0062) Record #: 0
Status = Modified
RECORD>>
000056: 00 00 00 00 02 00 00 41 6c 6c 20 44 61 74 61 62 .......All Datab
000066: 61 73 65 20 49 74 65 6d 73 00 00 00 00 00 00 00 ase Items.......
000076: 00 00 00 00 00 00 00 00 00 ff ff ff ff 01 00 00 .........ÿÿÿÿ...
000086: 00 00 00 00 20 ff 00 ff 00 00 00 00 00 00 00 00 .... ÿ.ÿ........
000096: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000a6: 00 00 00 00 00 00 00 00 00 00 00 00 ............
=====================================================
RECORD HEADER>>
0000b2: 0c 02 3d 00 00 00 ..=...
Type: 12 (TYPE_LINKDEF) Status: 02 Length: 61 (003d) Record #: 0
Status = Modified
RECORD>>
0000b8: 13 00 02 00 41 6c 6c 20 46 69 65 6c 64 73 00 00 ....All Fields..
0000c8: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000d8: 00 00 00 00 6e 61 6d 65 3a 20 ff 0a 40 6f 00 06 ....name: ÿ.@o..
0000e8: 00 00 01 09 ff 0d 0a ....ÿ..
=====================================================
RECORD HEADER>>
0000ef: 0b 02 0f 00 00 00 ......
Type: 11 (TYPE_DATA) Status: 02 Length: 15 (000f) Record #: 0
Status = Modified
RECORD>>
0000f5: 03 00 00 41 6c 70 68 61 00 ...Alpha.
=====================================================
RECORD HEADER>>
0000fe: 0b 02 0f 00 01 00 ......
Type: 11 (TYPE_DATA) Status: 02 Length: 15 (000f) Record #: 1
Status = Modified
RECORD>>
000104: 03 00 00 42 72 61 76 6f 00 ...Bravo.
=====================================================
RECORD HEADER>>
00010d: 0b 02 11 00 02 00 ......
Type: 11 (TYPE_DATA) Status: 02 Length: 17 (0011) Record #: 2
Status = Modified
RECORD>>
000113: 03 00 00 43 68 61 72 6c 69 65 00 ...Charlie.
=====================================================
RECORD HEADER>>
00011e: 0b 02 0f 00 03 00 ......
Type: 11 (TYPE_DATA) Status: 02 Length: 15 (000f) Record #: 3
Status = Modified
RECORD>>
000124: 03 00 00 44 65 6c 74 61 00 ...Delta.
=====================================================
RECORD HEADER>>
00012d: 0b 02 0e 00 04 00 ......
Type: 11 (TYPE_DATA) Status: 02 Length: 14 (000e) Record #: 4
Status = Modified
RECORD>>
000133: 03 00 00 45 63 68 6f 00 ...Echo.
=====================================================
RECORD HEADER>>
00013b: 0b 02 11 00 05 00 ......
Type: 11 (TYPE_DATA) Status: 02 Length: 17 (0011) Record #: 5
Status = Modified
RECORD>>
000141: 03 00 00 46 6f 78 74 72 6f 74 00 ...Foxtrot.
=====================================================
RECORD HEADER>>
00014c: 0b 02 0f 00 06 00 ......
Type: 11 (TYPE_DATA) Status: 02 Length: 15 (000f) Record #: 6
Status = Modified
RECORD>>
000152: 03 00 00 47 65 63 6b 6f 00 ...Gecko.
=====================================================
RECORD HEADER>>
00015b: 0b 02 10 00 08 00 ......
Type: 11 (TYPE_DATA) Status: 02 Length: 16 (0010) Record #: 8
Status = Modified
RECORD>>
000161: 03 00 00 49 6e 64 69 67 6f 00 ...Indigo.
=====================================================
RECORD HEADER>>
00016b: 0b 02 10 00 09 00 ......
Type: 11 (TYPE_DATA) Status: 02 Length: 16 (0010) Record #: 9
Status = Modified
RECORD>>
000171: 03 00 00 4a 75 6c 69 65 74 00 ...Juliet.
=====================================================
RECORD HEADER>>
00017b: 0b 02 0f 00 0e 00 ......
Type: 11 (TYPE_DATA) Status: 02 Length: 15 (000f) Record #: 14
Status = Modified
RECORD>>
000181: 03 00 00 4f 70 65 72 61 00 ...Opera.
=====================================================
RECORD HEADER>>
00018a: 0b 02 0f 00 11 00 ......
Type: 11 (TYPE_DATA) Status: 02 Length: 15 (000f) Record #: 17
Status = Modified
RECORD>>
000190: 03 00 00 52 6f 6d 65 6f 00 ...Romeo.
=====================================================
RECORD HEADER>>
000199: 0b 02 0f 00 13 00 ......
Type: 11 (TYPE_DATA) Status: 02 Length: 15 (000f) Record #: 19
Status = Modified
RECORD>>
00019f: 03 00 00 54 61 6e 67 6f 00 ...Tango.
=====================================================
RECORD HEADER>>
0001a8: 0b 02 0f 00 17 00 ......
Type: 11 (TYPE_DATA) Status: 02 Length: 15 (000f) Record #: 23
Status = Modified
RECORD>>
0001ae: 03 00 00 58 2d 52 61 79 00 ...X-Ray.
=====================================================
RECORD HEADER>>
0001b7: 0b 02 0f 00 19 00 ......
Type: 11 (TYPE_DATA) Status: 02 Length: 15 (000f) Record #: 25
Status = Modified
RECORD>>
0001bd: 03 00 00 5a 65 62 72 61 00 ...Zebra.
=====================================================
RECORD HEADER>>
0001c6: 0b 02 10 00 18 00 ......
Type: 11 (TYPE_DATA) Status: 02 Length: 16 (0010) Record #: 24
Status = Modified
RECORD>>
0001cc: 03 00 00 59 61 6e 6b 65 65 00 ...Yankee.
=====================================================
RECORD HEADER>>
0001d6: 0b 02 10 00 15 00 ......
Type: 11 (TYPE_DATA) Status: 02 Length: 16 (0010) Record #: 21
Status = Modified
RECORD>>
0001dc: 03 00 00 56 69 63 74 6f 72 00 ...Victor.
=====================================================
RECORD HEADER>>
0001e6: 0b 02 11 00 16 00 ......
Type: 11 (TYPE_DATA) Status: 02 Length: 17 (0011) Record #: 22
Status = Modified
RECORD>>
0001ec: 03 00 00 57 68 69 73 6b 65 79 00 ...Whiskey.
=====================================================
RECORD HEADER>>
0001f7: 0b 02 0f 00 07 00 ......
Type: 11 (TYPE_DATA) Status: 02 Length: 15 (000f) Record #: 7
Status = Modified
RECORD>>
0001fd: 03 00 00 48 6f 74 65 6c 00 ...Hotel.
=====================================================
RECORD HEADER>>
000206: 0b 02 0e 00 0a 00 ......
Type: 11 (TYPE_DATA) Status: 02 Length: 14 (000e) Record #: 10
Status = Modified
RECORD>>
00020c: 03 00 00 4b 69 6c 6f 00 ...Kilo.
=====================================================
RECORD HEADER>>
000214: 0b 02 0e 00 0b 00 ......
Type: 11 (TYPE_DATA) Status: 02 Length: 14 (000e) Record #: 11
Status = Modified
RECORD>>
00021a: 03 00 00 4c 69 6d 61 00 ...Lima.
=====================================================
RECORD HEADER>>
000222: 0b 02 10 00 0c 00 ......
Type: 11 (TYPE_DATA) Status: 02 Length: 16 (0010) Record #: 12
Status = Modified
RECORD>>
000228: 03 00 00 4d 65 78 69 63 6f 00 ...Mexico.
=====================================================
RECORD HEADER>>
000232: 0b 02 0f 00 0d 00 ......
Type: 11 (TYPE_DATA) Status: 02 Length: 15 (000f) Record #: 13
Status = Modified
RECORD>>
000238: 03 00 00 4e 61 6e 63 79 00 ...Nancy.
=====================================================
RECORD HEADER>>
000241: 0b 02 0e 00 0f 00 ......
Type: 11 (TYPE_DATA) Status: 02 Length: 14 (000e) Record #: 15
Status = Modified
RECORD>>
000247: 03 00 00 50 61 70 61 00 ...Papa.
=====================================================
RECORD HEADER>>
00024f: 0b 02 10 00 10 00 ......
Type: 11 (TYPE_DATA) Status: 02 Length: 16 (0010) Record #: 16
Status = Modified
RECORD>>
000255: 03 00 00 51 75 65 62 65 63 00 ...Quebec.
=====================================================
RECORD HEADER>>
00025f: 0b 02 10 00 12 00 ......
Type: 11 (TYPE_DATA) Status: 02 Length: 16 (0010) Record #: 18
Status = Modified
RECORD>>
000265: 03 00 00 53 69 65 72 72 61 00 ...Sierra.
=====================================================
RECORD HEADER>>
00026f: 0b 02 10 00 14 00 ......
Type: 11 (TYPE_DATA) Status: 02 Length: 16 (0010) Record #: 20
Status = Modified
RECORD>>
000275: 03 00 00 55 6e 69 74 65 64 00 ...United.
=====================================================
RECORD HEADER>>
00027f: 0a 02 3a 00 00 00 ..:...
Type: 10 (TYPE_VIEWPTTABLE) Status: 02 Length: 58 (003a) Record #: 0
Status = Modified
RECORD>>
000285: 00 00 01 00 02 00 03 00 04 00 05 00 06 00 07 00 ................
000295: 08 00 09 00 0a 00 0b 00 0c 00 0d 00 0e 00 0f 00 ................
0002a5: 10 00 11 00 12 00 13 00 14 00 15 00 16 00 17 00 ................
0002b5: 18 00 19 00 ....
=====================================================
RECORD HEADER>>
0002b9: 1f 00 1e 01 00 00 ......
Type: 31 (TYPE_LOOKUPTABLE) Status: 00 Length: 286 (011e) Record #: 0
Status =
RECORD>>
0002bf: 19 00 ff ff 00 04 00 00 1a 00 fe ff 00 24 00 00 ..ÿÿ.......ÿ....
0002cf: 07 00 fe ff 00 1d 00 00 12 00 fe ff 00 3e 00 00 ...ÿ.......ÿ....
0002df: 00 00 fe ff c0 00 00 00 00 00 fe ff c0 00 00 00 ...ÿ.......ÿÀ...
0002ef: 62 00 fe ff 00 50 00 00 3a 00 fe ff 00 7f 02 00 b..ÿ....:..ÿ....
0002ff: 0f 00 fe ff 00 ef 00 00 0f 00 fe ff 00 fe 00 00 ...ÿ.......ÿ....
00030f: 11 00 fe ff 00 0d 01 00 0f 00 fe ff 00 1e 01 00 ...ÿ.......ÿ....
00031f: 0e 00 fe ff 00 2d 01 00 11 00 fe ff 00 3b 01 00 ...ÿ.......ÿ....
00032f: 0f 00 fe ff 00 4c 01 00 0f 00 fe ff 00 f7 01 00 ...ÿ.......ÿ....
00033f: 10 00 fe ff 00 5b 01 00 10 00 fe ff 00 6b 01 00 ...ÿ.......ÿ....
00034f: 0e 00 fe ff 00 06 02 00 0e 00 fe ff 00 14 02 00 ...ÿ.......ÿ....
00035f: 10 00 fe ff 00 22 02 00 0f 00 fe ff 00 32 02 00 ...ÿ.......ÿ....
00036f: 0f 00 fe ff 00 7b 01 00 0e 00 fe ff 00 41 02 00 ...ÿ.......ÿ....
00037f: 10 00 fe ff 00 4f 02 00 0f 00 fe ff 00 8a 01 00 ...ÿ.......ÿ....
00038f: 10 00 fe ff 00 5f 02 00 0f 00 fe ff 00 99 01 00 ...ÿ.......ÿ....
00039f: 10 00 fe ff 00 6f 02 00 10 00 fe ff 00 d6 01 00 ...ÿ.......ÿ....
0003af: 11 00 fe ff 00 e6 01 00 0f 00 fe ff 00 a8 01 00 ...ÿ.......ÿ....
0003bf: 10 00 fe ff 00 c6 01 00 0f 00 fe ff 00 b7 01 00 ...ÿ.......ÿ....
0003cf: 3d 00 fe ff 00 b2 00 00 =..ÿ....
TYPE FIRST INFORMATION>>
0003d7: 00 00 01 00 01 00 01 00 01 00 02 00 03 00 06 00 ................
0003e7: 07 00 07 00 07 00 08 00 22 00 23 00 23 00 23 00 ........".#.#.#.
0003f7: 23 00 23 00 23 00 23 00 23 00 23 00 23 00 23 00 #.#.#.#.#.#.#.#.
000407: 23 00 23 00 23 00 23 00 23 00 23 00 23 00 23 00 #.#.#.#.#.#.#.#.
|