bBaseW Database File Format

NOTHING FINISHED at this point!

Pages changed as I think of things.

e-mail comments and suggestions, address on home page

"dBase"® has been used by multiple owners. At least Ashton-Tate, Borland, then dBase LLC. "xBase" was used by other companies, and generically, to avoid trademark infringement of the popular format's name.

Found something called X64, but that looks like 64 bit software to work with data in the old xBase format. I want to update the format itself!

dBase® and xBase store numeric data types as strings of text. The "b" of bBaseW is meant to mean binary. Only field type "C", for character, remains as a string type. "W" is for wide, or UTF-16 16 bit (less than 0xE000) characters. This applies to type codes and field names too.(Basically make it fit in the 21st century.)

No x0D (CR) Field Descripter terminator, Field Descriptor is fixed size "mdx" replaced by file memo style fields. So no "flag" byte. No index flag in record definition either
No multi-user flag in header, and no multiuser WORD in field definition. Whether there are multiple users is the job of the serving program, not the table containing the data.
Decimal count serves no purpose.

Header Features
Version Number
Field Name
Originally 10 ASCII characters (maximum) followed by a null character (total 11 bytes). Later, 31 ASCII characters followed by a null character (total 32 bytes). 31 characters is still enough (IMO) for bBaseW, but in UTF-16 the total size in bytes is 64 (up to 31 characters then a null character).
Use of null terminated string allows variable length names while keeping the field definitions a fixed size.
Field Type Codes
Were single ASCII characters. Codes for bBaseW are one or two UTF-16 characters. Single characters right padded with a space character.
A 2 character null terminated UTF-16 string requires 6 bytes.

Source code:
20230831 Table or Field Name Popup
20230829 Auto Increment Initial Value Popup

Created on August 17, 2023