progress on parsing "boot/Contents"
[pspp] / spo-notes
1 Exactly one NavRoot is always present
2
3 Exactly one NavHead is present except for .spo files that are (mostly)
4 empty, which have none
5
6 The Nav* strings only appear once per file, as:
7 ffff 0000 xxyy string
8 Sometimes there is zero spacing between these.
9
10 File begins with:
11         (00 | 0[1234] i0)
12         "SPSS Output Document"
13         (i0? | i1 63) ffff 0000
14         "NavHead"     # or any other "Nav*"
15         02 int32[x] int32[y] i24 int32[z] int32[w] int32[v]
16         (i0 | i1 | i2 | i3 | i4)
17         (i0| i1 | i2 | i3)
18         ffff 0000
19         "DspSimpleText"
20         00 (i0 (i0 | i1) 00)? ffff 0000
21         ("IndexedCollection" | "DspString")
22 and then with the IndexedCollection case:
23         00*14 ffff 0000
24 and the DspString case:
25         01 02 28 (00|05) 00 (00|01)
26         often followed by a string
27
28 The first byte might be a version number.  "Save As" or "Save" has the effect:
29     00 -> 00 (tried 1 out of 3)
30     01 -> 04 (tried 3 out of 3)
31     02 -> 04 (tried 1 out of many: deska, regress)
32     03 -> 04 (tried 1 out of many: 3d67bb)
33     04 -> 04 (tried 1 out of many: detailer2)
34
35 Charset numbers come from the list for \fcharset in the RTF
36 specification:
37 http://latex2rtf.sourceforge.net/rtfspec_6.html#rtfspec_10 The charset
38 number appears 4 bytes before the font name string, e.g. here it is
39 0xb2 or 178 (Arabic):
40
41      01 01 ed ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 bc 02 00 00 00 00 00 b2 00 00 00 22 41 72 61 62 69 63 20 54 72 61 6e 73 70 61 72 65 6e 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 ............................."Arabic Transparent..............P...............
42
43 and here it is 0xee or 238 (Polish):
44
45      01 01 ed ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 bc 02 00 00 00 00 00 ee 00 00 00 22 41 72 69 61 6c 00 61 00 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 ............................."Arial.a.l.......................P...............
46
47 It is usually 0 for "ANSI".
48
49 DspString is the label of the object that is currently selected.
50
51 The currently selected object is always the first in the file
52 regardless of the output hierarchy and order
53
54 The entire rec:NavPivot contents, minus the final 00 byte, appear
55 later in the file to identify the selected object.  However, the
56 initial 02 02*8 can disappear into a "float 0.0" if there's a leading
57 80.
58
59 Each object has a small negative number, e.g. 0xfffffe91 == -390.
60
61 Objects:
62   NavRoot: root output object
63   NavLog: log object
64   NavHead: heading with subobjects
65     NavTreeViewItem: assocated with NavHead somehow
66   NavTitle: title within a heading
67   NavNote: notes table
68   NavPivot: table
69
70 The start of the file might be a version number
71
72 x and y are either 0 or 2-3 byte values, e.g. 0x670b or 0x3b989.
73 z is a 2-3 byte negative value, e.g. 0xffff8997
74 w is a 2-byte value or 0
75 v is a 2-byte negative value or 0
76
77
78
79 rtf:
80
81         "Factor Analysis"
82         01 01
83         table 1
84         00 00 00 f9 00 00 00
85         "\rtf..."
86         00 18 00 00 00 00 00 00 00 de ff ff ff 18 00 00 00 00 00 00 00 28 00 00 00 28 00 00 00 18 04 00 00 ae 73 01 00 00 00 00 00 00 34 21 00 00 f8 2a 00 00 01 00 07 00 01 00 f6 04 00 00 f6 04 00 00 f6 04 00 00 f6 04 00 00 00 00 f0 00 00 00 00 00 01 00
87         "(Continued)"
88
89
90 rtf2:
91
92         "Factor Analysis"
93         01 01
94         table 1
95         00 00 00 da 00 00 00
96         "\rtf..."
97         00 ffff 0000
98
99 rtf3:
100
101         ...
102         00 1f 80 02 00 00 00 00 00 00 00 00 18 00 00 00 00 00 00 00 06 02 00 00 28 fd ff ff 02 00 00 00 01 00 00
103
104    1456  01 00 00 00 00 00 00 00 03 80 00 00 00 00 00 00-00 00 00 00 05 80 01 02 28 05 00 01    03 4c 6f 67-               07 80 00 02 00 00........................(....Log......
105       3  01 00 00 00 01 00 00 00 03 80 00 00 00 00 00 00-00 00 00 00 05 80 01 02 28 05 00 01    03 4c 6f 67-               07 80 00 02 00 00........................(....Log......
106      13     00 00 00 00 00 00 00 03 80 00 00 00 00 00 00 00-00 00 00 05 80 01 02 28 05 00 00 00 08 53 50 53-53 20 4c 6f 67 07.......................(.....SPSS Log.
107      13     00 00 00 00 00 00 00 03 80 00 00 00 00 00 00 00-00 00 00 07 80 01 02 28 05 00 00 00 08 53 50 53-53 20 4c 6f 67 09.......................(.....SPSS Log.
108      13  01 00 00 00 00 00 00 00 03 80 00 00 00 00 00 00-00 00 00 00 05 80 01 02 28 05 00 01    08 53 50 53-53 20 4c 6f 67 07........................(....SPSS Log.
109 notea.spo/Contents
110
111
112
113 PVPrintManager:
114
115         "PVPrintManager"
116         02 byte[x] 00 i2 (i0|i3) i1 00*7
117         sometimes 0000 ffff
118 where x is between 0a and 2e
119
120
121
122 regress, notea
123 --------------
124
125 ffff 0000 "NavPivot"
126         02 fa 3c 00 00 3b 5a 01 00
127         18 00 00 00 b4 35 ff ff 7f
128         02 00 00 13 28 ff ff
129         02 00 00 00
130         01 00 00 00
131
132         notea:
133         02 00 00 00 00 00 00 00 00
134         18 00 00 00 93 f0 ff ff dc
135         03 00 00 cd ef ff ff
136         02 00 00 00
137         01 00 00
138         missing terminator!
139
140 ffff 0000 "DspSimpleText"
141         00*10
142
143 ffff 0000 "DspString"
144         01 02 28 05 00 01 "Text Output"
145
146 ffff 0000 "NavOleItem"
147         00 01 00 00
148         07 00 00 00
149         01 00 00 00 00 00
150         01 00 00 00 00 00 00 00 00 00 00
151         01 00 00 00 00 00
152         "Regression"
153         01
154
155         notea:
156         00 01 00 00
157         01 00 00 00
158         01 00 00 00 00 00
159         01 00 00 00 00 00 00 00 00 00 00
160         01 00 00 00 00 00
161         00 01 01 f3 ff
162
163 ffff 0000 "PTPivotController"
164         02 67 02 00 00 a1 0d 00 00
165         64 00 00 00
166         64 00 00 00
167         64 00 00 00
168         64 00 00 00
169
170         notea:
171         02 29 20 69 31 38 28 66 38
172         64 00 00 00
173         64 00 00 00
174         64 00 00 00
175         64 00 00 00
176
177 ffff 0000 "PVPivotView"
178         04 00 00 00 00
179
180 ffff 0000 "PMPivotModel"
181         03
182
183 ffff 0000 "NDimensional__DspCell"
184         00 03 00 00 00
185
186 ffff 0000 "IndexedCollection"
187         00
188         05 00 00 00
189         01 00 13 80
190         00
191         0b 00 00 00
192         01 00 13 80
193         00
194         02 00 00 00
195         01 00
196
197 ffff 0000 "DspCell"
198         00 03 80 00*10
199
200 ffff 0000 "DspNumber"
201
202 NavTitle  02 00 00 00 00 00 00 00 00 18 00 00 00 03 .. .. .. 00 04 00 00 .. .. ff ff 02 00 00 00 01 00 00
203
204 80 02 <double>
205 80 01 02 28 05 00 01 <len1> <string>
206 80 01 02 28 05 00 01 ff <len2> <string>
207 80 01 03 28 05 80 02 <double> 
208
209 80 00 03
210 80 00 00 00 00 00 00 00 00 00 00 ..
211 80 01 .. .. .. ..
212
213 DspNumber:
214         01 <decimals> <width> <type>
215
216 NDimensional__DspCell:
217         00 int32[ndims]
218
219 IndexedCollection: 7+(9*ndims) bytes
220         00 0e 00 00 00 01 00
221
222         00 22 00 00 00 01 00
223   11 80 00 08 00 00 00 01 00
224
225         00 5c 00 00 00 01 00
226   13 80 00 5c 00 00 00 01 00
227   13 80 00 05 00 00 00 01 00
228
229         00 01 00 00 00 01 00
230   11 80 00 02 00 00 00 01 00
231   11 80 00 03 00 00 00 01 00
232   11 80 00 03 00 00 00 01 00
233
234            ^^ number of categories
235
236 ----------------------------------------------------------------------
237 ab1.dump
238
239 3 dimensions, 92x92x5:
240     NDimensional__DspCell  00 03 00 00 00
241
242     IndexedCollection  00 5c 00 00 00 01 00 13 80 00 5c 00 00 00 01 00 13 80 00 05 00 00 00 01 00
243
244 The cells are in order last dimension changes most quickly.
245
246 ----------------------------------------------------------------------
247
248 ZMAW_zaj3.dump
249
250 4-dimensions, 1x2x3x3, 18 cells
251
252 16 80 -> next 4th dim
253 11 80 00 03 00 00 00 01 00 -> increment another dim
254
255 ----------------------------------------------------------------------
256
257 rec:PMModelItemInfo 00
258  .. .. .. .. .. .. .. .. .. .. .. .. cell F40.2 "Contents"                           07 .. .. .. 55 80 .. 57 80 .. 
259  00 .. .. .. .. .. .. .. 07 .. 74 0e cell F40.2   "Output Created"                   .. .. .. .. 55 80 .. 57 80 ..
260  01 .. .. .. .. .. .. .. 08 .. 74 0e cell F40.2   "Comments"                         .. .. .. .. 55 80 .. 57 80 ..
261  .. .. .. .. .. .. .. .. .. .. .. .. cell F40.2   "Input"                            06 .. .. .. 55 80 .. 57 80 ..
262  02 .. .. .. .. .. .. .. 0a .. 74 0e cell F40.2     "Data"                           .. .. .. .. 55 80 .. 57 80 ..
263  03 .. .. .. .. .. .. .. .. .. .. .. cell F40.2     "Active Dataset"                 .. .. .. .. 55 80 .. 57 80 ..
264  04 .. .. .. .. .. .. .. 0e .. 74 0e cell F40.2     "Filter"                         .. .. .. .. 55 80 .. 57 80 ..
265  05 .. .. .. .. .. .. .. 11 .. 74 0e cell F40.2     "Weight"                         .. .. .. .. 55 80 .. 57 80 ..
266  06 .. .. .. .. .. .. .. 12 .. 74 0e cell F40.2     "Split File"                     .. .. .. .. 55 80 .. 57 80 ..
267  07 .. .. .. .. .. .. .. 13 .. 74 0e cell F40.2     "N of Rows in Working Data File" .. .. .. .. 55 80 .. 57 80 .. 
268  .. .. .. .. .. .. .. .. .. .. .. .. cell F40.2   "Missing Value Handling"           02 .. .. .. 55 80 .. 57 80 ..
269  08 .. .. .. .. .. .. .. .. .. .. .. cell F40.2     "Definition of Missing"          .. .. .. .. 55 80 .. 57 80 ..
270  09 .. .. .. .. .. .. .. .. .. .. .. cell F40.2     "Cases Used"                     .. .. .. .. 55 80 .. 57 80 ..
271  0a .. .. .. .. .. .. .. 17 .. 74 0e cell F40.2   "Weight Handling"                  .. .. .. .. 55 80 .. 57 80 ..
272  0b .. .. .. .. .. .. .. 18 .. 74 0e cell F40.2   "Syntax"                           .. .. .. .. 55 80 .. 57 80 ..
273  .. .. .. .. .. .. .. .. .. .. .. .. cell F40.2   "Resources"                        03 .. .. .. 55 80 .. 57 80 ..
274  0c .. .. .. .. .. .. .. 1b .. 74 0e cell F40.2     "Elapsed Time"                   .. .. .. .. 55 80 .. 57 80 ..
275  0d .. .. .. .. .. .. .. .. .. .. .. cell F40.2     "Maximum Memory Required"        .. .. .. .. 55 80 .. 57 80 ..
276  0e .. .. .. .. .. .. .. .. .. .. .. cell F40.2     "Processor Time"
277
278 ab1:
279
280 rec:PMModelItemInfo ..
281  .. .. .. .. 01 .. .. .. 91 1a 74 0e cell F40.2 "Statistics"                         05 .. .. .. ff 7f 51 19 02 80 .. ff 7f 53 19 02 80 ..
282  00 .. .. .. .. .. .. .. 98 1a 74 0e cell F40.2 "Pearson Correlation"                .. .. .. .. ff 7f 51 19 02 80 .. ff 7f 53 19 02 80 ..
283  01 .. .. .. .. .. .. .. 99 1a 74 0e cell F40.2 "Sig. (2-tailed)"                    .. .. .. .. ff 7f 51 19 02 80 .. ff 7f 53 19 02 80 ..
284  02 .. .. .. .. .. .. .. 96 1a 74 0e cell F40.2 "Sum of Squares and Cross-products"  .. .. .. .. ff 7f 51 19 02 80 .. ff 7f 53 19 02 80 ..
285  03 .. .. .. .. .. .. .. 97 1a 74 0e cell F40.2 "Covariance"                         .. .. .. .. ff 7f 51 19 02 80 .. ff 7f 53 19 02 80 ..
286  04 .. .. .. .. .. .. .. 94 1a 74 0e cell F40.2 "N"                                  .. .. .. .. .. .. .. .. .. ..
287  05 .. .. .. 01 .. ff 7f 57 19 02 .. ff 7f 5b 19 02 .. ff 7f 5f 19 02 .. ff 7f 63 19 02 .. ff 7f 67 19 02 .. .. 05 .. .. .. .. .. .. .. .. .. 01 .. .. .. 02 .. .. .. 03 .. .. .. 04 .. .. .. ff 7f 4f 19 02 80 ..
288  ff 7f 51 19 02 80 .. ff 7f 53 19 02 80 ..
289  .. .. .. .. 01 .. .. .. 90 1a 74 0e
290
291 rec:PMModelItemInfo .. ..
292  .. .. .. 01 .. .. .. ff ff ff ff cell F40.2       "score"      01 .. .. .. 86 80 .. 88 80 .. ..
293  .. .. .. .. .. .. .. f4 0e 74 0e cell F40.2         "Valid"    09 .. .. .. 86 80 .. 88 80 .. ..
294  .. .. .. .. .. .. .. ff ff ff ff cell F40.2 xxx19     "17..."  .. .. .. .. 86 80 .. 88 80 .. 01
295  .. .. .. .. .. .. .. ff ff ff ff cell F40.2 xxx19     "22..."  .. .. .. .. 86 80 .. 88 80 .. 02
296  .. .. .. .. .. .. .. ff ff ff ff cell F40.2 xxx19     "26..."  .. .. .. .. 86 80 .. 88 80 .. 03
297  .. .. .. .. .. .. .. ff ff ff ff cell F40.2 xxx19     "29..."  .. .. .. .. 86 80 .. 88 80 .. 04
298  .. .. .. .. .. .. .. ff ff ff ff cell F40.2 xxx19     "33..."  .. .. .. .. 86 80 .. 88 80 .. 05
299  .. .. .. .. .. .. .. ff ff ff ff cell F40.2 xxx19     "37..."  .. .. .. .. 86 80 .. 88 80 .. 06
300  .. .. .. .. .. .. .. ff ff ff ff cell F40.2 xxx19     "40..."  .. .. .. .. 86 80 .. 88 80 .. 07
301  .. .. .. .. .. .. .. ff ff ff ff cell F40.2 xxx19     "48..."  .. .. .. .. 86 80 .. 88 80 .. 08
302  .. .. .. .. .. .. .. f2 0e 74 0e cell F40.2         "Total"    .. .. .. .. .. .. .. .. .. .. 09
303  .. .. .. 01 .. 90 .. 94 .. 98 .. 9c .. a0 .. a4 .. a8 .. ac .. b0 .. .. 09 .. .. .. .. .. .. .. .. .. 01 .. .. .. 02 .. .. .. 03 .. .. .. 04 .. .. .. 05 .. .. .. 06 .. .. .. 07 .. .. .. 08 .. ..
304  .. 84 80 .. 86 80 .. 88 80 .. .. .. .. .. 01 .. .. .. eb 0e 74 0e cell F40.2       "Statistics"
305  04 .. .. .. 86 80 .. 88 80 .. .. .. .. .. .. .. .. .. dc 0e 74 0e cell F40.2         "Frequency"
306  .. .. .. .. 86 80 .. 88 80 .. 01 .. .. .. .. .. .. .. e6 0e 74 0e cell F40.2         "Percent"
307  .. .. .. .. 86 80 .. 88 80 .. 02 .. .. .. .. .. .. .. f5 0e 74 0e cell F40.2         "Valid Percent"
308  .. .. .. .. 86 80 .. 88 80 .. 03 .. .. .. .. .. .. .. da 0e 74 0e cell F40.2         "Cumulative Percent"
309  .. .. .. .. .. .. .. .. .. .. 04 .. .. .. 01 .. b9 .. bd .. c1 .. c5 .. .. 04 .. .. .. .. .. .. .. .. .. 01 .. .. .. 02 .. .. .. 03 .. .. .. .. .. .. .. .. 01 .. .. 11 .. .. .. .. .. .. .. .. .. 4b .. .. .. .. .. .. .. .. .. .. ..
310
311 Output_201B:
312
313 rec:PMModelItemInfo       00
314 00 00 00 00 01 00 00 00 00 00 00 00 cell F40.2 "Variables" 5a 00 00 00 64 85 00 66 85 00
315 00 00 00 00 00 00 00 00 ff ff ff ff cell F40.2 "i10149"    00 00 00 00 64 85 00 66 85 00
316 01 00 00 00 00 00 00 00 ff ff ff ff cell F40.2 "i10150"    00 00 00 00 64 85 00 66 85 00
317 02 00 00 00 00 00 00 00 ff ff ff ff cell F40.2 "i10154"    00 00 00 00 64 85 00 66 85 00
318 03 00 00 00 00 00 00 00 ff ff ff ff cell F40.2 "i10168"    00 00 00 00 64 85 00 66 85 00
319 04 00 00 00 00 00 00 00 ff ff ff ff cell F40.2 "i10171"    00 00 00 00 64 85 00 66 85 00
320 05 00 00 00 00 00 00 00 ff ff ff ff
321 cell F40.2 "i10183"
322  00 00 00 00 64 85 00 66 85 00 06 00 00 00 00 00 00 00 ff ff ff ff
323 cell F40.2 "i10184"
324  00 00 00 00 64 85 00 66 85 00 07 00 00 00 00 00 00 00 ff ff ff ff
325 cell F40.2 "i10212"
326  00 00 00 00 64 85 00 66 85 00 08 00 00 00 00 00 00 00 ff ff ff ff
327 cell F40.2 "i10220"
328  00 00 00 00 64 85 00 66 85 00 09 00 00 00 00 00 00 00 ff ff ff ff ....d..f..............
329 cell F40.2 "i10222"
330  00 00 00 00 64 85 00 66 85 00 0a 00 00 00 00 00 00 00 ff ff ff ff ....d..f..............
331 cell F40.2 "i10226"
332  00 00 00 00 64 85 00 66 85 00 0b 00 00 00 00 00 00 00 ff ff ff ff
333 cell F40.2 "i10228"
334  00 00 00 00 64 85 00 66 85 00 0c 00 00 00 00 00 00 00 ff ff ff ff
335 cell F40.2 "i10229"
336  00 00 00 00 64 85 00 66 85 00 0d 00 00 00 00 00 00 00 ff ff ff ff ....d..f..............
337 cell F40.2 "i10230"
338  00 00 00 00 64 85 00 66 85 00 0e 00 00 00 00 00 00 00 ff ff ff ff
339 cell F40.2 "i10234"
340  00 00 00 00 64 85 00 66 85 00 0f 00 00 00 00 00 00 00 ff ff ff ff
341 cell F40.2 "i10244"
342  00 00 00 00 64 85 00 66 85 00 10 00 00 00 00 00 00 00 ff ff ff ff
343 cell F40.2 "i10247"
344  00 00 00 00 64 85 00 66 85 00 11 00 00 00 00 00 00 00 ff ff ff ff
345 cell F40.2 "i10250"
346  00 00 00 00 64 85 00 66 85 00 12 00 00 00 00 00 00 00 ff ff ff ff
347 cell F40.2 "i10265"
348  00 00 00 00 64 85 00 66 85 00 13 00 00 00 00 00 00 00 ff ff ff ff
349 cell F40.2 "i10266"
350  00 00 00 00 64 85 00 66 85 00 14 00 00 00 00 00 00 00 ff ff ff ff
351 cell F40.2 "i10269"
352  00 00 00 00 64 85 00 66 85 00 15 00 00 00 00 00 00 00 ff ff ff ff
353 cell F40.2 "i10270"
354  00 00 00 00 64 85 00 66 85 00 16 00 00 00 00 00 00 00 ff ff ff ff
355 cell F40.2 "i10272"
356  00 00 00 00 64 85 00 66 85 00 17 00 00 00 00 00 00 00 ff ff ff ff
357 cell F40.2 "i10286"
358  00 00 00 00 64 85 00 66 85 00 18 00 00 00 00 00 00 00 ff ff ff ff
359
360
361
362 ff is a way to say that there's a 4-byte number instead of 1-byte?
363
364
365 01 01 ed ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00 bc 02 00 00 00 00 00 00 00 00 00 22 41 72 69 61 6c 00 61 00 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
366 07 80 00 02 00 00 00 0a 00 01 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00
367 01 01 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90 01 00 00 00 00 00 00 00 00 00 22 43 6f 75 72 69 65 72 20 4e 65 77 00 72 00 20 00 4e 00 65 00 77 00 00 00 00 00 00 00 00 00 00 00 50 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00
368 07 80 00 00 00 00 00 0f 00 01 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00
369 00
370
371
372  .. .. .. .. .. .. a9 80 .. 01 .. .. .. .. .. ff ff ff .. .. .. ab 80 .. 01 .. .. .. c8 .. 78 .. 78 .. 14 .. 14 .. .. .. 01 .. f3 ff ff ff .. .. .. .. .. .. .. .. .. .. .. .. 90 01 .. .. .. .. .. .. .. .. .. 22
373  .. .. .. .. .. .. a9 80 .. 01 .. .. .. .. .. ff ff ff .. .. .. ab 80 .. 01 .. .. .. c8 .. 78 .. a0 .. 14 .. 14 .. .. .. 01 .. ef ff ff ff .. .. .. .. .. .. .. .. .. .. .. .. 90 01 .. .. .. .. .. .. .. .. .. 22
374  .. .. .. .. .. .. a9 80 .. 01 .. .. .. .. .. ff ff ff .. .. .. ab 80 .. 01 .. .. .. c8 .. 78 .. a0 .. 14 .. 14 .. .. .. 01 .. f2 ff ff ff .. .. .. .. .. .. .. .. .. .. .. .. bc 02 .. .. 01 .. .. .. .. .. .. 12
375  .. .. .. .. .. .. a9 80 .. 01 .. .. .. .. .. ff ff ff .. .. .. ab 80 .. 01 .. .. .. c8 .. 78 .. a0 .. 14 .. 14 .. .. .. 01 .. f2 ff ff ff .. .. .. .. .. .. .. .. .. .. .. .. 90 01 .. .. .. .. .. .. .. .. .. 22
376  80 .. 80 .. .. .. a9 80 .. 01 .. .. .. .. .. ff ff ff .. .. .. ab 80 .. 01 .. .. .. c8 .. 78 .. a0 .. 14 .. 14 .. .. .. 01 .. f3 ff ff ff .. .. .. .. .. .. .. .. .. .. .. .. 90 01 .. .. .. .. .. .. .. .. .. 22
377
378
379
380 record type 02
381 ==============
382
383 02 int16*4 int32*4
384
385
386
387 rec:NavLog
388
389 02 .. .. .. .. .. .. .. ..
390 18 .. .. .. .. .. .. .. b3 02 .. .. 30 f8 ff ff 01 .. .. .. 01 .. .. cell F40.2 "LogA" 07 80 .. 02 .. .. .. 0f .. 01 .. .. .. .. .. .. .. .. .. 01 .. .. .. .. .. .. 01 01 f5 ff ff ff .. .. .. .. .. .. .. .. .. .. .. .. 90 01 .. .. .. .. .. .. .. .. .. 22 41 72 69 61 6c .. .. .. .. .. .. .. .. .. .. .. .. .. .. rtf .. 0e float 0.......
391 18 .. .. .. 0e f8 ff ff b3 02 .. .. 3e f0 ff ff 01 .. .. .. 01 .. .. cell F40.2 "LogB" 07 80 .. 02 .. .. .. 13 .. 01 .. .. .. .. .. .. .. .. .. 01 .. .. .. .. .. .. 01 01 f5 ff ff ff .. .. .. .. .. .. .. .. .. .. .. .. 90 01 .. .. .. .. .. .. .. .. .. 22 41 72 69 61 6c .. .. .. .. .. .. .. .. .. .. .. .. .. .. rtf .. 0e float 0.......
392 18 .. .. .. 1c f0 ff ff 5f 02 .. .. 4c e8 ff ff 01 .. .. .. 01 .. .. cell F40.2 "LogC" 07 80 .. 02 .. .. .. 17 .. 01 .. .. .. .. .. .. .. .. .. 01 .. .. .. .. .. .. 01 01 f5 ff ff ff .. .. .. .. .. .. .. .. .. .. .. .. 90 01 .. .. .. .. .. .. .. .. .. 22 41 72 69 61 6c .. .. .. .. .. .. .. .. .. .. .. .. .. .. rtf .. 0e float 0.......
393 18 .. .. .. 2a e8 ff ff 5f 02 .. .. 5a e0 ff ff 01 .. .. .. 01 .. .. cell F40.2 "LogD" 07 80 .. 02 .. .. .. 1b .. 01 .. .. .. .. .. .. .. .. .. 01 .. .. .. .. .. .. 01 01 f5 ff ff ff .. .. .. .. .. .. .. .. .. .. .. .. 90 01 .. .. .. .. .. .. .. .. .. 22 41 72 69 61 6c .. .. .. .. .. .. .. .. .. .. .. .. .. .. rtf .. 0e float 0.......
394 18 .. .. .. 38 e0 ff ff 5f 02 .. .. 68 d8 ff ff 01 .. .. .. 01 .. .. cell F40.2 "LogE" 07 80 .. 02 .. .. .. 1f .. 01 .. .. .. .. .. .. .. .. .. 01 .. .. .. .. .. .. 01 01 f5 ff ff ff .. .. .. .. .. .. .. .. .. .. .. .. 90 01 .. .. .. .. .. .. .. .. .. 22 41 72 69 61 6c .. .. .. .. .. .. .. .. .. .. .. .. .. .. rtf .. 02 .. 02 .. .. ..
395
396
397 NavTreeViewItem:
398
399 last bit is the number of children plus one, e.g. here it has 0x12+1
400 children.  It's actually the total number of nodes including the root
401 Output node.
402
403 rec:NavTreeViewItem       .. .. .. .. .. 02 .. 01 .. .. .. .. .. .. .. .. .. 01 .. .. .. .. .. .. .. .. .. 18 .. .. .. .. .. .. .. de ff ff ff 18 .. .. .. .. .. .. .. 28 .. .. .. 28 .. .. .. cb 02 .. .. f0 86 .. .. .. .. .. .. .. f8 2a .. .. 34 21 .. .. 01 .. 0f .. 02 .. f6 04 .. .. f6 04 .. .. f6 04 .. .. f6 04 .. .. .. .. f0 .. .. .. 7c 02 01 .. ...............................................(...(.................*..4!..............................|...
404 "(Continued)"
405  01 01 .. .. ..
406 rtf
407  01 01 .. .. ..
408 rtf
409  .. 13 ..
410
411
412 Node depth:
413
414 The "04 00 00 00 04 00 00" is the number of nodes above the node, in
415 this case 4, three Headings and the Output node.  The first 04 is
416 reliable, the second one is sometimes 01.
417
418     00 01
419     float 0.000000
420      18 00 00 00
421     -46782  5f 02 00 00
422     -48782  04 00 00 00 04 00 00
423     cell F40.2 "LogZ"
424      07 80 00 02 00 00 00 7b 00 01 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 01 01 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 90
425     font
426     rtf
427
428 The node numbering is insane: in decimal each node's number decreases
429 (these numbers are negative) by 2000 then by 34 alternately, except
430 that if a node is collapsed it *increases* by 2000 then decreases by
431 2000.  Below (test15.spo), LogI and LogN are collapsed:
432
433     5:rec:NavLog                02 00 00 00 00 00 00 00 00 18 00 00 00
434     6:-83394 (-83394)  5f 02 00 00
435     7:-85394 (-2000)  04 00 00 00 04 00 00 00
436     12:"LogAC"
437     18:-34 (+85360)  18 00 00 00 00 00 00 00 28 00 00 00 28 00 00 00 cb 02 00 00 92 4d 01 00 00 00 00 00 00 f8 2a 00 00 34 21 00 00 01 00 0f 00 02 00 f6 04 00 00 f6 04 00 00 f6 04 00 00 f6 04 00 00 00 00 f0 00 00 00 7c 02 01 00 ........(...(........M........*..4!..............................|...
438     31:-2000 (-1966)  01 00 00 00 01 00 00
439     32:cell F40.2 "LogA"
440     39:-2034 (-34)  b3 02 00 00
441     40:-4034 (-2000)  01 00 00 00 01 00 00
442     41:cell F40.2 "LogB"
443     48:-4068 (-34)  5f 02 00 00
444     49:-6068 (-2000)  01 00 00 00 01 00 00
445     50:cell F40.2 "LogC"
446     57:-6102 (-34)  5f 02 00 00
447     58:-8102 (-2000)  01 00 00 00 01 00 00
448     59:cell F40.2 "LogD"
449     66:-8136 (-34)  5f 02 00 00
450     67:-10136 (-2000)  01 00 00 00 01 00 00
451     68:cell F40.2 "LogE"
452     75:-10170 (-34)  5f 02 00 00
453     76:-12170 (-2000)  01 00 00 00 01 00 00
454     77:cell F40.2 "LogF"
455     88:-12204 (-34)  5f 02 00 00
456     89:-14204 (-2000)  02 00 00 00 02 00 00
457     90:cell F40.2 "LogG"
458     97:-14238 (-34)  5f 02 00 00
459     98:-16238 (-2000)  02 00 00 00 02 00 00
460     99:cell F40.2 "LogH"
461     106:-16272 (-34)  5f 02 00 00
462     107:-18272 (-2000)  02 00 00 00 02 00 00
463     108:cell F40.2 "LogI"
464     115:-16272 (+2000)  5f 02 00 00
465     116:-18272 (-2000)  02 00 00 00 02 00 00
466     117:cell F40.2 "LogJ"
467     124:-18306 (-34)  5f 02 00 00
468     125:-20306 (-2000)  02 00 00 00 02 00 00
469     126:cell F40.2 "LogK"
470     133:-20340 (-34)  5f 02 00 00
471     134:-22340 (-2000)  02 00 00 00 02 00 00
472     135:cell F40.2 "LogL"
473     142:-22374 (-34)  5f 02 00 00
474     143:-24374 (-2000)  02 00 00 00 02 00 00
475     144:cell F40.2 "LogM"
476     151:-24408 (-34)  5f 02 00 00
477     152:-26408 (-2000)  02 00 00 00 02 00 00
478     153:cell F40.2 "LogN"
479     160:-24408 (+2000)  5f 02 00 00
480     161:-26408 (-2000)  02 00 00 00 02 00 00
481     162:cell F40.2 "LogO"
482     169:-26442 (-34)  5f 02 00 00
483     170:-28442 (-2000)  02 00 00 00 02 00 00
484     171:cell F40.2 "LogP"
485     178:-28476 (-34)  5f 02 00 00
486     179:-30476 (-2000)  02 00 00 00 02 00 00
487     180:cell F40.2 "LogQ"
488     187:-30510 (-34)  5f 02 00 00
489     188:-32510 (-2000)  02 00 00 00 02 00 00
490     189:cell F40.2 "LogR"
491     196:-32544 (-34)  5f 02 00 00
492     197:-34544 (-2000)  02 00 00 00 02 00 00
493     198:cell F40.2 "LogS"
494     205:-34578 (-34)  5f 02 00 00
495     206:-36578 (-2000)  02 00 00 00 02 00 00
496     207:cell F40.2 "LogT"
497     214:-36612 (-34)  5f 02 00 00
498     215:-38612 (-2000)  02 00 00 00 02 00 00
499     216:cell F40.2 "LogU"
500     223:-38646 (-34)  5f 02 00 00
501     224:-40646 (-2000)  02 00 00 00 01 00 00
502     225:cell F40.2 "LogV"
503     236:-40680 (-34)  5f 02 00 00
504     237:-42680 (-2000)  03 00 00 00 03 00 00
505     238:cell F40.2 "LogW"
506     245:-42714 (-34)  5f 02 00 00
507     246:-44714 (-2000)  03 00 00 00 03 00 00
508     247:cell F40.2 "LogX"
509     254:-44748 (-34)  5f 02 00 00
510     255:-46748 (-2000)  03 00 00 00 03 00 00
511     256:cell F40.2 "LogY"
512     267:-46782 (-34)  5f 02 00 00
513     268:-48782 (-2000)  04 00 00 00 04 00 00
514     269:cell F40.2 "LogZ"
515     276:-48816 (-34)  5f 02 00 00
516     277:-50816 (-2000)  04 00 00 00 04 00 00
517     278:cell F40.2 "LogAA"
518     285:-50850 (-34)  5f 02 00 00
519     286:-52850 (-2000)  04 00 00 00 04 00 00
520     287:cell F40.2 "LogAB"
521     294:-52884 (-34)  5f 02 00 00
522     295:-54884 (-2000)  04 00 00 00 01 00 00
523     296:cell F40.2 "LogAC"
524     303:-54918 (-34)  5f 02 00 00
525     304:-56918 (-2000)  04 00 00 00 04 00 00
526     305:cell F40.2 "LogAC"
527     312:-56952 (-34)  5f 02 00 00
528     313:-58952 (-2000)  04 00 00 00 04 00 00
529     314:cell F40.2 "LogAC"
530     321:-58986 (-34)  5f 02 00 00
531     322:-60986 (-2000)  04 00 00 00 04 00 00
532     323:cell F40.2 "LogAC"
533     330:-61020 (-34)  5f 02 00 00
534     331:-63020 (-2000)  04 00 00 00 04 00 00
535     332:cell F40.2 "LogAC"
536     339:-63054 (-34)  5f 02 00 00
537     340:-65054 (-2000)  04 00 00 00 04 00 00
538     341:cell F40.2 "LogAC"
539     348:-65088 (-34)  5f 02 00 00
540     349:-67088 (-2000)  04 00 00 00 04 00 00
541     350:cell F40.2 "LogAC"
542     357:-67122 (-34)  5f 02 00 00
543     358:-69122 (-2000)  04 00 00 00 04 00 00
544     359:cell F40.2 "LogAC"
545     366:-69156 (-34)  5f 02 00 00
546     367:-71156 (-2000)  04 00 00 00 04 00 00
547     368:cell F40.2 "LogAC"
548     375:-71190 (-34)  5f 02 00 00
549     376:-73190 (-2000)  04 00 00 00 04 00 00
550     377:cell F40.2 "LogAC"
551     384:-73224 (-34)  5f 02 00 00
552     385:-75224 (-2000)  04 00 00 00 04 00 00
553     386:cell F40.2 "LogAC"
554     393:-75258 (-34)  5f 02 00 00
555     394:-77258 (-2000)  04 00 00 00 04 00 00
556     395:cell F40.2 "LogAC"
557     402:-77292 (-34)  5f 02 00 00
558     403:-79292 (-2000)  04 00 00 00 04 00 00
559     404:cell F40.2 "LogAC"
560     411:-79326 (-34)  5f 02 00 00
561     412:-81326 (-2000)  04 00 00 00 04 00 00
562     413:cell F40.2 "LogAC"
563     420:-81360 (-34)  5f 02 00 00
564     421:-83360 (-2000)  04 00 00 00 04 00 00
565     422:cell F40.2 "LogAC"
566
567
568 ZMAW_zaj3:
569
570 rec:PVTextStyle
571 .. 02 .. 02
572 .. c8 .. LM .. RM .. TM .. BM .. .. .. 01 .. yy yy yy yy ww ww .. .. xx xx xx xx .. .. .. .. zz zz zz zz ii uu ss cc cc cc cc 22 "Arial" FF FF FF .. .. .. a7 80 .. 01 .. .. .. .. .. BB BB BB .. SS .. a9 80 .. 01 .. ..
573 .. c8 .. 78 .. a0 .. 14 .. 14 .. .. .. 01 .. f3 ff ff ff .. .. .. .. .. .. .. .. .. .. .. .. 90 01 .. .. .. .. .. ee 00 00 00 22 "Arial" .. .. .. .. .. .. a7 80 .. 01 .. .. .. .. .. ff ff ff .. .. .. a9 80 .. 01 .. ..
574 .. c8 .. 78 .. a0 .. 14 .. 14 .. .. .. 01 .. f3 ff ff ff .. .. .. .. .. .. .. .. .. .. .. .. 90 01 .. .. .. .. .. ee 00 00 00 22 "Arial" .. .. .. .. .. .. a7 80 .. 01 .. .. .. .. .. ff ff ff .. .. .. a9 80 .. .. .. ..
575 .. c8 .. 78 .. a0 .. 14 .. 14 .. .. .. 01 .. f3 ff ff ff .. .. .. .. .. .. .. .. .. .. .. .. 90 01 .. .. .. .. .. ee 00 00 00 22 "Arial" .. .. .. .. .. .. a7 80 .. 01 .. .. .. .. .. ff ff ff .. .. .. a9 80 .. 01 .. 02
576 .. c8 .. 78 .. a0 .. 14 .. 14 .. .. .. 01 .. f3 ff ff ff .. .. .. .. .. .. .. .. .. .. .. .. 90 01 .. .. .. .. .. ee 00 00 00 22 "Arial" .. .. .. .. .. .. a7 80 .. 01 .. .. .. .. .. ff ff ff .. .. .. a9 80 .. 02 .. 03
577 .. c8 .. 78 .. a0 .. 14 .. 14 .. .. .. 01 .. f3 ff ff ff .. .. .. .. .. .. .. .. .. .. .. .. 90 01 .. .. .. .. .. ee 00 00 00 22 "Arial" .. .. .. .. .. .. a7 80 .. 01 .. .. .. .. .. ff ff ff .. .. .. a9 80 .. 01 .. ..
578 .. c8 .. 78 .. a0 .. 14 .. 14 .. .. .. 01 .. f3 ff ff ff .. .. .. .. .. .. .. .. .. .. .. .. 90 01 .. .. .. .. .. ee 00 00 00 22 "Arial" .. .. .. .. .. .. a7 80 .. 01 .. .. .. .. .. ff ff ff .. .. .. a9 80 .. 01 .. ..
579 .. c8 .. 68 01 68 01 28 .. 28 .. .. .. 01 .. f3 ff ff ff .. .. .. .. .. .. .. .. .. .. .. .. 90 01 .. .. .. .. .. ee 00 00 00 22 "Arial" .. .. .. .. .. .. .. .. 01 .. .. .. .. .. .. .. 01 .. 01 .. .. .. .. .. .. .. 01
580 .. 01 .. .. .. .. .. .. .. 01 .. 01 .. .. .. .. .. .. .. 01 .. .. .. .. .. .. .. .. .. 01 .. .. .. .. .. .. .. 01 .. 01 .. .. .. .. .. .. .. 01 ..
581
582 yy: font size, f2ffffff or f3ffffff is normalish, f8ffffff is tiny,
583 f0ffffff is big
584 ww: something to do with font size or stretch. 01 is normal, 02+ gets weird
585 xx: rotation angle
586 zz: 400 is normal weight, 700+ is bold
587 ii: 1+ is italic
588 uu: 1+ is underline
589 ss: 1+ is strikethrough
590 cc: RTF charset number, e.g. 0 for ANSI, 238 for Polish
591 FF: RGB foreground
592 BB: RGB background
593 SS: shade fraction from 0=unshaded to 0xa=opaque
594 LT, RM, TM, BM: margins, 20=1 point
595
596 Some confusion on separation, BB and later seem to correspond to the next area
597
598 Areas:
599 0. title
600 1. layers
601 2. corner
602 3. row heads
603 4. column heads
604 5. data
605 6. caption
606 7. footnotes
607
608  rr gg bb 00 00 00 ss 00 01
609  ff 00 ff 00 00 00 01 00 01 00
610  ff 00 ff 00 00 00 01 00 01 00
611  ff 00 ff 00 00 00 01 00 01 00
612  ff 00 ff 00 00 00 01 00 00 00
613  00 00 00 00 00 00 01 00
614  ff 00 ff 00 00 00 01 00 01 00
615  ff 00 ff 00 00 00 01 00
616
617 rr gg bb: stroke color
618 ss: style, 0=thin, 1=normal, 2=thick, 3=very thick, otherwise weird
619
620 Borders:
621 - horizontal category columns
622 - vertical category columns
623 ...
624 - left inner frame
625 - right inner frame
626 - top inner frame
627 - bottom inner frame
628 - left data area
629 - top data area
630
631
632 ..
633 01 .. ff .. ff .. .. .. .. ..
634 .. .. .. .. .. .. 03 80 ..
635 01 .. ff .. ff .. .. .. .. ..
636 01 .. ff .. ff .. .. .. .. ..
637 01 .. ff .. ff .. .. .. .. ..
638 01 .. ff .. ff .. .. .. .. ..
639
640 ..
641 01 .. .. .. .. .. .. .. .. ..
642 .. .. .. .. .. .. 03 80 ..
643 01 .. .. .. .. .. .. .. .. .. .. ..
644 01 .. .. .. .. .. .. .. .. .. .. ..
645
646 ..
647 01 .. 80 80 80 .. .. .. 01 ..
648 01 .. 80 80 80 .. .. .. 01 ..
649 01 .. 80 80 80 .. .. .. .. ..
650 01 .. 80 80 80 .. .. .. .. ..
651 ba 80 ..
652 01 .. 80 80 80 .. .. .. 01 ..
653 01 .. 80 80 80 .. .. .. 01 ..
654 01 .. 80 80 80 .. .. .. .. ..
655 01 .. 80 80 80 .. .. .. .. ..
656
657 class {00000319-0000-0000-c000-000000000046}: Enhanced Metafile
658    For these, dropping the first 4 bytes of Embedding*/CONTENTS file
659    yields an EMF file that the printemf program can dissect.
660
661 class {62078ae0-e4fe-11cd-838d-0000c0f17248}:
662     harder to pin down what's in these
663
664 view-spo can Edit|copy notes and tables for pasting into other applications
665
666 rigger: contains working graph!
667
668 correspondence:
669  1/01 80 ? "NavRoot"
670  3/03 80 -> "DspSimpleText"
671  5/05 80 -> "DspString" 01 02 28 (00|05) 00 01 b"string"
672  7/07 80 -> "NavTreeViewItem"
673  9/09 80 -> "NavLog"
674 11/0b 80 ?  "NavHead"
675 13/0d 80 ?  "NavTitle"
676 15/0f 80 ???
677 17/11 80 ???
678 19/13 80 ???
679 21/15 80 ???
680 24 18 80 -> "NavNote"
681 29 1d 80 -> "PTPivotController"
682 31 1f 80 -> "PTPivotView"
683 33/21 80 -> "PMPivotModel"
684 35/23 80 -> "NDimensional__DspCell"
685 37/25 80 -> "IndexedCollection"
686 39/27 80 -> "DspCell"
687 41/29 80 ? "DspNumber"
688   /50 80 -> "PMPivotItemTree"
689   /52 80 -> "AbstractTreeBranch"
690   /54 80 -> "PMModelItemInfo"
691
692
693 When the top-level "Output" node is selected for save:
694         04 i0
695         b"SPSS Output Document"
696         i1 63
697         ffff 0000 "NavRoot" 02 00*32
698         ffff 0000 "DspSimpleText" 00*10
699         ffff 0000 "DspString" 01 02 28 00 00 01 b"Output"
700         ffff 0000 "NavTreeViewItem"
701         00 i0 02 00 01 00*9 i1
702 00b0    (i0 | i24) (i24 | i-40) (i0 | i40 | i-40) (i40 | i-34)
703 00c0    i24 i0 i40 i40
704 00d0    (i1048 | some other 3-hex-digit number | i0)
705 00d4    (i0 | some 3 to 4-hex-digit number | i-40)
706 00d8    00*5
707 00dd    i8500           # paper width in 1000/inch (i11000 for landscape)
708 00e1    i11000          # paper length in 1000/inch (i8500 for landscape)
709 00e5    s1              # letter paper (5=legal, 9=A4, etc.)
710 00e7    s15             # s1, s7 also seen
711 00e9    s1              # portrait; s2 = landscape
712 00eb    i1270           # left margin in 2540/inch, e.g. 1270 = .5 inch
713 00ef    i1270           # top margin in 2540/inch
714 00f3    i1270           # right margin
715 00f7    i1270           # bottom margin
716 00fb    s0
717 00fd    s240            # object spacing in 1440/inch, e.g. 240 = 12 pt
718 00ff    s0              # charts: 0=asis, 1=full page, 2=half, 03=quarter
719 0101    s??
720 0103    s1              # starting page number
721 0105    b"(Continued)" 01 01 00*3
722 0116    w"{\rtf... pagetitle}"
723 01fd    01 01 00*3
724 0202    w"{\rtf... page number}"
725 02e9    00 short s2
726
727 (This is a valid spot for the file to contain 00000000 then eof)
728
729 02ee    ffff 0000 "NavLog" 02 i0*2 i24 
730 0307    (i0 | i-40) (i691 | i987) (2-3 digit negative int) i1
731 0317    i0
732 0318    03 80 00*10
733 0324    05 80 01 02 28 05 00 01 b"Log"
734
735 0333    07 80 00 02 00 00 00 0a 00 01 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 b"" 00
736 0347    01 01 (i-13 | i-12) 00*12 90 01 00*9 (22|31)
737 036b    32-bytes of null-padded font name, e.g. "Courier New".
738         Sometimes garbage after the first null.
739 038b    (i80 | i132) 00*8 i1
740 039b    w"{\rtf ... SPSS syntax...}"
741
742 Almost past SPSS syntax (only the } included):
743 0000    '}' 00
744
745 0002    ffff 0000 "NavHead" 02
746 0010    00*24 i1 i0
747 0030    03 80 00*10
748         05 80 01 02 28 05 00 01 b"Cluster|Crosstabs|..."
749
750 Just past the string:
751 0000    07 80 00 00 00 00 00 0f 00 01 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 b"Cluster|Crosstabs|..."
752
753 Just past the string again:
754 0000    00*3
755 0003    ffff 0000 "NavTitle"
756 0011    65 02 00 00 00 00 00 00  00 00 18 00 00 00 byte byte
757 0020    ff ff 00 04 00 00 byte byte
758 0028    ff ff 02 00 00 00 01 00  00 00
759 0032    03 80 00*10
760 003e    05 80  01 02 28 00 00 01 b"Title"
761 004c    07 80 00 08 00 00 00 14 00 01 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 b"Cluster|Crosstabs|..."
762
763 Just past the third string:
764 0000    01 01 i-19 00*12 bc 02 00*9 22
765 001e    32-bytes of buggy zero-padded string "Arial"
766 003e    i80 00*8 i1
767 004e    w"{\rtf...}"
768
769 Almost past the RTF (only } included):
770 0000    '}' 00
771
772 0002    ffff 0000 "NavNote"
773 0010    02 00*8 i24 (i0 | i-40)
774 0020    int int i2 i1
775 0030    03 80 00*10
776 003c    05 80 01 02 28 05 00 01 b"Notes"
777 004a    07 80 00 07 00*3 19 00 01 00*3 01 00*5 01 00*5 b"Cluster|Crosstabs|..."
778
779 Just past the fourth string:
780 0000    01
781
782 0001    ffff 0000 "PTPivotController"
783 0018    02
784 0019    byte*8    # weird ASCIIish garbage
785 0021    i100*4
786
787 0031    ffff 0000 "PVPivotView"
788 0042    05 00 00 00 00
789
790 0047    ffff 0000 "PMPivotModel"
791 0059    03
792
793 005a    ffff 0000 "NDimensional__DspCell"
794 0075    00 01 00 00 00
795
796 007a    ffff 0000 "IndexedCollection"
797 0091    00 byte 00 00 00 01 00
798
799 0098    ffff 0000 "DspCell"
800 00a6    00
801 00a7    03 80 00*10
802
803 Fork: cell contains number ("as-number"):
804 00b2    ffff 0000 "DspNumber"
805 00c1    01 00 14 16       # 00 14 16 is DATETIME20.0
806 00c5    80 02
807 00c7    double            # seconds since 1582...
808 00cf    b"16-APR-2007 15:20:00"    # or whatever
809 00e4    27 80 00 03 80 00 00 00 00 00 00 00 00 00 00
810 00f3    05 80 01 02 28 05 00 01 01 20
811         # Some files have extra 00 00 here
812         # but we're only considering as-number-nozeros
813 00fd    27 80 00
814 0100    03 80 00*10
815 010e    05 80 01 02 28 05 00 01
816 0114    # Either b"filename" with a length < 255
817         # or ff "filename" with a length >= 255
818
819 as-number-nozeros, after filename:
820 0000    27 80 00
821 0003    03 80 00*10 05
822 0010    80 01 02 28 05 00 01 b"<none> or DataSet1 or whatever"
823
824 as-number-nozeros, after dataset name:
825 0000    27 80 00
826 0003    03 80 00*10 05
827 0010    80 01 02 28 05 00 01 b"<none>"
828
829 # Some files have extra 00*8 here, we skip it:
830 0000    27 80 00
831 0003    03 80 00*5 (00|10) 00*4 05
832 0010    80 01 02 28 05 00 01 b"<none> or DATASET..."
833
834 as-number-nozeros-majority, after dataset name:
835 0000    27 80 00 03 80 00*10 05 80 01 02 28 05 00 01 b"<none>"
836 001e    27 80 00 03 80 00*10 2a 80 01 00 28 05 80 02 100.0 b"100"
837         # Followed by 6 optional zeros
838
839 as-number-nozeros-majority, after optional zeros:
840 0000    27 80 00 03 80 00*10 05 80 01 02 28 05 00 01 b"User-defined missing values..."
841                        ^ sixth 00 may be 10 instead
842
843 as-number-nozeros-majority, after "User-defined missing values...":
844 0000    27 80 00 03 80 00*10 (05|2a) 80 01 02 28 05 00 01 b"Statistics are based on..."
845
846 as-number-nozeros-majority, after "Statistics are based on...":
847 0000    00 00
848 0002    27 80 00 03 80 00*10 05 80 01 02 28 05 00 01 b"syntax fragment"
849                        ^ sixth 00 may be 10 instead
850
851 as-number-nozeros-majority, after syntax fragment:
852 0000    27 80 00 03 80 00*10 2a 80 01 02 0d 15 80 02 double b"0:00:00.02"
853 selecting for the ones that include Processor Time instead of RAM:
854 002a    27 80 00 03 80 00*10 2a 80 01 02 0d 15 80 02 double b"0:00:00.03"
855 0054    01 00 b"Notes" 00*4
856 0060    b"Cluster_Notes"
857
858 processor-time, after previous string:
859 0000    00 01 00 00 00 01 00
860
861 0007    ffff 0000 "PMPivotItemTree" 00
862 001d    ffff 0000 "AbstractTreeBranch" 00
863 0036    ffff 0000 "PMModelItemInfo"
864                  00*9 byte*3 0e 00 03 80 00*10
865 0065    05 80 01 02 28 05 00 01 b"Contents" i7
866         52 80 00
867         54 80 00 00*9 07 00 74 0e 00 03 80 00*10
868 0099    05 80 01 02 28 05 00 01 b"Output Created" i0
869         52 80 00
870         54 80 00 01 00*7 08 00 74 0e 00 03 80 00*10
871 00d3    05 80 01 02 28 05 00 01 b"Comments" i0
872 00e8    52 80 00
873         54 80 00*9 09 00 74 0e 00 03 80 00*10
874         05 80 01 02 28 05 00 01 b"Input" i6
875         52 80 00
876         54 80 00 02 00*7 0a 00 74 0e 00 03 80 00*10
877 0138    05 80 01 02 28 05 00 01 b"Data" i0
878         52 80 00
879         54 80 00 03 00*12 03 80 00*10
880         05 80 01 02 28 05 00 01 b"Active Dataset" i0
881 0183    52 80 00
882         54 80 00 04 00*7 0e 00 74 0e 00 03 80 00*9
883 01a2    05 80 01 02 28 05 00 01 b"Filter" i0
884 01b5    52 80 00
885         54 80 00 05 00*7 11 00 74 0e 00 03 80 00*10
886 01d4    05 80 01 02 28 05 00 01 b"Weight" i0
887 01e7    52 80 00
888         54 80 00 06 00 00
889 01f0    00 00 00 00 00 12 00 74  0e 00 03 80 00 00 00 00
890 0200    00 00 00 00 00 00 05 80  01 02 28 05 00 01 b"Split File"
891 0219    00 00 00 00 52 80 00
892 0220    54 80 00 07 00 00 00 00  00 00 00 13 00 74 0e 00
893 0230    03 80 00 00 00 00 00 00  00 00 00 00 05 80 01 02
894 0240    28 05 00 01 b"N of Rows in Working Data File"
895 0263    00 00 00 00 52  80 00 54 80 00 00 00 00
896 0270    00 00 00 00 00 byte*2 74 0e 00 03 80 00 00 00 00
897 0280    00 00 00 00 00 00 05 80  01 02 28 05 00 01
898 028e    b"Missing Value Handling"
899 02a5    02 00 00  00 52 80 00 54 80 00 08
900 02b0    00 00 00 00 00 00 00 byte*2 74 0e 00 03 80 00 00
901 02c0    00 00 00 00 00 00 00 00  05 80 01 02 28 05 00 01
902 02d0    b"Definition of Missing"
903 02e6    00 00  00 00 52 80 00 54 80 00
904 02f0    09 00 00 00 00 00 00 00  byte*2 74 0e 00 03 80 00
905 0300    00 00 00 00 00 00 00 00  00 05 80 01 02 28 05 00
906 0310    01 b"Cases Used" 00*4
907 0320    52 80 00 54 80 00 0a 00  00 00 00 00 00 00 17 00
908 0330    74 0e 00 03 80 00 00 00  00 00 00 00 00 00 00 05
909 0340    80 01 02 28 05 00 01 b"Weight Handling"
910 0357    00 00 00 00 52 80 00 54 80
911 0360    00 0b 00 00 00 00 00 00  00 18 00 74 0e 00 03 80
912 0370    00 00 00 00 00 00 00 00  00 00 05 80 01 02 28 05
913 0380    00 01 b"Syntax" 00 00 00 00 52 80 00
914 0390    54 80 00 00 00 00 00 00  00 00 00 byte*2 74 0e 00
915 03a0    03 80 00 00 00 00 00 00  00 00 00 00 05 80 01 02
916 03b0    28 05 00 01 b"Resources" 02 00
917 03c0    00 00 52 80 00 54 80 00  0c 00 00 00 00 00 00 00
918 03d0    1b 00 74 0e 00 03 80 00  00 00 00 00 00 00 00 00
919 03e0    00 05 80 01 02 28 05 00  01 b"Elapsed Time"
920 03f6    00 00  00 00 52 80 00 54 80 00
921 0400    0d 00 00 00 00 00 00 00  00 00 00 00 00 03 80 00
922 0410    00 00 00 00 00 00 00 00  00 05 80 01 02 28 05 00
923 0420    01 b"Processor Time"
924 0430    00 00 00 00 00 00 00 00  00 00 0e 00 00 00 01 00
925 0440    58 00 5c 00 64 00 68 00  6c 00 70 00 74 00 78 00
926 0450    80 00 84 00 88 00 8c 00  94 00 98 00 00 0e 00 00
927 0460    00 00 00 00 00 00 00 01  00 00 00 02 00 00 00 03
928 0470    00 00 00 04 00 00 00 05  00 00 00 06 00 00 00 07
929 0480    00 00 00 08 00 00 00 09  00 00 00 0a 00 00 00 0b
930 0490    00 00 00 0c 00 00 00 0d  00 00 00 00 00 00 00 00
931 04a0    01 00 00 11 00 00 00 00  00 04 00 00 00 e1 00 00
932 04b0    00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
933 04c0    00 00 00 00 01 00 00 00  00 00 00 00 00 00 00 00
934 04d0    00 00 00 00 00 00 00 00  00 00 00 00 00 01 00 00
935 04e0    00 01 00 ff ff 00 00 b"PVViewDimension"
936 04f8    00 51 00 00 00 00 00 00
937 0500    00 00 00 00 0e 00 00 00  00 00 69 00 00 00 54 00
938 0510    00 00 4b 00 00 00 63 00  00 00 4b 00 00 00 4b 00
939 0520    00 00 4b 00 00 00 7d 00  00 00 87 00 00 00 5c 00
940 0530    00 00 72 00 00 00 4b 00  00 00 63 00 00 00 6f 00
941 0540    00 00 00 03 00 00 00 00  00 00 00 00 00 00 00 00
942 0550    00 87 00 00 00 00 03 80  00 00 00 00 00 00 00 00
943 0560    00 00 05 80 01 02 28 05  00 01 b"Notes"
944 0570    00 03 80 00 00 00 00 00  00 00 00 00 00 05 80 01
945 0580    02 28 00 00 01 00 00 00  00 00 00 00 00 00 03 80
946 0590    00 00 00 00 00 00 00 00  00 00 05 80 01 02 28 00
947 05a0    00 01 00
948
949 05a3    ffff 0000 "PTTableLook"
950 05b4    02 02 00 00  00 00 00 00 00 36 00 00
951 05c0    00 12 00 00 00
952
953 05c5    ffff 0000 "PVSeparatorStyle"
954 05db    00 01 00 00 00
955 05e0    00 00 00 00 00 00 00 00  00 00 00 00 a6 80 00 01  |................|
956 05f0    00 00 00 00 00 00 00 00  00 01 00 00 00 00 00 00  |................|
957 0600    00 00 00 01 00 00 00 00  00 00 00 00 00 01 00 00  |................|
958 0610    00 00 00 00 00 00 00
959
960 0607    ffff 0000 "PVCellStyle"
961 0628    00 01 00 00 00 00 00 ff
962
963 0630    ffff 0000 00
964
965 0637    ffff 0000 "PVTextStyle"
966 0646    00 02 00 02 00 c8 00 78 00 a0
967 0650    00 14 00 78 00 00 00 01  00 f3 ff ff ff 00 00 00
968 0660    00 00 00 00 00 00 00 00  00 bc 02 00 00 00 00 00
969 0670    00 00 00 00 22 b"Arial" 00 00 00 00 00
970 0680    00 a9 80 00 01 00 00 00  00 00 ff ff ff 00 00 00
971 0690    ab 80 00 01 00 00 00 c8  00 78 00 a0 00 14 00 14
972 06a0    00 00 00 01 00 f3 ff ff  ff 00 00 00 00 00 00 00
973 06b0    00 00 00 00 00 90 01 00  00 00 00 00 00 00 00 00
974 06c0    22 b"Arial" 00  00 00 00 00 00 a9 80 00
975 06d0    01 00 00 00 00 00 ff ff  ff 00 00 00 ab 80 00 01
976 06e0    00 00 00 c8 00 78 00 a0  00 14 00 14 00 00 00 01
977 06f0    00 f3 ff ff ff 00 00 00  00 00 00 00 00 00 00 00
978 0700    00 90 01 00 00 00 00 00  00 00 00 00 22 b"Arial"
979 0713    00 00 00 00 00  00 a9 80 00 01 00 00 00
980 0720    00 00 ff ff ff 00 00 00  ab 80 00 00 00 00 00 c8
981 0730    00 78 00 a0 00 14 00 14  00 00 00 01 00 f3 ff ff
982 0740    ff 00 00 00 00 00 00 00  00 00 00 00 00 90 01 00
983 0750    00 00 00 00 00 00 00 00  22 b"Arial" 00
984 0760    00 00 00 00 00 a9 80 00  01 00 00 00 00 00 ff ff
985 0770    ff 00 00 00 ab 80 00 01  00 02 00 c8 00 78 00 a0
986 0780    00 14 00 14 00 00 00 01  00 f3 ff ff ff 00 00 00
987 0790    00 00 00 00 00 00 00 00  00 90 01 00 00 00 00 00
988 07a0    00 00 00 00 22 b"Arial" 00 00 00 00 00
989 07b0    00 a9 80 00 01 00 00 00  00 00 ff ff ff 00 00 00
990 07c0    ab 80 00 02 00 03 00 c8  00 78 00 a0 00 14 00 14
991 07d0    00 00 00 01 00 f3 ff ff  ff 00 00 00 00 00 00 00
992 07e0    00 00 00 00 00 90 01 00  00 00 00 00 00 00 00 00
993 07f0    22 b"Arial" 00  00 00 00 00 00 a9 80 00
994 0800    01 00 00 00 00 00 ff ff  ff 00 00 00 ab 80 00 01
995 0810    00 00 00 c8 00 78 00 a0  00 14 00 14 00 00 00 01
996 0820    00 f3 ff ff ff 00 00 00  00 00 00 00 00 00 00 00
997 0830    00 90 01 00 00 00 00 00  00 00 00 00 22 b"Arial"
998 0843    00 00 00 00 00  00 a9 80 00 01 00 00 00
999 0850    00 00 ff ff ff 00 00 00  ab 80 00 01 00 00 00 c8
1000 0860    00 68 01 68 01 28 00 28  00 00 00 01 00 f3 ff ff
1001 0870    ff 00 00 00 00 00 00 00  00 00 00 00 00 90 01 00
1002 0880    00 00 00 00 00 00 00 00  22 b"Arial" 00
1003 0890    00 00 00 00 00 00 00 01  00 00 00 00 00 00 00 01
1004 08a0    00 01 00 00 00 00 00 00  00 01 00 01 00 00 00 00
1005 08b0    00 00 00 01 00 01 00 00  00 00 00 00 00 01 00 00
1006 08c0    00 00 00 00 00 00 00 01  00 00 00 00 00 00 00 01
1007 08d0    00 01 00 00 00 00 00 00  00 01 00 b"(cont.)"
1008 08e3    24 00 00 00 48  00 00 00 24 00 00 00 78
1009 08f0    00 00 00 00 00 00 00 00  00 00 00
1010
1011 08fb    ffff 0000 "PVPrintManager" 02
1012 0910    1e 00 02 00 00 00 03 00  00 00 01 00 00 00 00 00
1013 0920    00 00 00 00 00 00 00
1014
1015 0927    ffff 0000 "NavText"
1016 0934    02 00 00 00  00 00 00 00 00 18 00 00
1017 0940    00 byte*2 ff ff byte*2 00  00 byte*2 ff ff 02 00 00
1018 0950    00 01 00 00 00 03 80 00  00 00 00 00 00 00 00 00
1019 0960    00 05 80 01 02 28 05 00  01 b"Active Dataset"
1020 0978    07 80 00 10 00 00 00 be
1021 0980    00 01 00 00 00 00 00 00  00 00 00 01 00 00 00 00
1022 0990    00 b"Cluster etc." 07 43 6c 75 73 74 65  72 01 01 f3 ff ff ff 00
1023 0990    00 0b 46 72 65 71 75 65  6e 63 69 65 73 01 01 f3
1024
1025 Just past "Cluster":
1026 0000    01 01 (f3|f4) ff ff ff 00 00  00 00 00 00 00 00 00 00
1027 0010    00 00 90 01 00 00 00 00  00 00 00 00 00 (22|31)
1028 001e    32-bytes of null-padded font name, e.g. "Courier New".
1029         Sometimes garbage after the first null.
1030 003e    byte 00*11 w"{\rtf... giving filesystem path}"
1031
1032 Almost past RTF (just trailing }):
1033 0000    '}' ffff 0000 "NavPivot" 02 int int i24 int
1034 0020    int int i2 i1
1035 0030    03 80 00*10 05 80 01 02
1036 0040    28 05 00 01 b"Statistics etc."
1037
1038 Just past "Statistics":
1039 0000    07 80 00 0c 00 00 00 c3  00 01 00 00 00 00 00 00
1040 0010    00 00 00 01 00 00 00 00  00 b"Cluster etc."
1041
1042 Just past "Cluster", using boot/Contents as exemplary:
1043 0000    01
1044 0001    1d 80 02 i0*2 i100*4        # 1d 80 corresponds to "PTPivotController"
1045 001c    1f 80 05 00*4               # 1f 80 corresponds to "PTPivotView"
1046 0023    21 80 03                    # 21 80 corresponds to "PMPivotModel"
1047 0026    23 80 00 (02|03) 00 00 00   # 23 80 corresponds to "NDimensional__DspCell"
1048 002d    25 80 00 i100 01 00         # 25 80 corresponds to "IndexedCollection"
1049 0036    25 80 00 i100 01 00
1050 003f    27 80 00 03 80 00*10 2a 80 01 F40.0 80 02 100.0 b"100"
1051 0062    27 80 00 03 80 00*10 2a 80 01 F40.0 80 02 100.0 b"100"
1052         ...repeats...
1053 0f03    25 80 00 6c 00 00 00 01 00
1054 0f0c    27 80 00 03 80 00*10 2a 80 01 F40.0 80 02 0.0 b"0"
1055         ...repeats...
1056 1cf8    25 80 00 6c 00 00 00 01 00
1057 1d01    27 80 00 03 80 00*10 2a 80 01 F40.8 1
1058
1059 Notes
1060 Output Created          16-JAN-2008 02:45:55
1061 Comments                 
1062 Input   Data    \\Ugly\amead\consulting\center\Dell\Exams\RE\analyses\Blended15\pilotdata-2008-01-15.csv
1063         Active Dataset  raw1
1064         Filter  <none>
1065         Weight  <none>
1066         Split File      <none>
1067         N of Rows in Working Data File  366
1068 Missing Value Handling  Definition of Missing   User-defined missing values are treated as missing.
1069         Cases Used      Statistics are based on all cases with valid data.
1070 Syntax          FREQUENCIES\r  VARIABLES=exam_id exam_name restarts\r  /ORDER=  ANALYSIS .\r
1071 Resources       Elapsed Time    0:00:00.02
1072         Processor Time  0:00:00.03