Fix speling error.
[pspp-builds.git] / doc / data-file-format.texi
index 4f3518c028d6fdd788a97271d3072b6c86f3dfcd..9cee3a4c822ba2e9044a9028eb6daa5d39eec914 100644 (file)
@@ -1,4 +1,4 @@
-@node Data File Format, q2c Input Format, Portable File Format, Top
+@node Data File Format
 @appendix Data File Format
 
 PSPP necessarily uses the same format for system files as do the
@@ -52,7 +52,7 @@ described below:
 * Data Record::                 
 @end menu
 
-@node File Header Record, Variable Record, Data File Format, Data File Format
+@node File Header Record
 @section File Header Record
 
 The file header is always the first record in the file.
@@ -135,7 +135,7 @@ format and using 24-hour time.  If the time is not available then this
 field is arbitrarily set to @samp{00:00:00}.
 
 @item char file_label[64];
-Set the the file label declared by the user, if any @xref{FILE LABEL}.
+Set the file label declared by the user, if any (@pxref{FILE LABEL}).
 Padded on the right with spaces.
 
 @item char padding[3];
@@ -143,7 +143,7 @@ Ignored padding bytes to make the structure a multiple of 32 bits in
 length.  Set to zeros.
 @end table
 
-@node Variable Record, Value Label Record, File Header Record, Data File Format
+@node Variable Record
 @section Variable Record
 
 Immediately following the header must come the variable records.  There
@@ -201,7 +201,7 @@ Write format for this variable.  See below.
 
 @item char name[8];
 Variable name.  The variable name must begin with a capital letter or
