sys-file-reader: Refactor to clean up character encoding support.
[pspp-builds.git] / tests / data / sys-file-reader.at
1 AT_BANNER([system file reader - positive])
2
3 AT_SETUP([variable labels and missing values])
4 AT_KEYWORDS([sack synthetic system file positive])
5 AT_DATA([sys-file.sack], [dnl
6 dnl File header.
7 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
8 2; dnl Layout code
9 22; dnl Nominal case size
10 0; dnl Not compressed
11 0; dnl Not weighted 
12 1; dnl 1 case.
13 100.0; dnl Bias.
14 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
15 i8 0 *3;
16
17 dnl Numeric variable, no label or missing values.
18 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
19
20 dnl Numeric variable, variable label.
21 2; 0; 1; 0; 0x050800 *2; s8 "NUM2";
22 26; "Numeric variable 2's label"; i8 0 *2;
23
24 dnl Numeric variable, one missing value.
25 2; 0; 0; 1; 0x050800 *2; s8 "NUM3";
26 1.0;
27
28 dnl Numeric variable, variable label and missing value.
29 2; 0; 1; 1; 0x050800 *2; s8 "NUM4";
30 30; "Another numeric variable label"; i8 0 * 2;
31 1.0;
32
33 dnl Numeric variable, two missing values.
34 2; 0; 0; 2; 0x050800 *2; s8 "NUM5"; 1.0; 2.0;
35
36 dnl Numeric variable, three missing values.
37 2; 0; 0; 3; 0x050800 *2; s8 "NUM6"; 1.0; 2.0; 3.0;
38
39 dnl Numeric variable, range of missing values.
40 2; 0; 0; -2; 0x050800 *2; s8 "NUM7"; 1.0; 3.0;
41
42 dnl Numeric variables, range of missing values plus discrete value.
43 2; 0; 0; -3; 0x050800 *2; s8 "NUM8"; 1.0; 3.0; 5.0;
44 2; 0; 0; -3; 0x050800 *2; s8 "NUM9"; 1.0; HIGHEST; -5.0;
45 2; 0; 0; -3; 0x050800 *2; s8 "NUM10"; LOWEST; 1.0; 5.0;
46
47 dnl String variable, no label or missing values.
48 2; 4; 0; 0; 0x010400 *2; s8 "STR1";
49
50 dnl String variable, variable label.
51 2; 4; 1; 0; 0x010400 *2; s8 "STR2";
52 25; "String variable 2's label"; i8 0 * 3;
53
54 dnl String variable, one missing value.
55 2; 4; 0; 1; 0x010400 *2; s8 "STR3"; s8 "MISS";
56
57 dnl String variable, variable label and missing value.
58 2; 4; 1; 1; 0x010400 *2; s8 "STR4";
59 29; "Another string variable label"; i8 0 * 3;
60 s8 "OTHR";
61
62 dnl String variable, two missing values.
63 2; 4; 0; 2; 0x010400 *2; s8 "STR5"; s8 "MISS"; s8 "OTHR";
64
65 dnl String variable, three missing values.
66 2; 4; 0; 3; 0x010400 *2; s8 "STR6"; s8 "MISS"; s8 "OTHR"; s8 "MORE";
67
68 dnl Long string variable, one missing value.
69 2; 11; 0; 1; 0x010b00 *2; s8 "STR7"; "first8by";
70 2; -1; 0; 0; 0; 0; s8 "";
71
72 dnl Long string variable, value label.
73 2; 25; 1; 0; 0x011900 *2; s8 "STR8"; 14; "25-byte string"; i8 0 * 2;
74 ( 2; -1; 0; 0; 0; 0; s8 ""; ) * 2;
75 dnl Variable label fields on continuation records have been spotted in system
76 dnl files created by "SPSS Power Macintosh Release 6.1".
77 2; -1; 1; 0; 0; 0; s8 ""; 20; "dummy variable label";
78
79 dnl Machine integer info record.
80 7; 3; 4; 8; 1; 2; 3; -1; 1; 1; ENDIAN; 1252;
81
82 dnl Machine floating-point info record.
83 7; 4; 8; 3; SYSMIS; HIGHEST; LOWEST;
84
85 dnl Character encoding record.
86 7; 20; 1; 12; "windows-1252";
87
88 dnl Dictionary termination record.
89 999; 0;
90
91 dnl Data.
92 1.0; 2.0; 3.0; 4.0; 5.0; 6.0; 7.0; 8.0; 9.0; 10.0;
93 s8 "abcd"; s8 "efgh"; s8 "ijkl"; s8 "mnop"; s8 "qrst"; s8 "uvwx";
94 s16 "yzABCDEFGHI"; s32 "JKLMNOPQRSTUVWXYZ01234567";
95 ])
96 for variant in \
97         "be e07ee28eaf7bceca017e83e9fd46be3c" \
98         "le c357aa20227c856b8a80d1b840722da1"
99 do
100   set $variant
101   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
102 ])
103   AT_DATA([sys-file.sps], [dnl
104 GET FILE='sys-file.sav'.
105 DISPLAY DICTIONARY.
106 LIST.
107 ])
108   AT_CHECK([pspp -o pspp.csv sys-file.sps])
109   AT_CHECK([grep -v Measure pspp.csv | grep -v Display], [0], [dnl
110 Variable,Description,,Position
111 num1,Format: F8.0,,1
112 num2,Numeric variable 2's label,,2
113 ,Format: F8.0,,
114 num3,Format: F8.0,,3
115 ,Missing Values: 1,,
116 num4,Another numeric variable label,,4
117 ,Format: F8.0,,
118 ,Missing Values: 1,,
119 num5,Format: F8.0,,5
120 ,Missing Values: 1; 2,,
121 num6,Format: F8.0,,6
122 ,Missing Values: 1; 2; 3,,
123 num7,Format: F8.0,,7
124 ,Missing Values: 1 THRU 3,,
125 num8,Format: F8.0,,8
126 ,Missing Values: 1 THRU 3; 5,,
127 num9,Format: F8.0,,9
128 ,Missing Values: 1 THRU HIGHEST; -5,,
129 num10,Format: F8.0,,10
130 ,Missing Values: LOWEST THRU 1; 5,,
131 str1,Format: A4,,11
132 str2,String variable 2's label,,12
133 ,Format: A4,,
134 str3,Format: A4,,13
135 ,"Missing Values: ""MISS""",,
136 str4,Another string variable label,,14
137 ,Format: A4,,
138 ,"Missing Values: ""OTHR""",,
139 str5,Format: A4,,15
140 ,"Missing Values: ""MISS""; ""OTHR""",,
141 str6,Format: A4,,16
142 ,"Missing Values: ""MISS""; ""OTHR""; ""MORE""",,
143 str7,Format: A11,,17
144 ,"Missing Values: ""first8by""",,
145 str8,25-byte string,,18
146 ,Format: A25,,
147
148 Table: Data List
149 num1,num2,num3,num4,num5,num6,num7,num8,num9,num10,str1,str2,str3,str4,str5,str6,str7,str8
150 1,2,3,4,5,6,7,8,9,10,abcd,efgh,ijkl,mnop,qrst,uvwx,yzABCDEFGHI,JKLMNOPQRSTUVWXYZ01234567
151 ])
152 done
153 AT_CLEANUP
154
155 AT_SETUP([unspecified number of variable positions])
156 AT_KEYWORDS([sack synthetic system file positive])
157 AT_DATA([sys-file.sack], [dnl
158 dnl File header.
159 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
160 2; dnl Layout code
161 -1; dnl Nominal case size (unspecified)
162 0; dnl Not compressed
163 0; dnl Not weighted 
164 1; dnl 1 case.
165 100.0; dnl Bias.
166 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
167 i8 0 *3;
168
169 dnl Numeric variable, no label or missing values.
170 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
171
172 dnl Numeric variable, variable label.
173 2; 0; 1; 0; 0x050800 *2; s8 "NUM2";
174 26; "Numeric variable 2's label"; i8 0 *2;
175
176 dnl Dictionary termination record.
177 999; 0;
178
179 dnl Data.
180 1.0; 2.0; 
181 ])
182 for variant in \
183         "be 413e7bc80a47fcd7e4c8020e8e120060" \
184         "le d7db9120b1ff28c83aa6fe9fc405d903"
185 do
186   set $variant
187   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
188 ])
189   AT_DATA([sys-file.sps], [dnl
190 GET FILE='sys-file.sav'.
191 DISPLAY DICTIONARY.
192 LIST.
193 ])
194   AT_CHECK([pspp -o pspp.csv sys-file.sps])
195   AT_CHECK([grep -v Measure pspp.csv | grep -v Display], [0], [dnl
196 Variable,Description,,Position
197 num1,Format: F8.0,,1
198 num2,Numeric variable 2's label,,2
199 ,Format: F8.0,,
200
201 Table: Data List
202 num1,num2
203 1,2
204 ])
205 done
206 AT_CLEANUP
207
208 AT_SETUP([wrong number of variable positions but version 13])
209 AT_KEYWORDS([sack synthetic system file positive])
210 AT_DATA([sys-file.sack], [dnl
211 dnl File header.
212 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
213 2; dnl Layout code
214 -1; dnl Nominal case size (unspecified)
215 0; dnl Not compressed
216 0; dnl Not weighted 
217 1; dnl 1 case.
218 100.0; dnl Bias.
219 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
220 i8 0 *3;
221
222 dnl Numeric variable, no label or missing values.
223 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
224
225 dnl Numeric variable, variable label.
226 2; 0; 1; 0; 0x050800 *2; s8 "NUM2";
227 26; "Numeric variable 2's label"; i8 0 *2;
228
229 dnl Machine integer info record (SPSS 13).
230 7; 3; 4; 8; 13; 2; 3; -1; 1; 1; ENDIAN; 1252;
231
232 dnl Dictionary termination record.
233 999; 0;
234
235 dnl Data.
236 1.0; 2.0; 
237 ])
238 for variant in \
239         "be 3d17aae7d99538dc73c5cb42692b1038" \
240         "le 8ad1000df598617d5258f323c882d749"
241 do
242   set $variant
243   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
244 ])
245   AT_DATA([sys-file.sps], [dnl
246 GET FILE='sys-file.sav'.
247 DISPLAY DICTIONARY.
248 LIST.
249 ])
250   AT_CHECK([pspp -o pspp.csv sys-file.sps])
251   AT_CHECK([grep -v Measure pspp.csv | grep -v Display], [0], [dnl
252 Variable,Description,,Position
253 num1,Format: F8.0,,1
254 num2,Numeric variable 2's label,,2
255 ,Format: F8.0,,
256
257 Table: Data List
258 num1,num2
259 1,2
260 ])
261 done
262 AT_CLEANUP
263
264 AT_SETUP([value labels])
265 AT_KEYWORDS([sack synthetic system file positive])
266 AT_DATA([sys-file.sack], [dnl
267 dnl File header.
268 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
269 2; dnl Layout code
270 22; dnl Nominal case size
271 0; dnl Not compressed
272 0; dnl Not weighted 
273 1; dnl 1 case.
274 100.0; dnl Bias.
275 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
276 i8 0 *3;
277
278 dnl Numeric variables.
279 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
280 2; 0; 0; 0; 0x050800 *2; s8 "NUM2";
281 2; 0; 0; 0; 0x050800 *2; s8 "NUM3";
282 2; 0; 0; 0; 0x050800 *2; s8 "NUM4";
283 2; 0; 0; 0; 0x050800 *2; s8 "NUM5";
284
285 dnl String variables.
286 2; 1; 0; 0; 0x010100 *2; s8 "STR1"; dnl index 6
287 2; 2; 0; 0; 0x010200 *2; s8 "STR2"; dnl index 7
288 2; 3; 0; 0; 0x010300 *2; s8 "STR3"; dnl index 8
289 2; 4; 0; 0; 0x010400 *2; s8 "STR4"; dnl index 9
290 2; 4; 0; 0; 0x010400 *2; s8 "STR5"; dnl index 10
291 2; 6; 0; 0; 0x010600 *2; s8 "STR6"; dnl index 11
292 2; 7; 0; 0; 0x010700 *2; s8 "STR7"; dnl index 12
293 2; 8; 0; 0; 0x010800 *2; s8 "STR8"; dnl index 13
294 2; 9; 0; 0; 0x010900 *2; s8 "STR9"; dnl index 14
295 2; -1; 0; 0; 0; 0; s8 "";
296 2; 12; 0; 0; 0x010c00 *2; s8 "STR12"; dnl index 16
297 2; -1; 0; 0; 0; 0; s8 "";
298 2; 16; 0; 0; 0x011000 *2; s8 "STR16"; dnl index 18
299 2; -1; 0; 0; 0; 0; s8 "";
300 2; 17; 0; 0; 0x011100 *2; s8 "STR17"; dnl index 20
301 ( 2; -1; 0; 0; 0; 0; s8 ""; ) * 2;
302
303 dnl One value label for NUM1.
304 3; 1; 1.0; i8 3; s7 "one"; 4; 1; 1;
305
306 dnl Two value labels for NUM2, as a single pair of type 3 and type 4 records.
307 3; 2; 1.0; i8 3; s7 "one"; 2.0; i8 3; s7 "two"; 4; 1; 2;
308
309 dnl Two value labels for NUM3, as two pairs of type 3 and type 4 records.
310 3; 1; 3.0; i8 5; s7 "three"; 4; 1; 3;
311 3; 1; 4.0; i8 4; s7 "four"; 4; 1; 3;
312
313 dnl Two common value labels for NUM4 and NUM5, plus two different ones for each.
314 3; 1; 5.0; i8 4; s7 "five"; 4; 1; 4;
315 3; 1; 6.0; i8 3; s7 "six"; 4; 1; 5;
316 3; 2; 7.0; i8 5; s7 "seven"; 8.0; i8 5; s7 "eight"; 4; 2; 4; 5;
317 3; 1; 9.0; i8 4; s7 "nine"; 4; 1; 4;
318 3; 1; 10.0; i8 3; s7 "ten"; 4; 1; 5;
319
320 dnl One value label for STR1.
321 3; 1; s8 "a"; i8 19; s23 "value label for `a'"; 4; 1; 6;
322
323 dnl Two value labels for STR2, as a single pair of type 3 and type 4 records.
324 3; 2;
325 s8 "bc"; i8 20; s23 "value label for `bc'";
326 s8 "de"; i8 20; s23 "value label for `de'";
327 4; 1; 7;
328
329 dnl Two value labels for STR3, as two pairs of type 3 and type 4 records.
330 3; 1; s8 "fgh"; i8 21; s23 "value label for `fgh'"; 4; 1; 8;
331 3; 1; s8 "ijk"; i8 21; s23 "value label for `ijk'"; 4; 1; 8;
332
333 dnl Two common value labels for STR4 and STR5, plus two different ones for each.
334 3; 1; s8 "lmno"; i8 22; s23 "value label for `lmno'"; 4; 1; 9;
335 3; 1; s8 "pqrs"; i8 22; s23 "value label for `pqrs'"; 4; 1; 10;
336 3; 2;
337 s8 "tuvw"; i8 22; s23 "value label for `tuvw'";
338 s8 "xyzA"; i8 22; s23 "value label for `xyzA'";
339 4; 2; 9; 10;
340 3; 1; s8 "BCDE"; i8 22; s23 "value label for `BCDE'"; 4; 1; 9;
341 3; 1; s8 "FGHI"; i8 22; s23 "value label for `FGHI'"; 4; 1; 10;
342
343 dnl One value label for STR6, STR7, STR8.
344 3; 1; s8 "JKLMNO"; i8 24; s31 "value label for `JKLMNO'"; 4; 1; 11;
345 3; 1; s8 "JKLMNOP"; i8 25; s31 "value label for `JKLMNOP'"; 4; 1; 12;
346 3; 1; s8 "JKLMNOPQ"; i8 26; s31 "value label for `JKLMNOPQ'"; 4; 1; 13;
347
348 7; 21; 1; COUNT (
349 dnl One value label for STR9,
350 COUNT("STR9"); 9; 1; COUNT("RSTUVWXYZ"); COUNT("value label for `RSTUVWXYZ'");
351
352 dnl Two value labels for STR12.
353 COUNT("STR12"); 12; 2;
354 COUNT("0123456789ab"); COUNT("value label for `0123456789ab'");
355 COUNT("cdefghijklmn"); COUNT("value label for `cdefghijklmn'");
356
357 dnl Three value labels for STR16.
358 COUNT("STR16"); 16; 3;
359 COUNT("opqrstuvwxyzABCD"); COUNT("value label for `opqrstuvwxyzABCD'");
360 COUNT("EFGHIJKLMNOPQRST"); COUNT("value label for `EFGHIJKLMNOPQRST'");
361 COUNT("UVWXYZ0123456789"); COUNT("value label for `UVWXYZ0123456789'");
362
363 dnl One value label for STR17.
364 COUNT("STR17"); 17; 1;
365 COUNT("abcdefghijklmnopq"); COUNT("value label for `abcdefghijklmnopq'");
366 );
367
368 dnl Dictionary termination record.
369 999; 0;
370 ])
371 for variant in \
372         "be 1de55cc9fb523c8f9b014cdc5387c12b" \
373         "le 76a6974012df7351b591c5964c41e582"
374 do
375   set $variant
376   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
377 ])
378   AT_DATA([sys-file.sps], [dnl
379 GET FILE='sys-file.sav'.
380 DISPLAY DICTIONARY.
381 ])
382   AT_CHECK([pspp -o pspp.csv sys-file.sps])
383   AT_CHECK([grep -v Measure pspp.csv | grep -v Display], [0], [dnl
384 Variable,Description,,Position
385 num1,Format: F8.0,,1
386 ,1,one,
387 num2,Format: F8.0,,2
388 ,1,one,
389 ,2,two,
390 num3,Format: F8.0,,3
391 ,3,three,
392 ,4,four,
393 num4,Format: F8.0,,4
394 ,5,five,
395 ,7,seven,
396 ,8,eight,
397 ,9,nine,
398 num5,Format: F8.0,,5
399 ,6,six,
400 ,7,seven,
401 ,8,eight,
402 ,10,ten,
403 str1,Format: A1,,6
404 ,a,value label for `a',
405 str2,Format: A2,,7
406 ,bc,value label for `bc',
407 ,de,value label for `de',
408 str3,Format: A3,,8
409 ,fgh,value label for `fgh',
410 ,ijk,value label for `ijk',
411 str4,Format: A4,,9
412 ,BCDE,value label for `BCDE',
413 ,lmno,value label for `lmno',
414 ,tuvw,value label for `tuvw',
415 ,xyzA,value label for `xyzA',
416 str5,Format: A4,,10
417 ,FGHI,value label for `FGHI',
418 ,pqrs,value label for `pqrs',
419 ,tuvw,value label for `tuvw',
420 ,xyzA,value label for `xyzA',
421 str6,Format: A6,,11
422 ,JKLMNO,value label for `JKLMNO',
423 str7,Format: A7,,12
424 ,JKLMNOP,value label for `JKLMNOP',
425 str8,Format: A8,,13
426 ,JKLMNOPQ,value label for `JKLMNOPQ',
427 str9,Format: A9,,14
428 ,RSTUVWXYZ,value label for `RSTUVWXYZ',
429 str12,Format: A12,,15
430 ,0123456789ab,value label for `0123456789ab',
431 ,cdefghijklmn,value label for `cdefghijklmn',
432 str16,Format: A16,,16
433 ,EFGHIJKLMNOPQRST,value label for `EFGHIJKLMNOPQRST',
434 ,UVWXYZ0123456789,value label for `UVWXYZ0123456789',
435 ,opqrstuvwxyzABCD,value label for `opqrstuvwxyzABCD',
436 str17,Format: A17,,17
437 ,abcdefghijklmnopq,value label for `abcdefghijklmnopq',
438 ])
439 done
440 AT_CLEANUP
441
442 AT_SETUP([documents])
443 AT_KEYWORDS([sack synthetic system file positive])
444 AT_DATA([sys-file.sack], [dnl
445 dnl File header.
446 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
447 2; dnl Layout code
448 1; dnl Nominal case size
449 0; dnl Not compressed
450 0; dnl Not weighted 
451 1; dnl 1 case.
452 100.0; dnl Bias.
453 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
454 i8 0 *3;
455
456 dnl Numeric variable, no label or missing values.
457 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
458
459 dnl Document record.
460 6; 4;
461 s80 "First line of documents";
462 s80 "Second line of documents";
463 s80 "";
464 s80 "Last line of documents";
465
466 dnl Dictionary termination record.
467 999; 0;
468
469 dnl Data.
470 1.0;
471 ])
472 for variant in \
473         "be 8738124d7932cc8ff803142fbf38710b" \
474         "le f3ca2123ec9e8bda91c6b865ba39f506"
475 do
476   set $variant
477   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
478 ])
479   AT_DATA([sys-file.sps], [dnl
480 GET FILE='sys-file.sav'.
481 DISPLAY DOCUMENTS.
482 LIST.
483 ])
484   AT_CHECK([pspp -o pspp.csv sys-file.sps])
485   AT_CHECK([cat pspp.csv], [0], [dnl
486 Documents in the active file:
487
488 First line of documents
489
490 Second line of documents
491
492
493
494 Last line of documents
495
496 Table: Data List
497 num1
498 1
499 ])
500 done
501 AT_CLEANUP
502
503 AT_SETUP([multiple response sets])
504 AT_KEYWORDS([sack synthetic system file positive])
505 AT_DATA([sys-file.sack], [dnl
506 dnl File header.
507 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
508 2; dnl Layout code
509 16; dnl Nominal case size
510 0; dnl Not compressed
511 0; dnl Not weighted 
512 0; dnl No cases.
513 100.0; dnl Bias.
514 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
515 i8 0 *3;
516
517 dnl $a
518 2; 0; 0; 0; 0x050800 *2; s8 "A";
519 2; 0; 0; 0; 0x050800 *2; s8 "B";
520 2; 0; 0; 0; 0x050800 *2; s8 "C";
521
522 dnl $b
523 2; 0; 0; 0; 0x050800 *2; s8 "D";
524 2; 0; 0; 0; 0x050800 *2; s8 "E";
525 2; 0; 0; 0; 0x050800 *2; s8 "F";
526 2; 0; 0; 0; 0x050800 *2; s8 "G";
527
528 dnl $c
529 2; 3; 0; 0; 0x010300 *2; s8 "H";
530 2; 3; 0; 0; 0x010300 *2; s8 "I";
531 2; 3; 0; 0; 0x010300 *2; s8 "J";
532
533 dnl $d
534 2; 0; 0; 0; 0x050800 *2; s8 "K";
535 2; 0; 0; 0; 0x050800 *2; s8 "L";
536 2; 0; 0; 0; 0x050800 *2; s8 "M";
537
538 dnl $e
539 2; 6; 0; 0; 0x010600 *2; s8 "N";
540 2; 6; 0; 0; 0x010600 *2; s8 "O";
541 2; 6; 0; 0; 0x010600 *2; s8 "P";
542
543 7; 7; 1;
544 COUNT(
545   "$a=C 10 my mcgroup a b c"; i8 10;
546   "$b=D2 55 0  g e f d"; i8 10;
547   "$c=D3 Yes 10 mdgroup #2 h i j"; i8 10);
548
549 7; 19; 1;
550 COUNT(
551   "$d=E 1 2 34 13 third mdgroup k l m"; i8 10;
552   "$e=E 11 6 choice 0  n o p"; i8 10);
553
554 dnl Dictionary termination record.
555 999; 0;
556 ])
557 for variant in \
558         "be 0caa3446d7a3f6985e79fd1fcc999b10" \
559         "le 9dbeba699e4149ed836f55bad7346d67"
560 do
561   set $variant
562   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
563 ])
564   AT_DATA([sys-file.sps], [dnl
565 GET FILE='sys-file.sav'.
566 MRSETS /DISPLAY NAME=ALL.
567 ])
568   AT_CHECK([pspp -o pspp.csv sys-file.sps])
569   AT_CHECK([cat pspp.csv], [0], [dnl
570 Table: Multiple Response Sets
571 Name,Variables,Details
572 $a,"a
573 b
574 c
575 ","Multiple category set
576 Label: my mcgroup
577 "
578 $b,"g
579 e
580 f
581 d
582 ","Multiple dichotomy set
583 Counted value: 55
584 Category label source: Variable labels
585 "
586 $c,"h
587 i
588 j
589 ","Multiple dichotomy set
590 Label: mdgroup #2
591 Label source: Provided by user
592 Counted value: `Yes'
593 Category label source: Variable labels
594 "
595 $d,"k
596 l
597 m
598 ","Multiple dichotomy set
599 Label: third mdgroup
600 Label source: Provided by user
601 Counted value: 34
602 Category label source: Value labels of counted value
603 "
604 $e,"n
605 o
606 p
607 ","Multiple dichotomy set
608 Label source: First variable label among variables
609 Counted value: `choice'
610 Category label source: Value labels of counted value
611 "
612 ])
613 done
614 AT_CLEANUP
615
616 AT_SETUP([variable display parameters, without width])
617 AT_KEYWORDS([sack synthetic system file positive])
618 AT_DATA([sys-file.sack], [dnl
619 dnl File header.
620 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
621 2; dnl Layout code
622 19; dnl Nominal case size
623 0; dnl Not compressed
624 0; dnl Not weighted 
625 0; dnl No cases.
626 100.0; dnl Bias.
627 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
628 i8 0 *3;
629
630 dnl Numeric variables.
631 2; 0; 0; 0; 0x050800 *2; s8 "A";
632 2; 0; 0; 0; 0x050800 *2; s8 "B";
633 2; 0; 0; 0; 0x050800 *2; s8 "C";
634 2; 0; 0; 0; 0x050800 *2; s8 "D";
635
636 dnl Short string variables.
637 2; 3; 0; 0; 0x010300 *2; s8 "H";
638 2; 3; 0; 0; 0x010300 *2; s8 "I";
639 2; 3; 0; 0; 0x010300 *2; s8 "J";
640 2; 3; 0; 0; 0x010300 *2; s8 "K";
641
642 dnl Long string variables.
643 2; 9; 0; 0; 0x010900 *2; s8 "L";
644 2; -1; 0; 0; 0; 0; s8 "";
645 2; 10; 0; 0; 0x010a00 *2; s8 "M";
646 2; -1; 0; 0; 0; 0; s8 "";
647 2; 17; 0; 0; 0x011100 *2; s8 "N";
648 ( 2; -1; 0; 0; 0; 0; s8 "" ) * 2;
649 2; 25; 0; 0; 0x011900 *2; s8 "O";
650 ( 2; -1; 0; 0; 0; 0; s8 "" ) * 3;
651
652 dnl Variable display parameters
653 7; 11; 4; 24;
654 1; 0;
655 2; 0;
656 3; 0;
657 1; 1;
658 2; 1;
659 3; 1;
660 1; 2;
661 2; 2;
662 3; 2;
663 0; 0;
664 0; 1;
665 0; 2;
666
667 dnl Dictionary termination record.
668 999; 0;
669 ])
670 for variant in \
671         "be c130d9345080579b8862b360924edbfa" \
672         "le 6fde96f5a7c7386bff6cca049cd84d6a"
673 do
674   set $variant
675   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
676 ])
677   AT_DATA([sys-file.sps], [dnl
678 GET FILE='sys-file.sav'.
679 DISPLAY DICTIONARY.
680 ])
681   AT_CHECK([pspp -o pspp.csv sys-file.sps])
682   AT_CHECK([cat pspp.csv], [0], [dnl
683 Variable,Description,,Position
684 a,Format: F8.0,,1
685 ,Measure: Nominal,,
686 ,Display Alignment: Left,,
687 ,Display Width: 8,,
688 b,Format: F8.0,,2
689 ,Measure: Ordinal,,
690 ,Display Alignment: Left,,
691 ,Display Width: 8,,
692 c,Format: F8.0,,3
693 ,Measure: Scale,,
694 ,Display Alignment: Left,,
695 ,Display Width: 8,,
696 d,Format: F8.0,,4
697 ,Measure: Nominal,,
698 ,Display Alignment: Right,,
699 ,Display Width: 8,,
700 h,Format: A3,,5
701 ,Measure: Ordinal,,
702 ,Display Alignment: Right,,
703 ,Display Width: 3,,
704 i,Format: A3,,6
705 ,Measure: Scale,,
706 ,Display Alignment: Right,,
707 ,Display Width: 3,,
708 j,Format: A3,,7
709 ,Measure: Nominal,,
710 ,Display Alignment: Center,,
711 ,Display Width: 3,,
712 k,Format: A3,,8
713 ,Measure: Ordinal,,
714 ,Display Alignment: Center,,
715 ,Display Width: 3,,
716 l,Format: A9,,9
717 ,Measure: Scale,,
718 ,Display Alignment: Center,,
719 ,Display Width: 9,,
720 m,Format: A10,,10
721 ,Measure: Nominal,,
722 ,Display Alignment: Left,,
723 ,Display Width: 10,,
724 n,Format: A17,,11
725 ,Measure: Nominal,,
726 ,Display Alignment: Right,,
727 ,Display Width: 17,,
728 o,Format: A25,,12
729 ,Measure: Nominal,,
730 ,Display Alignment: Center,,
731 ,Display Width: 25,,
732 ])
733 done
734 AT_CLEANUP
735
736 AT_SETUP([variable display parameters, with width])
737 AT_KEYWORDS([sack synthetic system file positive])
738 AT_DATA([sys-file.sack], [dnl
739 dnl File header.
740 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
741 2; dnl Layout code
742 19; dnl Nominal case size
743 0; dnl Not compressed
744 0; dnl Not weighted 
745 0; dnl No cases.
746 100.0; dnl Bias.
747 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
748 i8 0 *3;
749
750 dnl Numeric variables.
751 2; 0; 0; 0; 0x050800 *2; s8 "A";
752 2; 0; 0; 0; 0x050800 *2; s8 "B";
753 2; 0; 0; 0; 0x050800 *2; s8 "C";
754 2; 0; 0; 0; 0x050800 *2; s8 "D";
755
756 dnl Short string variables.
757 2; 3; 0; 0; 0x010300 *2; s8 "H";
758 2; 3; 0; 0; 0x010300 *2; s8 "I";
759 2; 3; 0; 0; 0x010300 *2; s8 "J";
760 2; 3; 0; 0; 0x010300 *2; s8 "K";
761
762 dnl Long string variables.
763 2; 9; 0; 0; 0x010900 *2; s8 "L";
764 2; -1; 0; 0; 0; 0; s8 "";
765 2; 10; 0; 0; 0x010a00 *2; s8 "M";
766 2; -1; 0; 0; 0; 0; s8 "";
767 2; 17; 0; 0; 0x011100 *2; s8 "N";
768 ( 2; -1; 0; 0; 0; 0; s8 "" ) * 2;
769 2; 25; 0; 0; 0x011900 *2; s8 "O";
770 ( 2; -1; 0; 0; 0; 0; s8 "" ) * 3;
771
772 dnl Variable display parameters
773 7; 11; 4; 36;
774 1; 1; 0;
775 2; 2; 0;
776 3; 3; 0;
777 1; 4; 1;
778 2; 5; 1;
779 3; 6; 1;
780 1; 7; 2;
781 2; 8; 2;
782 3; 9; 2;
783 0; 10; 0;
784 0; 11; 1;
785 0; 12; 2;
786
787 dnl Dictionary termination record.
788 999; 0;
789 ])
790 for variant in \
791         "be 3ace75689a0b7faa9360936bbfe26055" \
792         "le 6e93f35d19a9882eb53ffb1b067ef7cd"
793 do
794   set $variant
795   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
796 ])
797   AT_DATA([sys-file.sps], [dnl
798 GET FILE='sys-file.sav'.
799 DISPLAY DICTIONARY.
800 ])
801   AT_CHECK([pspp -o pspp.csv sys-file.sps])
802   AT_CHECK([cat pspp.csv], [0], [dnl
803 Variable,Description,,Position
804 a,Format: F8.0,,1
805 ,Measure: Nominal,,
806 ,Display Alignment: Left,,
807 ,Display Width: 1,,
808 b,Format: F8.0,,2
809 ,Measure: Ordinal,,
810 ,Display Alignment: Left,,
811 ,Display Width: 2,,
812 c,Format: F8.0,,3
813 ,Measure: Scale,,
814 ,Display Alignment: Left,,
815 ,Display Width: 3,,
816 d,Format: F8.0,,4
817 ,Measure: Nominal,,
818 ,Display Alignment: Right,,
819 ,Display Width: 4,,
820 h,Format: A3,,5
821 ,Measure: Ordinal,,
822 ,Display Alignment: Right,,
823 ,Display Width: 5,,
824 i,Format: A3,,6
825 ,Measure: Scale,,
826 ,Display Alignment: Right,,
827 ,Display Width: 6,,
828 j,Format: A3,,7
829 ,Measure: Nominal,,
830 ,Display Alignment: Center,,
831 ,Display Width: 7,,
832 k,Format: A3,,8
833 ,Measure: Ordinal,,
834 ,Display Alignment: Center,,
835 ,Display Width: 8,,
836 l,Format: A9,,9
837 ,Measure: Scale,,
838 ,Display Alignment: Center,,
839 ,Display Width: 9,,
840 m,Format: A10,,10
841 ,Measure: Nominal,,
842 ,Display Alignment: Left,,
843 ,Display Width: 10,,
844 n,Format: A17,,11
845 ,Measure: Nominal,,
846 ,Display Alignment: Right,,
847 ,Display Width: 11,,
848 o,Format: A25,,12
849 ,Measure: Nominal,,
850 ,Display Alignment: Center,,
851 ,Display Width: 12,,
852 ])
853 done
854 AT_CLEANUP
855
856 AT_SETUP([long variable names])
857 AT_KEYWORDS([sack synthetic system file positive])
858 AT_DATA([sys-file.sack], [dnl
859 dnl File header.
860 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
861 2; dnl Layout code
862 4; dnl Nominal case size
863 0; dnl Not compressed
864 0; dnl Not weighted 
865 0; dnl No cases.
866 100.0; dnl Bias.
867 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
868 i8 0 *3;
869
870 dnl Numeric variables.
871 2; 0; 0; 0; 0x050800 *2; s8 "LONGVARI";
872 2; 0; 0; 0; 0x050800 *2; s8 "LONGVA_A";
873 2; 0; 0; 0; 0x050800 *2; s8 "LONGVA_B";
874 2; 0; 0; 0; 0x050800 *2; s8 "LONGVA_C";
875
876 dnl Long variable names.
877 7; 13; 1; COUNT (
878 "LONGVARI=LongVariableName1"; i8 9;
879 "LONGVA_A=LongVariableName2"; i8 9;
880 "LONGVA_B=LongVariableName3"; i8 9;
881 "LONGVA_C=LongVariableName4";
882 );
883
884 dnl Dictionary termination record.
885 999; 0;
886 ])
887 for variant in \
888         "be eb7a8b4055a5d880a185a566048876b3" \
889         "le dd4ecd7541320b9b51746717ef20973f"
890 do
891   set $variant
892   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
893 ])
894   AT_DATA([sys-file.sps], [dnl
895 GET FILE='sys-file.sav'.
896 DISPLAY DICTIONARY.
897 ])
898   AT_CHECK([pspp -o pspp.csv sys-file.sps])
899   AT_CHECK([grep -v Measure pspp.csv | grep -v Display], [0], [dnl
900 Variable,Description,,Position
901 LongVariableName1,Format: F8.0,,1
902 LongVariableName2,Format: F8.0,,2
903 LongVariableName3,Format: F8.0,,3
904 LongVariableName4,Format: F8.0,,4
905 ])
906 done
907 AT_CLEANUP
908
909 AT_SETUP([very long strings])
910 AT_KEYWORDS([sack synthetic system file positive])
911 AT_DATA([sys-file.sack], [dnl
912 dnl File header.
913 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
914 2; dnl Layout code
915 109; dnl Nominal case size
916 0; dnl Not compressed
917 0; dnl Not weighted 
918 1; dnl No cases.
919 100.0; dnl Bias.
920 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
921 i8 0 *3;
922
923 dnl 256-byte string.
924 2; 255; 0; 0; 0x01FF00 *2; s8 "STR256";
925 (2; -1; 0; 0; 0; 0; s8 "") * 31;
926 2; 4; 0; 0; 0x010400 *2; s8 "STR256_1";
927
928 dnl 600-byte string.
929 2; 255; 0; 0; 0x01FF00 *2; s8 "STR600";
930 (2; -1; 0; 0; 0; 0; s8 "") * 31;
931 2; 255; 0; 0; 0x01FF00 *2; s8 "STR600_1";
932 (2; -1; 0; 0; 0; 0; s8 "") * 31;
933 2; 96; 0; 0; 0x016000 *2; s8 "STR600_2";
934 (2; -1; 0; 0; 0; 0; s8 "") * 11;
935
936 dnl Very long string record.
937 7; 14; 1; COUNT (
938 "STR256=00256"; i8 0; i8 9;
939 "STR600=00600"; i8 0; i8 9;
940 );
941
942 dnl Dictionary termination record.
943 999; 0;
944
945 dnl Data.
946 "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#" * 4;
947 "abcdefgh";
948 "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#" * 9;
949 "abcdefghijklmnopqrstuvwxyzABCDEF";
950 ])
951 for variant in \
952         "be 40a4327805d8b59891084317248f5d4a" \
953         "le ced2584a43037b893b7feb068e2cb9d6"
954 do
955   set $variant
956   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
957 ])
958   AT_DATA([sys-file.sps], [dnl
959 GET FILE='sys-file.sav'.
960 DISPLAY DICTIONARY.
961 LIST.
962 ])
963   AT_CHECK([pspp -o pspp.csv sys-file.sps])
964   AT_CHECK([grep -v Measure pspp.csv | grep -v Display], [0], [dnl
965 Variable,Description,,Position
966 str256,Format: A256,,1
967 str600,Format: A600,,2
968
969 Table: Data List
970 str256,str600
971 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@a,abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyz
972 ])
973 done
974 AT_CLEANUP
975
976 AT_SETUP([data file and variable attributes])
977 AT_KEYWORDS([sack synthetic system file positive])
978 AT_DATA([sys-file.sack], [dnl
979 dnl File header.
980 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
981 2; dnl Layout code
982 2; dnl Nominal case size
983 0; dnl Not compressed
984 0; dnl Not weighted 
985 0; dnl 1 case.
986 100.0; dnl Bias.
987 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
988 i8 0 *3;
989
990 dnl Variables.
991 2; 0; 0; 0; 0x050800 *2; s8 "FIRSTVAR";
992 2; 0; 0; 0; 0x050800 *2; s8 "SECONDVA";
993
994 dnl Long variable names.
995 7; 13; 1; COUNT (
996 "FIRSTVAR=FirstVariable"; i8 9;
997 "SECONDVA=SecondVariable"; i8 9;
998 );
999
1000 dnl Data file attributes record.
1001 7; 17; 1; COUNT (
1002 "Attr1('Value1'"; i8 10; "''QuotedValue''"; i8 10; ")";
1003 "SecondAttr('123'"; i8 10; "'456'"; i8 10; ")";
1004 );
1005
1006 dnl Variable attributes record.
1007 7; 18; 1; COUNT (
1008 "FirstVariable:";
1009   "fred('23'"; i8 10; "'34'"; i8 10; ")";
1010   "bert('123'"; i8 10; ")";
1011 "/SecondVariable:";
1012   "xyzzy('quux'"; i8 10; ")";
1013 );
1014
1015 dnl Dictionary termination record.
1016 999; 0;
1017 ])
1018 for variant in \
1019         "be 955802de462daf810c0ecc81ee2320a1" \
1020         "le 7fc6439aedfa00615bb1fe94d6701305"
1021 do
1022   set $variant
1023   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
1024 ])
1025   AT_DATA([sys-file.sps], [dnl
1026 GET FILE='sys-file.sav'.
1027 DISPLAY ATTRIBUTES.
1028 ])
1029   AT_CHECK([pspp -o pspp.csv sys-file.sps])
1030   AT_CHECK([cat pspp.csv], [0],
1031 [[Variable,Description,
1032 FirstVariable,Custom attributes:,
1033 ,bert,123
1034 ,fred[1],23
1035 ,fred[2],34
1036 SecondVariable,Custom attributes:,
1037 ,xyzzy,quux
1038
1039 Table: Custom data file attributes.
1040 Attribute,Value
1041 SecondAttr[1],123
1042 SecondAttr[2],456
1043 Attr1[1],Value1
1044 Attr1[2],'QuotedValue'
1045 ]])
1046 done
1047 AT_CLEANUP
1048
1049 AT_SETUP([compressed data])
1050 AT_KEYWORDS([sack synthetic system file positive])
1051 AT_DATA([sys-file.sack], [dnl
1052 dnl File header.
1053 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1054 2; dnl Layout code
1055 6; dnl Nominal case size
1056 1; dnl Not compressed
1057 0; dnl Not weighted 
1058 -1; dnl Unspecified number of cases.
1059 100.0; dnl Bias.
1060 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
1061 i8 0 *3;
1062
1063 dnl Numeric variables.
1064 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1065 2; 0; 0; 0; 0x050800 *2; s8 "NUM2";
1066
1067 dnl String variable.
1068 2; 4; 0; 0; 0x010400 *2; s8 "STR4";
1069 2; 8; 0; 0; 0x010800 *2; s8 "STR8";
1070 2; 15; 0; 0; 0x010f00 *2; s8 "STR15";
1071 2; -1; 0; 0; 0; 0; s8 "";
1072
1073 dnl Dictionary termination record.
1074 999; 0;
1075
1076 dnl Compressed data.
1077 i8 1 100 254 253 254 253; i8 255 251; "abcdefgh"; s8 "0123";
1078 i8 253 253 253 254; i8 101 102 253 253; s8 "jklm"; s8 "nopqrstu";
1079 s8 "vwxyzABC"; s8 "DEFG"; s8 "HIJKLMNO";
1080 i8 254 253 252 0 0 0 0 0; s8 "PQRSTUVW";
1081
1082 ])
1083 for variant in \
1084         "be c0670e436b068f45710b98f6f7d01dc5" \
1085         "le 2e43a7f8861df4e714a192dfb3c8b2f4"
1086 do
1087   set $variant
1088   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
1089 ])
1090   AT_DATA([sys-file.sps], [dnl
1091 GET FILE='sys-file.sav'.
1092 DISPLAY DICTIONARY.
1093 LIST.
1094 ])
1095   AT_CHECK([pspp -o pspp.csv sys-file.sps])
1096   AT_CHECK([grep -v Measure pspp.csv | grep -v Display], [0], [dnl
1097 Variable,Description,,Position
1098 num1,Format: F8.0,,1
1099 num2,Format: F8.0,,2
1100 str4,Format: A4,,3
1101 str8,Format: A8,,4
1102 str15,Format: A15,,5
1103
1104 Table: Data List
1105 num1,num2,str4,str8,str15
1106 -99,0,,abcdefgh,0123   @&t@
1107 .,151,jklm,nopqrstu,vwxyzABC       @&t@
1108 1,2,DEFG,HIJKLMNO,PQRSTUV
1109 ])
1110 done
1111 AT_CLEANUP
1112
1113 AT_SETUP([compressed data, zero bias])
1114 AT_KEYWORDS([sack synthetic system file positive])
1115 AT_DATA([sys-file.sack], [dnl
1116 dnl File header.
1117 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1118 2; dnl Layout code
1119 6; dnl Nominal case size
1120 1; dnl Not compressed
1121 0; dnl Not weighted 
1122 -1; dnl Unspecified number of cases.
1123 0.0; dnl Bias.
1124 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
1125 i8 0 *3;
1126
1127 dnl Numeric variables.
1128 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1129 2; 0; 0; 0; 0x050800 *2; s8 "NUM2";
1130
1131 dnl String variable.
1132 2; 4; 0; 0; 0x010400 *2; s8 "STR4";
1133 2; 8; 0; 0; 0x010800 *2; s8 "STR8";
1134 2; 15; 0; 0; 0x010f00 *2; s8 "STR15";
1135 2; -1; 0; 0; 0; 0; s8 "";
1136
1137 dnl Dictionary termination record.
1138 999; 0;
1139
1140 dnl Compressed data.
1141 i8 1 100 254 253 254 253; i8 255 251; "abcdefgh"; s8 "0123";
1142 i8 253 253 253 254; i8 101 102 253 253; s8 "jklm"; s8 "nopqrstu";
1143 s8 "vwxyzABC"; s8 "DEFG"; s8 "HIJKLMNO";
1144 i8 254 253 252 0 0 0 0 0; s8 "PQRSTUVW";
1145
1146 ])
1147 for variant in \
1148         "be 2f0d25704ee497ae833213a3e4ff5e8b" \
1149         "le 49f68a9e1ba02a2f7e9166686a0db9d9"
1150 do
1151   set $variant
1152   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
1153 ])
1154   AT_DATA([sys-file.sps], [dnl
1155 GET FILE='sys-file.sav'.
1156 DISPLAY DICTIONARY.
1157 LIST.
1158 ])
1159   AT_CHECK([pspp -o pspp.csv sys-file.sps], [0])
1160   AT_CHECK([grep -v Measure pspp.csv | grep -v Display], [0], [dnl
1161 Variable,Description,,Position
1162 num1,Format: F8.0,,1
1163 num2,Format: F8.0,,2
1164 str4,Format: A4,,3
1165 str8,Format: A8,,4
1166 str15,Format: A15,,5
1167
1168 Table: Data List
1169 num1,num2,str4,str8,str15
1170 1,100,,abcdefgh,0123   @&t@
1171 .,251,jklm,nopqrstu,vwxyzABC       @&t@
1172 101,102,DEFG,HIJKLMNO,PQRSTUV
1173 ])
1174 done
1175 AT_CLEANUP
1176
1177 AT_SETUP([compressed data, other bias])
1178 AT_KEYWORDS([sack synthetic system file positive])
1179 AT_DATA([sys-file.sack], [dnl
1180 dnl File header.
1181 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1182 2; dnl Layout code
1183 6; dnl Nominal case size
1184 1; dnl Not compressed
1185 0; dnl Not weighted 
1186 -1; dnl Unspecified number of cases.
1187 50.0; dnl Bias.
1188 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
1189 i8 0 *3;
1190
1191 dnl Numeric variables.
1192 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1193 2; 0; 0; 0; 0x050800 *2; s8 "NUM2";
1194
1195 dnl String variable.
1196 2; 4; 0; 0; 0x010400 *2; s8 "STR4";
1197 2; 8; 0; 0; 0x010800 *2; s8 "STR8";
1198 2; 15; 0; 0; 0x010f00 *2; s8 "STR15";
1199 2; -1; 0; 0; 0; 0; s8 "";
1200
1201 dnl Dictionary termination record.
1202 999; 0;
1203
1204 dnl Compressed data.
1205 i8 1 100 254 253 254 253; i8 255 251; "abcdefgh"; s8 "0123";
1206 i8 253 253 253 254; i8 101 102 253 253; s8 "jklm"; s8 "nopqrstu";
1207 s8 "vwxyzABC"; s8 "DEFG"; s8 "HIJKLMNO";
1208 i8 254 253 252 0 0 0 0 0; s8 "PQRSTUVW";
1209
1210 ])
1211 for variant in \
1212         "be 668b85e3dee0797883e9933a096b8c18" \
1213         "le 5e7a9c4e88cd2dbc2322943da663868e"
1214 do
1215   set $variant
1216   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
1217 ])
1218   AT_DATA([sys-file.sps], [dnl
1219 GET FILE='sys-file.sav'.
1220 DISPLAY DICTIONARY.
1221 LIST.
1222 ])
1223   AT_CHECK([pspp -o pspp.csv sys-file.sps], [0], 
1224     [warning: `sys-file.sav' near offset 0x54: Compression bias is not the usual value of 100, or system file uses unrecognized floating-point format.
1225 ])
1226   AT_CHECK([grep -v Measure pspp.csv | grep -v Display], [0], [dnl
1227 "warning: `sys-file.sav' near offset 0x54: Compression bias is not the usual value of 100, or system file uses unrecognized floating-point format."
1228
1229 Variable,Description,,Position
1230 num1,Format: F8.0,,1
1231 num2,Format: F8.0,,2
1232 str4,Format: A4,,3
1233 str8,Format: A8,,4
1234 str15,Format: A15,,5
1235
1236 Table: Data List
1237 num1,num2,str4,str8,str15
1238 -49,50,,abcdefgh,0123   @&t@
1239 .,201,jklm,nopqrstu,vwxyzABC       @&t@
1240 51,52,DEFG,HIJKLMNO,PQRSTUV
1241 ])
1242 done
1243 AT_CLEANUP
1244 \f
1245 AT_BANNER([system file reader - negative])
1246
1247 AT_SETUP([misplaced type 4 record])
1248 AT_KEYWORDS([sack synthetic system file negative])
1249 AT_DATA([sys-file.sack], [dnl
1250 dnl File header.
1251 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1252 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1253
1254 dnl Numeric variable.
1255 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1256
1257 dnl Type 4 record.
1258 >>4<<;
1259 ])
1260 for variant in \
1261         "be 6e0bb549fff1fd1af333d51b8a6e0f43" \
1262         "le 7b62734edcee2a1689c463f2866d11b8"
1263 do
1264   set $variant
1265   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
1266 ])
1267   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1268 ])
1269   AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
1270    [error: `sys-file.sav' near offset 0xd4: Misplaced type 4 record.
1271
1272 sys-file.sps:1: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
1273 ])
1274 done
1275 AT_CLEANUP
1276
1277 AT_SETUP([bad record type])
1278 AT_KEYWORDS([sack synthetic system file negative])
1279 AT_DATA([sys-file.sack], [dnl
1280 dnl File header.
1281 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1282 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1283
1284 dnl Numeric variable.
1285 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1286
1287 dnl Type 8 record (not a valid type).
1288 >>8<<;
1289 ])
1290 for variant in \
1291         "be dc8f078c23046ee7db74ec1003178a11" \
1292         "le dc7f111642f0629f4370630fd092eee3"
1293 do
1294   set $variant
1295   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
1296 ])
1297   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1298 ])
1299   AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
1300    [error: `sys-file.sav' near offset 0xd4: Unrecognized record type 8.
1301
1302 sys-file.sps:1: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
1303 ])
1304 done
1305 AT_CLEANUP
1306
1307 AT_SETUP([wrong number of variable positions])
1308 AT_KEYWORDS([sack synthetic system file negative])
1309 AT_DATA([sys-file.sack], [dnl
1310 dnl File header.
1311 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1312 2; >>2<<; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1313
1314 dnl Numeric variable.
1315 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1316
1317 dnl End of dictionary.
1318 999; 0;
1319 ])
1320 for variant in \
1321         "be c57e91aa426f61813c3ad91ea3a56dda" \
1322         "le 5d1a6c114b135b219473c8ad5bb44bda"
1323 do
1324   set $variant
1325   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
1326 ])
1327   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1328 ])
1329   AT_CHECK([pspp -O format=csv sys-file.sps], [0], 
1330    [warning: `sys-file.sav': File header claims 2 variable positions but 1 were read from file.
1331 ])
1332 done
1333 AT_CLEANUP
1334
1335 AT_SETUP([variable name may not begin with `#'])
1336 AT_KEYWORDS([sack synthetic system file negative])
1337 AT_DATA([sys-file.sack], [dnl
1338 dnl File header.
1339 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1340 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1341
1342 dnl Numeric variable.
1343 2; 0; 0; 0; 0x050800 *2; s8 >>"$UM1"<<;
1344
1345 dnl End of dictionary.
1346 999; 0;
1347 ])
1348 for variant in \
1349         "be decb7ac6defa1ab3cc7a386d1843c1ae" \
1350         "le 5279b6275633bac55d167faebccfdb14"
1351 do
1352   set $variant
1353   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
1354 ])
1355   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1356 ])
1357   AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
1358    [error: `sys-file.sav' near offset 0xb4: Invalid variable name `$UM1'.
1359
1360 sys-file.sps:1: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
1361 ])
1362 done
1363 AT_CLEANUP
1364
1365 AT_SETUP([variable name may not be reserved word])
1366 AT_KEYWORDS([sack synthetic system file negative])
1367 AT_DATA([sys-file.sack], [dnl
1368 dnl File header.
1369 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1370 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1371
1372 dnl Numeric variable.
1373 2; 0; 0; 0; 0x050800 *2; s8 >>"TO"<<;
1374
1375 dnl End of dictionary.
1376 999; 0;
1377 ])
1378 for variant in \
1379         "be 57e6ad709668bbf538e2efee4af49916" \
1380         "le 523f14b611efa380bbadf7a16ea43fed"
1381 do
1382   set $variant
1383   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
1384 ])
1385   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1386 ])
1387   AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
1388    [error: `sys-file.sav' near offset 0xb4: Invalid variable name `TO'.
1389
1390 sys-file.sps:1: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
1391 ])
1392 done
1393 AT_CLEANUP
1394
1395 AT_SETUP([variable width must be between 0 and 255])
1396 AT_KEYWORDS([sack synthetic system file negative])
1397 AT_DATA([sys-file.sack], [dnl
1398 dnl File header.
1399 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1400 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1401
1402 dnl String variable with invalid width 256.
1403 2; 256; 0; 0; 0x050800 *2; s8 "VAR1";
1404
1405 dnl End of dictionary.
1406 999; 0;
1407 ])
1408 for variant in \
1409         "be 170bb18589ba264a0ed2d57b41fe77e1" \
1410         "le 9528b4b5936ef5630bbd3bdd60a123c3"
1411 do
1412   set $variant
1413   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
1414 ])
1415   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1416 ])
1417   AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
1418    [error: `sys-file.sav' near offset 0xb4: Bad width 256 for variable VAR1.
1419
1420 sys-file.sps:1: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
1421 ])
1422 done
1423 AT_CLEANUP
1424
1425 AT_SETUP([duplicate variable name])
1426 AT_KEYWORDS([sack synthetic system file negative])
1427 AT_DATA([sys-file.sack], [dnl
1428 dnl File header.
1429 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1430 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1431
1432 dnl Numeric variables.
1433 2; 0; 0; 0; 0x050800 *2; s8 "VAR1";
1434 2; 0; 0; 0; 0x050800 *2; s8 "VAR1";
1435
1436 dnl End of dictionary.
1437 999; 0;
1438 ])
1439 for variant in \
1440         "be d8f5fd768ab1d641f9330a4840c71343" \
1441         "le f01e123d384cdaa7c2f7fc4791325ebf"
1442 do
1443   set $variant
1444   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
1445 ])
1446   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1447 ])
1448   AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
1449    [error: `sys-file.sav' near offset 0xd4: Duplicate variable name `VAR1'.
1450
1451 sys-file.sps:1: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
1452 ])
1453 done
1454 AT_CLEANUP
1455
1456 AT_SETUP([variable label indicator not 0 or 1])
1457 AT_KEYWORDS([sack synthetic system file negative])
1458 AT_DATA([sys-file.sack], [dnl
1459 dnl File header.
1460 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1461 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1462
1463 dnl Numeric variable.
1464 2; 0; >>2<<; 0; 0x050800 *2; s8 "VAR1";
1465
1466 dnl End of dictionary.
1467 999; 0;
1468 ])
1469 for variant in \
1470         "be 3c5ff8d8f146457a385ca92d3d23ca8a" \
1471         "le 37e9f956d321ae57b0bf7fe2384e892b"
1472 do
1473   set $variant
1474   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
1475 ])
1476   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1477 ])
1478   AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
1479    [error: `sys-file.sav' near offset 0xb4: Variable label indicator field is not 0 or 1.
1480
1481 sys-file.sps:1: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
1482 ])
1483 done
1484 AT_CLEANUP
1485
1486 AT_SETUP([invalid numeric missing value indicator])
1487 AT_KEYWORDS([sack synthetic system file negative])
1488 AT_DATA([sys-file.sack], [dnl
1489 dnl File header.
1490 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1491 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1492
1493 dnl Numeric variable.
1494 2; 0; 0; >>-1<<; 0x050800 *2; s8 "VAR1";
1495
1496 dnl End of dictionary.
1497 999; 0;
1498 ])
1499 for variant in \
1500         "be d1d0d4aedf9f053452c4b1e658ade5e2" \
1501         "le df697575499fe12921185a3d23a5d61d"
1502 do
1503   set $variant
1504   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
1505 ])
1506   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1507 ])
1508   AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
1509    ["error: `sys-file.sav' near offset 0xb4: Numeric missing value indicator field is not -3, -2, 0, 1, 2, or 3."
1510
1511 sys-file.sps:1: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
1512 ])
1513 done
1514 AT_CLEANUP
1515
1516 AT_SETUP([invalid string missing value indicator])
1517 AT_KEYWORDS([sack synthetic system file negative])
1518 AT_DATA([sys-file.sack], [dnl
1519 dnl File header.
1520 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1521 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1522
1523 dnl String variable.
1524 2; 8; 0; >>4<<; 0x010800 *2; s8 "VAR1";
1525
1526 dnl End of dictionary.
1527 999; 0;
1528 ])
1529 for variant in \
1530         "be f833033be7b102fae19159989f62faa6" \
1531         "le 9704ba828bb7a36ef0262838f6b7936b"
1532 do
1533   set $variant
1534   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
1535 ])
1536   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1537 ])
1538   AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
1539    ["error: `sys-file.sav' near offset 0xb4: String missing value indicator field is not 0, 1, 2, or 3."
1540
1541 sys-file.sps:1: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
1542 ])
1543 done
1544 AT_CLEANUP
1545
1546 AT_SETUP([missing string continuation record])
1547 AT_KEYWORDS([sack synthetic system file negative])
1548 AT_DATA([sys-file.sack], [dnl
1549 dnl File header.
1550 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1551 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1552
1553 dnl String variable.
1554 2; 10; 0; 0; 0x010a00 *2; s8 "VAR1";
1555 >>2; 0; 0; 0; 0x050800 *2; s8 "VAR2";<<
1556
1557 dnl End of dictionary.
1558 999; 0;
1559 ])
1560 for variant in \
1561         "be c8f9ad2b2acd2918055e2b78c1e0b4b8" \
1562         "le 1afab4d6aee90a6fe8d2dbf229e06409"
1563 do
1564   set $variant
1565   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
1566 ])
1567   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1568 ])
1569   AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
1570    [error: `sys-file.sav' near offset 0xb4: Missing string continuation record.
1571
1572 sys-file.sps:1: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
1573 ])
1574 done
1575 AT_CLEANUP
1576
1577 AT_SETUP([unknown variable format])
1578 AT_KEYWORDS([sack synthetic system file negative])
1579 AT_DATA([sys-file.sack], [dnl
1580 dnl File header.
1581 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1582 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1583
1584 dnl Numeric variable.
1585 2; 0; 0; 0; >>0xff0800<< *2; s8 "VAR1";
1586
1587 dnl End of dictionary.
1588 999; 0;
1589 ])
1590 for variant in \
1591         "be fcf94b3ff11b7e2ff50c226b609cff1e" \
1592         "le 88fc97cc80d5a170e53a7cc89e204b0d"
1593 do
1594   set $variant
1595   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
1596 ])
1597   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1598 ])
1599   AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
1600    [error: `sys-file.sav' near offset 0xc0: Unknown variable format 255.
1601
1602 sys-file.sps:1: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
1603 ])
1604 done
1605 AT_CLEANUP
1606
1607 AT_SETUP([invalid numeric variable format])
1608 AT_KEYWORDS([sack synthetic system file negative])
1609 AT_DATA([sys-file.sack], [dnl
1610 dnl File header.
1611 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1612 2; 3; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1613
1614 dnl Numeric variable, string formats.
1615 2; 0; 0; 0; >>0x010800<<; >>0x021000<<; s8 "VAR1";
1616
1617 dnl String variable, numeric formats.
1618 2; 4; 0; 0; >>0x050800<<; >>0x110a01<<; s8 "STR1";
1619
1620 dnl String variable, wrong width formats.
1621 2; 4; 0; 0; >>0x010800<<; >>0x020400<<; s8 "STR2";
1622
1623 dnl End of dictionary.
1624 999; 0;
1625 ])
1626 for variant in \
1627         "be 0c36a39ec9118eb4a83f10a9483b5a37" \
1628         "le 1d498d60eeb2c88e0479f113fb3ffe4b"
1629 do
1630   set $variant
1631   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
1632 ])
1633   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1634 ])
1635   AT_CHECK([pspp -O format=csv sys-file.sps], [0], 
1636    [warning: `sys-file.sav' near offset 0xc0: Numeric variable VAR1 has invalid print format A8.
1637
1638 warning: `sys-file.sav' near offset 0xc4: Numeric variable VAR1 has invalid write format AHEX16.
1639
1640 warning: `sys-file.sav' near offset 0xe0: String variable STR1 has invalid print format F8.0.
1641
1642 warning: `sys-file.sav' near offset 0xe4: String variable STR1 has invalid write format E10.1.
1643
1644 warning: `sys-file.sav' near offset 0x100: String variable STR2 has invalid print format A8.
1645
1646 warning: `sys-file.sav' near offset 0x104: String variable STR2 has invalid write format AHEX4.
1647 ])
1648 done
1649 AT_CLEANUP
1650
1651 AT_SETUP([weighting variable must be numeric])
1652 AT_KEYWORDS([sack synthetic system file negative])
1653 AT_DATA([sys-file.sack], [dnl
1654 dnl File header.
1655 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1656 2; 2; 1; >>2<<; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1657
1658 dnl Numeric variable.
1659 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1660
1661 dnl String variable.
1662 2; 4; 0; 0; 0x010400 *2; s8 "STR1";
1663
1664 dnl End of dictionary.
1665 999; 0;
1666 ])
1667 for variant in \
1668         "be 82d30105e46c4896c24f9dcec26c4749" \
1669         "le 32e235119be70050eb78bf4186a5a046"
1670 do
1671   set $variant
1672   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
1673 ])
1674   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1675 ])
1676   AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
1677    [error: `sys-file.sav': Weighting variable must be numeric (not string variable `STR1').
1678
1679 sys-file.sps:1: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
1680 ])
1681 done
1682 AT_CLEANUP
1683
1684 AT_SETUP([bad weighting variable index])
1685 AT_KEYWORDS([sack synthetic system file negative])
1686 AT_DATA([sys-file.sack], [dnl
1687 dnl File header.
1688 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1689 2; 2; 1; >>3<<; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1690
1691 dnl Numeric variable.
1692 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1693
1694 dnl String variable.
1695 2; 4; 0; 0; 0x010400 *2; s8 "STR1";
1696
1697 dnl End of dictionary.
1698 999; 0;
1699 ])
1700 for variant in \
1701         "be cd9af924ff20bc75834aa2c696254c97" \
1702         "le cbe0f2f514f5e95f27644d0b4314bc78"
1703 do
1704   set $variant
1705   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
1706 ])
1707   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1708 ])
1709   AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
1710    [error: `sys-file.sav' near offset 0x4c: Variable index 3 not in valid range 1...2.
1711
1712 sys-file.sps:1: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
1713 ])
1714 done
1715 AT_CLEANUP
1716
1717 AT_SETUP([variable index is long string contination])
1718 AT_KEYWORDS([sack synthetic system file negative])
1719 AT_DATA([sys-file.sack], [dnl
1720 dnl File header.
1721 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1722 2; 2; 1; >>3<<; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1723
1724 dnl Numeric variable.
1725 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1726
1727 dnl Long string variable.
1728 2; 9; 0; 0; 0x010900 *2; s8 "STR1";
1729 (2; -1; 0; 0; 0; 0; s8 "");
1730
1731 dnl End of dictionary.
1732 999; 0;
1733 ])
1734 for variant in \
1735         "be 0c395354df56ea5ff374aafcc535d633" \
1736         "le d977f684ea9d4648ed40f8c6dddde9f7"
1737 do
1738   set $variant
1739   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
1740 ])
1741   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1742 ])
1743   AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
1744    [error: `sys-file.sav' near offset 0x4c: Variable index 3 refers to long string continuation.
1745
1746 sys-file.sps:1: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
1747 ])
1748 done
1749 AT_CLEANUP
1750
1751 AT_SETUP([multiple documents records])
1752 AT_KEYWORDS([sack synthetic system file negative])
1753 AT_DATA([sys-file.sack], [dnl
1754 dnl File header.
1755 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1756 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1757
1758 dnl Numeric variable, no label or missing values.
1759 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1760
1761 dnl Two document records.
1762 (6; 1; s80 "One line of documents") >>* 2<<;
1763
1764 dnl Dictionary termination record.
1765 999; 0;
1766
1767 dnl Data.
1768 1.0;
1769 ])
1770 for variant in \
1771         "be 18aa3348a216ed494efe28285b348fa8" \
1772         "le 19b21522bcef1dcc60af328f923f307e"
1773 do
1774   set $variant
1775   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
1776 ])
1777   AT_DATA([sys-file.sps], [dnl
1778 GET FILE='sys-file.sav'.
1779 ])
1780   AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
1781 error: `sys-file.sav' near offset 0x12c: Duplicate type 6 (document) record.
1782
1783 sys-file.sps:1: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
1784 ])
1785 done
1786 AT_CLEANUP
1787
1788
1789 AT_SETUP([empty document record])
1790 AT_KEYWORDS([sack synthetic system file negative])
1791 AT_DATA([sys-file.sack], [dnl
1792 dnl File header.
1793 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1794 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1795
1796 dnl Numeric variable, no label or missing values.
1797 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1798
1799 dnl Empty document record.
1800 6; >>0<<;
1801
1802 dnl Dictionary termination record.
1803 999; 0;
1804
1805 dnl Data.
1806 1.0;
1807 ])
1808 for variant in \
1809         "be d8ef29c1b97f9ed226cbd938c9c49b6e" \
1810         "le f6a560c5b62e2c472429d85294f36e61"
1811 do
1812   set $variant
1813   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
1814 ])
1815   AT_DATA([sys-file.sps], [dnl
1816 GET FILE='sys-file.sav'.
1817 ])
1818   AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
1819 error: `sys-file.sav' near offset 0xd4: Number of document lines (0) must be greater than 0 and less than 26843545.
1820
1821 sys-file.sps:1: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
1822 ])
1823 done
1824 AT_CLEANUP
1825
1826 AT_SETUP([extension record too large])
1827 AT_KEYWORDS([sack synthetic system file negative])
1828 AT_DATA([sys-file.sack], [dnl
1829 dnl File header.
1830 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1831 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1832
1833 dnl Numeric variable, no label or missing values.
1834 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1835
1836 dnl Too-large extension record.
1837 7; 3; >>0xfffff000 * 2<<;
1838 ])
1839 for variant in \
1840         "be 5a6679dc41ac349b0b73fc430937c05c" \
1841         "le d4769c7f650cfbf160e0386d0d33be04"
1842 do
1843   set $variant
1844   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
1845 ])
1846   AT_DATA([sys-file.sps], [dnl
1847 GET FILE='sys-file.sav'.
1848 ])
1849   AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
1850 error: `sys-file.sav' near offset 0xd8: Record type 7 subtype 3 too large.
1851
1852 sys-file.sps:1: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
1853 ])
1854 done
1855 AT_CLEANUP
1856
1857 AT_SETUP([unknown extension record])
1858 AT_KEYWORDS([sack synthetic system file negative])
1859 AT_DATA([sys-file.sack], [dnl
1860 dnl File header.
1861 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1862 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1863
1864 dnl Numeric variable, no label or missing values.
1865 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1866
1867 dnl Unknown extension record type.
1868 7; 30; 1; 1; i8 0;
1869
1870 dnl End of dictionary.
1871 999; 0;
1872 ])
1873 for variant in \
1874         "be ac8395e27677408189bcb8655e56cc0e" \
1875         "le e308bfcd51f1e3c28d7379c29271f9d6"
1876 do
1877   set $variant
1878   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
1879 ])
1880   AT_DATA([sys-file.sps], [dnl
1881 GET FILE='sys-file.sav'.
1882 ])
1883   AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
1884 "warning: `sys-file.sav' near offset 0xd8: Unrecognized record type 7, subtype 30.  Please send a copy of this file, and the syntax which created it to bug-gnu-pspp@gnu.org."
1885 ])
1886 done
1887 AT_CLEANUP
1888
1889 AT_SETUP([bad machine integer info size])
1890 AT_KEYWORDS([sack synthetic system file negative])
1891 AT_DATA([sys-file.sack], [dnl
1892 dnl File header.
1893 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1894 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1895
1896 dnl Numeric variable, no label or missing values.
1897 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1898
1899 dnl Machine integer info record.
1900 7; 3; 4; >>9<<; 1; 2; 3; -1; 1; 1; ENDIAN; 1252; >>1234<<;
1901
1902 dnl End of dictionary.
1903 999; 0;
1904 ])
1905 for variant in \
1906         "be 21ec84826886b0a266d1360f8279d769" \
1907         "le 15dcba7b2b89b7d8a21ebcc872f515af"
1908 do
1909   set $variant
1910   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [ignore])
1911   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1912 ])
1913   AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
1914 "warning: `sys-file.sav' near offset 0xd8: Record type 7, subtype 3 has bad count 9 (expected 8)."
1915 ])
1916 done
1917 AT_CLEANUP
1918
1919 AT_SETUP([bad machine integer info float format])
1920 AT_KEYWORDS([sack synthetic system file negative])
1921 AT_DATA([sys-file.sack], [dnl
1922 dnl File header.
1923 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1924 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1925
1926 dnl Numeric variable, no label or missing values.
1927 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1928
1929 dnl Machine integer info record.
1930 7; 3; 4; 8; 1; 2; 3; -1; >>2<<; 1; ENDIAN; 1252;
1931
1932 dnl End of dictionary.
1933 999; 0;
1934 ])
1935 for variant in \
1936         "be d510ed28278649eee997fb6881a4c04f" \
1937         "le fbf1eca561a4e243b7ae844ed1677035"
1938 do
1939   set $variant
1940   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [ignore])
1941   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1942 ])
1943   AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
1944 error: `sys-file.sav' near offset 0xd8: Floating-point representation indicated by system file (2) differs from expected (1).
1945
1946 sys-file.sps:1: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
1947 ])
1948 done
1949 AT_CLEANUP
1950
1951 AT_SETUP([bad machine integer info endianness])
1952 AT_KEYWORDS([sack synthetic system file negative])
1953 AT_DATA([sys-file.sack], [dnl
1954 dnl File header.
1955 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1956 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1957
1958 dnl Numeric variable, no label or missing values.
1959 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1960
1961 dnl Machine integer info record.
1962 7; 3; 4; 8; 1; 2; 3; -1; 1; 1; >>3<<; 1252;
1963
1964 dnl End of dictionary.
1965 999; 0;
1966 ])
1967 for variant in \
1968         "be 855123d16d5e1560b91d60753dad79ad 1" \
1969         "le d6626b4fa2e46a91f26c2fc609b2f1e0 2"
1970 do
1971   set $variant
1972   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
1973 ])
1974   AT_DATA([sys-file.sps], [dnl
1975 GET FILE='sys-file.sav'.
1976 DISPLAY DICTIONARY.
1977 ])
1978   AT_CHECK_UNQUOTED([pspp -O format=csv sys-file.sps], [0], [dnl
1979 warning: \`sys-file.sav' near offset 0xd8: Integer format indicated by system file (3) differs from expected ($[3]).
1980
1981 Variable,Description,,Position
1982 num1,Format: F8.0,,1
1983 ,Measure: Scale,,
1984 ,Display Alignment: Right,,
1985 ,Display Width: 8,,
1986 ])
1987 done
1988 AT_CLEANUP
1989
1990
1991 AT_SETUP([bad machine floating-point info size])
1992 AT_KEYWORDS([sack synthetic system file negative])
1993 AT_DATA([sys-file.sack], [dnl
1994 dnl File header.
1995 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1996 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1997
1998 dnl Numeric variable, no label or missing values.
1999 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2000
2001 dnl Machine floating-point info record.
2002 7; 4; 8; >>4<<; SYSMIS; HIGHEST; LOWEST; 0.0;
2003
2004 dnl End of dictionary.
2005 999; 0;
2006 ])
2007 for variant in \
2008         "be 29c9a173638fbb8bb1efe1176c4d670f" \
2009         "le 5cb49eb1084e5b9cd573a54705ff86a7"
2010 do
2011   set $variant
2012   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [ignore])
2013   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2014 ])
2015   AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2016 "warning: `sys-file.sav' near offset 0xd8: Record type 7, subtype 4 has bad count 4 (expected 3)."
2017 ])
2018 done
2019 AT_CLEANUP
2020
2021 AT_SETUP([wrong special floating point values])
2022 AT_KEYWORDS([sack synthetic system file negative])
2023 AT_DATA([sys-file.sack], [dnl
2024 dnl File header.
2025 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2026 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2027
2028 dnl Numeric variable, no label or missing values.
2029 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2030
2031 dnl Machine floating-point info record.
2032 7; 4; 8; 3; >>0.0<<; >>1.0<<; >>2.0<<;
2033
2034 dnl End of dictionary.
2035 999; 0;
2036 ])
2037 for variant in \
2038         "be 1e7452d9bb0a2397bf6084a25437514e" \
2039         "le f59f9a83f723cde1611869ff6d91d325"
2040 do
2041   set $variant
2042   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
2043 ])
2044   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2045 ])
2046   AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2047 warning: `sys-file.sav' near offset 0xd8: File specifies unexpected value 0 as SYSMIS.
2048
2049 warning: `sys-file.sav' near offset 0xd8: File specifies unexpected value 1 as HIGHEST.
2050
2051 warning: `sys-file.sav' near offset 0xd8: File specifies unexpected value 2 as LOWEST.
2052 ])
2053 done
2054 AT_CLEANUP
2055
2056 AT_SETUP([bad mrsets name])
2057 AT_KEYWORDS([sack synthetic system file negative multiple response])
2058 AT_DATA([sys-file.sack], [dnl
2059 dnl File header.
2060 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2061 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2062
2063 dnl Numeric variable, no label or missing values.
2064 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2065
2066 dnl Multiple response sets.
2067 7; 7; 1; COUNT("a=C");
2068 7; 19; 1; COUNT("xyz=D");
2069
2070 999; 0;
2071 ])
2072 for variant in \
2073         "be 15a9bf44d0cd6186a60629b77079c5a5" \
2074         "le 161c99aca5e7a3684df096137e72ce5b"
2075 do
2076   set $variant
2077   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
2078 ])
2079   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2080 ])
2081   AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2082 warning: `sys-file.sav' near offset 0xd8: `a' does not begin with `$' at UTF-8 offset 2 in MRSETS record.
2083
2084 warning: `sys-file.sav' near offset 0xeb: `xyz' does not begin with `$' at UTF-8 offset 4 in MRSETS record.
2085 ])
2086 done
2087 AT_CLEANUP
2088
2089 AT_SETUP([missing space after C in mrsets])
2090 AT_KEYWORDS([sack synthetic system file negative multiple response])
2091 AT_DATA([sys-file.sack], [dnl
2092 dnl File header.
2093 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2094 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2095
2096 dnl Numeric variable, no label or missing values.
2097 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2098
2099 dnl Multiple response sets.
2100 7; 7; 1; COUNT("$a=Cx");
2101
2102 999; 0;
2103 ])
2104 for variant in \
2105         "be c5e5656ba3d74c3a967850f29ad89970" \
2106         "le 29f110509c3d6893a7d21ae2d66aad9d"
2107 do
2108   set $variant
2109   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
2110 ])
2111   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2112 ])
2113   AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2114 warning: `sys-file.sav' near offset 0xd8: Missing space following `C' at UTF-8 offset 4 in MRSETS record.
2115 ])
2116 done
2117 AT_CLEANUP
2118
2119 AT_SETUP([missing space after E in mrsets])
2120 AT_KEYWORDS([sack synthetic system file negative multiple response])
2121 AT_DATA([sys-file.sack], [dnl
2122 dnl File header.
2123 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2124 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2125
2126 dnl Numeric variable, no label or missing values.
2127 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2128
2129 dnl Multiple response sets.
2130 7; 7; 1; COUNT("$a=Ex");
2131
2132 999; 0;
2133 ])
2134 for variant in \
2135         "be a9e1dc63e2524882a5e3d2949a2da9d4" \
2136         "le ac709ca1928f65f47a8c8efdd9454b50"
2137 do
2138   set $variant
2139   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
2140 ])
2141   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2142 ])
2143   AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2144 warning: `sys-file.sav' near offset 0xd8: Missing space following `E' at UTF-8 offset 4 in MRSETS record.
2145 ])
2146 done
2147 AT_CLEANUP
2148
2149 AT_SETUP([unexpected label source in mrsets])
2150 AT_KEYWORDS([sack synthetic system file negative multiple response])
2151 AT_DATA([sys-file.sack], [dnl
2152 dnl File header.
2153 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2154 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2155
2156 dnl Numeric variable, no label or missing values.
2157 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2158
2159 dnl Multiple response sets.
2160 7; 7; 1; COUNT("$a=E 2");
2161
2162 999; 0;
2163 ])
2164 for variant in \
2165         "be 8c710e85a0a1609d0d03dec80aaf5f94" \
2166         "le 4682440b82f22d4bd2ac56afb7fa3152"
2167 do
2168   set $variant
2169   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
2170 ])
2171   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2172 ])
2173   AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2174 warning: `sys-file.sav' near offset 0xd8: Unexpected label source value `2' following `E' at UTF-8 offset 7 in MRSETS record.
2175
2176 warning: `sys-file.sav' near offset 0xd8: Expecting digit at UTF-8 offset 7 in MRSETS record.
2177 ])
2178 done
2179 AT_CLEANUP
2180
2181 AT_SETUP([bad type character in mrsets])
2182 AT_KEYWORDS([sack synthetic system file negative multiple response])
2183 AT_DATA([sys-file.sack], [dnl
2184 dnl File header.
2185 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2186 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2187
2188 dnl Numeric variable, no label or missing values.
2189 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2190
2191 dnl Multiple response sets.
2192 7; 7; 1; COUNT("$a=");
2193
2194 999; 0;
2195 ])
2196 for variant in \
2197         "be fc5e5200d8f56b9a5a713e4a95313a3b" \
2198         "le 578a61e8a06b20216612f566c2050879"
2199 do
2200   set $variant
2201   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
2202 ])
2203   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2204 ])
2205   AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2206 "warning: `sys-file.sav' near offset 0xd8: Missing `C', `D', or `E' at UTF-8 offset 3 in MRSETS record."
2207 ])
2208 done
2209 AT_CLEANUP
2210
2211 AT_SETUP([bad counted string length in mrsets])
2212 AT_KEYWORDS([sack synthetic system file negative multiple response])
2213 AT_DATA([sys-file.sack], [dnl
2214 dnl File header.
2215 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2216 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2217
2218 dnl Numeric variable, no label or missing values.
2219 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2220
2221 dnl Multiple response sets.
2222 7; 7; 1; COUNT("$a=Dx");
2223
2224 999; 0;
2225 ])
2226 for variant in \
2227         "be 23d0e2f65c7c5f93bbedcc0f2b260c69" \
2228         "le c3860c1d80e08842264948056e72c0db"
2229 do
2230   set $variant
2231   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
2232 ])
2233   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2234 ])
2235   AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2236 warning: `sys-file.sav' near offset 0xd8: Expecting digit at UTF-8 offset 4 in MRSETS record.
2237 ])
2238 done
2239 AT_CLEANUP
2240
2241 AT_SETUP([missing space in counted string in mrsets])
2242 AT_KEYWORDS([sack synthetic system file negative multiple response])
2243 AT_DATA([sys-file.sack], [dnl
2244 dnl File header.
2245 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2246 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2247
2248 dnl Numeric variable, no label or missing values.
2249 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2250
2251 dnl Multiple response sets.
2252 7; 7; 1; COUNT("$a=D1x");
2253
2254 999; 0;
2255 ])
2256 for variant in \
2257         "be c9ce001723763e0698878b7e43a887e8" \
2258         "le e258a1e4491d5a1d1e7d2272ef631a22"
2259 do
2260   set $variant
2261   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
2262 ])
2263   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2264 ])
2265   AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2266 warning: `sys-file.sav' near offset 0xd8: Expecting space at UTF-8 offset 5 in MRSETS record.
2267 ])
2268 done
2269 AT_CLEANUP
2270
2271 AT_SETUP([counted string too long in mrsets])
2272 AT_KEYWORDS([sack synthetic system file negative multiple response])
2273 AT_DATA([sys-file.sack], [dnl
2274 dnl File header.
2275 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2276 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2277
2278 dnl Numeric variable, no label or missing values.
2279 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2280
2281 dnl Multiple response sets.
2282 7; 7; 1; COUNT("$a=D4 abc");
2283
2284 999; 0;
2285 ])
2286 for variant in \
2287         "be 196d1266fa0e8e315769dcbe3130e3df" \
2288         "le 23df1ba7b77a26da8ce1c2cfbcaadce0"
2289 do
2290   set $variant
2291   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
2292 ])
2293   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2294 ])
2295   AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2296 warning: `sys-file.sav' near offset 0xd8: 4-byte string starting at UTF-8 offset 6 exceeds record length 9.
2297 ])
2298 done
2299 AT_CLEANUP
2300
2301 AT_SETUP([missing space after counted string in mrsets])
2302 AT_KEYWORDS([sack synthetic system file negative multiple response])
2303 AT_DATA([sys-file.sack], [dnl
2304 dnl File header.
2305 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2306 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2307
2308 dnl Numeric variable, no label or missing values.
2309 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2310
2311 dnl Multiple response sets.
2312 7; 7; 1; COUNT("$a=D3 abcx");
2313
2314 999; 0;
2315 ])
2316 for variant in \
2317         "be 86314bb0bbdfad48c10af8b8d8106d6e" \
2318         "le 2b8d05ff501ca78e51f7110ce88a2364"
2319 do
2320   set $variant
2321   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
2322 ])
2323   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2324 ])
2325   AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2326 warning: `sys-file.sav' near offset 0xd8: Expecting space at UTF-8 offset 9 following 3-byte string.
2327 ])
2328 done
2329 AT_CLEANUP
2330
2331 AT_SETUP([missing newline after variable name in mrsets])
2332 AT_KEYWORDS([sack synthetic system file negative multiple response])
2333 AT_DATA([sys-file.sack], [dnl
2334 dnl File header.
2335 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2336 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2337
2338 dnl Numeric variable, no label or missing values.
2339 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2340
2341 dnl Multiple response sets.
2342 7; 7; 1; COUNT("$a=C 0  NUM1");
2343
2344 999; 0;
2345 ])
2346 for variant in \
2347         "be cea939cf3e6a5f88cb45e8fa871c5e13" \
2348         "le 52135afec082f50f37eafacadbb2cd65"
2349 do
2350   set $variant
2351   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
2352 ])
2353   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2354 ])
2355   AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2356 warning: `sys-file.sav' near offset 0xd8: Missing new-line parsing variable names at UTF-8 offset 14 in MRSETS record.
2357
2358 warning: `sys-file.sav' near offset 0xd8: MRSET $a has only 1 variables.
2359 ])
2360 done
2361 AT_CLEANUP
2362
2363 AT_SETUP([duplicate variable name in mrsets])
2364 AT_KEYWORDS([sack synthetic system file negative multiple response])
2365 AT_DATA([sys-file.sack], [dnl
2366 dnl File header.
2367 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2368 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2369
2370 dnl Numeric variable, no label or missing values.
2371 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2372
2373 dnl Multiple response sets.
2374 7; 7; 1; COUNT("$a=C 0  NUM1 NUM1"; i8 10);
2375
2376 999; 0;
2377 ])
2378 for variant in \
2379         "be 4b1b5fa2dc22cf0afdd35422290b0a29" \
2380         "le e4304b57976440a036f25f8dd8ac1404"
2381 do
2382   set $variant
2383   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
2384 ])
2385   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2386 ])
2387   AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2388 warning: `sys-file.sav' near offset 0xd8: Duplicate variable name NUM1 at UTF-8 offset 18 in MRSETS record.
2389
2390 warning: `sys-file.sav' near offset 0xd8: MRSET $a has only 1 variables.
2391 ])
2392 done
2393 AT_CLEANUP
2394
2395 AT_SETUP([mixed variable types in mrsets])
2396 AT_KEYWORDS([sack synthetic system file negative multiple response])
2397 AT_DATA([sys-file.sack], [dnl
2398 dnl File header.
2399 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2400 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2401
2402 dnl Variables.
2403 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2404 2; 8; 0; 0; 0x010800 *2; s8 "STR1";
2405
2406 dnl Multiple response sets.
2407 7; 7; 1; COUNT("$a=C 0  NUM1 STR1"; i8 10);
2408
2409 999; 0;
2410 ])
2411 for variant in \
2412         "be 0f130e967e4097823f85b8711eb20727" \
2413         "le 4dc987b4303fd115f1cae9be3963acc9"
2414 do
2415   set $variant
2416   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
2417 ])
2418   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2419 ])
2420   AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2421 warning: `sys-file.sav' near offset 0xf8: MRSET $a contains both string and numeric variables.
2422
2423 warning: `sys-file.sav' near offset 0xf8: MRSET $a has only 1 variables.
2424 ])
2425 done
2426 AT_CLEANUP
2427
2428 AT_SETUP([missing newline after variable name in mrsets])
2429 AT_KEYWORDS([sack synthetic system file negative multiple response])
2430 AT_DATA([sys-file.sack], [dnl
2431 dnl File header.
2432 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2433 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2434
2435 dnl Numeric variable, no label or missing values.
2436 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2437
2438 dnl Multiple response sets.
2439 7; 7; 1; COUNT("$a=C 0  NUM1"; i8 10);
2440
2441 999; 0;
2442 ])
2443 for variant in \
2444         "be 3a891e0a467afb3d622629c70f329ada" \
2445         "le 432998ec08370510411af4f5207c015e"
2446 do
2447   set $variant
2448   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
2449 ])
2450   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2451 ])
2452   AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2453 warning: `sys-file.sav' near offset 0xd8: MRSET $a has only 1 variables.
2454 ])
2455 done
2456 AT_CLEANUP
2457
2458 AT_SETUP([only one variable in mrset])
2459 AT_KEYWORDS([sack synthetic system file negative multiple response])
2460 AT_DATA([sys-file.sack], [dnl
2461 dnl File header.
2462 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2463 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2464
2465 dnl Numeric variable, no label or missing values.
2466 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2467
2468 dnl Multiple response sets.
2469 7; 7; 1; COUNT("$a=C 0  NUM1"; i8 10);
2470
2471 999; 0;
2472 ])
2473 for variant in \
2474         "be 3a891e0a467afb3d622629c70f329ada" \
2475         "le 432998ec08370510411af4f5207c015e"
2476 do
2477   set $variant
2478   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
2479 ])
2480   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2481 ])
2482   AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2483 warning: `sys-file.sav' near offset 0xd8: MRSET $a has only 1 variables.
2484 ])
2485 done
2486 AT_CLEANUP
2487
2488 AT_SETUP([wrong display parameter size])
2489 AT_KEYWORDS([sack synthetic system file negative])
2490 AT_DATA([sys-file.sack], [dnl
2491 dnl File header.
2492 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2493 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2494
2495 dnl Numeric variable, no label or missing values.
2496 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2497
2498 dnl Display parameters record.
2499 7; 11; >>8<<; 2; 1.0; 1.0;
2500
2501 dnl End of dictionary.
2502 999; 0;
2503 ])
2504 for variant in \
2505         "be 7c0f1ae47ae11e37d435c4abaceca226" \
2506         "le c29d05a1f8f15ed2201f31f8b787aaa0"
2507 do
2508   set $variant
2509   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
2510 ])
2511   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2512 ])
2513   AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2514 "warning: `sys-file.sav' near offset 0xd8: Record type 7, subtype 11 has bad size 8 (expected 4)."
2515 ])
2516 done
2517 AT_CLEANUP
2518
2519 AT_SETUP([wrong display parameter count])
2520 AT_KEYWORDS([sack synthetic system file negative])
2521 AT_DATA([sys-file.sack], [dnl
2522 dnl File header.
2523 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2524 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2525
2526 dnl Numeric variable, no label or missing values.
2527 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2528
2529 dnl Display parameters record.
2530 7; 11; 4; >>4<<; 1; 1; 2; 2;
2531
2532 dnl End of dictionary.
2533 999; 0;
2534 ])
2535 for variant in \
2536         "be 372b57e73c69b05047b60bf6c596e2a1" \
2537         "le 2a550d8c5ceae4de7ced77df66e49d0f"
2538 do
2539   set $variant
2540   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
2541 ])
2542   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2543 ])
2544   AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2545 warning: `sys-file.sav' near offset 0xd8: Extension 11 has bad count 4 (for 1 variables).
2546 ])
2547 done
2548 AT_CLEANUP
2549
2550 AT_SETUP([wrong display measurement level])
2551 AT_KEYWORDS([sack synthetic system file negative])
2552 AT_DATA([sys-file.sack], [dnl
2553 dnl File header.
2554 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2555 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2556
2557 dnl Numeric variable, no label or missing values.
2558 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2559
2560 dnl Display parameters record.
2561 7; 11; 4; 2; >>4<<; 0;
2562
2563 dnl End of dictionary.
2564 999; 0;
2565 ])
2566 for variant in \
2567         "be d43e7616b03743339f37292dec6c2204" \
2568         "le 821533c29a070cefdd8f07f4e1741d2a"
2569 do
2570   set $variant
2571   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
2572 ])
2573   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2574 ])
2575   AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2576 warning: `sys-file.sav' near offset 0xd8: Invalid variable display parameters for variable 0 (NUM1).  Default parameters substituted.
2577 ])
2578 done
2579 AT_CLEANUP
2580
2581 AT_SETUP([wrong display alignment])
2582 AT_KEYWORDS([sack synthetic system file negative])
2583 AT_DATA([sys-file.sack], [dnl
2584 dnl File header.
2585 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2586 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2587
2588 dnl Numeric variable, no label or missing values.
2589 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2590
2591 dnl Display parameters record.
2592 7; 11; 4; 2; 1; >>-1<<;
2593
2594 dnl End of dictionary.
2595 999; 0;
2596 ])
2597 for variant in \
2598         "be c54bc48b5767e2ec3a9ef31df790cb7c" \
2599         "le a4d8b14af64221abe83adb417d110e10"
2600 do
2601   set $variant
2602   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
2603 ])
2604   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2605 ])
2606   AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2607 warning: `sys-file.sav' near offset 0xd8: Invalid variable display parameters for variable 0 (NUM1).  Default parameters substituted.
2608 ])
2609 done
2610 AT_CLEANUP
2611
2612 AT_SETUP([bad variable name in variable/value pair])
2613 AT_KEYWORDS([sack synthetic system file negative])
2614 AT_DATA([sys-file.sack], [dnl
2615 dnl File header.
2616 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2617 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2618
2619 dnl Numeric variables.
2620 2; 0; 0; 0; 0x050800 *2; s8 "LONGVARI";
2621
2622 dnl Long variable names.
2623 7; 13; 1; COUNT (>>"xyzzy"<<);
2624
2625 dnl Dictionary termination record.
2626 999; 0;
2627 ])
2628 for variant in \
2629         "be b67b6e3c1900e5a9cc691055008f0447" \
2630         "le 26cc52e601f830f9087a0ea2bd9527df"
2631 do
2632   set $variant
2633   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
2634 ])
2635   AT_DATA([sys-file.sps], [dnl
2636 GET FILE='sys-file.sav'.
2637 ])
2638   AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2639 warning: `sys-file.sav' near offset 0xde: Dictionary record refers to unknown variable xyzzy.
2640 ])
2641 done
2642 AT_CLEANUP
2643
2644 AT_SETUP([duplicate long variable name])
2645 AT_KEYWORDS([sack synthetic system file negative])
2646 AT_DATA([sys-file.sack], [dnl
2647 dnl File header.
2648 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2649 2; 4; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2650
2651 dnl Numeric variables.
2652 2; 0; 0; 0; 0x050800 *2; s8 "LONGVARI";
2653 2; 0; 0; 0; 0x050800 *2; s8 "LONGVA_A";
2654 2; 0; 0; 0; 0x050800 *2; s8 "LONGVA_B";
2655 2; 0; 0; 0; 0x050800 *2; s8 "LONGVA_C";
2656
2657 dnl Long variable names.
2658 7; 13; 1; COUNT (
2659 "LONGVARI=_Invalid"; i8 9;
2660 "LONGVA_A=LongVariableName"; i8 9;
2661 "LONGVA_B=LONGVARIABLENAME"; i8 9;
2662 );
2663
2664 dnl Dictionary termination record.
2665 999; 0;
2666 ])
2667 for variant in \
2668         "be 9b4b4daa00084d984efb8f889bcb727c" \
2669         "le c1b1470d5cd615106e9ae507c9948d8e"
2670 do
2671   set $variant
2672   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
2673 ])
2674   AT_DATA([sys-file.sps], [dnl
2675 GET FILE='sys-file.sav'.
2676 ])
2677   AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2678 warning: `sys-file.sav' near offset 0x138: Long variable mapping from LONGVARI to invalid variable name `_Invalid'.
2679
2680 warning: `sys-file.sav' near offset 0x138: Duplicate long variable name `LONGVARIABLENAME'.
2681 ])
2682 done
2683 AT_CLEANUP
2684
2685 AT_SETUP([bad very long string length])
2686 AT_KEYWORDS([sack synthetic system file negative])
2687 AT_DATA([sys-file.sack], [dnl
2688 dnl File header.
2689 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2690 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2691
2692 dnl Numeric variable.
2693 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2694
2695 dnl Very long string map.
2696 7; 14; 1; COUNT (
2697 "NUM1=00000"; i8 0; i8 9;
2698 "NUM1=00255"; i8 0; i8 9;
2699 "NUM1=00256"; i8 0; i8 9;
2700 );
2701
2702 dnl Dictionary termination record.
2703 999; 0;
2704 ])
2705 for variant in \
2706         "be 1309d8d9fb24bcf08952dce9b0f39a94" \
2707         "le 94a39de88f8034001b3e467c4cc04d0f"
2708 do
2709   set $variant
2710   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
2711 ])
2712   AT_DATA([sys-file.sps], [dnl
2713 GET FILE='sys-file.sav'.
2714 ])
2715   AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
2716 warning: `sys-file.sav' near offset 0xd8: NUM1 listed as string of invalid length 00000 in very long string record.
2717
2718 "warning: `sys-file.sav' near offset 0xd8: NUM1 listed in very long string record with width 00255, which requires only one segment."
2719
2720 error: `sys-file.sav' near offset 0xd8: Very long string NUM1 overflows dictionary.
2721
2722 sys-file.sps:1: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
2723 ])
2724 done
2725 AT_CLEANUP
2726
2727 AT_SETUP([bad very long string segment width])
2728 AT_KEYWORDS([sack synthetic system file negative])
2729 AT_DATA([sys-file.sack], [dnl
2730 dnl File header.
2731 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2732 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2733
2734 dnl Variables.
2735 2; 255; 0; 0; 0x01ff00 *2; s8 "STR1";
2736 (2; -1; 0; 0; 0; 0; s8 "") * 31;
2737 2; >>9<<; 0; 0; 0x010900 *2; s8 "STR1_A";
2738 >>2; -1; 0; 0; 0; 0; s8 "";<<
2739
2740 dnl Very long string map.
2741 7; 14; 1; COUNT (
2742 "STR1=00256"; i8 0; i8 9;
2743 );
2744
2745 dnl Dictionary termination record.
2746 999; 0;
2747 ])
2748 for variant in \
2749         "be 1d09a44a46859e6eda28e053dd4b7a8b" \
2750         "le 63b9ac0b3953f3e0d5ee248ebe257794"
2751 do
2752   set $variant
2753   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
2754 ])
2755   AT_DATA([sys-file.sps], [dnl
2756 GET FILE='sys-file.sav'.
2757 ])
2758   AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
2759 error: `sys-file.sav' near offset 0x4f8: Very long string with width 256 has segment 1 of width 9 (expected 4).
2760
2761 sys-file.sps:1: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
2762 ])
2763 done
2764 AT_CLEANUP
2765
2766 AT_SETUP([too many value labels])
2767 dnl Skip the test if multiplying a small number by INT32_MAX would not
2768 dnl cause an overflow in size_t.
2769 AT_SKIP_IF([test $SIZEOF_SIZE_T -gt 4])
2770 AT_KEYWORDS([sack synthetic system file negative])
2771 AT_DATA([sys-file.sack], [dnl
2772 dnl File header.
2773 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2774 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2775
2776 dnl Numeric variable.
2777 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2778 3; >>0x7fffffff<<;
2779 ])
2780 for variant in \
2781         "be 975b2668dde395ddf619977958b37412" \
2782         "le 0c14aa278cfc2a4b801f91c14321f03b"
2783 do
2784   set $variant
2785   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
2786 ])
2787   AT_DATA([sys-file.sps], [dnl
2788 GET FILE='sys-file.sav'.
2789 ])
2790   AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
2791 error: `sys-file.sav' near offset 0xd4: Invalid number of labels 2147483647.
2792
2793 sys-file.sps:1: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
2794 ])
2795 done
2796 AT_CLEANUP
2797
2798 AT_SETUP([missing type 4 record])
2799 AT_KEYWORDS([sack synthetic system file negative])
2800 AT_DATA([sys-file.sack], [dnl
2801 dnl File header.
2802 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2803 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2804
2805 dnl Numeric variable.
2806 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2807
2808 dnl Value label with missing type 4 record.
2809 3; 1; 1.0; i8 3; s7 "one";
2810
2811 dnl End of dictionary.
2812 >>999; 0<<;
2813 ])
2814 for variant in \
2815         "be 5e1286ac92e3f25ff98492bc5019d608" \
2816         "le b33c12f776bbcaa43aa3bfdd4799e0c0"
2817 do
2818   set $variant
2819   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
2820 ])
2821   AT_DATA([sys-file.sps], [dnl
2822 GET FILE='sys-file.sav'.
2823 ])
2824   AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
2825 error: `sys-file.sav' near offset 0xe8: Variable index record (type 4) does not immediately follow value label record (type 3) as it should.
2826
2827 sys-file.sps:1: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
2828 ])
2829 done
2830 AT_CLEANUP
2831
2832 AT_SETUP([value label with no associated variables])
2833 AT_KEYWORDS([sack synthetic system file negative])
2834 AT_DATA([sys-file.sack], [dnl
2835 dnl File header.
2836 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2837 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2838
2839 dnl Numeric variable.
2840 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2841
2842 dnl Value label with no variables.
2843 3; 1; 1.0; i8 3; s7 "one"; 4; >>0<<;
2844 ])
2845 for variant in \
2846         "be b0dcec30a936cbcad21c4f3d6fe10fcf" \
2847         "le 3b9fdfce5c8c248048232fd6eac018e3"
2848 do
2849   set $variant
2850   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
2851 ])
2852   AT_DATA([sys-file.sps], [dnl
2853 GET FILE='sys-file.sav'.
2854 ])
2855   AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
2856 error: `sys-file.sav' near offset 0xec: Number of variables associated with a value label (0) is not between 1 and the number of variables (1).
2857
2858 sys-file.sps:1: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
2859 ])
2860 done
2861 AT_CLEANUP
2862
2863 AT_SETUP([type 4 record names long string variable])
2864 AT_KEYWORDS([sack synthetic system file negative])
2865 AT_DATA([sys-file.sack], [dnl
2866 dnl File header.
2867 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2868 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2869
2870 dnl Long string variable.
2871 2; 9; 0; 0; 0x010900 *2; s8 "STR1";
2872 2; -1; 0; 0; 0; 0; s8 "";
2873
2874 dnl Value label that names long string variable.
2875 3; 1; s8 "xyzzy"; i8 3; s7 "one"; 4; 1; >>1<<;
2876
2877 dnl End of dictionary.
2878 999; 0;
2879 ])
2880 for variant in \
2881         "be 14053a4f09de4c7c4c55281534dd66f4" \
2882         "le 8a61cc994c659fd66307d2f0fd64ce20"
2883 do
2884   set $variant
2885   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [ignore])
2886   AT_DATA([sys-file.sps], [dnl
2887 GET FILE='sys-file.sav'.
2888 ])
2889   AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
2890 error: `sys-file.sav' near offset 0xf4: Value labels may not be added to long string variables (e.g. STR1) using records types 3 and 4.
2891
2892 sys-file.sps:1: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
2893 ])
2894 done
2895 AT_CLEANUP
2896
2897 AT_SETUP([variables for value label must all be same type])
2898 AT_KEYWORDS([sack synthetic system file negative])
2899 AT_DATA([sys-file.sack], [dnl
2900 dnl File header.
2901 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2902 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2903
2904 dnl Variables.
2905 2; 6; 0; 0; 0x010600 *2; s8 "STR1";
2906 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2907
2908 dnl Value label that names numeric and string variables.
2909 3; 1; s8 "xyzzy"; i8 3; s7 "one"; 4; 2; >>1; 2<<;
2910
2911 dnl End of dictionary.
2912 999; 0;
2913 ])
2914 for variant in \
2915         "be 7577c456726a88f52bbef63a8b47bf1a" \
2916         "le 3ba5c6af9ad0ae5cc88f9f63e726e414"
2917 do
2918   set $variant
2919   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [ignore])
2920   AT_DATA([sys-file.sps], [dnl
2921 GET FILE='sys-file.sav'.
2922 ])
2923   AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
2924 "error: `sys-file.sav' near offset 0xf4: Variables associated with value label are not all of identical type.  Variable STR1 is string, but variable NUM1 is numeric."
2925
2926 sys-file.sps:1: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
2927 ])
2928 done
2929 AT_CLEANUP
2930
2931 AT_SETUP([duplicate value labels type])
2932 AT_KEYWORDS([sack synthetic system file negative])
2933 AT_DATA([sys-file.sack], [dnl
2934 dnl File header.
2935 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2936 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2937
2938 dnl Variables.
2939 2; 6; 0; 0; 0x010600 *2; s8 "STR1";
2940 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2941
2942 dnl Duplicate value labels.
2943 3; 1; s8 "xyzzy"; i8 3; s7 "one"; 4; 2; >>1; 1<<;
2944 3; 1; 1.0; i8 3; s7 "one"; 4; 2; >>2; 2<<;
2945
2946 dnl End of dictionary.
2947 999; 0;
2948 ])
2949 for variant in \
2950         "be ef0f5b2ebddb5a3bfcda16c93a2508f4" \
2951         "le c00e27abd9a6c06bf29a108d7220435a"
2952 do
2953   set $variant
2954   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
2955 ])
2956   AT_DATA([sys-file.sps], [dnl
2957 GET FILE='sys-file.sav'.
2958 ])
2959   AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2960 warning: `sys-file.sav' near offset 0xf4: Duplicate value label for `xyzzy ' on STR1.
2961
2962 warning: `sys-file.sav' near offset 0x11c: Duplicate value label for 1 on NUM1.
2963 ])
2964 done
2965 AT_CLEANUP
2966
2967 AT_SETUP([missing attribute value])
2968 AT_KEYWORDS([sack synthetic system file negative])
2969 AT_DATA([sys-file.sack], [dnl
2970 dnl File header.
2971 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2972 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2973
2974 dnl Variables.
2975 2; 0; 0; 0; 0x050800 *2; s8 "FIRSTVAR";
2976
2977 dnl Data file attributes record.
2978 7; 17; 1; COUNT (
2979 "Attr1("
2980 );
2981
2982 dnl Variable attributes record.
2983 7; 18; 1; COUNT (
2984 "FIRSTVAR:";
2985   "fred('23'"; i8 10
2986 );
2987
2988 dnl Dictionary termination record.
2989 999; 0;
2990 ])
2991 for variant in \
2992         "be 0fc71f5e3cdb6b7f2dd73d011d4885c2" \
2993         "le e519b44715400156a2bfe648eb5cff34"
2994 do
2995   set $variant
2996   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
2997 ])
2998   AT_DATA([sys-file.sps], [dnl
2999 GET FILE='sys-file.sav'.
3000 ])
3001   AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
3002 warning: `sys-file.sav' near offset 0xdf: Error parsing attribute value Attr1[[1]].
3003
3004 warning: `sys-file.sav' near offset 0x102: Error parsing attribute value fred[[2]].
3005 ])
3006 done
3007 AT_CLEANUP
3008
3009 AT_SETUP([unquoted attribute value])
3010 AT_KEYWORDS([sack synthetic system file negative])
3011 AT_DATA([sys-file.sack], [dnl
3012 dnl File header.
3013 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3014 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3015
3016 dnl Variables.
3017 2; 0; 0; 0; 0x050800 *2; s8 "FIRSTVAR";
3018
3019 dnl Data file attributes record.
3020 7; 17; 1; COUNT (
3021 "Attr1(value"; i8 10;
3022 ")"
3023 );
3024
3025 dnl Variable attributes record.
3026 7; 18; 1; COUNT (
3027 "FIRSTVAR:";
3028   "fred(23"; i8 10; ")"
3029 );
3030
3031 dnl Dictionary termination record.
3032 999; 0;
3033 ])
3034 for variant in \
3035         "be 33dba37c2247e63c04bb74a7b472293d" \
3036         "le 041025a9d9d9e21a7fabd90ba7341934"
3037 do
3038   set $variant
3039   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
3040 ])
3041   AT_DATA([sys-file.sps], [dnl
3042 GET FILE='sys-file.sav'.
3043 ])
3044   AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
3045 warning: `sys-file.sav' near offset 0xe4: Attribute value Attr1[[1]] is not quoted: value.
3046
3047 warning: `sys-file.sav' near offset 0x106: Attribute value fred[[1]] is not quoted: 23.
3048 ])
3049 done
3050 AT_CLEANUP
3051
3052 AT_SETUP([bad variable name in long string value label])
3053 AT_KEYWORDS([sack synthetic system file negative])
3054 AT_DATA([sys-file.sack], [dnl
3055 dnl File header.
3056 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3057 2; 3; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3058
3059 dnl Variables.
3060 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3061 2; 14; 0; 0; 0x010e00 *2; s8 "STR14";
3062 2; -1; 0; 0; 0; 0; s8 "";
3063
3064 7; 21; 1; COUNT (
3065 dnl No variable named STR9.
3066 COUNT(>>"STR9"<<); 9;
3067 1; COUNT("RSTUVWXYZ"); COUNT("value label for `RSTUVWXYZ'");
3068
3069 dnl NUM1 is numeric.
3070 COUNT(>>"NUM1"<<); 0;
3071 1; COUNT("xyz"); COUNT("value label for 1.0");
3072
3073 dnl Wrong width for STR14.
3074 COUNT("STR14"); >>9<<;
3075 1; COUNT("RSTUVWXYZ"); COUNT("value label for `RSTUVWXYZ'");
3076
3077 dnl Wrong width for value.
3078 COUNT("STR14"); 14;
3079 1; COUNT(>>"RSTUVWXYZ"<<); COUNT("value label for `RSTUVWXYZ'");
3080
3081 dnl Duplicate value label.
3082 COUNT("STR14"); 14; 2;
3083 COUNT("abcdefghijklmn"); COUNT("value label for `abcdefghijklmn'");
3084 >>COUNT("abcdefghijklmn"); COUNT("another value label for `abcdefghijklmn'")<<;
3085 );
3086
3087 dnl Dictionary termination record.
3088 999; 0;
3089 ])
3090 for variant in \
3091         "be cf2e883dadb00e2c6404c09ea0a4e388" \
3092         "le 89c340faf0a7e4a8c834f9687684c091"
3093 do
3094   set $variant
3095   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
3096 ])
3097   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3098 ])
3099   AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
3100 warning: `sys-file.sav' near offset 0x128: Ignoring long string value record for unknown variable STR9.
3101
3102 warning: `sys-file.sav' near offset 0x164: Ignoring long string value record for numeric variable NUM1.
3103
3104 warning: `sys-file.sav' near offset 0x193: Ignoring long string value record for variable STR14 because the record's width (9) does not match the variable's width (14).
3105
3106 "warning: `sys-file.sav' near offset 0x1d4: Ignoring long string value 0 for variable str14, with width 14, that has bad value width 9."
3107
3108 warning: `sys-file.sav' near offset 0x259: Duplicate value label for `abcdefghijklmn' on str14.
3109 ])
3110 done
3111 AT_CLEANUP
3112
3113 AT_SETUP([fewer data records than indicated by file header])
3114 AT_KEYWORDS([sack synthetic system file negative])
3115 AT_DATA([sys-file.sack], [dnl
3116 dnl File header.
3117 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3118 2; 2; 0; 0; >>5<<; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3119
3120 dnl Numeric variables.
3121 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3122 2; 0; 0; 0; 0x050800 *2; s8 "NUM2";
3123
3124 dnl Data.
3125 999; 0;
3126 1.0; 2.0;
3127 3.0; 4.0;
3128 5.0; 6.0;
3129 7.0; 8.0;
3130 dnl Missing record here.
3131 ])
3132 for variant in \
3133         "be 6ee097c3934055d0c4564641636f4b5a" \
3134         "le ae03fe1b888091d6938b5a436d44ac60"
3135 do
3136   set $variant
3137   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
3138 ])
3139   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3140 LIST.
3141 ])
3142   AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
3143    [error: Error reading case from file `sys-file.sav'.
3144
3145 Table: Data List
3146 num1,num2
3147 1,2
3148 3,4
3149 5,6
3150 7,8
3151
3152 sys-file.sps:2: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
3153 ])
3154 done
3155 AT_CLEANUP
3156
3157 AT_SETUP([partial data record between variables])
3158 AT_KEYWORDS([sack synthetic system file negative])
3159 AT_DATA([sys-file.sack], [dnl
3160 dnl File header.
3161 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3162 2; 2; 0; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3163
3164 dnl Numeric variables.
3165 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3166 2; 0; 0; 0; 0x050800 *2; s8 "NUM2";
3167
3168 dnl Data.
3169 999; 0;
3170 1.0; 2.0;
3171 3.0;
3172 ])
3173 for variant in \
3174         "be 4bcc085d7d8f0f09c6a4ba8064ffe61c" \
3175         "le 7387fc5edd2740aff92c30ca688d6d9b"
3176 do
3177   set $variant
3178   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
3179 ])
3180   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3181 LIST.
3182 ])
3183   AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
3184    [error: `sys-file.sav' near offset 0x110: File ends in partial case.
3185
3186 Table: Data List
3187 num1,num2
3188 1,2
3189
3190 sys-file.sps:2: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
3191 ])
3192 done
3193 AT_CLEANUP
3194
3195 AT_SETUP([partial data record within long string])
3196 AT_KEYWORDS([sack synthetic system file negative])
3197 AT_DATA([sys-file.sack], [dnl
3198 dnl File header.
3199 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3200 2; 2; 0; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3201
3202 dnl Numeric variables.
3203 2; 14; 0; 0; 0x010e00 *2; s8 "STR14";
3204 2; -1; 0; 0; 0; 0; s8 "";
3205
3206 dnl Data.
3207 999; 0;
3208 s14 "one data item";
3209 s8 "partial";
3210 ])
3211 for variant in \
3212         "be 4a9e84f9e679afb7bb71acd0bb7eab89" \
3213         "le 30752606f14ee2deec2854e8e6de4b3b"
3214 do
3215   set $variant
3216   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
3217 ])
3218   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3219 LIST.
3220 ])
3221   AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
3222    [error: `sys-file.sav' near offset 0x10e: Unexpected end of file.
3223
3224 Table: Data List
3225 str14
3226 one data item @&t@
3227
3228 sys-file.sps:2: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
3229 ])
3230 done
3231 AT_CLEANUP
3232
3233 AT_SETUP([partial compressed data record])
3234 AT_KEYWORDS([sack synthetic system file positive])
3235 AT_DATA([sys-file.sack], [dnl
3236 dnl File header.
3237 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3238 2; dnl Layout code
3239 6; dnl Nominal case size
3240 1; dnl Compressed
3241 0; dnl Not weighted 
3242 -1; dnl Unspecified number of cases.
3243 100.0; dnl Bias.
3244 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
3245 i8 0 *3;
3246
3247 dnl Numeric variables.
3248 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3249 2; 0; 0; 0; 0x050800 *2; s8 "NUM2";
3250
3251 dnl String variable.
3252 2; 4; 0; 0; 0x010400 *2; s8 "STR4";
3253 2; 8; 0; 0; 0x010800 *2; s8 "STR8";
3254 2; 15; 0; 0; 0x010f00 *2; s8 "STR15";
3255 2; -1; 0; 0; 0; 0; s8 "";
3256
3257 dnl Dictionary termination record.
3258 999; 0;
3259
3260 dnl Compressed data.
3261 i8 1 100 254 253 254 253; i8 255 251; "abcdefgh"; s8 "0123";
3262 ])
3263 for variant in \
3264         "be ef01b16e2e397d979a3a7d20725ebe6d" \
3265         "le 51f7a61e9bc68992469d16c55d6ecd88"
3266 do
3267   set $variant
3268   AT_CHECK_UNQUOTED([sack --$[1] sys-file.sack > sys-file.sav], [0], [], [$[2]
3269 ])
3270   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3271 LIST.
3272 ])
3273   AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
3274    [error: `sys-file.sav' near offset 0x190: File ends in partial case.
3275
3276 Table: Data List
3277 num1,num2,str4,str8,str15
3278 -99,0,,abcdefgh,0123   @&t@
3279
3280 sys-file.sps:2: error: Stopping syntax file processing here to avoid a cascade of dependent command failures.
3281 ])
3282 done
3283 AT_CLEANUP
3284