@appendix Portable File Format
These days, most computers use the same internal data formats for
@appendix Portable File Format
These days, most computers use the same internal data formats for
@section Portable File Structure
Every portable file consists of the following records, in sequence:
@section Portable File Structure
Every portable file consists of the following records, in sequence:
String fields take the form of a integer field having value @var{n},
followed by exactly @var{n} characters, which are the string content.
String fields take the form of a integer field having value @var{n},
followed by exactly @var{n} characters, which are the string content.
@section Portable File Header
Every portable file begins with a 464-byte header, consisting of a
@section Portable File Header
Every portable file begins with a 464-byte header, consisting of a
in the portable file's character set, which can be used to verify that
the file is indeed a portable file.
in the portable file's character set, which can be used to verify that
the file is indeed a portable file.
@section Version and Date Info Record
This record does not have a tag code. It has the following structure:
@section Version and Date Info Record
This record does not have a tag code. It has the following structure:
@section Identification Records
The product identification record has tag code @samp{1}. It consists of
@section Identification Records
The product identification record has tag code @samp{1}. It consists of
optional. If present, it consists of a single string field giving
additional information on the product that wrote the portable file.
optional. If present, it consists of a single string field giving
additional information on the product that wrote the portable file.
dictionary. The purpose of the second is unknown; it contains the value
161 in all portable files examined so far.
dictionary. The purpose of the second is unknown; it contains the value
161 in all portable files examined so far.
@section Case Weight Variable Record
The case weight variable record is optional. If it is present, it
@section Case Weight Variable Record
The case weight variable record is optional. If it is present, it
cases are unweighted. It has tag code @samp{6}. It consists of a
single string field that names the weighting variable.
cases are unweighted. It has tag code @samp{6}. It consists of a
single string field that names the weighting variable.
variable label record, which has tag code @samp{C}. A variable label
record has one field, the variable label itself (string).
variable label record, which has tag code @samp{C}. A variable label
record has one field, the variable label itself (string).