Start describing legacy detail members.
[pspp] / spv-file-format.texi
index a0b5e1449ebe0f2778957de5964ec8af200aa916..223b2ef90fef85544c5fca6093913d78a4fac271 100644 (file)
@@ -174,7 +174,7 @@ describes what it labels, often by naming the statistical procedure
 that was executed, e.g.@: ``Frequencies'' or ``T-Test''.  Labels are
 often very generic, especially within a @code{container}, e.g.@:
 ``Title'' or ``Warnings'' or ``Notes''.  Label text is localized
 that was executed, e.g.@: ``Frequencies'' or ``T-Test''.  Labels are
 often very generic, especially within a @code{container}, e.g.@:
 ``Title'' or ``Warnings'' or ``Notes''.  Label text is localized
-according to the output language, e.g. in Italian a frequency table
+according to the output language, e.g.@: in Italian a frequency table
 procedure is labeled ``Frequenze''.
 
 The corpus contains one example of an empty label, one that contains
 procedure is labeled ``Frequenze''.
 
 The corpus contains one example of an empty label, one that contains
@@ -376,10 +376,10 @@ table-id := int
 
 @code{header} includes @code{version}, a version number that affects
 the interpretation of some of the other data in the member.  We will
 
 @code{header} includes @code{version}, a version number that affects
 the interpretation of some of the other data in the member.  We will
-refer to ``version 1'' and ``version 3'' members later on.  It also
-@code{table-id} is a binary version of @code{tableId} attribute in the
-structure member that refers to the detail member.  For example, if
-@code{tableId} is @code{-4154297861994971133}, then @code{table-id}
+refer to ``version 1'' and ``version 3'' members later on.
+@code{table-id} is a binary version of the @code{tableId} attribute in
+the structure member that refers to the detail member.  For example,
+if @code{tableId} is @code{-4154297861994971133}, then @code{table-id}
 would be 0xdca00003.  The meaning of the other variable parts of the
 header is not known.
 
 would be 0xdca00003.  The meaning of the other variable parts of the
 header is not known.
 
@@ -766,6 +766,8 @@ Given appropriate values for the first argument, expands to @code{X =
 Given appropriate values, expands to @code{1, 2, 3}.
 @end table
 @end table
 Given appropriate values, expands to @code{1, 2, 3}.
 @end table
 @end table
+
+The format string is localized to the user's locale.
 @end table
 
 @example
 @end table
 
 @example
@@ -787,3 +789,73 @@ style := 01? 00? 00? 00? 01 string[fgcolor] string[bgcolor] string[font] byte
 format := 00 00 count(format-string (58 | 31 style) 58)
 format-string := count((i0 (58 | 31 string))?)
 @end example
 format := 00 00 count(format-string (58 | 31 style) 58)
 format-string := count((i0 (58 | 31 string))?)
 @end example
+
+A @code{value-mod} can specify special modifications to a @code{value}:
+
+@itemize @bullet
+@item
+The @code{footnote-number}, if present, specifies a footnote that the
+@code{value} references.  The footnote's marker is shown appended to
+the main text of the @code{value}, as a superscript.
+
+@item
+The @code{subscript}, if present, specifies a string to append to the
+main text of the @code{value}, as a subscript.  The subscript text is
+normally a brief indicator, e.g.@: @samp{a} or @samp{a,b}, with its
+meaning indicated by the table caption.  In this usage, subscripts are
+similar to footnotes; one apparent difference is that a @code{value}
+can only reference one footnote but a subscript can list more than one
+letter.
+
+@item
+The @code{format}, if present, is a format string for substitutions
+using the syntax explained previously.  It appears to be an
+English-language version of the localized format string in the
+@code{value} in which the @code{format} is nested.
+
+@item
+The @code{style}, if present, changes the style for this individual
+@code{value}.
+@end itemize
+
+@node SPV Legacy Detail Member Binary Format
+@subsection SPV Legacy Detail Member Binary Format
+
+A legacy detail member's binary file has a much simpler format than
+the light member binary format.
+
+@example
+legacy-member := 00 byte[version] int16[n-sources] int32[file-size]
+                 metadata*[n-sources] data*[n-sources]
+@end example
+
+@code{version} is a version number that affects the interpretation of
+some of the other data in the member.  Versions 0xaf and 0xb0 are
+known.  We will refer to ``version 0xaf'' and ``version 0xb0'' members
+later on.
+
+A legacy member consists of @code{n-sources} data sources, each of
+which has @code{metadata} and @code{data}.
+
+@code{file-size} is the size of the file, in bytes.
+
+@example
+metadata := int32[per-series] int32[n-series] int32[offset] source-name
+source-name := byte*[32]        /* @r{version 0xaf} */
+source-name := byte*[64] int32  /* @r{version 0xb0} */
+@end example
+
+A data source consists of @code{n-series} series of data, with
+@code{per-series} data items per series.  Depending on the version,
+@code{source-name} is a 32- or 64-byte string padded on the right with
+zero bytes.  The names that appear in the corpus are very generic,
+usually @code{tableData} or @code{source0}.  The @code{offset} is the
+offset, in bytes, from the beginning of the file to the start of this
+data source's @code{data}.
+
+The meaning of the number in version 0xb0 @code{source-name} is
+unknown.
+
+@example
+
+@end example