Column Data Types

[This is preliminary documentation and subject to change.]

The columns of the database tables are formatted in one of the following data types:

Text

The Text data type is a text string. No validation is done on this string.

UpperCase

The UpperCase data type is a text string that must be all uppercase.

LowerCase

The LowerCase data type is a text string that must be all lowercase.

Integer

The Integer data type is a two-byte integer value. Unless otherwise restricted, the range of legal values is from -32,767 to +32,767.

DoubleInteger

The DoubleInteger data type is a four-byte integer value. Unless otherwise restricted, the range of legal values is from - 2,147,483,647 to +2,147,483,647.

Time/Date

The Time/Date data type has the time and the date stored individually, using unsigned integers as bit fields, packed as follows.

Time

Time is encoded in an unsigned 2-byte integer with the following bit fields:

Contents Bits Value Range
hours 0 1 2 3 4 0-23
minutes 5 6 7 8 9 A 0-59
2-second intervals B C D E F 0-29

Date

Date is encoded in an unsigned 2-byte integer with the following bit fields:

Contents Bits Value Range
year 0 1 2 3 4 5 6 0-119 (relative to 1980)
month 7 8 9 A 1-12
day B C D E F 1-31

Identifier

The Identifier data type is a text string. Identifiers may contain letters, digits, underscores (_), or periods (.). However, every identifier must begin with either a letter or an underscore.

Property

The Property data type is a valid Identifier with the additional syntax "%identifier," which represents an environment variable.

Filename

The Filename data type is a text string containing a file name or folder. By default, the file name is assumed to use short file name syntax; that is, eight-character name, period (.), and 3-character extension. To include a long file name, separate it from the short file name with a vertical bar (|). For example, the following two strings are valid:

status.txt
projec~1.txt|Project Status.txt
 

Short and long file names must not contain the following characters:

\   ?   |   >  <   :  /  *  "
 

In addition, short file names must not contain the following characters:

+  ,  ;  =  [  ] 
 

Short file names may not include a space, although a long file name may. No space is allowed preceding the vertical bar (|) separator for the short file name/long file name syntax. If a space exists after the pipe separator, then the long file name must have a space at the beginning of the file name. No full-path syntax is allowed.

WildCardFilename

The WildCardFilename data type is a Filename that may also contain the wild card characters "?" for any single character or "*" for zero or more occurrences of any character.

During validation, "*" is treated as representing two or more characters. For example, "weather*.txt" would not pass validation because it does not fit into the eight-character name, period (.), and 3-character extension filename format. However, "weather?.txt" would pass validation.

Path

The Path data type is a text string containing a valid full path.

The string may also contain a property name enclosed in square brackets ([ ]). In such a case, the name of the property, including the brackets, are replaced in the string by the value of the property. The property name and brackets may not be preceded or succeeded by any alphabetic characters. For example, "\\server\share\[username]" is valid, but "\\server\share\abc[username]" is not.

Examples:

Paths

The Paths data type is a text string containing a list of Path data types, separated by semicolons (;).

AnyPath

The AnyPath data type is a text string containing either a full Path or a relative subpath.

Examples:

DefaultDir

The DefaultDir data type is a text string containing either a valid Filename or a valid Identifier. This is used only in the Directory table. It must be an identifier if the directory is a root directory. If the directory is a non-root, this value must be a filename or a filename:filename pair. Note that "." is allowed as a file name and has special meaning in the Directory table.

RegPath

The RegPath data type is a text string containing a Registry path. Registry paths can include properties, as with the Formatted data type. A RegPath may not begin or end with a backslash (\). The [#file key] and [$component key] can be embedded in the path or preceded by other characters.

Formatted

The Formatted data type is a text string that is processed to resolve embedded property names, table keys, environment variable references, and other special substrings. The following conventions are recognized to resolve the string:

KeyFormatted

The KeyFormatted data type is a text string, identical to Formatted, except with the following additional keys:

Multiple instances of KeyFormatted properties are allowed and the KeyFormatted properties can be embedded within a string.

Template

The Template data type is a text string that may contain properties that are enclosed in brackets ([ ]). The template type allows all of the Formatted type formats, plus [1] where 1 is a number.

Condition

The Condition data type is a text string containing a valid conditional statement that can be evaluated as True or False.

GUID

The GUID data type is a text string representing a Class identifier (ID). COM must be able to convert the string to a valid Class ID.

Version

The Version data type is a text string containing a valid version string. A version string has the format

xx.xx.xxxx.xxxx
 

where x is a digit. Version is only used in the File table. If a file has a version, it must also have a language associated with it. If the language is neutral, specify 0 (zero) in the Language column of the File table.

Language

The Language data type is a text string containing one or more valid numeric language IDs. If there are two or more language IDs, they must be separated by commas.

Binary

The Binary data type is a binary data stream containing any type of binary data. Examples include a bitmap or executable code.

CustomSource

The CustomSource data type is either a valid Identifier or an external key depending on the Type column of the CustomAction table. It can be an external key into the Binary table, File table, Directory table, and Property table. Although, as an external key into the Property table, it isn't evaluated because properties can be added at run-time.

Cabinet

The Cabinet data type is usually used in the Cabinet column of the Media table. If the cabinet name is preceded by the pound sign (#), the characters following it are interpreted as a Filename. The (#) is used to denote a cabinet located in a stream inside the database.

Shortcut

The Shortcut data type is usually used in the Target column of the Shortcut table. If it contains square brackets ([ ]), the shortcut target is evaluated as a KeyFormatted string. Otherwise, the shortcut is evaluated as an Identifier and must be a valid foreign key into the Feature table.