significant progess on SPOs
[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 DspString is the label of the object that is currently selected.
29
30 The currently selected object is always the first in the file
31 regardless of the output hierarchy and order
32
33 The entire rec:NavPivot contents, minus the final 00 byte, appear
34 later in the file to identify the selected object.  However, the
35 initial 02 02*8 can disappear into a "float 0.0" if there's a leading
36 80.
37
38 Each object has a small negative number, e.g. 0xfffffe91 == -390.
39
40 Objects:
41   NavRoot: root output object
42   NavLog: log object
43   NavHead: heading with subobjects
44     NavTreeViewItem: assocated with NavHead somehow
45   NavTitle: title within a heading
46   NavNote: notes table
47   NavPivot: table
48
49 The start of the file might be a version number
50
51 x and y are either 0 or 2-3 byte values, e.g. 0x670b or 0x3b989.
52 z is a 2-3 byte negative value, e.g. 0xffff8997
53 w is a 2-byte value or 0
54 v is a 2-byte negative value or 0
55
56
57
58 rtf:
59
60         "Factor Analysis"
61         01 01
62         table 1
63         00 00 00 f9 00 00 00
64         "\rtf..."
65         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
66         "(Continued)"
67
68
69 rtf2:
70
71         "Factor Analysis"
72         01 01
73         table 1
74         00 00 00 da 00 00 00
75         "\rtf..."
76         00 ffff 0000
77
78 rtf3:
79
80         ...
81         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
82
83    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......
84       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......
85      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.
86      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.
87      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.
88 notea.spo/Contents
89
90
91
92 PVPrintManager:
93
94         "PVPrintManager"
95         02 byte[x] 00 i2 (i0|i3) i1 00*7
96         sometimes 0000 ffff
97 where x is between 0a and 2e
98
99
100
101 regress, notea
102 --------------
103
104 ffff 0000 "NavPivot"
105         02 fa 3c 00 00 3b 5a 01 00
106         18 00 00 00 b4 35 ff ff 7f
107         02 00 00 13 28 ff ff
108         02 00 00 00
109         01 00 00 00
110
111         notea:
112         02 00 00 00 00 00 00 00 00
113         18 00 00 00 93 f0 ff ff dc
114         03 00 00 cd ef ff ff
115         02 00 00 00
116         01 00 00
117         missing terminator!
118
119 ffff 0000 "DspSimpleText"
120         00*10
121
122 ffff 0000 "DspString"
123         01 02 28 05 00 01 "Text Output"
124
125 ffff 0000 "NavOleItem"
126         00 01 00 00
127         07 00 00 00
128         01 00 00 00 00 00
129         01 00 00 00 00 00 00 00 00 00 00
130         01 00 00 00 00 00
131         "Regression"
132         01
133
134         notea:
135         00 01 00 00
136         01 00 00 00
137         01 00 00 00 00 00
138         01 00 00 00 00 00 00 00 00 00 00
139         01 00 00 00 00 00
140         00 01 01 f3 ff
141
142 ffff 0000 "PTPivotController"
143         02 67 02 00 00 a1 0d 00 00
144         64 00 00 00
145         64 00 00 00
146         64 00 00 00
147         64 00 00 00
148
149         notea:
150         02 29 20 69 31 38 28 66 38
151         64 00 00 00
152         64 00 00 00
153         64 00 00 00
154         64 00 00 00
155
156 ffff 0000 "PVPivotView"
157         04 00 00 00 00
158
159 ffff 0000 "PMPivotModel"
160         03
161
162 ffff 0000 "NDimensional__DspCell"
163         00 03 00 00 00
164
165 ffff 0000 "IndexedCollection"
166         00
167         05 00 00 00
168         01 00 13 80
169         00
170         0b 00 00 00
171         01 00 13 80
172         00
173         02 00 00 00
174         01 00
175
176 ffff 0000 "DspCell"
177         00 03 80 00 00 00 00 00 00 00 00 00 00
178
179 ffff 0000 "DspNumber"
180
181 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
182
183 80 02 <double>
184 80 01 02 28 05 00 01 <len1> <string>
185 80 01 02 28 05 00 01 ff <len2> <string>
186 80 01 03 28 05 80 02 <double> 
187
188 80 00 03
189 80 00 00 00 00 00 00 00 00 00 00 ..
190 80 01 .. .. .. ..
191
192 DspNumber:
193         01 <decimals> <width> <type>
194
195 NDimensional__DspCell:
196         00 int32[ndims]
197
198 IndexedCollection: 7+(9*ndims) bytes
199         00 0e 00 00 00 01 00
200
201         00 22 00 00 00 01 00
202   11 80 00 08 00 00 00 01 00
203
204         00 5c 00 00 00 01 00
205   13 80 00 5c 00 00 00 01 00
206   13 80 00 05 00 00 00 01 00
207
208         00 01 00 00 00 01 00
209   11 80 00 02 00 00 00 01 00
210   11 80 00 03 00 00 00 01 00
211   11 80 00 03 00 00 00 01 00
212
213            ^^ number of categories
214
215 ----------------------------------------------------------------------
216 ab1.dump
217
218 3 dimensions, 92x92x5:
219     NDimensional__DspCell  00 03 00 00 00
220
221     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
222
223 The cells are in order last dimension changes most quickly.
224
225 ----------------------------------------------------------------------
226
227 ZMAW_zaj3.dump
228
229 4-dimensions, 1x2x3x3, 18 cells
230
231 16 80 -> next 4th dim
232 11 80 00 03 00 00 00 01 00 -> increment another dim
233
234 ----------------------------------------------------------------------
235
236 rec:PMModelItemInfo
237  .. .. .. .. .. .. .. .. .. .. .. .. ..                            cell F40.2 "Contents"
238  07 .. .. .. 55 80 .. 57 80 .. .. .. .. .. .. .. .. .. 07 .. 74 0e cell F40.2   "Output Created"
239  .. .. .. .. 55 80 .. 57 80 .. 01 .. .. .. .. .. .. .. 08 .. 74 0e cell F40.2   "Comments"
240  .. .. .. .. 55 80 .. 57 80 .. .. .. .. .. .. .. .. .. .. .. .. .. cell F40.2   "Input"
241  06 .. .. .. 55 80 .. 57 80 .. 02 .. .. .. .. .. .. .. 0a .. 74 0e cell F40.2     "Data"
242  .. .. .. .. 55 80 .. 57 80 .. 03 .. .. .. .. .. .. .. .. .. .. .. cell F40.2     "Active Dataset"
243  .. .. .. .. 55 80 .. 57 80 .. 04 .. .. .. .. .. .. .. 0e .. 74 0e cell F40.2     "Filter"
244  .. .. .. .. 55 80 .. 57 80 .. 05 .. .. .. .. .. .. .. 11 .. 74 0e cell F40.2     "Weight"
245  .. .. .. .. 55 80 .. 57 80 .. 06 .. .. .. .. .. .. .. 12 .. 74 0e cell F40.2     "Split File"
246  .. .. .. .. 55 80 .. 57 80 .. 07 .. .. .. .. .. .. .. 13 .. 74 0e cell F40.2     "N of Rows in Working Data File"
247  .. .. .. .. 55 80 .. 57 80 .. .. .. .. .. .. .. .. .. .. .. .. .. cell F40.2   "Missing Value Handling"
248  02 .. .. .. 55 80 .. 57 80 .. 08 .. .. .. .. .. .. .. .. .. .. .. cell F40.2     "Definition of Missing"
249  .. .. .. .. 55 80 .. 57 80 .. 09 .. .. .. .. .. .. .. .. .. .. .. cell F40.2     "Cases Used"
250  .. .. .. .. 55 80 .. 57 80 .. 0a .. .. .. .. .. .. .. 17 .. 74 0e cell F40.2   "Weight Handling"
251  .. .. .. .. 55 80 .. 57 80 .. 0b .. .. .. .. .. .. .. 18 .. 74 0e cell F40.2   "Syntax"
252  .. .. .. .. 55 80 .. 57 80 .. .. .. .. .. .. .. .. .. .. .. .. .. cell F40.2   "Resources"
253  03 .. .. .. 55 80 .. 57 80 .. 0c .. .. .. .. .. .. .. 1b .. 74 0e cell F40.2     "Elapsed Time"
254  .. .. .. .. 55 80 .. 57 80 .. 0d .. .. .. .. .. .. .. .. .. .. .. cell F40.2     "Maximum Memory Required"
255  .. .. .. .. 55 80 .. 57 80 .. 0e .. .. .. .. .. .. .. .. .. .. .. cell F40.2     "Processor Time"
256
257 rec:PMModelItemInfo
258                             .. .. .. .. .. 01 .. .. .. ff ff ff ff cell F40.2       "score"
259  01 .. .. .. 86 80 .. 88 80 .. .. .. .. .. .. .. .. .. f4 0e 74 0e cell F40.2         "Valid"
260  09 .. .. .. 86 80 .. 88 80 .. .. .. .. .. .. .. .. .. ff ff ff ff cell F40.2 xxx19     "17..."
261  .. .. .. .. 86 80 .. 88 80 .. 01 .. .. .. .. .. .. .. ff ff ff ff cell F40.2 xxx19     "22..."
262  .. .. .. .. 86 80 .. 88 80 .. 02 .. .. .. .. .. .. .. ff ff ff ff cell F40.2 xxx19     "26..."
263  .. .. .. .. 86 80 .. 88 80 .. 03 .. .. .. .. .. .. .. ff ff ff ff cell F40.2 xxx19     "29..."
264  .. .. .. .. 86 80 .. 88 80 .. 04 .. .. .. .. .. .. .. ff ff ff ff cell F40.2 xxx19     "33..."
265  .. .. .. .. 86 80 .. 88 80 .. 05 .. .. .. .. .. .. .. ff ff ff ff cell F40.2 xxx19     "37..."
266  .. .. .. .. 86 80 .. 88 80 .. 06 .. .. .. .. .. .. .. ff ff ff ff cell F40.2 xxx19     "40..."
267  .. .. .. .. 86 80 .. 88 80 .. 07 .. .. .. .. .. .. .. ff ff ff ff cell F40.2 xxx19     "48..."
268  .. .. .. .. 86 80 .. 88 80 .. 08 .. .. .. .. .. .. .. f2 0e 74 0e cell F40.2         "Total"
269  .. .. .. .. .. .. .. .. .. .. 09 .. .. .. 01 .. 90 .. 94 .. 98 .. 9c .. a0 .. a4 .. a8 .. ac .. b0 .. .. 09 .. .. .. .. .. .. .. .. .. 01 .. .. .. 02 .. .. .. 03 .. .. .. 04 .. .. .. 05 .. .. .. 06 .. .. .. 07 .. .. .. 08 .. ..
270  .. 84 80 .. 86 80 .. 88 80 .. .. .. .. .. 01 .. .. .. eb 0e 74 0e cell F40.2       "Statistics"
271  04 .. .. .. 86 80 .. 88 80 .. .. .. .. .. .. .. .. .. dc 0e 74 0e cell F40.2         "Frequency"
272  .. .. .. .. 86 80 .. 88 80 .. 01 .. .. .. .. .. .. .. e6 0e 74 0e cell F40.2         "Percent"
273  .. .. .. .. 86 80 .. 88 80 .. 02 .. .. .. .. .. .. .. f5 0e 74 0e cell F40.2         "Valid Percent"
274  .. .. .. .. 86 80 .. 88 80 .. 03 .. .. .. .. .. .. .. da 0e 74 0e cell F40.2         "Cumulative Percent"
275  .. .. .. .. .. .. .. .. .. .. 04 .. .. .. 01 .. b9 .. bd .. c1 .. c5 .. .. 04 .. .. .. .. .. .. .. .. .. 01 .. .. .. 02 .. .. .. 03 .. .. .. .. .. .. .. .. 01 .. .. 11 .. .. .. .. .. .. .. .. .. 4b .. .. .. .. .. .. .. .. .. .. ..
276
277 rec:PMModelItemInfo
278                             .. .. .. .. .. 01 .. .. .. 91 1a 74 0e cell F40.2 "Statistics"
279  05 .. .. .. ff 7f 69 78 02 80 .. ff 7f 6b 78 02 80 .. .. .. .. .. .. .. .. .. 98 1a 74 0e cell F40.2   "Pearson Correlation"
280  .. .. .. .. ff 7f 69 78 02 80 .. ff 7f 6b 78 02 80 .. 01 .. .. .. .. .. .. .. 99 1a 74 0e cell F40.2   "Sig. (2-tailed)"
281  .. .. .. .. ff 7f 69 78 02 80 .. ff 7f 6b 78 02 80 .. 02 .. .. .. .. .. .. .. 96 1a 74 0e cell F40.2   "Sum of Squares and Cross-products"
282  .. .. .. .. ff 7f 69 78 02 80 .. ff 7f 6b 78 02 80 .. 03 .. .. .. .. .. .. .. 97 1a 74 0e cell F40.2   "Covariance"
283  .. .. .. .. ff 7f 69 78 02 80 .. ff 7f 6b 78 02 80 .. 04 .. .. .. .. .. .. .. 94 1a 74 0e cell F40.2   "N"
284  .. .. .. .. .. .. .. .. .. .. 05 .. .. .. 01 .. ff 7f 6f 78 02 .. ff 7f 73 78 02 .. ff 7f 77 78 02 .. ff 7f 7b 78 02 .. ff 7f 7f 78 02 .. .. 05 .. .. .. .. .. .. .. .. .. 01 .. .. .. 02 .. .. .. 03 .. .. .. 04 .. .. .. ff 7f 67 78 02 80 .. ff 7f 69 78 02 80 .. ff 7f 6b 78 02 80 .. .. .. .. .. 01 .. .. .. 90 1a 74 0e ..................ox....sx....wx....{x.....x...............................gx.....ix.....kx.............t.
285
286
287 ff is a way to say that there's a 4-byte number instead of 1-byte?
288
289
290 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
291 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
292 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
293 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
294 00
295
296
297  .. .. .. .. .. .. a9 80 .. 01 .. .. .. .. .. ff ff ff .. .. .. ab 80 .. 01 .. .. .. c8 .. 78 .. 78 .. 14 .. 14 .. .. .. 01 .. f3 ff ff ff .. .. .. .. .. .. .. .. .. .. .. .. 90 01 .. .. .. .. .. .. .. .. .. 22
298  .. .. .. .. .. .. a9 80 .. 01 .. .. .. .. .. ff ff ff .. .. .. ab 80 .. 01 .. .. .. c8 .. 78 .. a0 .. 14 .. 14 .. .. .. 01 .. ef ff ff ff .. .. .. .. .. .. .. .. .. .. .. .. 90 01 .. .. .. .. .. .. .. .. .. 22
299  .. .. .. .. .. .. a9 80 .. 01 .. .. .. .. .. ff ff ff .. .. .. ab 80 .. 01 .. .. .. c8 .. 78 .. a0 .. 14 .. 14 .. .. .. 01 .. f2 ff ff ff .. .. .. .. .. .. .. .. .. .. .. .. bc 02 .. .. 01 .. .. .. .. .. .. 12
300  .. .. .. .. .. .. a9 80 .. 01 .. .. .. .. .. ff ff ff .. .. .. ab 80 .. 01 .. .. .. c8 .. 78 .. a0 .. 14 .. 14 .. .. .. 01 .. f2 ff ff ff .. .. .. .. .. .. .. .. .. .. .. .. 90 01 .. .. .. .. .. .. .. .. .. 22
301  80 .. 80 .. .. .. a9 80 .. 01 .. .. .. .. .. ff ff ff .. .. .. ab 80 .. 01 .. .. .. c8 .. 78 .. a0 .. 14 .. 14 .. .. .. 01 .. f3 ff ff ff .. .. .. .. .. .. .. .. .. .. .. .. 90 01 .. .. .. .. .. .. .. .. .. 22
302
303
304
305 record type 02
306 ==============
307
308 02 int16*4 int32*4
309
310
311
312 rec:NavLog
313
314 02 .. .. .. .. .. .. .. ..
315 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.......
316 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.......
317 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.......
318 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.......
319 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 .. .. ..
320
321
322 NavTreeViewItem:
323
324 last bit is the number of children plus one, e.g. here it has 0x12+1
325 children:
326
327 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!..............................|...
328 "(Continued)"
329  01 01 .. .. ..
330 rtf
331  01 01 .. .. ..
332 rtf
333  .. 13 ..