Enable the show value labels feature
[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
363 AT_SETUP([weighted])
364 AT_KEYWORDS([sack synthetic PC+ file negative])
365 AT_DATA([pc+-file.sack], [dnl
366 dnl File header.
367 2; 0;
368 @MAIN; @MAIN_END - @MAIN;
369 @VARS; @VARS_END - @VARS;
370 0; 0;
371 @DATA; @DATA_END - @DATA;
372 (0; 0) * 11;
373 i8 0 * 128;
374
375 MAIN:
376     i16 1;         dnl Fixed.
377     s62 "PCSPSS PSPP synthetic test product";
378     PCSYSMIS;
379     0; 0; i16 1;   dnl Fixed.
380     i16 0;
381     i16 7;
382     i16 1; i16 6;
383     i16 0;         dnl Fixed.
384     i16 1; i16 0;
385     s8 "11/28/14";
386     s8 "15:11:00";
387     s64 "PSPP synthetic test file";
388 MAIN_END:
389
390 VARS:
391     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
392     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
393     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
394
395     dnl Numeric variables.
396     0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
397     0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
398     0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
399     0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
400 VARS_END:
401
402 DATA:
403     0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
404 DATA_END:
405 ])
406 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
407 AT_DATA([pc+-file.sps], [dnl
408 SYSFILE INFO FILE='pc+-file.sav' ENCODING='us-ascii'.
409 ])
410 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [dnl
411 File:,pc+-file.sav
412 Label:,PSPP synthetic test file
413 Created:,11/28/14 15:11:00 by PCSPSS PSPP synthetic test product
414 Integer Format:,Little Endian
415 Real Format:,IEEE 754 LE.
416 Variables:,4
417 Cases:,1
418 Type:,SPSS/PC+ System File
419 Weight:,NUM3
420 Compression:,None
421 Encoding:,us-ascii
422
423 Variable,Description,Position
424 NUM1,"Format: F8.0
425 Measure: Scale
426 Role: Input
427 Display Alignment: Right
428 Display Width: 8",1
429 NUM2,"Format: F8.0
430 Measure: Scale
431 Role: Input
432 Display Alignment: Right
433 Display Width: 8",2
434 NUM3,"Format: F8.0
435 Measure: Scale
436 Role: Input
437 Display Alignment: Right
438 Display Width: 8",3
439 NUM4,"Format: F8.0
440 Measure: Scale
441 Role: Input
442 Display Alignment: Right
443 Display Width: 8",4
444 ])
445 AT_CLEANUP
446 \f
447 AT_BANNER([SPSS/PC+ file reader - negative])
448
449 AT_SETUP([unspecified character encoding])
450 AT_KEYWORDS([sack synthetic PC+ file negative])
451 AT_DATA([pc+-file.sack], [dnl
452 dnl File header.
453 2; 0;
454 @MAIN; @MAIN_END - @MAIN;
455 @VARS; @VARS_END - @VARS;
456 0; 0;
457 @DATA; @DATA_END - @DATA;
458 (0; 0) * 11;
459 i8 0 * 128;
460
461 MAIN:
462     i16 1;         dnl Fixed.
463     s62 "PCSPSS PSPP synthetic test product";
464     PCSYSMIS;
465     0; 0; i16 1;   dnl Fixed.
466     i16 0;
467     i16 7;
468     1;
469     i16 0;         dnl Fixed.
470     1;
471     s8 "11/28/14";
472     s8 "15:11:00";
473     s64 "PSPP synthetic test file";
474 MAIN_END:
475
476 VARS:
477     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
478     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
479     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
480
481     dnl Numeric variables.
482     0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
483     0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
484     0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
485     0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
486 VARS_END:
487
488 DATA:
489     0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
490 DATA_END:
491 ])
492 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
493 AT_DATA([pc+-file.sps], [dnl
494 GET FILE='pc+-file.sav'.
495 DISPLAY FILE LABEL.
496 DISPLAY DICTIONARY.
497 LIST.
498
499 SYSFILE INFO FILE='pc+-file.sav' ENCODING='us-ascii'.
500 ])
501 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [stdout], [])
502 AT_CHECK([sed 's/default encoding.*For/default encoding.  For/' stdout], [0], [dnl
503 "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."
504
505 File label: PSPP synthetic test file
506
507 Variable,Description,Position
508 NUM1,Format: F8.0,1
509 NUM2,Format: F8.0,2
510 NUM3,Format: F8.0,3
511 NUM4,Format: F8.0,4
512
513 Table: Data List
514 NUM1,NUM2,NUM3,NUM4
515 2,3,4,5
516
517 File:,pc+-file.sav
518 Label:,PSPP synthetic test file
519 Created:,11/28/14 15:11:00 by PCSPSS PSPP synthetic test product
520 Integer Format:,Little Endian
521 Real Format:,IEEE 754 LE.
522 Variables:,4
523 Cases:,1
524 Type:,SPSS/PC+ System File
525 Weight:,Not weighted.
526 Compression:,None
527 Encoding:,us-ascii
528
529 Variable,Description,Position
530 NUM1,"Format: F8.0
531 Measure: Scale
532 Role: Input
533 Display Alignment: Right
534 Display Width: 8",1
535 NUM2,"Format: F8.0
536 Measure: Scale
537 Role: Input
538 Display Alignment: Right
539 Display Width: 8",2
540 NUM3,"Format: F8.0
541 Measure: Scale
542 Role: Input
543 Display Alignment: Right
544 Display Width: 8",3
545 NUM4,"Format: F8.0
546 Measure: Scale
547 Role: Input
548 Display Alignment: Right
549 Display Width: 8",4
550 ])
551 AT_CLEANUP
552
553 AT_SETUP([unexpected fixed values])
554 AT_KEYWORDS([sack synthetic PC+ file negative])
555 AT_DATA([pc+-file.sack], [dnl
556 dnl File header.
557 >>1; 2;<<
558 @MAIN; @MAIN_END - @MAIN;
559 @VARS; @VARS_END - @VARS;
560 0; 0;
561 @DATA; @DATA_END - @DATA;
562 (0; 0) * 11;
563 i8 0 * 128;
564
565 MAIN:
566     i16 1;         dnl Fixed.
567     s62 "PCSPSS PSPP synthetic test product";
568     >>1.0<<;
569     0; >>2<<; i16 1;   dnl Fixed.
570     i16 0;
571     i16 7;
572     1;
573     i16 0;         dnl Fixed.
574     3;
575     s8 "11/28/14";
576     s8 "15:11:00";
577     s64 "PSPP synthetic test file";
578 MAIN_END:
579
580 VARS:
581     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
582     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
583     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
584
585     dnl Numeric variables.
586     0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
587     0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
588     0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
589     0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
590 VARS_END:
591
592 DATA:
593     0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
594 DATA_END:
595 ])
596 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
597 AT_DATA([pc+-file.sps], [dnl
598 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
599 ])
600 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [dnl
601 "warning: `pc+-file.sav' near offset 0x0: Directory fields have unexpected values (1,2)."
602
603 warning: `pc+-file.sav' near offset 0x100: Record 0 specifies unexpected system missing value 1 (0x1p+0).
604
605 "warning: `pc+-file.sav' near offset 0x100: Record 0 reserved fields have unexpected values (1,1,0,2,0,0)."
606
607 warning: `pc+-file.sav' near offset 0x100: Record 0 case counts differ (1 versus 3).
608 ])
609 AT_CLEANUP
610
611 AT_SETUP([short main header])
612 AT_KEYWORDS([sack synthetic PC+ file negative])
613 AT_DATA([pc+-file.sack], [dnl
614 dnl File header.
615 2; 0;
616 @MAIN; @MAIN_END - @MAIN;
617 @VARS; @VARS_END - @VARS;
618 0; 0;
619 @DATA; @DATA_END - @DATA;
620 (0; 0) * 11;
621 i8 0 * 128;
622
623 MAIN:
624     i16 1;         dnl Fixed.
625     s62 "PCSPSS PSPP synthetic test product";
626     PCSYSMIS;
627     0; 0; i16 1;   dnl Fixed.
628     i16 0;
629     i16 7;
630     1;
631     i16 0;         dnl Fixed.
632     1;
633     s8 "11/28/14";
634     s8 "15:11:00";
635 MAIN_END:
636
637 VARS:
638     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
639     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
640     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
641
642     dnl Numeric variables.
643     0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
644     0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
645     0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
646     0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
647 VARS_END:
648
649 DATA:
650     0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
651 DATA_END:
652 ])
653 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
654 AT_DATA([pc+-file.sps], [dnl
655 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
656 ])
657 AT_CHECK([pspp -O format=csv pc+-file.sps], [1], [dnl
658 error: `pc+-file.sav' near offset 0x100: This is not an SPSS/PC+ system file.
659 ])
660 AT_CLEANUP
661
662 AT_SETUP([long main header])
663 AT_KEYWORDS([sack synthetic PC+ file negative])
664 AT_DATA([pc+-file.sack], [dnl
665 dnl File header.
666 2; 0;
667 @MAIN; @MAIN_END - @MAIN;
668 @VARS; @VARS_END - @VARS;
669 0; 0;
670 @DATA; @DATA_END - @DATA;
671 (0; 0) * 11;
672 i8 0 * 128;
673
674 MAIN:
675     i16 1;         dnl Fixed.
676     s62 "PCSPSS PSPP synthetic test product";
677     PCSYSMIS;
678     0; 0; i16 1;   dnl Fixed.
679     i16 0;
680     i16 7;
681     1;
682     i16 0;         dnl Fixed.
683     1;
684     s8 "11/28/14";
685     s8 "15:11:00";
686     >>s80 "PSPP synthetic test file"<<;
687 MAIN_END:
688
689 VARS:
690     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
691     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
692     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
693
694     dnl Numeric variables.
695     0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
696     0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
697     0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
698     0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
699 VARS_END:
700
701 DATA:
702     0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
703 DATA_END:
704 ])
705 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
706 AT_DATA([pc+-file.sps], [dnl
707 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
708 ])
709 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [dnl
710 warning: `pc+-file.sav' near offset 0x100: Record 0 has unexpected length 192.
711 ])
712 AT_CLEANUP
713
714 AT_SETUP([invalid compression type])
715 AT_KEYWORDS([sack synthetic PC+ file negative])
716 AT_DATA([pc+-file.sack], [dnl
717 dnl File header.
718 2; 0;
719 @MAIN; @MAIN_END - @MAIN;
720 @VARS; @VARS_END - @VARS;
721 0; 0;
722 @DATA; @DATA_END - @DATA;
723 (0; 0) * 11;
724 i8 0 * 128;
725
726 MAIN:
727     i16 1;         dnl Fixed.
728     s62 "PCSPSS PSPP synthetic test product";
729     PCSYSMIS;
730     0; 0; i16 1;   dnl Fixed.
731     i16 >>2<<;
732     i16 7;
733     1;
734     i16 0;         dnl Fixed.
735     1;
736     s8 "11/28/14";
737     s8 "15:11:00";
738     s64 "PSPP synthetic test file";
739 MAIN_END:
740
741 VARS:
742     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
743     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
744     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
745
746     dnl Numeric variables.
747     0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
748     0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
749     0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
750     0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
751 VARS_END:
752
753 DATA:
754     0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
755 DATA_END:
756 ])
757 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
758 AT_DATA([pc+-file.sps], [dnl
759 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
760 ])
761 AT_CHECK([pspp -O format=csv pc+-file.sps], [1], [dnl
762 error: `pc+-file.sav' near offset 0x100: Invalid compression type 2.
763 ])
764 AT_CLEANUP
765
766 AT_SETUP([unrealistic number of cases])
767 AT_KEYWORDS([sack synthetic PC+ file negative])
768 AT_DATA([pc+-file.sack], [dnl
769 dnl File header.
770 2; 0;
771 @MAIN; @MAIN_END - @MAIN;
772 @VARS; @VARS_END - @VARS;
773 0; 0;
774 @DATA; @DATA_END - @DATA;
775 (0; 0) * 11;
776 i8 0 * 128;
777
778 MAIN:
779     i16 1;         dnl Fixed.
780     s62 "PCSPSS PSPP synthetic test product";
781     PCSYSMIS;
782     0; 0; i16 1;   dnl Fixed.
783     i16 0;
784     i16 7;
785     1000;
786     i16 0;         dnl Fixed.
787     1000;
788     s8 "11/28/14";
789     s8 "15:11:00";
790     s64 "PSPP synthetic test file";
791 MAIN_END:
792
793 VARS:
794     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
795     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
796     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
797
798     dnl Numeric variables.
799     0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
800     0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
801     0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
802     0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
803 VARS_END:
804
805 DATA:
806     0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
807 DATA_END:
808 ])
809 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
810 AT_DATA([pc+-file.sps], [dnl
811 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
812 ])
813 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [dnl
814 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.
815 ])
816 AT_CLEANUP
817
818 AT_SETUP([labels bad offsets])
819 AT_KEYWORDS([sack synthetic PC+ file negative])
820 AT_DATA([pc+-file.sack], [dnl
821 dnl File header.
822 2; 0;
823 @MAIN; @MAIN_END - @MAIN;
824 @VARS; @VARS_END - @VARS;
825 @LABELS; @LABELS_END - @LABELS;
826 @DATA; @DATA_END - @DATA;
827 (0; 0) * 11;
828 i8 0 * 128;
829
830 MAIN:
831     i16 1;         dnl Fixed.
832     s62 "PCSPSS PSPP synthetic test product";
833     PCSYSMIS;
834     0; 0; i16 1;   dnl Fixed.
835     i16 0;
836     i16 7;
837     1;
838     i16 0;         dnl Fixed.
839     1;
840     s8 "11/28/14";
841     s8 "15:11:00";
842     s64 "PSPP synthetic test file";
843 MAIN_END:
844
845 VARS:
846     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
847     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
848     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
849
850     dnl Numeric variables.
851     @N1L - @LOFF; @N1E - @LOFF; 1000; 0x050800; s8 "NUM1"; PCSYSMIS;
852     @N1L - @LOFF - 1; @LABELS_END - @LOFF; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
853     @N1L - @LOFF + 1; @LABELS_END - @LOFF; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
854     0; 0; @LABELS_END - @LOFF - 1; 0x050800; s8 "NUM4"; PCSYSMIS;
855 VARS_END:
856
857 LABELS:
858     3; i8 0 0 0; LOFF: i8 0;
859     N1L: PCSYSMIS;
860 LABELS_END:
861
862 DATA:
863     0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0; N1E:
864 DATA_END:
865 ])
866 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
867 AT_DATA([pc+-file.sps], [dnl
868 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
869 ])
870 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [dnl
871 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.
872
873 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.
874
875 "warning: `pc+-file.sav' near offset 0x2a0: Value labels end with partial label (0 bytes left in record, label length 255)."
876
877 warning: `pc+-file.sav' near offset 0x299: 7 leftover bytes following value labels.
878
879 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.
880 ])
881 AT_CLEANUP
882
883 AT_SETUP([record 1 bad length])
884 AT_KEYWORDS([sack synthetic PC+ file negative])
885 AT_DATA([pc+-file.sack], [dnl
886 dnl File header.
887 2; 0;
888 @MAIN; @MAIN_END - @MAIN;
889 @VARS; @VARS_END - @VARS;
890 0; 0;
891 @DATA; @DATA_END - @DATA;
892 (0; 0) * 11;
893 i8 0 * 128;
894
895 MAIN:
896     i16 1;         dnl Fixed.
897     s62 "PCSPSS PSPP synthetic test product";
898     PCSYSMIS;
899     0; 0; i16 1;   dnl Fixed.
900     i16 0;
901     i16 7;
902     1;
903     i16 0;         dnl Fixed.
904     1;
905     s8 "11/28/14";
906     s8 "15:11:00";
907     s64 "PSPP synthetic test file";
908 MAIN_END:
909
910 VARS:
911     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
912     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
913     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
914
915     dnl Numeric variables.
916     0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
917     0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
918     0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
919 VARS_END:
920
921 DATA:
922     0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
923 DATA_END:
924 ])
925 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
926 AT_DATA([pc+-file.sps], [dnl
927 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
928 ])
929 AT_CHECK([pspp -O format=csv pc+-file.sps], [1], [dnl
930 error: `pc+-file.sav' near offset 0x1b0: Record 1 has length 192 (expected 224).
931
932 pc+-file.sps:1: error: GET: `pc+-file.sav': Data file dictionary has no variables.
933 ])
934 AT_CLEANUP
935
936 AT_SETUP([bad variable format])
937 AT_KEYWORDS([sack synthetic PC+ file negative])
938 AT_DATA([pc+-file.sack], [dnl
939 dnl File header.
940 2; 0;
941 @MAIN; @MAIN_END - @MAIN;
942 @VARS; @VARS_END - @VARS;
943 0; 0;
944 @DATA; @DATA_END - @DATA;
945 (0; 0) * 11;
946 i8 0 * 128;
947
948 MAIN:
949     i16 1;         dnl Fixed.
950     s62 "PCSPSS PSPP synthetic test product";
951     PCSYSMIS;
952     0; 0; i16 1;   dnl Fixed.
953     i16 0;
954     i16 7;
955     1;
956     i16 0;         dnl Fixed.
957     1;
958     s8 "11/28/14";
959     s8 "15:11:00";
960     s64 "PSPP synthetic test file";
961 MAIN_END:
962
963 VARS:
964     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
965     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
966     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
967
968     dnl Numeric variables.
969     0; 0; 0; 0xff0000; s8 "NUM1"; PCSYSMIS;
970     0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
971     0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
972     0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
973 VARS_END:
974
975 DATA:
976     0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
977 DATA_END:
978 ])
979 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
980 AT_DATA([pc+-file.sps], [dnl
981 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
982 ])
983 AT_CHECK([pspp -O format=csv pc+-file.sps], [1], [dnl
984 error: `pc+-file.sav' near offset 0x210: Variable 3 has invalid type 255.
985 ])
986 AT_CLEANUP
987
988 AT_SETUP([bad variable name])
989 AT_KEYWORDS([sack synthetic PC+ file negative])
990 AT_DATA([pc+-file.sack], [dnl
991 dnl File header.
992 2; 0;
993 @MAIN; @MAIN_END - @MAIN;
994 @VARS; @VARS_END - @VARS;
995 0; 0;
996 @DATA; @DATA_END - @DATA;
997 (0; 0) * 11;
998 i8 0 * 128;
999
1000 MAIN:
1001     i16 1;         dnl Fixed.
1002     s62 "PCSPSS PSPP synthetic test product";
1003     PCSYSMIS;
1004     0; 0; i16 1;   dnl Fixed.
1005     i16 0;
1006     i16 7;
1007     1;
1008     i16 0;         dnl Fixed.
1009     1;
1010     s8 "11/28/14";
1011     s8 "15:11:00";
1012     s64 "PSPP synthetic test file";
1013 MAIN_END:
1014
1015 VARS:
1016     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
1017     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
1018     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
1019
1020     dnl Numeric variables.
1021     0; 0; 0; 0x050000; s8 "#NUM"; PCSYSMIS;
1022     0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
1023     0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
1024     0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
1025 VARS_END:
1026
1027 DATA:
1028     0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
1029 DATA_END:
1030 ])
1031 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
1032 AT_DATA([pc+-file.sps], [dnl
1033 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
1034 ])
1035 AT_CHECK([pspp -O format=csv pc+-file.sps], [1], [dnl
1036 error: `pc+-file.sav' near offset 0x210: Invalid variable name `#NUM'.
1037 ])
1038 AT_CLEANUP
1039
1040 AT_SETUP([duplicate variable name])
1041 AT_KEYWORDS([sack synthetic PC+ file negative])
1042 AT_DATA([pc+-file.sack], [dnl
1043 dnl File header.
1044 2; 0;
1045 @MAIN; @MAIN_END - @MAIN;
1046 @VARS; @VARS_END - @VARS;
1047 0; 0;
1048 @DATA; @DATA_END - @DATA;
1049 (0; 0) * 11;
1050 i8 0 * 128;
1051
1052 MAIN:
1053     i16 1;         dnl Fixed.
1054     s62 "PCSPSS PSPP synthetic test product";
1055     PCSYSMIS;
1056     0; 0; i16 1;   dnl Fixed.
1057     i16 0;
1058     i16 7;
1059     1;
1060     i16 0;         dnl Fixed.
1061     1;
1062     s8 "11/28/14";
1063     s8 "15:11:00";
1064     s64 "PSPP synthetic test file";
1065 MAIN_END:
1066
1067 VARS:
1068     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
1069     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
1070     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
1071
1072     dnl Numeric variables.
1073     0; 0; 0; 0x050000; s8 "NUM1"; PCSYSMIS;
1074     0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
1075     0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
1076     0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
1077 VARS_END:
1078
1079 DATA:
1080     0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
1081 DATA_END:
1082 ])
1083 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
1084 AT_DATA([pc+-file.sps], [dnl
1085 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
1086 ])
1087 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [dnl
1088 warning: `pc+-file.sav' near offset 0x230: Renaming variable with duplicate name `NUM1' to `VAR001'.
1089
1090 warning: `pc+-file.sav' near offset 0x250: Renaming variable with duplicate name `NUM1' to `VAR002'.
1091
1092 warning: `pc+-file.sav' near offset 0x270: Renaming variable with duplicate name `NUM1' to `VAR003'.
1093 ])
1094 AT_CLEANUP
1095
1096 AT_SETUP([partial case])
1097 AT_KEYWORDS([sack synthetic PC+ file negative])
1098 AT_DATA([pc+-file.sack], [dnl
1099 dnl File header.
1100 2; 0;
1101 @MAIN; @MAIN_END - @MAIN;
1102 @VARS; @VARS_END - @VARS;
1103 0; 0;
1104 @DATA; @DATA_END - @DATA;
1105 (0; 0) * 11;
1106 i8 0 * 128;
1107
1108 MAIN:
1109     i16 1;         dnl Fixed.
1110     s62 "PCSPSS PSPP synthetic test product";
1111     PCSYSMIS;
1112     0; 0; i16 1;   dnl Fixed.
1113     i16 0;
1114     i16 7;
1115     3;
1116     i16 0;         dnl Fixed.
1117     3;
1118     s8 "11/28/14";
1119     s8 "15:11:00";
1120     s64 "PSPP synthetic test file";
1121 MAIN_END:
1122
1123 VARS:
1124     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
1125     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
1126     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
1127
1128     dnl Numeric variables.
1129     0; 0; 0; 0x050000; s8 "NUM1"; PCSYSMIS;
1130     0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
1131     0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
1132     0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
1133 VARS_END:
1134
1135 DATA:
1136     1.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
1137     2.0; "11/28/14"; 1.0; 6.0; 7.0; 8.0; 9.0;
1138     3.0; "11/28/14"; 1.0; 10.0;
1139 DATA_END:
1140 ])
1141 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
1142 AT_DATA([pc+-file.sps], [dnl
1143 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
1144 LIST.
1145 ])
1146 AT_CHECK([pspp -O format=csv pc+-file.sps], [1], [dnl
1147 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.
1148
1149 error: `pc+-file.sav' near offset 0x320: File ends in partial case.
1150
1151 error: Error reading case from file `pc+-file.sav'.
1152
1153 Table: Data List
1154 NUM1,NUM2,NUM3,NUM4
1155 2,3,4,5
1156 6,7,8,9
1157 ])
1158 AT_CLEANUP
1159
1160 AT_SETUP([case extends past end of data record])
1161 AT_KEYWORDS([sack synthetic PC+ file negative])
1162 AT_DATA([pc+-file.sack], [dnl
1163 dnl File header.
1164 2; 0;
1165 @MAIN; @MAIN_END - @MAIN;
1166 @VARS; @VARS_END - @VARS;
1167 0; 0;
1168 @DATA; @DATA_END - @DATA;
1169 (0; 0) * 11;
1170 i8 0 * 128;
1171
1172 MAIN:
1173     i16 1;         dnl Fixed.
1174     s62 "PCSPSS PSPP synthetic test product";
1175     PCSYSMIS;
1176     0; 0; i16 1;   dnl Fixed.
1177     i16 0;
1178     i16 7;
1179     3;
1180     i16 0;         dnl Fixed.
1181     3;
1182     s8 "11/28/14";
1183     s8 "15:11:00";
1184     s64 "PSPP synthetic test file";
1185 MAIN_END:
1186
1187 VARS:
1188     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
1189     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
1190     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
1191
1192     dnl Numeric variables.
1193     0; 0; 0; 0x050000; s8 "NUM1"; PCSYSMIS;
1194     0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
1195     0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
1196     0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
1197 VARS_END:
1198
1199 DATA:
1200     1.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
1201     2.0; "11/28/14"; 1.0; 6.0; 7.0; 8.0; 9.0;
1202     3.0; "11/28/14"; 1.0; 10.0;
1203 DATA_END:
1204     11.0; 12.0; 13.0;
1205 ])
1206 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
1207 AT_DATA([pc+-file.sps], [dnl
1208 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
1209 LIST.
1210 ])
1211 AT_CHECK([pspp -O format=csv pc+-file.sps], [1], [dnl
1212 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.
1213
1214 error: `pc+-file.sav' near offset 0x338: Case beginning at offset 0x00000300 extends past end of data record at offset 0x00000320.
1215
1216 error: Error reading case from file `pc+-file.sav'.
1217
1218 Table: Data List
1219 NUM1,NUM2,NUM3,NUM4
1220 2,3,4,5
1221 6,7,8,9
1222 ])
1223 AT_CLEANUP
1224
1225 AT_SETUP([corrupt compressed data])
1226 AT_KEYWORDS([sack synthetic PC+ file positive])
1227 AT_DATA([pc+-file.sack], [dnl
1228 dnl File header.
1229 2; 0;
1230 @MAIN; @MAIN_END - @MAIN;
1231 @VARS; @VARS_END - @VARS;
1232 0; 0;
1233 @DATA; @DATA_END - @DATA;
1234 (0; 0) * 11;
1235 i8 0 * 128;
1236
1237 MAIN:
1238     i16 1;         dnl Fixed.
1239     s62 "PCSPSS PSPP synthetic test product";
1240     PCSYSMIS;
1241     0; 0; i16 1;   dnl Fixed.
1242     i16 1;
1243     i16 9;
1244     2;
1245     i16 0;         dnl Fixed.
1246     2;
1247     s8 "11/28/14";
1248     s8 "15:11:00";
1249     s64 "PSPP synthetic test file";
1250 MAIN_END:
1251
1252 VARS:
1253     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
1254     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
1255     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
1256
1257     dnl Numeric variables.
1258     0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
1259     0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
1260
1261     dnl String variables.
1262     0; 0; 0; 0x010400; s8 "STR4"; PCSYSMIS;
1263     0; 0; 0; 0x010800; s8 "STR8"; PCSYSMIS;
1264     0; 0; 0; 0x010f00; s8 "STR15"; PCSYSMIS;
1265     0 * 8;
1266 VARS_END:
1267
1268 DATA:
1269     i8 101 1 101 100 255 1 1 1;
1270         s8 "11/28/14"; s8 "abcd"; s8 "efghj"; s8 "efghijkl";
1271     i8 1; i8 102 101 101 1 0 1 1;
1272          s8 "ABCDEFG"; 1000.0; s8 "PQRS"; s8 "TUVWXYZa";
1273     i8 1 1 0 0 0 0 0 0;
1274         s16 "bcdefghijklmnop";
1275 DATA_END:
1276 ])
1277 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
1278 AT_DATA([pc+-file.sps], [dnl
1279 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
1280 DISPLAY FILE LABEL.
1281 DISPLAY DICTIONARY.
1282 LIST.
1283 ])
1284 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [dnl
1285 File label: PSPP synthetic test file
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 warning: `pc+-file.sav' near offset 0x308: Possible compressed data corruption: string contains compressed integer (opcode 101).
1295
1296 Table: Data List
1297 NUM1,NUM2,STR4,STR8,STR15
1298 -5,150,abcd,efghj   ,efghijklABCDEFG
1299 1000,.,PQRS,TUVWXYZa,bcdefghijklmnop
1300 ])
1301 AT_CLEANUP
1302
1303 AT_SETUP([invalid weight index])
1304 AT_KEYWORDS([sack synthetic PC+ file negative])
1305 AT_DATA([pc+-file.sack], [dnl
1306 dnl File header.
1307 2; 0;
1308 @MAIN; @MAIN_END - @MAIN;
1309 @VARS; @VARS_END - @VARS;
1310 0; 0;
1311 @DATA; @DATA_END - @DATA;
1312 (0; 0) * 11;
1313 i8 0 * 128;
1314
1315 MAIN:
1316     i16 1;         dnl Fixed.
1317     s62 "PCSPSS PSPP synthetic test product";
1318     PCSYSMIS;
1319     0; 0; i16 1;   dnl Fixed.
1320     i16 0;
1321     i16 7;
1322     i16 1; i16 10;
1323     i16 0;         dnl Fixed.
1324     i16 1; i16 0;
1325     s8 "11/28/14";
1326     s8 "15:11:00";
1327     s64 "PSPP synthetic test file";
1328 MAIN_END:
1329
1330 VARS:
1331     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
1332     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
1333     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
1334
1335     dnl Numeric variables.
1336     0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
1337     0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
1338     0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
1339     0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
1340 VARS_END:
1341
1342 DATA:
1343     0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
1344 DATA_END:
1345 ])
1346 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
1347 AT_DATA([pc+-file.sps], [dnl
1348 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
1349 ])
1350 AT_CHECK([pspp -O format=csv pc+-file.sps], [0],
1351   [warning: `pc+-file.sav': Invalid weight index 10.
1352 ])
1353 AT_CLEANUP
1354
1355 AT_SETUP([string weight])
1356 AT_KEYWORDS([sack synthetic PC+ file negative])
1357 AT_DATA([pc+-file.sack], [dnl
1358 dnl File header.
1359 2; 0;
1360 @MAIN; @MAIN_END - @MAIN;
1361 @VARS; @VARS_END - @VARS;
1362 0; 0;
1363 @DATA; @DATA_END - @DATA;
1364 (0; 0) * 11;
1365 i8 0 * 128;
1366
1367 MAIN:
1368     i16 1;         dnl Fixed.
1369     s62 "PCSPSS PSPP synthetic test product";
1370     PCSYSMIS;
1371     0; 0; i16 1;   dnl Fixed.
1372     i16 0;
1373     i16 7;
1374     i16 1; i16 6;
1375     i16 0;         dnl Fixed.
1376     i16 1; i16 0;
1377     s8 "11/28/14";
1378     s8 "15:11:00";
1379     s64 "PSPP synthetic test file";
1380 MAIN_END:
1381
1382 VARS:
1383     0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
1384     0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
1385     0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
1386
1387     dnl Variables.
1388     0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
1389     0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
1390     0; 0; 0; 0x010800; s8 "STR1"; PCSYSMIS;
1391     0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
1392 VARS_END:
1393
1394 DATA:
1395     0.0; "11/28/14"; 1.0; s8 "acbdefgh"; 3.0; 4.0; 5.0;
1396 DATA_END:
1397 ])
1398 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
1399 AT_DATA([pc+-file.sps], [dnl
1400 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
1401 ])
1402 AT_CHECK([pspp -O format=csv pc+-file.sps], [0],
1403   [warning: `pc+-file.sav' near offset 0x250: Cannot weight by string variable `STR1'.
1404 ])
1405 AT_CLEANUP