Fix .gitignore.
[pspp] / spv-file-format.texi
index 38effad71ff460b2978ea65eea991eea7af992cd..1aef76c64750d0bef77720dadf166235531993dc 100644 (file)
@@ -55,10 +55,12 @@ Same format used for tables, with a different name.
 The structure of a chart plus its data.  Charts do not have a
 ``light'' format.
 
-@item @var{prefix}_model.xml
-@itemx @var{prefix}_pmml.xml
-@itemx @var{prefix}_stats.xml
+@item @var{prefix}_model.scf
+@itemx @var{prefix}_pmml.scf
 Not yet investigated.  The corpus contains only one example of each.
+
+@itemx @var{prefix}_stats.xml
+Not yet investigated.  The corpus contains few examples.
 @end table
 
 The @file{@var{prefix}} in the names of the detail members is
@@ -403,6 +405,8 @@ styles := 00 font*8
           int[n-ccs] string*[n-ccs]     /* @r{custom currency} */
           styles2
 
+x2 := 00 00 00 01 00 00 00 00 00 00 00 00 00 02 00 00 00 00  /* @r{18 bytes} */
+
 styles2 := i0                           /* @r{version 1} */
 styles2 := count(count(x5) count(x6))   /* @r{version 3} */
 x5 := byte*33 int[n] int*n
@@ -415,7 +419,7 @@ x6 := 01 00 (03 | 04) 00 00 00
       byte*8 01
       (string[dataset] string[datafile] i0 int i0)?
       int[n-ccs] string*[n-ccs]
-      2e (00 | 01)
+      2e (00 | 01) (i2000000 i0)?
 @end example
 
 In every example in the corpus, @code{x1} is 240.  The meaning of the
@@ -427,10 +431,10 @@ follow it are @code{00 00 00 01 00 00 00 00 00 00 00 00 00 02 00 00 00
 
 In every example in the corpus for version 1, @code{x3} is 16 and the
 bytes that follow it are @code{00 00 00 01 00 00 00 01 00 00 00 00 01
-01 01 01}.  In version 3, observed @code{x3} varies from 117 to 150 and
-the bytes that follow it vary somewhat and often include a readable
-text string, e.g. ``Default'' or ``Academic'', which appears to be the
-name of a ``TableLook''.
+01 01 01}.  In version 3, observed @code{x3} varies from 117 to 150,
+and its bytes include a 1-byte count at offset 0x34.  When the count
+is nonzero, a text string of that length at offset 0x35 is the name of
+a ``TableLook'', e.g. ``Default'' or ``Academic''.
 
 Observed values of @code{x4} vary from 0 to 17.  Out of 7060 examples
 in the corpus, it is nonzero only 36 times.
@@ -447,9 +451,9 @@ are @samp{.} and @samp{,}.
 @samp{,}, @samp{.}, @samp{'}, @samp{ }, and zero (presumably
 indicating that digits should not be grouped).
 
-@code{x5} is observed as either 0 or 5.  When it is 5, the following
-strings are CCA through CCE format strings.  Most commonly these are
-all @code{-,,,} but other strings occur.
+@code{n-ccs} is observed as either 0 or 5.  When it is 5, the
+following strings are CCA through CCE format strings.  Most commonly
+these are all @code{-,,,} but other strings occur.
 
 @example
 font := byte[index] 31 string[typeface]
@@ -630,19 +634,17 @@ substitution := i0 value
 opt-value := 31 i0 (i0 | i1 string) opt-value-i0-v1        /* @r{version 1} */
            | 31 i0 (i0 | i1 string) opt-value-i0-v3        /* @r{version 3} */
            | 31 i1 int32[footnote-number] nested-string
-           | 31 i2 (00 | 02) 00 (i1 | i2 | i3) nested-string
+           | 31 i2 (00 | 01 | 02) 00 (i1 | i2 | i3) nested-string
            | 31 i3 00 00 01 00 i2 nested-string
            | 58
 opt-value-i0-v1 := 00 (i1 | i2) 00 00 int32 00 00
 opt-value-i0-v3 := count(counted-string
-                         (58
-                          | 31 01? 00? 00? 00? 01
-                            string[fgcolor] string[bgcolor] string[typeface]
-                            byte)
+                         (58 | 31 style)
                          (58
                           | 31 i0 i0 i0 i0 01 00 (01 | 02 | 08)
                             00 08 00 0a 00))
 
-nested-string := 00 00 count(counted-string 58 58)
+style := 01? 00? 00? 00? 01 string[fgcolor] string[bgcolor] string[font] byte
+nested-string := 00 00 count(counted-string (58 | 31 style) 58)
 counted-string := count((i0 (58 | 31 string))?)
 @end example