-the at-sign (@samp{@@}).  Subsequent characters may also be octothorpes
+the at-sign (@samp{@@}).  Subsequent characters may also be digits, octothorpes
 (@samp{#}), dollar signs (@samp{$}), underscores (@samp{_}), or full
 stops (@samp{.}).  The variable name is padded on the right with spaces.
 
@@ -318,7 +318,7 @@ Not used.
 @code{SDATE}
 @end table
 
-@node Value Label Record, Value Label Variable Record, Variable Record, Data File Format
+@node Value Label Record
 @section Value Label Record
 
 Value label records must follow the variable records and must precede
@@ -344,7 +344,7 @@ first @code{char} is a count of the number of characters in the value
 label.  The remainder of the field is the label itself.  The field is
 padded on the right to a multiple of 64 bits in length.
 
-@node Value Label Variable Record, Document Record, Value Label Record, Data File Format
+@node Value Label Variable Record
 @section Value Label Variable Record
 
 Every value label variable record must be immediately preceded by a
@@ -369,10 +369,12 @@ label record are to be applied.
 
 @item int32 vars[/* variable length */];
 A list of variables to which to apply the value labels.  There are
-@code{count} elements.
+@code{count} elements.  Each element identifies a variable record, where
+the first element is numbered 1 and long string variables are considered
+to occupy multiple indexes.
 @end table
 
-@node Document Record, Machine int32 Info Record, Value Label Variable Record, Data File Format
+@node Document Record
 @section Document Record
 
 There must be no more than one document record per system file.
@@ -400,7 +402,7 @@ Document lines.  The number of elements is defined by @code{n_lines}.
 Lines shorter than 80 characters are padded on the right with spaces.
 @end table
 
-@node Machine int32 Info Record, Machine flt64 Info Record, Document Record, Data File Format
+@node Machine int32 Info Record
 @section Machine @code{int32} Info Record
 
 There must be no more than one machine @code{int32} info record per
@@ -470,9 +472,10 @@ Machine endianness.  1 indicates big-endian, 2 indicates little-endian.
 @item int32 character_code;
 Character code.  1 indicates EBCDIC, 2 indicates 7-bit ASCII, 3
 indicates 8-bit ASCII, 4 indicates DEC Kanji.
+Windows code page numbers are also valid.
 @end table
 
-@node Machine flt64 Info Record, Auxiliary Variable Parameter Record, Machine int32 Info Record, Data File Format
+@node Machine flt64 Info Record
 @section Machine @code{flt64} Info Record
 
 There must be no more than one machine @code{flt64} info record per
@@ -503,7 +506,7 @@ Record type.  Always set to 7.
 Record subtype.  Always set to 4.
 
 @item int32 size;
-Size of each piece of data in the data part, in bytes.  Always set to 4.
+Size of each piece of data in the data part, in bytes.  Always set to 8.
 
 @item int32 count;
 Number of pieces of data in the data part.  Always set to 3.
@@ -518,7 +521,7 @@ The value used for HIGHEST in missing values.
 The value used for LOWEST in missing values.
 @end table
 
-@node Auxiliary Variable Parameter Record, Long Variable Names Record, Machine flt64 Info Record, Data File Format
+@node Auxiliary Variable Parameter Record
 @section Auxiliary Variable Parameter Record
 
 There must be no more than one auxiliary variable parameter record per
@@ -554,7 +557,9 @@ The total number of records in @code{aux_params}, multiplied by 3.
 
 @item struct aux_params aux_params[];
 An array of @code{struct aux_params}.   The order of the elements corresponds 
-to the order of the variables in the Variable Records.  The @code{struct aux_params} type is defined as follows:
+to the order of the variables in the Variable Records.  No element
+corresponds to variable records that continue long string variables.
+The @code{struct aux_params} type is defined as follows:
 
 @example
 struct aux_params
@@ -577,6 +582,9 @@ Ordinal Scale
 Continuous Scale
 @end table
 
+Occasionally a value of 0 is seen here.  PSPP interprets this to mean
+a nominal scale.
+
 @item int32 width
 The width of the display column for the variable in characters.
 
@@ -600,7 +608,7 @@ Centre aligned
 
 
 
-@node Long Variable Names Record, Very Long String Length Record, Auxiliary Variable Parameter Record,  Data File Format
+@node Long Variable Names Record
 @section Long Variable Names Record
 
 There must be no more than one long variable names record per
@@ -638,7 +646,8 @@ The total number of bytes in @code{var_name_pairs}.
 A list of @var{key}--@var{value} tuples, where @var{key} is the name
 of a variable, and @var{value} is its long variable name. 
 The @var{key} field is at most 8 bytes long and must match the
-name of a variable which appears in the variable record @xref{Variable Record}.
+name of a variable which appears in the variable record (@pxref{Variable
+Record}).
 The @var{value} field is at most 64 bytes long.
 The @var{key} and @var{value} fields are separated by a @samp{=} byte.
 Each tuple is separated by a byte whose value is 09.  There is no
@@ -646,7 +655,7 @@ trailing separator following the last tuple.
 The total length is @code{count} bytes.
 @end table
 
-@node Very Long String Length Record, Miscellaneous Informational Records, Long Variable Names Record, Data File Format
+@node Very Long String Length Record
 @comment  node-name,  next,  previous,  up
 @section Very Long String Length Record
 
@@ -686,25 +695,27 @@ The total number of bytes in @code{string_lengths}.
 A list of @var{key}--@var{value} tuples, where @var{key} is the name
 of a variable, and @var{value} is its length.
 The @var{key} field is at most 8 bytes long and must match the
-name of a variable which appears in the variable record @xref{Variable Record}.
-The @var{value} field is exactly 5 bytes long. It is a zero padded ascii 
-encoded, string which is the length of the variable.
+name of a variable which appears in the variable record (@pxref{Variable
+Record}).
+The @var{value} field is exactly 5 bytes long. It is a zero-padded,
+ASCII-encoded string that is the length of the variable.
 The @var{key} and @var{value} fields are separated by a @samp{=} byte.
-Tuples are delimeted  a two byte sequence  @{00, 09@}.  
-After the last tuple, there may be a single byte 00, or by @{00, 09@}.  
+Tuples are delimited by a two-byte sequence @{00, 09@}.  
+After the last tuple, there may be a single byte 00, or @{00, 09@}.  
 The total length is @code{count} bytes.
 @end table
 
 
 
-@node Miscellaneous Informational Records, Dictionary Termination Record, Very Long String Length Record, Data File Format
+@node Miscellaneous Informational Records
 @section Miscellaneous Informational Records
 
 Miscellaneous informational records must follow the variable records and
 precede the dictionary termination record.
 
-Miscellaneous informational records are ignored by PSPP when reading
-system files.  They are not written by PSPP when writing system files.
+Some specific types of miscellaneous informational records are
+documented here, but others are known to exist.  PSPP ignores unknown
+miscellaneous informational records when reading system files.
 
 @example
 struct sysfile_misc_info
@@ -741,7 +752,7 @@ Arbitrary data.  There must be @code{size} times @code{count} bytes of
 data.
 @end table
 
-@node Dictionary Termination Record, Data Record, Miscellaneous Informational Records, Data File Format
+@node Dictionary Termination Record
 @section Dictionary Termination Record
 
 The dictionary termination record must follow all other records, except
@@ -764,7 +775,7 @@ Record type.  Always set to 999.
 Ignored padding.  Should be set to 0.
 @end table
 
-@node Data Record,  , Dictionary Termination Record, Data File Format
+@node Data Record
 @section Data Record
 
 Data records must follow all other records in the data file.  There must