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