A.2 Portable File Structure
Every portable file consists of the following records, in sequence:
- File header.
- Version and date info.
- Product identification.
- Author identification (optional).
- Subproduct identification (optional).
- Variable count.
- Case weight variable (optional).
- Variables. Each variable record may optionally be followed by a
missing value record and a variable label record.
- Value labels (optional).
- Documents (optional).
Most records are identified by a single-character tag code. The file
header and version info record do not have a tag.
Other than these single-character codes, there are three types of fields
in a portable file: floating-point, integer, and string. Floating-point
fields have the following format:
- Zero or more leading spaces.
- Optional asterisk (‘*’), which indicates a missing value. The
asterisk must be followed by a single character, generally a period
(‘.’), but it appears that other characters may also be possible.
This completes the specification of a missing value.
- Optional minus sign (‘-’) to indicate a negative number.
- A whole number, consisting of one or more base-30 digits: ‘0’
through ‘9’ plus capital letters ‘A’ through ‘T’.
- Optional fraction, consisting of a radix point (‘.’) followed by
one or more base-30 digits.
- Optional exponent, consisting of a plus or minus sign (‘+’ or
‘-’) followed by one or more base-30 digits.
- A forward slash (‘/’).
Integer fields take a form identical to floating-point fields, but they
may not contain a fraction.
String fields take the form of a integer field having value n,
followed by exactly n characters, which are the string content.