5.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).
 - Data.
 
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 an integer field having value n,
followed by exactly n characters, which are the string content.