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
108 File label: PSPP synthetic test file
111 Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
112 NUM1,1,,Scale,Input,8,Right,F8.0,F8.0,
113 NUM2,2,Numeric variable 2's label,Scale,Input,8,Right,F8.0,F8.0,
114 NUM3,3,,Scale,Input,8,Right,F8.0,F8.0,1
115 NUM4,4,Another numeric variable label,Scale,Input,8,Right,F8.0,F8.0,2
116 STR1,5,,Nominal,Input,8,Left,A8,A8,
117 STR2,6,STR2's variable label,Nominal,Input,4,Left,A4,A4,
118 STR3,7,,Nominal,Input,5,Left,A5,A5,"""MISS """
119 STR4,8,STR4's variable label,Nominal,Input,1,Left,A1,A1,"""O"""
120 STR5,9,,Nominal,Input,11,Left,A11,A11,
121 STR6,10,Another string variable's label,Nominal,Input,11,Left,A11,A11,
124 NUM1,NUM2,NUM3,NUM4,STR1,STR2,STR3,STR4,STR5,STR6
125 0,1,2,.,abcdefgh,ijkl,mnopq,r,stuvwxyzAB ,CDEFGHIJKLM
129 AT_SETUP([value labels])
130 AT_KEYWORDS([sack synthetic PC+ file positive])
131 AT_DATA([pc+-file.sack], [dnl
134 @MAIN; @MAIN_END - @MAIN;
135 @VARS; @VARS_END - @VARS;
136 @LABELS; @LABELS_END - @LABELS;
137 @DATA; @DATA_END - @DATA;
143 s62 "PCSPSS PSPP synthetic test product";
145 0; 0; i16 1; dnl Fixed.
153 s64 "PSPP synthetic test file";
157 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
158 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
159 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
161 dnl Numeric variables.
162 @N1 - @LOFF; @N1E - @LOFF; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
163 @N2 - @LOFF; @N2E - @LOFF; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
164 @N3 - @LOFF; @N3E - @LOFF; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
165 @N4 - @LOFF; @N4E - @LOFF; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
166 @N5 - @LOFF; @N5E - @LOFF; 0; 0x050800; s8 "NUM5"; PCSYSMIS;
168 dnl String variables.
169 @S1 - @LOFF; @S1E - @LOFF; 0; 0x010100; s8 "STR1"; PCSYSMIS;
170 @S2 - @LOFF; @S2E - @LOFF; 0; 0x010200; s8 "STR2"; PCSYSMIS;
171 @S3 - @LOFF; @S3E - @LOFF; 0; 0x010300; s8 "STR3"; PCSYSMIS;
172 @S4 - @LOFF; @S4E - @LOFF; 0; 0x010400; s8 "STR4"; PCSYSMIS;
173 @S5 - @LOFF; @S5E - @LOFF; 0; 0x010500; s8 "STR5"; PCSYSMIS;
174 @S6 - @LOFF; @S6E - @LOFF; 0; 0x010600; s8 "STR6"; PCSYSMIS;
175 @S7 - @LOFF; @S7E - @LOFF; 0; 0x010700; s8 "STR7"; PCSYSMIS;
176 @S8 - @LOFF; @S8E - @LOFF; 0; 0x010800; s8 "STR8"; PCSYSMIS;
180 3; i8 0 0 0; LOFF: i8 0;
182 N1: 1.0; COUNT8("one"); N1E:
183 N2: 2.0; COUNT8("two"); 3.0; COUNT8("three"); N2E:
185 3.0; COUNT8("three");
192 S1: s8 "a"; COUNT8("value label for `a'"); S1E:
193 S2: s8 "ab"; COUNT8("value label for `ab'"); S2E:
194 S3: s8 "abc"; COUNT8("value label for `abc'"); S3E:
196 s8 "abcdefgh"; COUNT8("value label for abcdefgh"); S4E:
198 s8 "ijklmnop"; COUNT8("value label for ijklmnop"); S5E:
199 s8 "qrstuvwx"; COUNT8("value label for qrstuvwx"); S6E:
200 s8 "yzABCDEF"; COUNT8("value label for yzABCDEF"); S7E:
201 s8 "GHIJKLMN"; COUNT8("value label for GHIJKLMN"); S8E:
205 1.0; "11/28/14"; 1.0;
206 1.0; 2.0; 3.0; 4.0; 5.0;
207 s8 "a"; s8 "bc"; s8 "cde"; s8 "fghj"; s8 "klmno"; s8 "pqrstu";
208 s8 "vwxyzAB"; s8 "CDEFGHIJ";
211 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
212 AT_DATA([pc+-file.sps], [dnl
213 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
218 AT_CHECK([pspp -o pspp.csv pc+-file.sps])
219 AT_CHECK([cat pspp.csv], [0], [dnl
220 File label: PSPP synthetic test file
223 Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
224 NUM1,1,,Scale,Input,8,Right,F8.0,F8.0,
225 NUM2,2,,Scale,Input,8,Right,F8.0,F8.0,
226 NUM3,3,,Scale,Input,8,Right,F8.0,F8.0,
227 NUM4,4,,Scale,Input,8,Right,F8.0,F8.0,
228 NUM5,5,,Scale,Input,8,Right,F8.0,F8.0,
229 STR1,6,,Nominal,Input,1,Left,A1,A1,
230 STR2,7,,Nominal,Input,2,Left,A2,A2,
231 STR3,8,,Nominal,Input,3,Left,A3,A3,
232 STR4,9,,Nominal,Input,4,Left,A4,A4,
233 STR5,10,,Nominal,Input,5,Left,A5,A5,
234 STR6,11,,Nominal,Input,6,Left,A6,A6,
235 STR7,12,,Nominal,Input,7,Left,A7,A7,
236 STR8,13,,Nominal,Input,8,Left,A8,A8,
248 STR1,a,value label for `a'
249 STR2,ab,value label for `ab'
250 STR3,abc,value label for `abc'
251 STR4,abcd,value label for abcdefgh
252 STR5,abcde,value label for abcdefgh
253 ,ijklm,value label for ijklmnop
254 STR6,abcdef,value label for abcdefgh
255 ,ijklmn,value label for ijklmnop
256 ,qrstuv,value label for qrstuvwx
257 STR7,abcdefg,value label for abcdefgh
258 ,ijklmno,value label for ijklmnop
259 ,qrstuvw,value label for qrstuvwx
260 ,yzABCDE,value label for yzABCDEF
261 STR8,GHIJKLMN,value label for GHIJKLMN
262 ,ijklmnop,value label for ijklmnop
263 ,qrstuvwx,value label for qrstuvwx
264 ,yzABCDEF,value label for yzABCDEF
267 NUM1,NUM2,NUM3,NUM4,NUM5,STR1,STR2,STR3,STR4,STR5,STR6,STR7,STR8
268 1,2,3,4,5,a,bc,cde,fghj,klmno,pqrstu,vwxyzAB,CDEFGHIJ
272 AT_SETUP([compressed data])
273 AT_KEYWORDS([sack synthetic PC+ file positive])
274 AT_DATA([pc+-file.sack], [dnl
277 @MAIN; @MAIN_END - @MAIN;
278 @VARS; @VARS_END - @VARS;
280 @DATA; @DATA_END - @DATA;
286 s62 "PCSPSS PSPP synthetic test product";
288 0; 0; i16 1; dnl Fixed.
296 s64 "PSPP synthetic test file";
300 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
301 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
302 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
304 dnl Numeric variables.
305 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
306 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
308 dnl String variables.
309 0; 0; 0; 0x010400; s8 "STR4"; PCSYSMIS;
310 0; 0; 0; 0x010800; s8 "STR8"; PCSYSMIS;
311 0; 0; 0; 0x010f00; s8 "STR15"; PCSYSMIS;
316 i8 101 1 101 100 255 1 1 1;
317 s8 "11/28/14"; s8 "abcd"; s8 "efghj"; s8 "efghijkl";
318 i8 1; i8 102 1 101 1 0 1 1;
319 s8 "ABCDEFG"; s8 "11/28/14"; 1000.0; s8 "PQRS"; s8 "TUVWXYZa";
321 s16 "bcdefghijklmnop";
324 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
325 AT_DATA([pc+-file.sps], [dnl
326 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
331 AT_CHECK([pspp -o pspp.csv pc+-file.sps])
332 AT_CHECK([cat pspp.csv], [0], [dnl
333 File label: PSPP synthetic test file
336 Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
337 NUM1,1,,Scale,Input,8,Right,F8.0,F8.0,
338 NUM2,2,,Scale,Input,8,Right,F8.0,F8.0,
339 STR4,3,,Nominal,Input,4,Left,A4,A4,
340 STR8,4,,Nominal,Input,8,Left,A8,A8,
341 STR15,5,,Nominal,Input,15,Left,A15,A15,
344 NUM1,NUM2,STR4,STR8,STR15
345 -5,150,abcd,efghj ,efghijklABCDEFG
346 1000,.,PQRS,TUVWXYZa,bcdefghijklmnop
351 AT_KEYWORDS([sack synthetic PC+ file negative])
352 AT_DATA([pc+-file.sack], [dnl
355 @MAIN; @MAIN_END - @MAIN;
356 @VARS; @VARS_END - @VARS;
358 @DATA; @DATA_END - @DATA;
364 s62 "PCSPSS PSPP synthetic test product";
366 0; 0; i16 1; dnl Fixed.
374 s64 "PSPP synthetic test file";
378 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
379 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
380 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
382 dnl Numeric variables.
383 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
384 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
385 0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
386 0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
390 0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
393 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
394 AT_DATA([pc+-file.sps], [dnl
395 SYSFILE INFO FILE='pc+-file.sav' ENCODING='us-ascii'.
397 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [dnl
399 Label:,PSPP synthetic test file
400 Created:,11/28/14 15:11:00 by PCSPSS PSPP synthetic test product
401 Integer Format:,Little Endian
402 Real Format:,IEEE 754 LE.
405 Type:,SPSS/PC+ System File
411 Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
412 NUM1,1,,Scale,Input,8,Right,F8.0,F8.0,
413 NUM2,2,,Scale,Input,8,Right,F8.0,F8.0,
414 NUM3,3,,Scale,Input,8,Right,F8.0,F8.0,
415 NUM4,4,,Scale,Input,8,Right,F8.0,F8.0,
419 AT_BANNER([SPSS/PC+ file reader - negative])
421 AT_SETUP([unspecified character encoding])
422 AT_KEYWORDS([sack synthetic PC+ file negative])
423 AT_DATA([pc+-file.sack], [dnl
426 @MAIN; @MAIN_END - @MAIN;
427 @VARS; @VARS_END - @VARS;
429 @DATA; @DATA_END - @DATA;
435 s62 "PCSPSS PSPP synthetic test product";
437 0; 0; i16 1; dnl Fixed.
445 s64 "PSPP synthetic test file";
449 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
450 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
451 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
453 dnl Numeric variables.
454 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
455 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
456 0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
457 0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
461 0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
464 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
465 AT_DATA([pc+-file.sps], [dnl
466 GET FILE='pc+-file.sav'.
471 SYSFILE INFO FILE='pc+-file.sav' ENCODING='us-ascii'.
473 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [stdout], [])
474 AT_CHECK([sed 's/default encoding.*For/default encoding. For/' stdout], [0], [dnl
475 "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."
477 File label: PSPP synthetic test file
480 Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
481 NUM1,1,,Scale,Input,8,Right,F8.0,F8.0,
482 NUM2,2,,Scale,Input,8,Right,F8.0,F8.0,
483 NUM3,3,,Scale,Input,8,Right,F8.0,F8.0,
484 NUM4,4,,Scale,Input,8,Right,F8.0,F8.0,
491 Label:,PSPP synthetic test file
492 Created:,11/28/14 15:11:00 by PCSPSS PSPP synthetic test product
493 Integer Format:,Little Endian
494 Real Format:,IEEE 754 LE.
497 Type:,SPSS/PC+ System File
498 Weight:,Not weighted.
503 Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
504 NUM1,1,,Scale,Input,8,Right,F8.0,F8.0,
505 NUM2,2,,Scale,Input,8,Right,F8.0,F8.0,
506 NUM3,3,,Scale,Input,8,Right,F8.0,F8.0,
507 NUM4,4,,Scale,Input,8,Right,F8.0,F8.0,
511 AT_SETUP([unexpected fixed values])
512 AT_KEYWORDS([sack synthetic PC+ file negative])
513 AT_DATA([pc+-file.sack], [dnl
516 @MAIN; @MAIN_END - @MAIN;
517 @VARS; @VARS_END - @VARS;
519 @DATA; @DATA_END - @DATA;
525 s62 "PCSPSS PSPP synthetic test product";
527 0; >>2<<; i16 1; dnl Fixed.
535 s64 "PSPP synthetic test file";
539 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
540 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
541 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
543 dnl Numeric variables.
544 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
545 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
546 0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
547 0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
551 0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
554 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
555 AT_DATA([pc+-file.sps], [dnl
556 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
558 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [dnl
559 "warning: `pc+-file.sav' near offset 0x0: Directory fields have unexpected values (1,2)."
561 warning: `pc+-file.sav' near offset 0x100: Record 0 specifies unexpected system missing value 1 (0x1p+0).
563 "warning: `pc+-file.sav' near offset 0x100: Record 0 reserved fields have unexpected values (1,1,0,2,0,0)."
565 warning: `pc+-file.sav' near offset 0x100: Record 0 case counts differ (1 versus 3).
569 AT_SETUP([short main header])
570 AT_KEYWORDS([sack synthetic PC+ file negative])
571 AT_DATA([pc+-file.sack], [dnl
574 @MAIN; @MAIN_END - @MAIN;
575 @VARS; @VARS_END - @VARS;
577 @DATA; @DATA_END - @DATA;
583 s62 "PCSPSS PSPP synthetic test product";
585 0; 0; i16 1; dnl Fixed.
596 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
597 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
598 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
600 dnl Numeric variables.
601 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
602 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
603 0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
604 0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
608 0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
611 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
612 AT_DATA([pc+-file.sps], [dnl
613 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
615 AT_CHECK([pspp -O format=csv pc+-file.sps], [1], [dnl
616 error: `pc+-file.sav' near offset 0x100: This is not an SPSS/PC+ system file.
620 AT_SETUP([long main header])
621 AT_KEYWORDS([sack synthetic PC+ file negative])
622 AT_DATA([pc+-file.sack], [dnl
625 @MAIN; @MAIN_END - @MAIN;
626 @VARS; @VARS_END - @VARS;
628 @DATA; @DATA_END - @DATA;
634 s62 "PCSPSS PSPP synthetic test product";
636 0; 0; i16 1; dnl Fixed.
644 >>s80 "PSPP synthetic test file"<<;
648 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
649 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
650 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
652 dnl Numeric variables.
653 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
654 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
655 0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
656 0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
660 0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
663 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
664 AT_DATA([pc+-file.sps], [dnl
665 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
667 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [dnl
668 warning: `pc+-file.sav' near offset 0x100: Record 0 has unexpected length 192.
672 AT_SETUP([invalid compression type])
673 AT_KEYWORDS([sack synthetic PC+ file negative])
674 AT_DATA([pc+-file.sack], [dnl
677 @MAIN; @MAIN_END - @MAIN;
678 @VARS; @VARS_END - @VARS;
680 @DATA; @DATA_END - @DATA;
686 s62 "PCSPSS PSPP synthetic test product";
688 0; 0; i16 1; dnl Fixed.
696 s64 "PSPP synthetic test file";
700 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
701 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
702 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
704 dnl Numeric variables.
705 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
706 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
707 0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
708 0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
712 0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
715 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
716 AT_DATA([pc+-file.sps], [dnl
717 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
719 AT_CHECK([pspp -O format=csv pc+-file.sps], [1], [dnl
720 error: `pc+-file.sav' near offset 0x100: Invalid compression type 2.
724 AT_SETUP([unrealistic number of cases])
725 AT_KEYWORDS([sack synthetic PC+ file negative])
726 AT_DATA([pc+-file.sack], [dnl
729 @MAIN; @MAIN_END - @MAIN;
730 @VARS; @VARS_END - @VARS;
732 @DATA; @DATA_END - @DATA;
738 s62 "PCSPSS PSPP synthetic test product";
740 0; 0; i16 1; dnl Fixed.
748 s64 "PSPP synthetic test file";
752 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
753 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
754 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
756 dnl Numeric variables.
757 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
758 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
759 0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
760 0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
764 0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
767 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
768 AT_DATA([pc+-file.sps], [dnl
769 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
771 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [dnl
772 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.
776 AT_SETUP([labels bad offsets])
777 AT_KEYWORDS([sack synthetic PC+ file negative])
778 AT_DATA([pc+-file.sack], [dnl
781 @MAIN; @MAIN_END - @MAIN;
782 @VARS; @VARS_END - @VARS;
783 @LABELS; @LABELS_END - @LABELS;
784 @DATA; @DATA_END - @DATA;
790 s62 "PCSPSS PSPP synthetic test product";
792 0; 0; i16 1; dnl Fixed.
800 s64 "PSPP synthetic test file";
804 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
805 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
806 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
808 dnl Numeric variables.
809 @N1L - @LOFF; @N1E - @LOFF; 1000; 0x050800; s8 "NUM1"; PCSYSMIS;
810 @N1L - @LOFF - 1; @LABELS_END - @LOFF; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
811 @N1L - @LOFF + 1; @LABELS_END - @LOFF; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
812 0; 0; @LABELS_END - @LOFF - 1; 0x050800; s8 "NUM4"; PCSYSMIS;
816 3; i8 0 0 0; LOFF: i8 0;
821 0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0; N1E:
824 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
825 AT_DATA([pc+-file.sps], [dnl
826 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
828 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [dnl
829 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.
831 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.
833 "warning: `pc+-file.sav' near offset 0x2a0: Value labels end with partial label (0 bytes left in record, label length 255)."
835 warning: `pc+-file.sav' near offset 0x299: 7 leftover bytes following value labels.
837 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.
841 AT_SETUP([record 1 bad length])
842 AT_KEYWORDS([sack synthetic PC+ file negative])
843 AT_DATA([pc+-file.sack], [dnl
846 @MAIN; @MAIN_END - @MAIN;
847 @VARS; @VARS_END - @VARS;
849 @DATA; @DATA_END - @DATA;
855 s62 "PCSPSS PSPP synthetic test product";
857 0; 0; i16 1; dnl Fixed.
865 s64 "PSPP synthetic test file";
869 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
870 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
871 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
873 dnl Numeric variables.
874 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
875 0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
876 0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
880 0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
883 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
884 AT_DATA([pc+-file.sps], [dnl
885 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
887 AT_CHECK([pspp -O format=csv pc+-file.sps], [1], [dnl
888 error: `pc+-file.sav' near offset 0x1b0: Record 1 has length 192 (expected 224).
890 pc+-file.sps:1: error: GET: `pc+-file.sav': Data file dictionary has no variables.
894 AT_SETUP([bad variable format])
895 AT_KEYWORDS([sack synthetic PC+ file negative])
896 AT_DATA([pc+-file.sack], [dnl
899 @MAIN; @MAIN_END - @MAIN;
900 @VARS; @VARS_END - @VARS;
902 @DATA; @DATA_END - @DATA;
908 s62 "PCSPSS PSPP synthetic test product";
910 0; 0; i16 1; dnl Fixed.
918 s64 "PSPP synthetic test file";
922 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
923 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
924 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
926 dnl Numeric variables.
927 0; 0; 0; 0xff0000; s8 "NUM1"; PCSYSMIS;
928 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
929 0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
930 0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
934 0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
937 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
938 AT_DATA([pc+-file.sps], [dnl
939 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
941 AT_CHECK([pspp -O format=csv pc+-file.sps], [1], [dnl
942 error: `pc+-file.sav' near offset 0x210: Variable 3 has invalid type 255.
946 AT_SETUP([bad variable name])
947 AT_KEYWORDS([sack synthetic PC+ file negative])
948 AT_DATA([pc+-file.sack], [dnl
951 @MAIN; @MAIN_END - @MAIN;
952 @VARS; @VARS_END - @VARS;
954 @DATA; @DATA_END - @DATA;
960 s62 "PCSPSS PSPP synthetic test product";
962 0; 0; i16 1; dnl Fixed.
970 s64 "PSPP synthetic test file";
974 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
975 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
976 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
978 dnl Numeric variables.
979 0; 0; 0; 0x050000; s8 "#NUM"; PCSYSMIS;
980 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
981 0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
982 0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
986 0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
989 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
990 AT_DATA([pc+-file.sps], [dnl
991 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
993 AT_CHECK([pspp -O format=csv pc+-file.sps], [1], [dnl
994 error: `pc+-file.sav' near offset 0x210: Invalid variable name `#NUM'.
998 AT_SETUP([duplicate variable name])
999 AT_KEYWORDS([sack synthetic PC+ file negative])
1000 AT_DATA([pc+-file.sack], [dnl
1003 @MAIN; @MAIN_END - @MAIN;
1004 @VARS; @VARS_END - @VARS;
1006 @DATA; @DATA_END - @DATA;
1012 s62 "PCSPSS PSPP synthetic test product";
1014 0; 0; i16 1; dnl Fixed.
1022 s64 "PSPP synthetic test file";
1026 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
1027 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
1028 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
1030 dnl Numeric variables.
1031 0; 0; 0; 0x050000; s8 "NUM1"; PCSYSMIS;
1032 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
1033 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
1034 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
1038 0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
1041 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
1042 AT_DATA([pc+-file.sps], [dnl
1043 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
1045 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [dnl
1046 warning: `pc+-file.sav' near offset 0x230: Renaming variable with duplicate name `NUM1' to `VAR001'.
1048 warning: `pc+-file.sav' near offset 0x250: Renaming variable with duplicate name `NUM1' to `VAR002'.
1050 warning: `pc+-file.sav' near offset 0x270: Renaming variable with duplicate name `NUM1' to `VAR003'.
1054 AT_SETUP([partial case])
1055 AT_KEYWORDS([sack synthetic PC+ file negative])
1056 AT_DATA([pc+-file.sack], [dnl
1059 @MAIN; @MAIN_END - @MAIN;
1060 @VARS; @VARS_END - @VARS;
1062 @DATA; @DATA_END - @DATA;
1068 s62 "PCSPSS PSPP synthetic test product";
1070 0; 0; i16 1; dnl Fixed.
1078 s64 "PSPP synthetic test file";
1082 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
1083 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
1084 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
1086 dnl Numeric variables.
1087 0; 0; 0; 0x050000; s8 "NUM1"; PCSYSMIS;
1088 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
1089 0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
1090 0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
1094 1.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
1095 2.0; "11/28/14"; 1.0; 6.0; 7.0; 8.0; 9.0;
1096 3.0; "11/28/14"; 1.0; 10.0;
1099 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
1100 AT_DATA([pc+-file.sps], [dnl
1101 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
1104 AT_CHECK([pspp -O format=csv pc+-file.sps], [1], [dnl
1105 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.
1107 error: `pc+-file.sav' near offset 0x320: File ends in partial case.
1109 error: Error reading case from file `pc+-file.sav'.
1118 AT_SETUP([case extends past end of data record])
1119 AT_KEYWORDS([sack synthetic PC+ file negative])
1120 AT_DATA([pc+-file.sack], [dnl
1123 @MAIN; @MAIN_END - @MAIN;
1124 @VARS; @VARS_END - @VARS;
1126 @DATA; @DATA_END - @DATA;
1132 s62 "PCSPSS PSPP synthetic test product";
1134 0; 0; i16 1; dnl Fixed.
1142 s64 "PSPP synthetic test file";
1146 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
1147 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
1148 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
1150 dnl Numeric variables.
1151 0; 0; 0; 0x050000; s8 "NUM1"; PCSYSMIS;
1152 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
1153 0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
1154 0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
1158 1.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
1159 2.0; "11/28/14"; 1.0; 6.0; 7.0; 8.0; 9.0;
1160 3.0; "11/28/14"; 1.0; 10.0;
1164 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
1165 AT_DATA([pc+-file.sps], [dnl
1166 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
1169 AT_CHECK([pspp -O format=csv pc+-file.sps], [1], [dnl
1170 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.
1172 error: `pc+-file.sav' near offset 0x338: Case beginning at offset 0x00000300 extends past end of data record at offset 0x00000320.
1174 error: Error reading case from file `pc+-file.sav'.
1183 AT_SETUP([corrupt compressed data])
1184 AT_KEYWORDS([sack synthetic PC+ file positive])
1185 AT_DATA([pc+-file.sack], [dnl
1188 @MAIN; @MAIN_END - @MAIN;
1189 @VARS; @VARS_END - @VARS;
1191 @DATA; @DATA_END - @DATA;
1197 s62 "PCSPSS PSPP synthetic test product";
1199 0; 0; i16 1; dnl Fixed.
1207 s64 "PSPP synthetic test file";
1211 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
1212 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
1213 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
1215 dnl Numeric variables.
1216 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
1217 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
1219 dnl String variables.
1220 0; 0; 0; 0x010400; s8 "STR4"; PCSYSMIS;
1221 0; 0; 0; 0x010800; s8 "STR8"; PCSYSMIS;
1222 0; 0; 0; 0x010f00; s8 "STR15"; PCSYSMIS;
1227 i8 101 1 101 100 255 1 1 1;
1228 s8 "11/28/14"; s8 "abcd"; s8 "efghj"; s8 "efghijkl";
1229 i8 1; i8 102 101 101 1 0 1 1;
1230 s8 "ABCDEFG"; 1000.0; s8 "PQRS"; s8 "TUVWXYZa";
1232 s16 "bcdefghijklmnop";
1235 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
1236 AT_DATA([pc+-file.sps], [dnl
1237 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
1242 AT_CHECK([pspp -O format=csv pc+-file.sps], [0], [dnl
1243 File label: PSPP synthetic test file
1246 Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
1247 NUM1,1,,Scale,Input,8,Right,F8.0,F8.0,
1248 NUM2,2,,Scale,Input,8,Right,F8.0,F8.0,
1249 STR4,3,,Nominal,Input,4,Left,A4,A4,
1250 STR8,4,,Nominal,Input,8,Left,A8,A8,
1251 STR15,5,,Nominal,Input,15,Left,A15,A15,
1253 warning: `pc+-file.sav' near offset 0x308: Possible compressed data corruption: string contains compressed integer (opcode 101).
1256 NUM1,NUM2,STR4,STR8,STR15
1257 -5,150,abcd,efghj ,efghijklABCDEFG
1258 1000,.,PQRS,TUVWXYZa,bcdefghijklmnop
1262 AT_SETUP([invalid weight index])
1263 AT_KEYWORDS([sack synthetic PC+ file negative])
1264 AT_DATA([pc+-file.sack], [dnl
1267 @MAIN; @MAIN_END - @MAIN;
1268 @VARS; @VARS_END - @VARS;
1270 @DATA; @DATA_END - @DATA;
1276 s62 "PCSPSS PSPP synthetic test product";
1278 0; 0; i16 1; dnl Fixed.
1286 s64 "PSPP synthetic test file";
1290 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
1291 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
1292 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
1294 dnl Numeric variables.
1295 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
1296 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
1297 0; 0; 0; 0x050800; s8 "NUM3"; PCSYSMIS;
1298 0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
1302 0.0; "11/28/14"; 1.0; 2.0; 3.0; 4.0; 5.0;
1305 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
1306 AT_DATA([pc+-file.sps], [dnl
1307 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
1309 AT_CHECK([pspp -O format=csv pc+-file.sps], [0],
1310 [warning: `pc+-file.sav': Invalid weight index 10.
1314 AT_SETUP([string weight])
1315 AT_KEYWORDS([sack synthetic PC+ file negative])
1316 AT_DATA([pc+-file.sack], [dnl
1319 @MAIN; @MAIN_END - @MAIN;
1320 @VARS; @VARS_END - @VARS;
1322 @DATA; @DATA_END - @DATA;
1328 s62 "PCSPSS PSPP synthetic test product";
1330 0; 0; i16 1; dnl Fixed.
1338 s64 "PSPP synthetic test file";
1342 0; 0; 0; 0x050800; s8 "$CASENUM"; PCSYSMIS;
1343 0; 0; 0; 0x010800; s8 "$DATE"; PCSYSMIS;
1344 0; 0; 0; 0x050802; s8 "$WEIGHT"; PCSYSMIS;
1347 0; 0; 0; 0x050800; s8 "NUM1"; PCSYSMIS;
1348 0; 0; 0; 0x050800; s8 "NUM2"; PCSYSMIS;
1349 0; 0; 0; 0x010800; s8 "STR1"; PCSYSMIS;
1350 0; 0; 0; 0x050800; s8 "NUM4"; PCSYSMIS;
1354 0.0; "11/28/14"; 1.0; s8 "acbdefgh"; 3.0; 4.0; 5.0;
1357 AT_CHECK([sack --le pc+-file.sack > pc+-file.sav])
1358 AT_DATA([pc+-file.sps], [dnl
1359 GET FILE='pc+-file.sav' ENCODING='us-ascii'.
1361 AT_CHECK([pspp -O format=csv pc+-file.sps], [0],
1362 [warning: `pc+-file.sav' near offset 0x250: Cannot weight by string variable `STR1'.