1 dnl PSPP - a program for statistical analysis.
2 dnl Copyright (C) 2017 Free Software Foundation, Inc.
4 dnl This program is free software: you can redistribute it and/or modify
5 dnl it under the terms of the GNU General Public License as published by
6 dnl the Free Software Foundation, either version 3 of the License, or
7 dnl (at your option) any later version.
9 dnl This program is distributed in the hope that it will be useful,
10 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
11 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 dnl GNU General Public License for more details.
14 dnl You should have received a copy of the GNU General Public License
15 dnl along with this program. If not, see <http://www.gnu.org/licenses/>.
17 AT_BANNER([SPSS/PC+ file reader - positive])
19 AT_SETUP([variable labels and missing values])
20 AT_KEYWORDS([sack synthetic PC+ file positive])
21 AT_DATA([pc+-file.sack], [dnl
24 @MAIN; @MAIN_END - @MAIN;
25 @VARS; @VARS_END - @VARS;
26 @LABELS; @LABELS_END - @LABELS;
27 @DATA; @DATA_END - @DATA;
33 s62 "PCSPSS PSPP synthetic test product";
35 0; 0; i16 1; dnl Fixed.
43 s64 "PSPP synthetic test file";
47 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
48 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
49 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
51 dnl Numeric variable, no label or missing values.
52 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
54 dnl Numeric variable, variable label.
55 0; 0; @NUM2_LABEL - @LABELS_OFS; 0x050800; s8 "NUM2"; PCSYSMIS;
57 dnl Numeric variable with missing value.
58 0; 0; 0; 0x050800; s8 "NUM3"; 1.0;
60 dnl Numeric variable, variable label and missing value.
61 0; 0; @NUM4_LABEL - @LABELS_OFS; 0x050800; s8 "NUM4"; 2.0;
63 dnl String variable, no label or missing values.
64 0; 0; 0; 0x010800; s8 "STR1"; PCSYSMIS;
66 dnl String variable, variable label.
67 0; 0; @STR2_LABEL - @LABELS_OFS; 0x010400; s8 "STR2"; PCSYSMIS;
69 dnl String variable with missing value.
70 0; 0; 0; 0x010500; s8 "STR3"; s8 "MISS";
72 dnl String variable, variable label and missing value.
73 0; 0; @STR4_LABEL - @LABELS_OFS; 0x010100; s8 "STR4"; s8 "OTHR";
75 dnl Long string variable
76 0; 0; 0; 0x010b00; s8 "STR5"; PCSYSMIS;
79 dnl Long string variable with variable label
80 0; 0; @STR6_LABEL - @LABELS_OFS; 0x010b00; s8 "STR6"; PCSYSMIS;
85 3; i8 0 0 0; LABELS_OFS: i8 0;
86 NUM2_LABEL: COUNT8("Numeric variable 2's label");
87 NUM4_LABEL: COUNT8("Another numeric variable label");
88 STR2_LABEL: COUNT8("STR2's variable label");
89 STR4_LABEL: COUNT8("STR4's variable label");
90 STR6_LABEL: COUNT8("Another string variable's label");
95 0.0; 1.0; 2.0; PCSYSMIS; s8 "abcdefgh"; s8 "ijkl"; s8 "mnopq"; s8 "r";
96 s16 "stuvwxyzAB"; s16 "CDEFGHIJKLM";
99 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
100 AT_DATA([pc+-file.sps], [dnl
101 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
106 AT_CHECK([pspp -o pspp.csv pc+-file.sps])
107 AT_CHECK([cat pspp.csv], [0], [dnl
109 Label,PSPP synthetic test file
112 Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
113 NUM1,1,,Scale,Input,8,Right,F8.0,F8.0,
114 NUM2,2,Numeric variable 2's label,Scale,Input,8,Right,F8.0,F8.0,
115 NUM3,3,,Scale,Input,8,Right,F8.0,F8.0,1
116 NUM4,4,Another numeric variable label,Scale,Input,8,Right,F8.0,F8.0,2
117 STR1,5,,Nominal,Input,8,Left,A8,A8,
118 STR2,6,STR2's variable label,Nominal,Input,4,Left,A4,A4,
119 STR3,7,,Nominal,Input,5,Left,A5,A5,"""MISS """
120 STR4,8,STR4's variable label,Nominal,Input,1,Left,A1,A1,"""O"""
121 STR5,9,,Nominal,Input,11,Left,A11,A11,
122 STR6,10,Another string variable's label,Nominal,Input,11,Left,A11,A11,
125 NUM1,NUM2,NUM3,NUM4,STR1,STR2,STR3,STR4,STR5,STR6
126 0,1,2,.,abcdefgh,ijkl,mnopq,r,stuvwxyzAB,CDEFGHIJKLM
130 AT_SETUP([value labels])
131 AT_KEYWORDS([sack synthetic PC+ file positive])
132 AT_DATA([pc+-file.sack], [dnl
135 @MAIN; @MAIN_END - @MAIN;
136 @VARS; @VARS_END - @VARS;
137 @LABELS; @LABELS_END - @LABELS;
138 @DATA; @DATA_END - @DATA;
144 s62 "PCSPSS PSPP synthetic test product";
146 0; 0; i16 1; dnl Fixed.
154 s64 "PSPP synthetic test file";
158 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
159 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
160 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
162 dnl Numeric variables.
163 @N1 - @LOFF; @N1E - @LOFF; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
164 @N2 - @LOFF; @N2E - @LOFF; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
165 @N3 - @LOFF; @N3E - @LOFF; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
166 @N4 - @LOFF; @N4E - @LOFF; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
167 @N5 - @LOFF; @N5E - @LOFF; 0; 0x050800; s8 "NUM5"; PCSYSMIS;
169 dnl String variables.
170 @S1 - @LOFF; @S1E - @LOFF; 0; 0x010100; s8 "STR1"; PCSYSMIS;
171 @S2 - @LOFF; @S2E - @LOFF; 0; 0x010200; s8 "STR2"; PCSYSMIS;
172 @S3 - @LOFF; @S3E - @LOFF; 0; 0x010300; s8 "STR3"; PCSYSMIS;
173 @S4 - @LOFF; @S4E - @LOFF; 0; 0x010400; s8 "STR4"; PCSYSMIS;
174 @S5 - @LOFF; @S5E - @LOFF; 0; 0x010500; s8 "STR5"; PCSYSMIS;
175 @S6 - @LOFF; @S6E - @LOFF; 0; 0x010600; s8 "STR6"; PCSYSMIS;
176 @S7 - @LOFF; @S7E - @LOFF; 0; 0x010700; s8 "STR7"; PCSYSMIS;
177 @S8 - @LOFF; @S8E - @LOFF; 0; 0x010800; s8 "STR8"; PCSYSMIS;
181 3; i8 0 0 0; LOFF: i8 0;
183 N1: 1.0; COUNT8("one"); N1E:
184 N2: 2.0; COUNT8("two"); 3.0; COUNT8("three"); N2E:
186 3.0; COUNT8("three");
193 S1: s8 "a"; COUNT8("value label for `a'"); S1E:
194 S2: s8 "ab"; COUNT8("value label for `ab'"); S2E:
195 S3: s8 "abc"; COUNT8("value label for `abc'"); S3E:
197 s8 "abcdefgh"; COUNT8("value label for abcdefgh"); S4E:
199 s8 "ijklmnop"; COUNT8("value label for ijklmnop"); S5E:
200 s8 "qrstuvwx"; COUNT8("value label for qrstuvwx"); S6E:
201 s8 "yzABCDEF"; COUNT8("value label for yzABCDEF"); S7E:
202 s8 "GHIJKLMN"; COUNT8("value label for GHIJKLMN"); S8E:
206 1.0; "11/28/14"; 1.0;
207 1.0; 2.0; 3.0; 4.0; 5.0;
208 s8 "a"; s8 "bc"; s8 "cde"; s8 "fghj"; s8 "klmno"; s8 "pqrstu";
209 s8 "vwxyzAB"; s8 "CDEFGHIJ";
212 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
213 AT_DATA([pc+-file.sps], [dnl
214 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
219 AT_CHECK([pspp -o pspp.csv pc+-file.sps])
220 AT_CHECK([cat pspp.csv], [0], [dnl
222 Label,PSPP synthetic test file
225 Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
226 NUM1,1,,Scale,Input,8,Right,F8.0,F8.0,
227 NUM2,2,,Scale,Input,8,Right,F8.0,F8.0,
228 NUM3,3,,Scale,Input,8,Right,F8.0,F8.0,
229 NUM4,4,,Scale,Input,8,Right,F8.0,F8.0,
230 NUM5,5,,Scale,Input,8,Right,F8.0,F8.0,
231 STR1,6,,Nominal,Input,1,Left,A1,A1,
232 STR2,7,,Nominal,Input,2,Left,A2,A2,
233 STR3,8,,Nominal,Input,3,Left,A3,A3,
234 STR4,9,,Nominal,Input,4,Left,A4,A4,
235 STR5,10,,Nominal,Input,5,Left,A5,A5,
236 STR6,11,,Nominal,Input,6,Left,A6,A6,
237 STR7,12,,Nominal,Input,7,Left,A7,A7,
238 STR8,13,,Nominal,Input,8,Left,A8,A8,
241 Variable Value,,Label
250 STR1,a,value label for `a'
251 STR2,ab,value label for `ab'
252 STR3,abc,value label for `abc'
253 STR4,abcd,value label for abcdefgh
254 STR5,abcde,value label for abcdefgh
255 ,ijklm,value label for ijklmnop
256 STR6,abcdef,value label for abcdefgh
257 ,ijklmn,value label for ijklmnop
258 ,qrstuv,value label for qrstuvwx
259 STR7,abcdefg,value label for abcdefgh
260 ,ijklmno,value label for ijklmnop
261 ,qrstuvw,value label for qrstuvwx
262 ,yzABCDE,value label for yzABCDEF
263 STR8,GHIJKLMN,value label for GHIJKLMN
264 ,ijklmnop,value label for ijklmnop
265 ,qrstuvwx,value label for qrstuvwx
266 ,yzABCDEF,value label for yzABCDEF
269 NUM1,NUM2,NUM3,NUM4,NUM5,STR1,STR2,STR3,STR4,STR5,STR6,STR7,STR8
270 1,2,3,4,5,a,bc,cde,fghj,klmno,pqrstu,vwxyzAB,CDEFGHIJ
274 AT_SETUP([compressed data])
275 AT_KEYWORDS([sack synthetic PC+ file positive])
276 AT_DATA([pc+-file.sack], [dnl
279 @MAIN; @MAIN_END - @MAIN;
280 @VARS; @VARS_END - @VARS;
282 @DATA; @DATA_END - @DATA;
288 s62 "PCSPSS PSPP synthetic test product";
290 0; 0; i16 1; dnl Fixed.
298 s64 "PSPP synthetic test file";
302 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
303 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
304 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
306 dnl Numeric variables.
307 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
308 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
310 dnl String variables.
311 0; 0; 0; 0x010400; s8 "STR4"; PCSYSMIS;
312 0; 0; 0; 0x010800; s8 "STR8"; PCSYSMIS;
313 0; 0; 0; 0x010f00; s8 "STR15"; PCSYSMIS;
318 i8 101 1 101 100 255 1 1 1;
319 s8 "11/28/14"; s8 "abcd"; s8 "efghj"; s8 "efghijkl";
320 i8 1; i8 102 1 101 1 0 1 1;
321 s8 "ABCDEFG"; s8 "11/28/14"; 1000.0; s8 "PQRS"; s8 "TUVWXYZa";
323 s16 "bcdefghijklmnop";
326 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
327 AT_DATA([pc+-file.sps], [dnl
328 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
333 AT_CHECK([pspp -o pspp.csv pc+-file.sps])
334 AT_CHECK([cat pspp.csv], [0], [dnl
336 Label,PSPP synthetic test file
339 Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
340 NUM1,1,,Scale,Input,8,Right,F8.0,F8.0,
341 NUM2,2,,Scale,Input,8,Right,F8.0,F8.0,
342 STR4,3,,Nominal,Input,4,Left,A4,A4,
343 STR8,4,,Nominal,Input,8,Left,A8,A8,
344 STR15,5,,Nominal,Input,15,Left,A15,A15,
347 NUM1,NUM2,STR4,STR8,STR15
348 -5,150,abcd,efghj,efghijklABCDEFG
349 1000,.,PQRS,TUVWXYZa,bcdefghijklmnop
354 AT_KEYWORDS([sack synthetic PC+ file negative])
355 AT_DATA([pc+-file.sack], [dnl
358 @MAIN; @MAIN_END - @MAIN;
359 @VARS; @VARS_END - @VARS;
361 @DATA; @DATA_END - @DATA;
367 s62 "PCSPSS PSPP synthetic test product";
369 0; 0; i16 1; dnl Fixed.
377 s64 "PSPP synthetic test file";
381 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
382 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
383 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
385 dnl Numeric variables.
386 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
387 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
388 0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
389 0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
393 0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
396 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
397 AT_DATA([pc+-file.sps], [dnl
398 SYSFILE INFO FILE='pc+-file.sav' ENCODING='us-ascii'.
400 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [dnl
401 Table: File Information
403 Label,PSPP synthetic test file
404 Created,11/28/14 15:11:00 by PCSPSS PSPP synthetic test product
405 Integer Format,Little Endian
406 Real Format,IEEE 754 LE.
409 Type,SPSS/PC+ System File
415 Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
416 NUM1,1,,Scale,Input,8,Right,F8.0,F8.0,
417 NUM2,2,,Scale,Input,8,Right,F8.0,F8.0,
418 NUM3,3,,Scale,Input,8,Right,F8.0,F8.0,
419 NUM4,4,,Scale,Input,8,Right,F8.0,F8.0,
423 AT_BANNER([SPSS/PC+ file reader - negative])
425 AT_SETUP([unspecified character encoding])
426 AT_KEYWORDS([sack synthetic PC+ file negative])
427 AT_DATA([pc+-file.sack], [dnl
430 @MAIN; @MAIN_END - @MAIN;
431 @VARS; @VARS_END - @VARS;
433 @DATA; @DATA_END - @DATA;
439 s62 "PCSPSS PSPP synthetic test product";
441 0; 0; i16 1; dnl Fixed.
449 s64 "PSPP synthetic test file";
453 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
454 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
455 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
457 dnl Numeric variables.
458 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
459 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
460 0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
461 0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
465 0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
468 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
469 AT_DATA([pc+-file.sps], [dnl
470 GET FILE='pc+-file.sav'.
475 SYSFILE INFO FILE='pc+-file.sav' ENCODING='us-ascii'.
477 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [stdout], [])
478 AT_CHECK([sed 's/default encoding.*For/default encoding. For/' stdout], [0], [dnl
479 "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."
482 Label,PSPP synthetic test file
485 Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
486 NUM1,1,,Scale,Input,8,Right,F8.0,F8.0,
487 NUM2,2,,Scale,Input,8,Right,F8.0,F8.0,
488 NUM3,3,,Scale,Input,8,Right,F8.0,F8.0,
489 NUM4,4,,Scale,Input,8,Right,F8.0,F8.0,
495 Table: File Information
497 Label,PSPP synthetic test file
498 Created,11/28/14 15:11:00 by PCSPSS PSPP synthetic test product
499 Integer Format,Little Endian
500 Real Format,IEEE 754 LE.
503 Type,SPSS/PC+ System File
509 Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
510 NUM1,1,,Scale,Input,8,Right,F8.0,F8.0,
511 NUM2,2,,Scale,Input,8,Right,F8.0,F8.0,
512 NUM3,3,,Scale,Input,8,Right,F8.0,F8.0,
513 NUM4,4,,Scale,Input,8,Right,F8.0,F8.0,
517 AT_SETUP([unexpected fixed values])
518 AT_KEYWORDS([sack synthetic PC+ file negative])
519 AT_DATA([pc+-file.sack], [dnl
522 @MAIN; @MAIN_END - @MAIN;
523 @VARS; @VARS_END - @VARS;
525 @DATA; @DATA_END - @DATA;
531 s62 "PCSPSS PSPP synthetic test product";
533 0; >>2<<; i16 1; dnl Fixed.
541 s64 "PSPP synthetic test file";
545 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
546 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
547 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
549 dnl Numeric variables.
550 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
551 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
552 0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
553 0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
557 0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
560 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
561 AT_DATA([pc+-file.sps], [dnl
562 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
564 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [dnl
565 "warning: `pc+-file.sav' near offset 0x0: Directory fields have unexpected values (1,2)."
567 warning: `pc+-file.sav' near offset 0x100: Record 0 specifies unexpected system missing value 1 (0x1p+0).
569 "warning: `pc+-file.sav' near offset 0x100: Record 0 reserved fields have unexpected values (1,1,0,2,0,0)."
571 warning: `pc+-file.sav' near offset 0x100: Record 0 case counts differ (1 versus 3).
575 AT_SETUP([short main header])
576 AT_KEYWORDS([sack synthetic PC+ file negative])
577 AT_DATA([pc+-file.sack], [dnl
580 @MAIN; @MAIN_END - @MAIN;
581 @VARS; @VARS_END - @VARS;
583 @DATA; @DATA_END - @DATA;
589 s62 "PCSPSS PSPP synthetic test product";
591 0; 0; i16 1; dnl Fixed.
602 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
603 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
604 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
606 dnl Numeric variables.
607 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
608 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
609 0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
610 0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
614 0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
617 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
618 AT_DATA([pc+-file.sps], [dnl
619 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
621 AT_CHECK([pspp -O format=csv pc+-file.sps], [1], [dnl
622 error: `pc+-file.sav' near offset 0x100: This is not an SPSS/PC+ system file.
626 AT_SETUP([long main header])
627 AT_KEYWORDS([sack synthetic PC+ file negative])
628 AT_DATA([pc+-file.sack], [dnl
631 @MAIN; @MAIN_END - @MAIN;
632 @VARS; @VARS_END - @VARS;
634 @DATA; @DATA_END - @DATA;
640 s62 "PCSPSS PSPP synthetic test product";
642 0; 0; i16 1; dnl Fixed.
650 >>s80 "PSPP synthetic test file"<<;
654 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
655 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
656 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
658 dnl Numeric variables.
659 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
660 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
661 0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
662 0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
666 0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
669 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
670 AT_DATA([pc+-file.sps], [dnl
671 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
673 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [dnl
674 warning: `pc+-file.sav' near offset 0x100: Record 0 has unexpected length 192.
678 AT_SETUP([invalid compression type])
679 AT_KEYWORDS([sack synthetic PC+ file negative])
680 AT_DATA([pc+-file.sack], [dnl
683 @MAIN; @MAIN_END - @MAIN;
684 @VARS; @VARS_END - @VARS;
686 @DATA; @DATA_END - @DATA;
692 s62 "PCSPSS PSPP synthetic test product";
694 0; 0; i16 1; dnl Fixed.
702 s64 "PSPP synthetic test file";
706 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
707 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
708 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
710 dnl Numeric variables.
711 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
712 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
713 0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
714 0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
718 0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
721 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
722 AT_DATA([pc+-file.sps], [dnl
723 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
725 AT_CHECK([pspp -O format=csv pc+-file.sps], [1], [dnl
726 error: `pc+-file.sav' near offset 0x100: Invalid compression type 2.
730 AT_SETUP([unrealistic number of cases])
731 AT_KEYWORDS([sack synthetic PC+ file negative])
732 AT_DATA([pc+-file.sack], [dnl
735 @MAIN; @MAIN_END - @MAIN;
736 @VARS; @VARS_END - @VARS;
738 @DATA; @DATA_END - @DATA;
744 s62 "PCSPSS PSPP synthetic test product";
746 0; 0; i16 1; dnl Fixed.
754 s64 "PSPP synthetic test file";
758 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
759 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
760 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
762 dnl Numeric variables.
763 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
764 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
765 0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
766 0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
770 0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
773 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
774 AT_DATA([pc+-file.sps], [dnl
775 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
777 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [dnl
778 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.
782 AT_SETUP([labels bad offsets])
783 AT_KEYWORDS([sack synthetic PC+ file negative])
784 AT_DATA([pc+-file.sack], [dnl
787 @MAIN; @MAIN_END - @MAIN;
788 @VARS; @VARS_END - @VARS;
789 @LABELS; @LABELS_END - @LABELS;
790 @DATA; @DATA_END - @DATA;
796 s62 "PCSPSS PSPP synthetic test product";
798 0; 0; i16 1; dnl Fixed.
806 s64 "PSPP synthetic test file";
810 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
811 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
812 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
814 dnl Numeric variables.
815 @N1L - @LOFF; @N1E - @LOFF; 1000; 0x050800; s8 "NUM1"; PCSYSMIS;
816 @N1L - @LOFF - 1; @LABELS_END - @LOFF; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
817 @N1L - @LOFF + 1; @LABELS_END - @LOFF; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
818 0; 0; @LABELS_END - @LOFF - 1; 0x050800; s8 "NUM4"; PCSYSMIS;
822 3; i8 0 0 0; LOFF: i8 0;
827 0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0; N1E:
830 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
831 AT_DATA([pc+-file.sps], [dnl
832 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
834 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [dnl
835 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.
837 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.
839 "warning: `pc+-file.sav' near offset 0x2a0: Value labels end with partial label (0 bytes left in record, label length 255)."
841 warning: `pc+-file.sav' near offset 0x299: 7 leftover bytes following value labels.
843 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.
847 AT_SETUP([record 1 bad length])
848 AT_KEYWORDS([sack synthetic PC+ file negative])
849 AT_DATA([pc+-file.sack], [dnl
852 @MAIN; @MAIN_END - @MAIN;
853 @VARS; @VARS_END - @VARS;
855 @DATA; @DATA_END - @DATA;
861 s62 "PCSPSS PSPP synthetic test product";
863 0; 0; i16 1; dnl Fixed.
871 s64 "PSPP synthetic test file";
875 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
876 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
877 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
879 dnl Numeric variables.
880 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
881 0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
882 0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
886 0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
889 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
890 AT_DATA([pc+-file.sps], [dnl
891 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
893 AT_CHECK([pspp -O format=csv pc+-file.sps], [1], [dnl
894 error: `pc+-file.sav' near offset 0x1b0: Record 1 has length 192 (expected 224).
896 pc+-file.sps:1: error: GET: `pc+-file.sav': Data file dictionary has no variables.
900 AT_SETUP([bad variable format])
901 AT_KEYWORDS([sack synthetic PC+ file negative])
902 AT_DATA([pc+-file.sack], [dnl
905 @MAIN; @MAIN_END - @MAIN;
906 @VARS; @VARS_END - @VARS;
908 @DATA; @DATA_END - @DATA;
914 s62 "PCSPSS PSPP synthetic test product";
916 0; 0; i16 1; dnl Fixed.
924 s64 "PSPP synthetic test file";
928 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
929 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
930 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
932 dnl Numeric variables.
933 0; 0; 0; 0xff0000; s8 "NUM1"; PCSYSMIS;
934 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
935 0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
936 0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
940 0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
943 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
944 AT_DATA([pc+-file.sps], [dnl
945 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
947 AT_CHECK([pspp -O format=csv pc+-file.sps], [1], [dnl
948 error: `pc+-file.sav' near offset 0x210: Variable 3 has invalid type 255.
952 AT_SETUP([bad variable name])
953 AT_KEYWORDS([sack synthetic PC+ file negative])
954 AT_DATA([pc+-file.sack], [dnl
957 @MAIN; @MAIN_END - @MAIN;
958 @VARS; @VARS_END - @VARS;
960 @DATA; @DATA_END - @DATA;
966 s62 "PCSPSS PSPP synthetic test product";
968 0; 0; i16 1; dnl Fixed.
976 s64 "PSPP synthetic test file";
980 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
981 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
982 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
984 dnl Numeric variables.
985 0; 0; 0; 0x050000; s8 "#NUM"; PCSYSMIS;
986 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
987 0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
988 0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
992 0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
995 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
996 AT_DATA([pc+-file.sps], [dnl
997 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
999 AT_CHECK([pspp -O format=csv pc+-file.sps], [1], [dnl
1000 error: `pc+-file.sav' near offset 0x210: Invalid variable name `#NUM'.
1004 AT_SETUP([duplicate variable name])
1005 AT_KEYWORDS([sack synthetic PC+ file negative])
1006 AT_DATA([pc+-file.sack], [dnl
1009 @MAIN; @MAIN_END - @MAIN;
1010 @VARS; @VARS_END - @VARS;
1012 @DATA; @DATA_END - @DATA;
1018 s62 "PCSPSS PSPP synthetic test product";
1020 0; 0; i16 1; dnl Fixed.
1028 s64 "PSPP synthetic test file";
1032 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
1033 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
1034 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
1036 dnl Numeric variables.
1037 0; 0; 0; 0x050000; s8 "NUM1"; PCSYSMIS;
1038 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
1039 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
1040 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
1044 0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
1047 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
1048 AT_DATA([pc+-file.sps], [dnl
1049 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
1051 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [dnl
1052 warning: `pc+-file.sav' near offset 0x230: Renaming variable with duplicate name `NUM1' to `VAR001'.
1054 warning: `pc+-file.sav' near offset 0x250: Renaming variable with duplicate name `NUM1' to `VAR002'.
1056 warning: `pc+-file.sav' near offset 0x270: Renaming variable with duplicate name `NUM1' to `VAR003'.
1060 AT_SETUP([partial case])
1061 AT_KEYWORDS([sack synthetic PC+ file negative])
1062 AT_DATA([pc+-file.sack], [dnl
1065 @MAIN; @MAIN_END - @MAIN;
1066 @VARS; @VARS_END - @VARS;
1068 @DATA; @DATA_END - @DATA;
1074 s62 "PCSPSS PSPP synthetic test product";
1076 0; 0; i16 1; dnl Fixed.
1084 s64 "PSPP synthetic test file";
1088 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
1089 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
1090 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
1092 dnl Numeric variables.
1093 0; 0; 0; 0x050000; s8 "NUM1"; PCSYSMIS;
1094 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
1095 0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
1096 0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
1100 1.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
1101 2.0; "11/28/14"; 1.0; 6.0; 7.0; 8.0; 9.0;
1102 3.0; "11/28/14"; 1.0; 10.0;
1105 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
1106 AT_DATA([pc+-file.sps], [dnl
1107 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
1110 AT_CHECK([pspp -O format=csv pc+-file.sps], [1], [dnl
1111 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.
1113 error: `pc+-file.sav' near offset 0x320: File ends in partial case.
1115 error: Error reading case from file `pc+-file.sav'.
1124 AT_SETUP([case extends past end of data record])
1125 AT_KEYWORDS([sack synthetic PC+ file negative])
1126 AT_DATA([pc+-file.sack], [dnl
1129 @MAIN; @MAIN_END - @MAIN;
1130 @VARS; @VARS_END - @VARS;
1132 @DATA; @DATA_END - @DATA;
1138 s62 "PCSPSS PSPP synthetic test product";
1140 0; 0; i16 1; dnl Fixed.
1148 s64 "PSPP synthetic test file";
1152 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
1153 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
1154 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
1156 dnl Numeric variables.
1157 0; 0; 0; 0x050000; s8 "NUM1"; PCSYSMIS;
1158 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
1159 0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
1160 0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
1164 1.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
1165 2.0; "11/28/14"; 1.0; 6.0; 7.0; 8.0; 9.0;
1166 3.0; "11/28/14"; 1.0; 10.0;
1170 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
1171 AT_DATA([pc+-file.sps], [dnl
1172 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
1175 AT_CHECK([pspp -O format=csv pc+-file.sps], [1], [dnl
1176 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.
1178 error: `pc+-file.sav' near offset 0x338: Case beginning at offset 0x00000300 extends past end of data record at offset 0x00000320.
1180 error: Error reading case from file `pc+-file.sav'.
1189 AT_SETUP([corrupt compressed data])
1190 AT_KEYWORDS([sack synthetic PC+ file positive])
1191 AT_DATA([pc+-file.sack], [dnl
1194 @MAIN; @MAIN_END - @MAIN;
1195 @VARS; @VARS_END - @VARS;
1197 @DATA; @DATA_END - @DATA;
1203 s62 "PCSPSS PSPP synthetic test product";
1205 0; 0; i16 1; dnl Fixed.
1213 s64 "PSPP synthetic test file";
1217 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
1218 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
1219 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
1221 dnl Numeric variables.
1222 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
1223 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
1225 dnl String variables.
1226 0; 0; 0; 0x010400; s8 "STR4"; PCSYSMIS;
1227 0; 0; 0; 0x010800; s8 "STR8"; PCSYSMIS;
1228 0; 0; 0; 0x010f00; s8 "STR15"; PCSYSMIS;
1233 i8 101 1 101 100 255 1 1 1;
1234 s8 "11/28/14"; s8 "abcd"; s8 "efghj"; s8 "efghijkl";
1235 i8 1; i8 102 101 101 1 0 1 1;
1236 s8 "ABCDEFG"; 1000.0; s8 "PQRS"; s8 "TUVWXYZa";
1238 s16 "bcdefghijklmnop";
1241 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
1242 AT_DATA([pc+-file.sps], [dnl
1243 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
1248 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [dnl
1250 Label,PSPP synthetic test file
1253 Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
1254 NUM1,1,,Scale,Input,8,Right,F8.0,F8.0,
1255 NUM2,2,,Scale,Input,8,Right,F8.0,F8.0,
1256 STR4,3,,Nominal,Input,4,Left,A4,A4,
1257 STR8,4,,Nominal,Input,8,Left,A8,A8,
1258 STR15,5,,Nominal,Input,15,Left,A15,A15,
1260 warning: `pc+-file.sav' near offset 0x308: Possible compressed data corruption: string contains compressed integer (opcode 101).
1263 NUM1,NUM2,STR4,STR8,STR15
1264 -5,150,abcd,efghj,efghijklABCDEFG
1265 1000,.,PQRS,TUVWXYZa,bcdefghijklmnop
1269 AT_SETUP([invalid weight index])
1270 AT_KEYWORDS([sack synthetic PC+ file negative])
1271 AT_DATA([pc+-file.sack], [dnl
1274 @MAIN; @MAIN_END - @MAIN;
1275 @VARS; @VARS_END - @VARS;
1277 @DATA; @DATA_END - @DATA;
1283 s62 "PCSPSS PSPP synthetic test product";
1285 0; 0; i16 1; dnl Fixed.
1293 s64 "PSPP synthetic test file";
1297 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
1298 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
1299 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
1301 dnl Numeric variables.
1302 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
1303 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
1304 0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
1305 0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
1309 0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
1312 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
1313 AT_DATA([pc+-file.sps], [dnl
1314 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
1316 AT_CHECK([pspp -O format=csv pc+-file.sps], [0],
1317 [warning: `pc+-file.sav': Invalid weight index 10.
1321 AT_SETUP([string weight])
1322 AT_KEYWORDS([sack synthetic PC+ file negative])
1323 AT_DATA([pc+-file.sack], [dnl
1326 @MAIN; @MAIN_END - @MAIN;
1327 @VARS; @VARS_END - @VARS;
1329 @DATA; @DATA_END - @DATA;
1335 s62 "PCSPSS PSPP synthetic test product";
1337 0; 0; i16 1; dnl Fixed.
1345 s64 "PSPP synthetic test file";
1349 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
1350 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
1351 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
1354 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
1355 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
1356 0; 0; 0; 0x010800; s8 "STR1"; PCSYSMIS;
1357 0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
1361 0.0; "11/28/14"; 1.0; s8 "acbdefgh"; 3.0; 4.0; 5.0;
1364 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
1365 AT_DATA([pc+-file.sps], [dnl
1366 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
1368 AT_CHECK([pspp -O format=csv pc+-file.sps], [0],
1369 [warning: `pc+-file.sav' near offset 0x250: Cannot weight by string variable `STR1'.