1d89d0dbf6e79a432cb89847a83a72820fae911a
[pspp] / tests / data / pc+-file-reader.at
1 AT_BANNER([SPSS/PC+ file reader - positive])
2
3 AT_SETUP([variable labels and missing values])
4 AT_KEYWORDS([sack synthetic PC+ file positive])
5 AT_DATA([pc+-file.sack], [dnl
6 dnl File header.
7 2; 0;
8 @MAIN; @MAIN_END - @MAIN;
9 @VARS; @VARS_END - @VARS;
10 @LABELS; @LABELS_END - @LABELS;
11 @DATA; @DATA_END - @DATA;
12 (0; 0) * 11;
13 i8 0 * 128;
14
15 MAIN:
16     i16 1;         dnl Fixed.
17     s62 "PCSPSS PSPP synthetic test product";
18     PCSYSMIS;
19     0; 0; i16 1;   dnl Fixed.
20     i16 0;
21     i16 15;
22     1;
23     i16 0;         dnl Fixed.
24     1;
25     s8 "11/28/14";
26     s8 "15:11:00";
27     s64 "PSPP synthetic test file";
28 MAIN_END:
29
30 VARS:
31     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
32     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
33     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
34
35     dnl Numeric variable, no label or missing values.
36     0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
37
38     dnl Numeric variable, variable label.
39     0; 0; @NUM2_LABEL - @LABELS_OFS; 0x050800; s8 "NUM2"; PCSYSMIS;
40
41     dnl Numeric variable with missing value.
42     0; 0; 0; 0x050800; s8 "NUM3"; 1.0;
43
44     dnl Numeric variable, variable label and missing value.
45     0; 0; @NUM4_LABEL - @LABELS_OFS; 0x050800; s8 "NUM4"; 2.0;
46
47     dnl String variable, no label or missing values.
48     0; 0; 0; 0x010800; s8 "STR1"; PCSYSMIS;
49
50     dnl String variable, variable label.
51     0; 0; @STR2_LABEL - @LABELS_OFS; 0x010400; s8 "STR2"; PCSYSMIS;
52
53     dnl String variable with missing value.
54     0; 0; 0; 0x010500; s8 "STR3"; s8 "MISS";
55
56     dnl String variable, variable label and missing value.
57     0; 0; @STR4_LABEL - @LABELS_OFS; 0x010100; s8 "STR4"; s8 "OTHR";
58
59     dnl Long string variable
60     0; 0; 0; 0x010b00; s8 "STR5"; PCSYSMIS;
61     0 * 8;
62
63     dnl Long string variable with variable label
64     0; 0; @STR6_LABEL - @LABELS_OFS; 0x010b00; s8 "STR6"; PCSYSMIS;
65     0 * 8;
66 VARS_END:
67
68 LABELS:
69     3; i8 0 0 0; LABELS_OFS: i8 0;
70     NUM2_LABEL: COUNT8("Numeric variable 2's label");
71     NUM4_LABEL: COUNT8("Another numeric variable label");
72     STR2_LABEL: COUNT8("STR2's variable label");
73     STR4_LABEL: COUNT8("STR4's variable label");
74     STR6_LABEL: COUNT8("Another string variable's label");
75 LABELS_END:
76
77 DATA:
78     0.0; "11/28/14"; 1.0;
79     0.0; 1.0; 2.0; PCSYSMIS; s8 "abcdefgh"; s8 "ijkl"; s8 "mnopq"; s8 "r";
80     s16 "stuvwxyzAB"; s16 "CDEFGHIJKLM";
81 DATA_END:
82 ])
83 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
84 AT_DATA([pc+-file.sps], [dnl
85 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
86 DISPLAY FILE LABEL.
87 DISPLAY DICTIONARY.
88 LIST.
89 ])
90 AT_CHECK([pspp -o pspp.csv pc+-file.sps])
91 AT_CHECK([cat pspp.csv], [0], [dnl
92 File label: PSPP synthetic test file
93
94 Variable,Description,Position
95 NUM1,Format: F8.0,1
96 NUM2,"Label: Numeric variable 2's label
97 Format: F8.0",2
98 NUM3,"Format: F8.0
99 Missing Values: 1",3
100 NUM4,"Label: Another numeric variable label
101 Format: F8.0
102 Missing Values: 2",4
103 STR1,Format: A8,5
104 STR2,"Label: STR2's variable label
105 Format: A4",6
106 STR3,"Format: A5
107 Missing Values: ""MISS """,7
108 STR4,"Label: STR4's variable label
109 Format: A1
110 Missing Values: ""O""",8
111 STR5,Format: A11,9
112 STR6,"Label: Another string variable's label
113 Format: A11",10
114
115 Table: Data List
116 NUM1,NUM2,NUM3,NUM4,STR1,STR2,STR3,STR4,STR5,STR6
117 0,1,2,.,abcdefgh,ijkl,mnopq,r,stuvwxyzAB ,CDEFGHIJKLM
118 ])
119 AT_CLEANUP
120
121 AT_SETUP([value labels])
122 AT_KEYWORDS([sack synthetic PC+ file positive])
123 AT_DATA([pc+-file.sack], [dnl
124 dnl File header.
125 2; 0;
126 @MAIN; @MAIN_END - @MAIN;
127 @VARS; @VARS_END - @VARS;
128 @LABELS; @LABELS_END - @LABELS;
129 @DATA; @DATA_END - @DATA;
130 (0; 0) * 11;
131 i8 0 * 128;
132
133 MAIN:
134     i16 1;         dnl Fixed.
135     s62 "PCSPSS PSPP synthetic test product";
136     PCSYSMIS;
137     0; 0; i16 1;   dnl Fixed.
138     i16 0;
139     i16 16;
140     1;
141     i16 0;         dnl Fixed.
142     1;
143     s8 "11/28/14";
144     s8 "15:11:00";
145     s64 "PSPP synthetic test file";
146 MAIN_END:
147
148 VARS:
149     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
150     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
151     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
152
153     dnl Numeric variables.
154     @N1 - @LOFF; @N1E - @LOFF; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
155     @N2 - @LOFF; @N2E - @LOFF; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
156     @N3 - @LOFF; @N3E - @LOFF; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
157     @N4 - @LOFF; @N4E - @LOFF; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
158     @N5 - @LOFF; @N5E - @LOFF; 0; 0x050800; s8 "NUM5"; PCSYSMIS;
159
160     dnl String variables.
161     @S1 - @LOFF; @S1E - @LOFF; 0; 0x010100; s8 "STR1"; PCSYSMIS;
162     @S2 - @LOFF; @S2E - @LOFF; 0; 0x010200; s8 "STR2"; PCSYSMIS;
163     @S3 - @LOFF; @S3E - @LOFF; 0; 0x010300; s8 "STR3"; PCSYSMIS;
164     @S4 - @LOFF; @S4E - @LOFF; 0; 0x010400; s8 "STR4"; PCSYSMIS;
165     @S5 - @LOFF; @S5E - @LOFF; 0; 0x010500; s8 "STR5"; PCSYSMIS;
166     @S6 - @LOFF; @S6E - @LOFF; 0; 0x010600; s8 "STR6"; PCSYSMIS;
167     @S7 - @LOFF; @S7E - @LOFF; 0; 0x010700; s8 "STR7"; PCSYSMIS;
168     @S8 - @LOFF; @S8E - @LOFF; 0; 0x010800; s8 "STR8"; PCSYSMIS;
169 VARS_END:
170
171 LABELS:
172     3; i8 0 0 0; LOFF: i8 0;
173
174     N1: 1.0; COUNT8("one"); N1E:
175     N2: 2.0; COUNT8("two"); 3.0; COUNT8("three"); N2E:
176     N3:
177         3.0; COUNT8("three");
178     N4: N5:
179         4.0; COUNT8("four");
180     N3E: N4E:
181         5.0; COUNT8("five");
182     N5E:
183
184     S1: s8 "a"; COUNT8("value label for `a'"); S1E:
185     S2: s8 "ab"; COUNT8("value label for `ab'"); S2E:
186     S3: s8 "abc"; COUNT8("value label for `abc'"); S3E:
187     S4: S5: S6: S7:
188         s8 "abcdefgh"; COUNT8("value label for abcdefgh"); S4E:
189     S8:
190         s8 "ijklmnop"; COUNT8("value label for ijklmnop"); S5E:
191         s8 "qrstuvwx"; COUNT8("value label for qrstuvwx"); S6E:
192         s8 "yzABCDEF"; COUNT8("value label for yzABCDEF"); S7E:
193         s8 "GHIJKLMN"; COUNT8("value label for GHIJKLMN"); S8E:
194 LABELS_END:
195
196 DATA:
197     1.0; "11/28/14"; 1.0;
198     1.0; 2.0; 3.0; 4.0; 5.0;
199     s8 "a"; s8 "bc"; s8 "cde"; s8 "fghj"; s8 "klmno"; s8 "pqrstu";
200     s8 "vwxyzAB"; s8 "CDEFGHIJ";
201 DATA_END:
202 ])
203 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
204 AT_DATA([pc+-file.sps], [dnl
205 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
206 DISPLAY FILE LABEL.
207 DISPLAY DICTIONARY.
208 LIST.
209 ])
210 AT_CHECK([pspp -o pspp.csv pc+-file.sps])
211 AT_CHECK([cat pspp.csv], [0], [dnl
212 File label: PSPP synthetic test file
213
214 Variable,Description,Position
215 NUM1,"Format: F8.0
216
217 Value,Label
218 1,one",1
219 NUM2,"Format: F8.0
220
221 Value,Label
222 2,two
223 3,three",2
224 NUM3,"Format: F8.0
225
226 Value,Label
227 3,three
228 4,four",3
229 NUM4,"Format: F8.0
230
231 Value,Label
232 4,four",4
233 NUM5,"Format: F8.0
234
235 Value,Label
236 4,four
237 5,five",5
238 STR1,"Format: A1
239
240 Value,Label
241 a,value label for `a'",6
242 STR2,"Format: A2
243
244 Value,Label
245 ab,value label for `ab'",7
246 STR3,"Format: A3
247
248 Value,Label
249 abc,value label for `abc'",8
250 STR4,"Format: A4
251
252 Value,Label
253 abcd,value label for abcdefgh",9
254 STR5,"Format: A5
255
256 Value,Label
257 abcde,value label for abcdefgh
258 ijklm,value label for ijklmnop",10
259 STR6,"Format: A6
260
261 Value,Label
262 abcdef,value label for abcdefgh
263 ijklmn,value label for ijklmnop
264 qrstuv,value label for qrstuvwx",11
265 STR7,"Format: A7
266
267 Value,Label
268 abcdefg,value label for abcdefgh
269 ijklmno,value label for ijklmnop
270 qrstuvw,value label for qrstuvwx
271 yzABCDE,value label for yzABCDEF",12
272 STR8,"Format: A8
273
274 Value,Label
275 GHIJKLMN,value label for GHIJKLMN
276 ijklmnop,value label for ijklmnop
277 qrstuvwx,value label for qrstuvwx
278 yzABCDEF,value label for yzABCDEF",13
279
280 Table: Data List
281 NUM1,NUM2,NUM3,NUM4,NUM5,STR1,STR2,STR3,STR4,STR5,STR6,STR7,STR8
282 1,2,3,4,5,a,bc,cde,fghj,klmno,pqrstu,vwxyzAB,CDEFGHIJ
283 ])
284 AT_CLEANUP
285
286 AT_SETUP([compressed data])
287 AT_KEYWORDS([sack synthetic PC+ file positive])
288 AT_DATA([pc+-file.sack], [dnl
289 dnl File header.
290 2; 0;
291 @MAIN; @MAIN_END - @MAIN;
292 @VARS; @VARS_END - @VARS;
293 0; 0;
294 @DATA; @DATA_END - @DATA;
295 (0; 0) * 11;
296 i8 0 * 128;
297
298 MAIN:
299     i16 1;         dnl Fixed.
300     s62 "PCSPSS PSPP synthetic test product";
301     PCSYSMIS;
302     0; 0; i16 1;   dnl Fixed.
303     i16 1;
304     i16 9;
305     2;
306     i16 0;         dnl Fixed.
307     2;
308     s8 "11/28/14";
309     s8 "15:11:00";
310     s64 "PSPP synthetic test file";
311 MAIN_END:
312
313 VARS:
314     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
315     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
316     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
317
318     dnl Numeric variables.
319     0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
320     0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
321
322     dnl String variables.
323     0; 0; 0; 0x010400; s8 "STR4"; PCSYSMIS;
324     0; 0; 0; 0x010800; s8 "STR8"; PCSYSMIS;
325     0; 0; 0; 0x010f00; s8 "STR15"; PCSYSMIS;
326     0 * 8;
327 VARS_END:
328
329 DATA:
330     i8 101 1 101 100 255 1 1 1;
331         s8 "11/28/14"; s8 "abcd"; s8 "efghj"; s8 "efghijkl";
332     i8 1; i8 102 1 101 1 0 1 1;
333          s8 "ABCDEFG"; s8 "11/28/14"; 1000.0; s8 "PQRS"; s8 "TUVWXYZa";
334     i8 1 1 0 0 0 0 0 0;
335         s16 "bcdefghijklmnop";
336 DATA_END:
337 ])
338 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
339 AT_DATA([pc+-file.sps], [dnl
340 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
341 DISPLAY FILE LABEL.
342 DISPLAY DICTIONARY.
343 LIST.
344 ])
345 AT_CHECK([pspp -o pspp.csv pc+-file.sps])
346 AT_CHECK([cat pspp.csv], [0], [dnl
347 File label: PSPP synthetic test file
348
349 Variable,Description,Position
350 NUM1,Format: F8.0,1
351 NUM2,Format: F8.0,2
352 STR4,Format: A4,3
353 STR8,Format: A8,4
354 STR15,Format: A15,5
355
356 Table: Data List
357 NUM1,NUM2,STR4,STR8,STR15
358 -5,150,abcd,efghj   ,efghijklABCDEFG
359 1000,.,PQRS,TUVWXYZa,bcdefghijklmnop
360 ])
361 AT_CLEANUP
362 \f
363 AT_BANNER([SPSS/PC+ file reader - negative])
364
365 AT_SETUP([unspecified character encoding])
366 AT_KEYWORDS([sack synthetic PC+ file negative])
367 AT_DATA([pc+-file.sack], [dnl
368 dnl File header.
369 2; 0;
370 @MAIN; @MAIN_END - @MAIN;
371 @VARS; @VARS_END - @VARS;
372 0; 0;
373 @DATA; @DATA_END - @DATA;
374 (0; 0) * 11;
375 i8 0 * 128;
376
377 MAIN:
378     i16 1;         dnl Fixed.
379     s62 "PCSPSS PSPP synthetic test product";
380     PCSYSMIS;
381     0; 0; i16 1;   dnl Fixed.
382     i16 0;
383     i16 7;
384     1;
385     i16 0;         dnl Fixed.
386     1;
387     s8 "11/28/14";
388     s8 "15:11:00";
389     s64 "PSPP synthetic test file";
390 MAIN_END:
391
392 VARS:
393     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
394     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
395     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
396
397     dnl Numeric variables.
398     0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
399     0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
400     0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
401     0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
402 VARS_END:
403
404 DATA:
405     0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
406 DATA_END:
407 ])
408 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
409 AT_DATA([pc+-file.sps], [dnl
410 GET FILE='pc+-file.sav'.
411 DISPLAY FILE LABEL.
412 DISPLAY DICTIONARY.
413 LIST.
414
415 SYSFILE INFO FILE='pc+-file.sav' ENCODING='us-ascii'.
416 ])
417 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [stdout], [])
418 AT_CHECK([sed 's/default encoding.*For/default encoding.  For/' stdout], [0], [dnl
419 "warning: `pc+-file.sav': Using default encoding.  For best results, specify an encoding explicitly.  Use SYSFILE INFO with ENCODING=""DETECT"" to analyze the possible encodings."
420
421 File label: PSPP synthetic test file
422
423 Variable,Description,Position
424 NUM1,Format: F8.0,1
425 NUM2,Format: F8.0,2
426 NUM3,Format: F8.0,3
427 NUM4,Format: F8.0,4
428
429 Table: Data List
430 NUM1,NUM2,NUM3,NUM4
431 2,3,4,5
432
433 File:,pc+-file.sav
434 Label:,PSPP synthetic test file
435 Created:,11/28/14 15:11:00 by PCSPSS PSPP synthetic test product
436 Integer Format:,Little Endian
437 Real Format:,IEEE 754 LE.
438 Variables:,4
439 Cases:,1
440 Type:,SPSS/PC+ System File
441 Weight:,Not weighted.
442 Compression:,None
443 Encoding:,us-ascii
444
445 Variable,Description,Position
446 NUM1,"Format: F8.0
447 Measure: Scale
448 Role: Input
449 Display Alignment: Right
450 Display Width: 8",1
451 NUM2,"Format: F8.0
452 Measure: Scale
453 Role: Input
454 Display Alignment: Right
455 Display Width: 8",2
456 NUM3,"Format: F8.0
457 Measure: Scale
458 Role: Input
459 Display Alignment: Right
460 Display Width: 8",3
461 NUM4,"Format: F8.0
462 Measure: Scale
463 Role: Input
464 Display Alignment: Right
465 Display Width: 8",4
466 ])
467 AT_CLEANUP
468
469 AT_SETUP([unexpected fixed values])
470 AT_KEYWORDS([sack synthetic PC+ file negative])
471 AT_DATA([pc+-file.sack], [dnl
472 dnl File header.
473 >>1; 2;<<
474 @MAIN; @MAIN_END - @MAIN;
475 @VARS; @VARS_END - @VARS;
476 0; 0;
477 @DATA; @DATA_END - @DATA;
478 (0; 0) * 11;
479 i8 0 * 128;
480
481 MAIN:
482     i16 1;         dnl Fixed.
483     s62 "PCSPSS PSPP synthetic test product";
484     >>1.0<<;
485     0; >>2<<; i16 1;   dnl Fixed.
486     i16 0;
487     i16 7;
488     1;
489     i16 0;         dnl Fixed.
490     3;
491     s8 "11/28/14";
492     s8 "15:11:00";
493     s64 "PSPP synthetic test file";
494 MAIN_END:
495
496 VARS:
497     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
498     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
499     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
500
501     dnl Numeric variables.
502     0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
503     0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
504     0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
505     0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
506 VARS_END:
507
508 DATA:
509     0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
510 DATA_END:
511 ])
512 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
513 AT_DATA([pc+-file.sps], [dnl
514 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
515 ])
516 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [dnl
517 "warning: `pc+-file.sav' near offset 0x0: Directory fields have unexpected values (1,2)."
518
519 warning: `pc+-file.sav' near offset 0x100: Record 0 specifies unexpected system missing value 1 (0x1p+0).
520
521 "warning: `pc+-file.sav' near offset 0x100: Record 0 reserved fields have unexpected values (1,1,0,2,0)."
522
523 warning: `pc+-file.sav' near offset 0x100: Record 0 case counts differ (1 versus 3).
524 ])
525 AT_CLEANUP
526
527 AT_SETUP([short main header])
528 AT_KEYWORDS([sack synthetic PC+ file negative])
529 AT_DATA([pc+-file.sack], [dnl
530 dnl File header.
531 2; 0;
532 @MAIN; @MAIN_END - @MAIN;
533 @VARS; @VARS_END - @VARS;
534 0; 0;
535 @DATA; @DATA_END - @DATA;
536 (0; 0) * 11;
537 i8 0 * 128;
538
539 MAIN:
540     i16 1;         dnl Fixed.
541     s62 "PCSPSS PSPP synthetic test product";
542     PCSYSMIS;
543     0; 0; i16 1;   dnl Fixed.
544     i16 0;
545     i16 7;
546     1;
547     i16 0;         dnl Fixed.
548     1;
549     s8 "11/28/14";
550     s8 "15:11:00";
551 MAIN_END:
552
553 VARS:
554     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
555     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
556     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
557
558     dnl Numeric variables.
559     0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
560     0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
561     0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
562     0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
563 VARS_END:
564
565 DATA:
566     0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
567 DATA_END:
568 ])
569 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
570 AT_DATA([pc+-file.sps], [dnl
571 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
572 ])
573 AT_CHECK([pspp -O format=csv pc+-file.sps], [1], [dnl
574 error: `pc+-file.sav' near offset 0x100: This is not an SPSS/PC+ system file.
575 ])
576 AT_CLEANUP
577
578 AT_SETUP([long main header])
579 AT_KEYWORDS([sack synthetic PC+ file negative])
580 AT_DATA([pc+-file.sack], [dnl
581 dnl File header.
582 2; 0;
583 @MAIN; @MAIN_END - @MAIN;
584 @VARS; @VARS_END - @VARS;
585 0; 0;
586 @DATA; @DATA_END - @DATA;
587 (0; 0) * 11;
588 i8 0 * 128;
589
590 MAIN:
591     i16 1;         dnl Fixed.
592     s62 "PCSPSS PSPP synthetic test product";
593     PCSYSMIS;
594     0; 0; i16 1;   dnl Fixed.
595     i16 0;
596     i16 7;
597     1;
598     i16 0;         dnl Fixed.
599     1;
600     s8 "11/28/14";
601     s8 "15:11:00";
602     >>s80 "PSPP synthetic test file"<<;
603 MAIN_END:
604
605 VARS:
606     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
607     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
608     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
609
610     dnl Numeric variables.
611     0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
612     0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
613     0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
614     0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
615 VARS_END:
616
617 DATA:
618     0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
619 DATA_END:
620 ])
621 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
622 AT_DATA([pc+-file.sps], [dnl
623 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
624 ])
625 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [dnl
626 warning: `pc+-file.sav' near offset 0x100: Record 0 has unexpected length 192.
627 ])
628 AT_CLEANUP
629
630 AT_SETUP([invalid compression type])
631 AT_KEYWORDS([sack synthetic PC+ file negative])
632 AT_DATA([pc+-file.sack], [dnl
633 dnl File header.
634 2; 0;
635 @MAIN; @MAIN_END - @MAIN;
636 @VARS; @VARS_END - @VARS;
637 0; 0;
638 @DATA; @DATA_END - @DATA;
639 (0; 0) * 11;
640 i8 0 * 128;
641
642 MAIN:
643     i16 1;         dnl Fixed.
644     s62 "PCSPSS PSPP synthetic test product";
645     PCSYSMIS;
646     0; 0; i16 1;   dnl Fixed.
647     i16 >>2<<;
648     i16 7;
649     1;
650     i16 0;         dnl Fixed.
651     1;
652     s8 "11/28/14";
653     s8 "15:11:00";
654     s64 "PSPP synthetic test file";
655 MAIN_END:
656
657 VARS:
658     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
659     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
660     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
661
662     dnl Numeric variables.
663     0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
664     0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
665     0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
666     0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
667 VARS_END:
668
669 DATA:
670     0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
671 DATA_END:
672 ])
673 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
674 AT_DATA([pc+-file.sps], [dnl
675 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
676 ])
677 AT_CHECK([pspp -O format=csv pc+-file.sps], [1], [dnl
678 error: `pc+-file.sav' near offset 0x100: Invalid compression type 2.
679 ])
680 AT_CLEANUP
681
682 AT_SETUP([unrealistic number of cases])
683 AT_KEYWORDS([sack synthetic PC+ file negative])
684 AT_DATA([pc+-file.sack], [dnl
685 dnl File header.
686 2; 0;
687 @MAIN; @MAIN_END - @MAIN;
688 @VARS; @VARS_END - @VARS;
689 0; 0;
690 @DATA; @DATA_END - @DATA;
691 (0; 0) * 11;
692 i8 0 * 128;
693
694 MAIN:
695     i16 1;         dnl Fixed.
696     s62 "PCSPSS PSPP synthetic test product";
697     PCSYSMIS;
698     0; 0; i16 1;   dnl Fixed.
699     i16 0;
700     i16 7;
701     1000;
702     i16 0;         dnl Fixed.
703     1000;
704     s8 "11/28/14";
705     s8 "15:11:00";
706     s64 "PSPP synthetic test file";
707 MAIN_END:
708
709 VARS:
710     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
711     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
712     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
713
714     dnl Numeric variables.
715     0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
716     0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
717     0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
718     0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
719 VARS_END:
720
721 DATA:
722     0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
723 DATA_END:
724 ])
725 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
726 AT_DATA([pc+-file.sps], [dnl
727 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
728 ])
729 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [dnl
730 warning: `pc+-file.sav' near offset 0x100: Record 0 claims 1000 cases with 7 values per case (requiring at least 56000 bytes) but data record is only 56 bytes long.
731 ])
732 AT_CLEANUP
733
734 AT_SETUP([labels bad offsets])
735 AT_KEYWORDS([sack synthetic PC+ file negative])
736 AT_DATA([pc+-file.sack], [dnl
737 dnl File header.
738 2; 0;
739 @MAIN; @MAIN_END - @MAIN;
740 @VARS; @VARS_END - @VARS;
741 @LABELS; @LABELS_END - @LABELS;
742 @DATA; @DATA_END - @DATA;
743 (0; 0) * 11;
744 i8 0 * 128;
745
746 MAIN:
747     i16 1;         dnl Fixed.
748     s62 "PCSPSS PSPP synthetic test product";
749     PCSYSMIS;
750     0; 0; i16 1;   dnl Fixed.
751     i16 0;
752     i16 7;
753     1;
754     i16 0;         dnl Fixed.
755     1;
756     s8 "11/28/14";
757     s8 "15:11:00";
758     s64 "PSPP synthetic test file";
759 MAIN_END:
760
761 VARS:
762     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
763     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
764     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
765
766     dnl Numeric variables.
767     @N1L - @LOFF; @N1E - @LOFF; 1000; 0x050800; s8 "NUM1"; PCSYSMIS;
768     @N1L - @LOFF - 1; @LABELS_END - @LOFF; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
769     @N1L - @LOFF + 1; @LABELS_END - @LOFF; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
770     0; 0; @LABELS_END - @LOFF - 1; 0x050800; s8 "NUM4"; PCSYSMIS;
771 VARS_END:
772
773 LABELS:
774     3; i8 0 0 0; LOFF: i8 0;
775     N1L: PCSYSMIS;
776 LABELS_END:
777
778 DATA:
779     0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0; N1E:
780 DATA_END:
781 ])
782 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
783 AT_DATA([pc+-file.sps], [dnl
784 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
785 ])
786 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [dnl
787 warning: `pc+-file.sav' near offset 0x210: Variable label claimed to start at offset 1007 in labels record but labels record is only 16 bytes.
788
789 warning: `pc+-file.sav' near offset 0x210: Value labels claimed to end at offset 72 in labels record but labels record is only 16 bytes.
790
791 "warning: `pc+-file.sav' near offset 0x2a0: Value labels end with partial label (0 bytes left in record, label length 255)."
792
793 warning: `pc+-file.sav' near offset 0x299: 7 leftover bytes following value labels.
794
795 warning: `pc+-file.sav' near offset 0x29f: Variable label with length 255 starting at offset 16 in labels record overruns end of 16-byte labels record.
796 ])
797 AT_CLEANUP
798
799 AT_SETUP([record 1 bad length])
800 AT_KEYWORDS([sack synthetic PC+ file negative])
801 AT_DATA([pc+-file.sack], [dnl
802 dnl File header.
803 2; 0;
804 @MAIN; @MAIN_END - @MAIN;
805 @VARS; @VARS_END - @VARS;
806 0; 0;
807 @DATA; @DATA_END - @DATA;
808 (0; 0) * 11;
809 i8 0 * 128;
810
811 MAIN:
812     i16 1;         dnl Fixed.
813     s62 "PCSPSS PSPP synthetic test product";
814     PCSYSMIS;
815     0; 0; i16 1;   dnl Fixed.
816     i16 0;
817     i16 7;
818     1;
819     i16 0;         dnl Fixed.
820     1;
821     s8 "11/28/14";
822     s8 "15:11:00";
823     s64 "PSPP synthetic test file";
824 MAIN_END:
825
826 VARS:
827     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
828     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
829     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
830
831     dnl Numeric variables.
832     0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
833     0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
834     0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
835 VARS_END:
836
837 DATA:
838     0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
839 DATA_END:
840 ])
841 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
842 AT_DATA([pc+-file.sps], [dnl
843 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
844 ])
845 AT_CHECK([pspp -O format=csv pc+-file.sps], [1], [dnl
846 error: `pc+-file.sav' near offset 0x1b0: Record 1 has length 192 (expected 224).
847 ])
848 AT_CLEANUP
849
850 AT_SETUP([bad variable format])
851 AT_KEYWORDS([sack synthetic PC+ file negative])
852 AT_DATA([pc+-file.sack], [dnl
853 dnl File header.
854 2; 0;
855 @MAIN; @MAIN_END - @MAIN;
856 @VARS; @VARS_END - @VARS;
857 0; 0;
858 @DATA; @DATA_END - @DATA;
859 (0; 0) * 11;
860 i8 0 * 128;
861
862 MAIN:
863     i16 1;         dnl Fixed.
864     s62 "PCSPSS PSPP synthetic test product";
865     PCSYSMIS;
866     0; 0; i16 1;   dnl Fixed.
867     i16 0;
868     i16 7;
869     1;
870     i16 0;         dnl Fixed.
871     1;
872     s8 "11/28/14";
873     s8 "15:11:00";
874     s64 "PSPP synthetic test file";
875 MAIN_END:
876
877 VARS:
878     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
879     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
880     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
881
882     dnl Numeric variables.
883     0; 0; 0; 0xff0000; s8 "NUM1"; PCSYSMIS;
884     0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
885     0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
886     0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
887 VARS_END:
888
889 DATA:
890     0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
891 DATA_END:
892 ])
893 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
894 AT_DATA([pc+-file.sps], [dnl
895 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
896 ])
897 AT_CHECK([pspp -O format=csv pc+-file.sps], [1], [dnl
898 error: `pc+-file.sav' near offset 0x210: Variable 3 has invalid type 255.
899 ])
900 AT_CLEANUP
901
902 AT_SETUP([bad variable name])
903 AT_KEYWORDS([sack synthetic PC+ file negative])
904 AT_DATA([pc+-file.sack], [dnl
905 dnl File header.
906 2; 0;
907 @MAIN; @MAIN_END - @MAIN;
908 @VARS; @VARS_END - @VARS;
909 0; 0;
910 @DATA; @DATA_END - @DATA;
911 (0; 0) * 11;
912 i8 0 * 128;
913
914 MAIN:
915     i16 1;         dnl Fixed.
916     s62 "PCSPSS PSPP synthetic test product";
917     PCSYSMIS;
918     0; 0; i16 1;   dnl Fixed.
919     i16 0;
920     i16 7;
921     1;
922     i16 0;         dnl Fixed.
923     1;
924     s8 "11/28/14";
925     s8 "15:11:00";
926     s64 "PSPP synthetic test file";
927 MAIN_END:
928
929 VARS:
930     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
931     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
932     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
933
934     dnl Numeric variables.
935     0; 0; 0; 0x050000; s8 "#NUM"; PCSYSMIS;
936     0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
937     0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
938     0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
939 VARS_END:
940
941 DATA:
942     0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
943 DATA_END:
944 ])
945 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
946 AT_DATA([pc+-file.sps], [dnl
947 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
948 ])
949 AT_CHECK([pspp -O format=csv pc+-file.sps], [1], [dnl
950 error: `pc+-file.sav' near offset 0x210: Invalid variable name `#NUM'.
951 ])
952 AT_CLEANUP
953
954 AT_SETUP([duplicate variable name])
955 AT_KEYWORDS([sack synthetic PC+ file negative])
956 AT_DATA([pc+-file.sack], [dnl
957 dnl File header.
958 2; 0;
959 @MAIN; @MAIN_END - @MAIN;
960 @VARS; @VARS_END - @VARS;
961 0; 0;
962 @DATA; @DATA_END - @DATA;
963 (0; 0) * 11;
964 i8 0 * 128;
965
966 MAIN:
967     i16 1;         dnl Fixed.
968     s62 "PCSPSS PSPP synthetic test product";
969     PCSYSMIS;
970     0; 0; i16 1;   dnl Fixed.
971     i16 0;
972     i16 7;
973     1;
974     i16 0;         dnl Fixed.
975     1;
976     s8 "11/28/14";
977     s8 "15:11:00";
978     s64 "PSPP synthetic test file";
979 MAIN_END:
980
981 VARS:
982     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
983     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
984     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
985
986     dnl Numeric variables.
987     0; 0; 0; 0x050000; s8 "NUM1"; PCSYSMIS;
988     0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
989     0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
990     0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
991 VARS_END:
992
993 DATA:
994     0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
995 DATA_END:
996 ])
997 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
998 AT_DATA([pc+-file.sps], [dnl
999 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
1000 ])
1001 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [dnl
1002 warning: `pc+-file.sav' near offset 0x230: Renaming variable with duplicate name `NUM1' to `VAR001'.
1003
1004 warning: `pc+-file.sav' near offset 0x250: Renaming variable with duplicate name `NUM1' to `VAR002'.
1005
1006 warning: `pc+-file.sav' near offset 0x270: Renaming variable with duplicate name `NUM1' to `VAR003'.
1007 ])
1008 AT_CLEANUP
1009
1010 AT_SETUP([partial case])
1011 AT_KEYWORDS([sack synthetic PC+ file negative])
1012 AT_DATA([pc+-file.sack], [dnl
1013 dnl File header.
1014 2; 0;
1015 @MAIN; @MAIN_END - @MAIN;
1016 @VARS; @VARS_END - @VARS;
1017 0; 0;
1018 @DATA; @DATA_END - @DATA;
1019 (0; 0) * 11;
1020 i8 0 * 128;
1021
1022 MAIN:
1023     i16 1;         dnl Fixed.
1024     s62 "PCSPSS PSPP synthetic test product";
1025     PCSYSMIS;
1026     0; 0; i16 1;   dnl Fixed.
1027     i16 0;
1028     i16 7;
1029     3;
1030     i16 0;         dnl Fixed.
1031     3;
1032     s8 "11/28/14";
1033     s8 "15:11:00";
1034     s64 "PSPP synthetic test file";
1035 MAIN_END:
1036
1037 VARS:
1038     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
1039     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
1040     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
1041
1042     dnl Numeric variables.
1043     0; 0; 0; 0x050000; s8 "NUM1"; PCSYSMIS;
1044     0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
1045     0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
1046     0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
1047 VARS_END:
1048
1049 DATA:
1050     1.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
1051     2.0; "11/28/14"; 1.0; 6.0; 7.0; 8.0; 9.0;
1052     3.0; "11/28/14"; 1.0; 10.0;
1053 DATA_END:
1054 ])
1055 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
1056 AT_DATA([pc+-file.sps], [dnl
1057 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
1058 LIST.
1059 ])
1060 AT_CHECK([pspp -O format=csv pc+-file.sps], [1], [dnl
1061 warning: `pc+-file.sav' near offset 0x100: Record 0 claims 3 cases with 7 values per case (requiring at least 168 bytes) but data record is only 144 bytes long.
1062
1063 error: `pc+-file.sav' near offset 0x320: File ends in partial case.
1064
1065 error: Error reading case from file `pc+-file.sav'.
1066
1067 Table: Data List
1068 NUM1,NUM2,NUM3,NUM4
1069 2,3,4,5
1070 6,7,8,9
1071 ])
1072 AT_CLEANUP
1073
1074 AT_SETUP([case extends past end of data record])
1075 AT_KEYWORDS([sack synthetic PC+ file negative])
1076 AT_DATA([pc+-file.sack], [dnl
1077 dnl File header.
1078 2; 0;
1079 @MAIN; @MAIN_END - @MAIN;
1080 @VARS; @VARS_END - @VARS;
1081 0; 0;
1082 @DATA; @DATA_END - @DATA;
1083 (0; 0) * 11;
1084 i8 0 * 128;
1085
1086 MAIN:
1087     i16 1;         dnl Fixed.
1088     s62 "PCSPSS PSPP synthetic test product";
1089     PCSYSMIS;
1090     0; 0; i16 1;   dnl Fixed.
1091     i16 0;
1092     i16 7;
1093     3;
1094     i16 0;         dnl Fixed.
1095     3;
1096     s8 "11/28/14";
1097     s8 "15:11:00";
1098     s64 "PSPP synthetic test file";
1099 MAIN_END:
1100
1101 VARS:
1102     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
1103     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
1104     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
1105
1106     dnl Numeric variables.
1107     0; 0; 0; 0x050000; s8 "NUM1"; PCSYSMIS;
1108     0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
1109     0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
1110     0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
1111 VARS_END:
1112
1113 DATA:
1114     1.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
1115     2.0; "11/28/14"; 1.0; 6.0; 7.0; 8.0; 9.0;
1116     3.0; "11/28/14"; 1.0; 10.0;
1117 DATA_END:
1118     11.0; 12.0; 13.0;
1119 ])
1120 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
1121 AT_DATA([pc+-file.sps], [dnl
1122 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
1123 LIST.
1124 ])
1125 AT_CHECK([pspp -O format=csv pc+-file.sps], [1], [dnl
1126 warning: `pc+-file.sav' near offset 0x100: Record 0 claims 3 cases with 7 values per case (requiring at least 168 bytes) but data record is only 144 bytes long.
1127
1128 error: `pc+-file.sav' near offset 0x338: Case beginning at offset 0x00000300 extends past end of data record at offset 0x00000320.
1129
1130 error: Error reading case from file `pc+-file.sav'.
1131
1132 Table: Data List
1133 NUM1,NUM2,NUM3,NUM4
1134 2,3,4,5
1135 6,7,8,9
1136 ])
1137 AT_CLEANUP
1138
1139 AT_SETUP([corrupt compressed data])
1140 AT_KEYWORDS([sack synthetic PC+ file positive])
1141 AT_DATA([pc+-file.sack], [dnl
1142 dnl File header.
1143 2; 0;
1144 @MAIN; @MAIN_END - @MAIN;
1145 @VARS; @VARS_END - @VARS;
1146 0; 0;
1147 @DATA; @DATA_END - @DATA;
1148 (0; 0) * 11;
1149 i8 0 * 128;
1150
1151 MAIN:
1152     i16 1;         dnl Fixed.
1153     s62 "PCSPSS PSPP synthetic test product";
1154     PCSYSMIS;
1155     0; 0; i16 1;   dnl Fixed.
1156     i16 1;
1157     i16 9;
1158     2;
1159     i16 0;         dnl Fixed.
1160     2;
1161     s8 "11/28/14";
1162     s8 "15:11:00";
1163     s64 "PSPP synthetic test file";
1164 MAIN_END:
1165
1166 VARS:
1167     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
1168     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
1169     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
1170
1171     dnl Numeric variables.
1172     0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
1173     0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
1174
1175     dnl String variables.
1176     0; 0; 0; 0x010400; s8 "STR4"; PCSYSMIS;
1177     0; 0; 0; 0x010800; s8 "STR8"; PCSYSMIS;
1178     0; 0; 0; 0x010f00; s8 "STR15"; PCSYSMIS;
1179     0 * 8;
1180 VARS_END:
1181
1182 DATA:
1183     i8 101 1 101 100 255 1 1 1;
1184         s8 "11/28/14"; s8 "abcd"; s8 "efghj"; s8 "efghijkl";
1185     i8 1; i8 102 101 101 1 0 1 1;
1186          s8 "ABCDEFG"; 1000.0; s8 "PQRS"; s8 "TUVWXYZa";
1187     i8 1 1 0 0 0 0 0 0;
1188         s16 "bcdefghijklmnop";
1189 DATA_END:
1190 ])
1191 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
1192 AT_DATA([pc+-file.sps], [dnl
1193 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
1194 DISPLAY FILE LABEL.
1195 DISPLAY DICTIONARY.
1196 LIST.
1197 ])
1198 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [dnl
1199 File label: PSPP synthetic test file
1200
1201 Variable,Description,Position
1202 NUM1,Format: F8.0,1
1203 NUM2,Format: F8.0,2
1204 STR4,Format: A4,3
1205 STR8,Format: A8,4
1206 STR15,Format: A15,5
1207
1208 warning: `pc+-file.sav' near offset 0x308: Possible compressed data corruption: string contains compressed integer (opcode 101).
1209
1210 Table: Data List
1211 NUM1,NUM2,STR4,STR8,STR15
1212 -5,150,abcd,efghj   ,efghijklABCDEFG
1213 1000,.,PQRS,TUVWXYZa,bcdefghijklmnop
1214 ])
1215 AT_CLEANUP