1 AT_BANNER([system file reader - positive])
3 AT_SETUP([variable labels and missing values])
4 AT_KEYWORDS([sack synthetic system file positive])
5 AT_DATA([sys-file.sack], [dnl
7 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
9 28; dnl Nominal case size
14 "01 Jan 11"; "20:53:52";
15 "PSPP synthetic test file: "; i8 244; i8 245; i8 246; i8 248; s34 "";
18 dnl Numeric variable, no label or missing values.
19 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
21 dnl Numeric variable, variable label.
22 2; 0; 1; 0; 0x050800 *2; s8 "NUM2";
23 32; "Numeric variable 2's label ("; i8 249; i8 250; i8 251; ")";
25 dnl Numeric variable, one missing value.
26 2; 0; 0; 1; 0x050800 *2; s8 "NUM3";
29 dnl Numeric variable, variable label and missing value.
30 2; 0; 1; 1; 0x050800 *2; s8 "NUM4";
31 30; "Another numeric variable label"; i8 0 * 2;
34 dnl Numeric variable, two missing values.
35 2; 0; 0; 2; 0x050800 *2; s8 "NUM5"; 1.0; 2.0;
37 dnl Numeric variable, three missing values.
38 2; 0; 0; 3; 0x050800 *2; s8 "NUM6"; 1.0; 2.0; 3.0;
40 dnl Numeric variable, range of missing values.
41 2; 0; 0; -2; 0x050800 *2; s8 "NUM7"; 1.0; 3.0;
43 dnl Numeric variables, range of missing values plus discrete value.
44 2; 0; 0; -3; 0x050800 *2; s8 "NUM8"; 1.0; 3.0; 5.0;
45 2; 0; 0; -3; 0x050800 *2; s8 "NUM9"; 1.0; HIGHEST; -5.0;
46 2; 0; 0; -3; 0x050800 *2; "NUM"; i8 192; i8 200; i8 204; i8 209; i8 210;
49 dnl String variable, no label or missing values.
50 2; 4; 0; 0; 0x010400 *2; s8 "STR1";
52 dnl String variable, variable label.
53 2; 4; 1; 0; 0x010400 *2; s8 "STR2";
54 25; "String variable 2's label"; i8 0 * 3;
56 dnl String variable, one missing value.
57 2; 4; 0; 1; 0x010400 *2; s8 "STR3"; s8 "MISS";
59 dnl String variable, variable label and missing value.
60 2; 4; 1; 1; 0x010400 *2; s8 "STR4";
61 29; "Another string variable label"; i8 0 * 3;
64 dnl String variable, two missing values.
65 2; 4; 0; 2; 0x010400 *2; s8 "STR5"; s8 "MISS"; s8 "OTHR";
67 dnl String variable, three missing values.
68 2; 4; 0; 3; 0x010400 *2; s8 "STR6"; s8 "MISS"; s8 "OTHR"; s8 "MORE";
70 dnl Long string variable, one missing value.
71 dnl (This is not how SPSS represents missing values for long strings--it
72 dnl uses a separate record as shown later below--but old versions of PSPP
73 dnl did use this representation so we continue supporting it for backward
75 2; 11; 0; 1; 0x010b00 *2; s8 "STR7"; "first8by";
76 2; -1; 0; 0; 0; 0; s8 "";
78 dnl Long string variables that will have missing values added with a
80 2; 9; 0; 0; 0x010900 *2; s8 "STR8";
81 2; -1; 0; 0; 0; 0; s8 "";
82 2; 10; 0; 0; 0x010a00 *2; s8 "STR9";
83 2; -1; 0; 0; 0; 0; s8 "";
84 2; 11; 0; 0; 0x010b00 *2; s8 "STR10";
85 2; -1; 0; 0; 0; 0; s8 "";
87 dnl Long string variable, value label.
88 2; 25; 1; 0; 0x011900 *2; s8 "STR11"; 14; "25-byte string"; i8 0 * 2;
89 ( 2; -1; 0; 0; 0; 0; s8 ""; ) * 2;
90 dnl Variable label fields on continuation records have been spotted in system
91 dnl files created by "SPSS Power Macintosh Release 6.1".
92 2; -1; 1; 0; 0; 0; s8 ""; 20; "dummy variable label";
94 dnl Machine integer info record.
95 7; 3; 4; 8; 1; 2; 3; -1; 1; 1; ENDIAN; 1252;
97 dnl Machine floating-point info record.
98 7; 4; 8; 3; SYSMIS; HIGHEST; LOWEST;
100 dnl Long string variable missing values record.
102 dnl One missing value for STR8.
103 COUNT("STR8"); i8 1; 8; "abcdefgh";
105 dnl Two missing values for STR9.
106 COUNT("STR9"); i8 2; 8; "abcdefgh"; 8; "01234567";
108 dnl Three missing values for STR9.
109 COUNT("STR10"); i8 3; 8; "abcdefgh"; 8; "01234567"; 8; "0 ";
112 dnl Character encoding record.
113 7; 20; 1; 12; "windows-1252";
115 dnl Dictionary termination record.
119 1.0; 2.0; 3.0; 4.0; 5.0; 6.0; 7.0; 8.0; 9.0; 10.0;
120 s8 "abcd"; s8 "efgh"; s8 "ijkl"; s8 "mnop"; s8 "qrst"; s8 "uvwx";
121 s16 "yzABCDEFGHI"; s16 "JKLMNOPQR"; s16 "STUVWXYZ01";
122 s16 "23456789abc"; s32 "defghijklmnopqstuvwxyzABC";
124 for variant in be le; do
125 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
126 AT_DATA([sys-file.sps], [dnl
127 GET FILE='sys-file.sav'.
132 AT_CHECK([pspp -o pspp.csv sys-file.sps])
133 AT_CHECK([cat pspp.csv], [0], [dnl
134 File label: PSPP synthetic test file: ôõöø
136 Variable,Description,Position
138 num2,"Label: Numeric variable 2's label (ùúû)
142 num4,"Label: Another numeric variable label
146 Missing Values: 1; 2",5
148 Missing Values: 1; 2; 3",6
150 Missing Values: 1 THRU 3",7
152 Missing Values: 1 THRU 3; 5",8
154 Missing Values: 1 THRU HIGHEST; -5",9
155 numàèìñò,"Format: F8.0
156 Missing Values: LOWEST THRU 1; 5",10
158 str2,"Label: String variable 2's label
161 Missing Values: ""MISS""",13
162 str4,"Label: Another string variable label
164 Missing Values: ""OTHR""",14
166 Missing Values: ""MISS""; ""OTHR""",15
168 Missing Values: ""MISS""; ""OTHR""; ""MORE""",16
170 Missing Values: ""first8by""",17
172 Missing Values: ""abcdefgh""",18
174 Missing Values: ""abcdefgh""; ""01234567""",19
176 Missing Values: ""abcdefgh""; ""01234567""; ""0 """,20
177 str11,"Label: 25-byte string
181 num1,num2,num3,num4,num5,num6,num7,num8,num9,numàèìñò,str1,str2,str3,str4,str5,str6,str7,str8,str9,str10,str11
182 1,2,3,4,5,6,7,8,9,10,abcd,efgh,ijkl,mnop,qrst,uvwx,yzABCDEFGHI,JKLMNOPQR,STUVWXYZ01,23456789abc,defghijklmnopqstuvwxyzABC
187 AT_SETUP([unspecified number of variable positions])
188 AT_KEYWORDS([sack synthetic system file positive])
189 AT_DATA([sys-file.sack], [dnl
191 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
193 -1; dnl Nominal case size (unspecified)
194 0; dnl Not compressed
198 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
201 dnl Numeric variable, no label or missing values.
202 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
204 dnl Numeric variable, variable label.
205 2; 0; 1; 0; 0x050800 *2; s8 "NUM2";
206 26; "Numeric variable 2's label"; i8 0 *2;
208 dnl Character encoding record.
209 7; 20; 1; 12; "windows-1252";
211 dnl Dictionary termination record.
217 for variant in be le; do
218 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
219 AT_DATA([sys-file.sps], [dnl
220 GET FILE='sys-file.sav'.
224 AT_CHECK([pspp -o pspp.csv sys-file.sps])
225 AT_CHECK([cat pspp.csv], [0], [dnl
226 Variable,Description,Position
228 num2,"Label: Numeric variable 2's label
238 AT_SETUP([wrong number of variable positions but version 13])
239 AT_KEYWORDS([sack synthetic system file positive])
240 AT_DATA([sys-file.sack], [dnl
242 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
244 -1; dnl Nominal case size (unspecified)
245 0; dnl Not compressed
249 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
252 dnl Numeric variable, no label or missing values.
253 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
255 dnl Numeric variable, variable label.
256 2; 0; 1; 0; 0x050800 *2; s8 "NUM2";
257 26; "Numeric variable 2's label"; i8 0 *2;
259 dnl Machine integer info record (SPSS 13).
260 7; 3; 4; 8; 13; 2; 3; -1; 1; 1; ENDIAN; 1252;
262 dnl Character encoding record.
263 7; 20; 1; 12; "windows-1252";
265 dnl Dictionary termination record.
271 for variant in be le; do
272 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
273 AT_DATA([sys-file.sps], [dnl
274 GET FILE='sys-file.sav'.
278 AT_CHECK([pspp -o pspp.csv sys-file.sps])
279 AT_CHECK([cat pspp.csv], [0], [dnl
280 Variable,Description,Position
282 num2,"Label: Numeric variable 2's label
292 AT_SETUP([value labels])
293 AT_KEYWORDS([sack synthetic system file positive])
294 AT_DATA([sys-file.sack], [dnl
296 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
298 22; dnl Nominal case size
299 0; dnl Not compressed
303 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
306 dnl Numeric variables.
307 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
308 2; 0; 0; 0; 0x050800 *2; s8 "NUM2";
309 2; 0; 0; 0; 0x050800 *2; s8 "NUM3";
310 2; 0; 0; 0; 0x050800 *2; s8 "NUM4";
311 2; 0; 0; 0; 0x050800 *2; s8 "NUM5";
313 dnl String variables.
314 2; 1; 0; 0; 0x010100 *2; s8 "STR1"; dnl index 6
315 2; 2; 0; 0; 0x010200 *2; s8 "STR2"; dnl index 7
316 2; 3; 0; 0; 0x010300 *2; s8 "STR3"; dnl index 8
317 2; 4; 0; 0; 0x010400 *2; s8 "STR4"; dnl index 9
318 2; 4; 0; 0; 0x010400 *2; s8 "STR5"; dnl index 10
319 2; 6; 0; 0; 0x010600 *2; s8 "STR6"; dnl index 11
320 2; 7; 0; 0; 0x010700 *2; s8 "STR7"; dnl index 12
321 2; 8; 0; 0; 0x010800 *2; s8 "STR8"; dnl index 13
322 2; 9; 0; 0; 0x010900 *2; "STR9"; i8 230; s3 ""; dnl index 14
323 2; -1; 0; 0; 0; 0; s8 "";
324 2; 12; 0; 0; 0x010c00 *2; s8 "STR12"; dnl index 16
325 2; -1; 0; 0; 0; 0; s8 "";
326 2; 16; 0; 0; 0x011000 *2; s8 "STR16"; dnl index 18
327 2; -1; 0; 0; 0; 0; s8 "";
328 2; 17; 0; 0; 0x011100 *2; s8 "STR17"; dnl index 20
329 ( 2; -1; 0; 0; 0; 0; s8 ""; ) * 2;
331 dnl One value label for NUM1.
332 3; 1; 1.0; i8 17; i8 238; i8 228; i8 232; i8 237; s19 " (in Russian)"; 4; 1; 1;
334 dnl Two value labels for NUM2, as a single pair of type 3 and type 4 records.
335 3; 2; 1.0; i8 3; s7 "one"; 2.0; i8 3; s7 "two"; 4; 1; 2;
337 dnl Two value labels for NUM3, as two pairs of type 3 and type 4 records.
338 3; 1; 3.0; i8 5; s7 "three"; 4; 1; 3;
339 3; 1; 4.0; i8 4; s7 "four"; 4; 1; 3;
341 dnl Two common value labels for NUM4 and NUM5, plus two different ones for each.
342 3; 1; 5.0; i8 4; s7 "five"; 4; 1; 4;
343 3; 1; 6.0; i8 3; s7 "six"; 4; 1; 5;
344 3; 2; 7.0; i8 5; s7 "seven"; 8.0; i8 5; s7 "eight"; 4; 2; 4; 5;
345 3; 1; 9.0; i8 4; s7 "nine"; 4; 1; 4;
346 3; 1; 10.0; i8 3; s7 "ten"; 4; 1; 5;
348 dnl One value label for STR1.
349 3; 1; s8 "a"; i8 19; s23 "value label for `a'"; 4; 1; 6;
351 dnl Two value labels for STR2, as a single pair of type 3 and type 4 records.
353 s8 "bc"; i8 20; s23 "value label for `bc'";
354 s8 "de"; i8 20; s23 "value label for `de'";
357 dnl Two value labels for STR3, as two pairs of type 3 and type 4 records.
358 3; 1; s8 "fgh"; i8 21; s23 "value label for `fgh'"; 4; 1; 8;
359 3; 1; s8 "ijk"; i8 21; s23 "value label for `ijk'"; 4; 1; 8;
361 dnl Two common value labels for STR4 and STR5, plus two different ones for each.
362 3; 1; s8 "lmno"; i8 22; s23 "value label for `lmno'"; 4; 1; 9;
363 3; 1; s8 "pqrs"; i8 22; s23 "value label for `pqrs'"; 4; 1; 10;
365 s8 "tuvw"; i8 22; s23 "value label for `tuvw'";
366 s8 "xyzA"; i8 22; s23 "value label for `xyzA'";
368 3; 1; s8 "BCDE"; i8 22; s23 "value label for `BCDE'"; 4; 1; 9;
369 3; 1; s8 "FGHI"; i8 22; s23 "value label for `FGHI'"; 4; 1; 10;
371 dnl One value label for STR6, STR7, STR8.
372 3; 1; s8 "JKLMNO"; i8 24; s31 "value label for `JKLMNO'"; 4; 1; 11;
373 3; 1; s8 "JKLMNOP"; i8 25; s31 "value label for `JKLMNOP'"; 4; 1; 12;
374 3; 1; s8 "JKLMNOPQ"; i8 26; s31 "value label for `JKLMNOPQ'"; 4; 1; 13;
376 dnl Machine integer info record.
377 7; 3; 4; 8; 1; 2; 3; -1; 1; 1; ENDIAN; 1251;
379 dnl Character encoding record.
380 7; 20; 1; 12; "windows-1251";
383 dnl One value label for STR9ж,
384 COUNT("STR9"; i8 230); 9; 1; COUNT("RSTUVWXYZ"); COUNT("value label for `RSTUVWXYZ'");
386 dnl Two value labels for STR12.
387 COUNT("STR12"); 12; 2;
388 COUNT("0123456789ab"); COUNT("value label for `0123456789ab'");
389 COUNT("cdefghijklmn"); COUNT("value label for `cdefghijklmn'");
391 dnl Three value labels for STR16.
392 COUNT("STR16"); 16; 3;
393 COUNT("opqrstuvwxyzABCD"); COUNT("value label for `opqrstuvwxyzABCD'");
394 COUNT("EFGHIJKLMNOPQRST"); COUNT("value label for `EFGHIJKLMNOPQRST'");
395 COUNT("UVWXYZ0123456789"); COUNT("value label for `UVWXYZ0123456789' with Cyrillic letters: `"; i8 244; i8 245; i8 246; "'");
397 dnl One value label for STR17.
398 COUNT("STR17"); 17; 1;
399 COUNT("abcdefghijklmnopq"); COUNT("value label for `abcdefghijklmnopq'");
402 dnl Dictionary termination record.
405 for variant in be le; do
406 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
407 AT_DATA([sys-file.sps], [dnl
408 GET FILE='sys-file.sav'.
411 AT_CHECK([pspp -o pspp.csv sys-file.sps])
412 AT_CHECK([cat pspp.csv], [0], [dnl
413 Variable,Description,Position
417 1,один (in Russian)",1
445 a,value label for `a'",6
449 bc,value label for `bc'
450 de,value label for `de'",7
454 fgh,value label for `fgh'
455 ijk,value label for `ijk'",8
459 BCDE,value label for `BCDE'
460 lmno,value label for `lmno'
461 tuvw,value label for `tuvw'
462 xyzA,value label for `xyzA'",9
466 FGHI,value label for `FGHI'
467 pqrs,value label for `pqrs'
468 tuvw,value label for `tuvw'
469 xyzA,value label for `xyzA'",10
473 JKLMNO,value label for `JKLMNO'",11
477 JKLMNOP,value label for `JKLMNOP'",12
481 JKLMNOPQ,value label for `JKLMNOPQ'",13
485 RSTUVWXYZ,value label for `RSTUVWXYZ'",14
489 0123456789ab,value label for `0123456789ab'
490 cdefghijklmn,value label for `cdefghijklmn'",15
494 EFGHIJKLMNOPQRST,value label for `EFGHIJKLMNOPQRST'
495 UVWXYZ0123456789,value label for `UVWXYZ0123456789' with Cyrillic letters: `фхц'
496 opqrstuvwxyzABCD,value label for `opqrstuvwxyzABCD'",16
500 abcdefghijklmnopq,value label for `abcdefghijklmnopq'",17
505 AT_SETUP([documents])
506 AT_KEYWORDS([sack synthetic system file positive])
507 AT_DATA([sys-file.sack], [dnl
509 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
511 1; dnl Nominal case size
512 0; dnl Not compressed
516 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
519 dnl Numeric variable, no label or missing values.
520 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
522 dnl Machine integer info record.
523 7; 3; 4; 8; 1; 2; 3; -1; 1; 1; ENDIAN; 1252;
527 s80 "First line of documents";
528 s80 "Second line of documents";
529 "abb"; i8 233; " appliqu"; i8 233; " attach"; i8 233; " blas"; i8 233; " caf"; i8 233; " canap"; i8 233; " clich"; i8 233; " consomm"; i8 233;
532 s80 "Last line of documents";
534 dnl Character encoding record.
535 7; 20; 1; 12; "windows-1252";
537 dnl Dictionary termination record.
543 for variant in be le; do
544 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
545 AT_DATA([sys-file.sps], [dnl
546 GET FILE='sys-file.sav'.
550 AT_CHECK([pspp -o pspp.csv sys-file.sps])
551 AT_CHECK([cat pspp.csv], [0], [dnl
552 Documents in the active dataset:
554 First line of documents
556 Second line of documents
558 abbé appliqué attaché blasé café canapé cliché consommé
562 Last line of documents
571 AT_SETUP([multiple response sets])
572 AT_KEYWORDS([sack synthetic system file positive])
573 AT_DATA([sys-file.sack], [dnl
575 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
577 16; dnl Nominal case size
578 0; dnl Not compressed
582 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
586 2; 0; 0; 0; 0x050800 *2; i8 0x82; i8 0xa0; s6 "";
587 2; 0; 0; 0; 0x050800 *2; s8 "B";
588 2; 0; 0; 0; 0x050800 *2; s8 "C";
591 2; 0; 0; 0; 0x050800 *2; s8 "D";
592 2; 0; 0; 0; 0x050800 *2; s8 "E";
593 2; 0; 0; 0; 0x050800 *2; s8 "F";
594 2; 0; 0; 0; 0x050800 *2; s8 "G";
597 2; 4; 0; 0; 0x010400 *2; s8 "H";
598 2; 4; 0; 0; 0x010400 *2; s8 "I";
599 2; 4; 0; 0; 0x010400 *2; s8 "J";
602 2; 0; 0; 0; 0x050800 *2; s8 "K";
603 2; 0; 0; 0; 0x050800 *2; s8 "L";
604 2; 0; 0; 0; 0x050800 *2; s8 "M";
607 2; 6; 0; 0; 0x010600 *2; s8 "N";
608 2; 6; 0; 0; 0x010600 *2; s8 "O";
609 2; 6; 0; 0; 0x010600 *2; s8 "P";
611 dnl Machine integer info record.
612 7; 3; 4; 8; 1; 2; 3; -1; 1; 1; ENDIAN; 932;
616 "$a=C 10 my mcgroup "; i8 0x82; i8 0xa0; " b c"; i8 10;
617 "$b=D2 55 0 g e f d"; i8 10; i8 10;
618 "$c=D4 "; i8 0x82; i8 0xcd; i8 0x82; i8 0xa2; " 10 mdgroup #2 h i j"; i8 10);
623 "$d=E 1 2 34 13 third mdgroup k l m"; i8 10;
624 "$e=E 11 6 choice 0 n o p"; i8 10; i8 10; i8 10; i8 10);
626 dnl Character encoding record.
627 7; 20; 1; 9; "shift_jis";
629 dnl Dictionary termination record.
632 for variant in be le; do
633 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
634 AT_DATA([sys-file.sps], [dnl
635 GET FILE='sys-file.sav'.
636 MRSETS /DISPLAY NAME=ALL.
638 AT_CHECK([pspp -o pspp.csv sys-file.sps])
639 AT_CHECK([cat pspp.csv], [0], [dnl
640 Table: Multiple Response Sets
641 Name,Variables,Details
645 ","Multiple category set
652 ","Multiple dichotomy set
654 Category label source: Variable labels
659 ","Multiple dichotomy set
661 Label source: Provided by user
663 Category label source: Variable labels
668 ","Multiple dichotomy set
670 Label source: Provided by user
672 Category label source: Value labels of counted value
677 ","Multiple dichotomy set
678 Label source: First variable label among variables
679 Counted value: `choice'
680 Category label source: Value labels of counted value
686 dnl Also checks for handling of CR-only line ends in file label and
687 dnl extra product info.
688 AT_SETUP([extra product info])
689 AT_KEYWORDS([sack synthetic system file positive])
690 AT_DATA([sys-file.sack], [dnl
692 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
694 4; dnl Nominal case size
695 0; dnl Not compressed
699 "01 Jan 11"; "20:53:52"; "PSPP synthetic"; i8 13; s49 "test file";
702 dnl Numeric variables.
703 2; 0; 0; 0; 0x050800 *2; s8 "A";
704 2; 0; 0; 0; 0x050800 *2; s8 "B";
705 2; 0; 0; 0; 0x050800 *2; s8 "C";
706 2; 0; 0; 0; 0x050800 *2; s8 "D";
708 dnl Extra product info.
709 7; 10; 1; COUNT ("Extra product info"; i8 13; "another line"; i8 13; "blah");
711 dnl Character encoding record.
712 7; 20; 1; 12; "windows-1252";
714 dnl Dictionary termination record.
717 for variant in be le; do
718 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
719 AT_DATA([sys-file.sps], [dnl
720 SYSFILE INFO FILE='sys-file.sav'.
722 AT_CHECK([pspp -o pspp.csv sys-file.sps])
723 AT_CHECK([sed 7q pspp.csv], [0], [dnl
725 Label:,"PSPP synthetic
727 Created:,01 Jan 11 20:53:52 by $(@%:@) SPSS DATA FILE PSPP synthetic test file
728 Product:,"Extra product info
735 AT_SETUP([variable display parameters, without width])
736 AT_KEYWORDS([sack synthetic system file positive])
737 AT_DATA([sys-file.sack], [dnl
739 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
741 19; dnl Nominal case size
742 0; dnl Not compressed
746 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
749 dnl Numeric variables.
750 2; 0; 0; 0; 0x050800 *2; s8 "A";
751 2; 0; 0; 0; 0x050800 *2; s8 "B";
752 2; 0; 0; 0; 0x050800 *2; s8 "C";
753 2; 0; 0; 0; 0x050800 *2; s8 "D";
755 dnl Short string variables.
756 2; 3; 0; 0; 0x010300 *2; s8 "H";
757 2; 3; 0; 0; 0x010300 *2; s8 "I";
758 2; 3; 0; 0; 0x010300 *2; s8 "J";
759 2; 3; 0; 0; 0x010300 *2; s8 "K";
761 dnl Long string variables.
762 2; 9; 0; 0; 0x010900 *2; s8 "L";
763 2; -1; 0; 0; 0; 0; s8 "";
764 2; 10; 0; 0; 0x010a00 *2; s8 "M";
765 2; -1; 0; 0; 0; 0; s8 "";
766 2; 17; 0; 0; 0x011100 *2; s8 "N";
767 ( 2; -1; 0; 0; 0; 0; s8 "" ) * 2;
768 2; 25; 0; 0; 0x011900 *2; s8 "O";
769 ( 2; -1; 0; 0; 0; 0; s8 "" ) * 3;
771 dnl Variable display parameters
786 dnl Character encoding record.
787 7; 20; 1; 12; "windows-1252";
789 dnl Dictionary termination record.
792 for variant in be le; do
793 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
794 AT_DATA([sys-file.sps], [dnl
795 GET FILE='sys-file.sav'.
798 AT_CHECK([pspp -o pspp.csv sys-file.sps])
799 AT_CHECK([cat pspp.csv], [0], [dnl
800 Variable,Description,Position
803 Display Alignment: Left",1
806 Display Alignment: Left",2
809 Display Alignment: Left",3
812 Display Alignment: Right",4
815 Display Alignment: Right",5
818 Display Alignment: Right",6
821 Display Alignment: Center",7
824 Display Alignment: Center",8
827 Display Alignment: Center",9
830 Display Alignment: Left",10
833 Display Alignment: Right",11
836 Display Alignment: Center",12
841 AT_SETUP([variable display parameters, with width])
842 AT_KEYWORDS([sack synthetic system file positive])
843 AT_DATA([sys-file.sack], [dnl
845 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
847 19; dnl Nominal case size
848 0; dnl Not compressed
852 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
855 dnl Numeric variables.
856 2; 0; 0; 0; 0x050800 *2; s8 "A";
857 2; 0; 0; 0; 0x050800 *2; s8 "B";
858 2; 0; 0; 0; 0x050800 *2; s8 "C";
859 2; 0; 0; 0; 0x050800 *2; s8 "D";
861 dnl Short string variables.
862 2; 3; 0; 0; 0x010300 *2; s8 "H";
863 2; 3; 0; 0; 0x010300 *2; s8 "I";
864 2; 3; 0; 0; 0x010300 *2; s8 "J";
865 2; 3; 0; 0; 0x010300 *2; s8 "K";
867 dnl Long string variables.
868 2; 9; 0; 0; 0x010900 *2; s8 "L";
869 2; -1; 0; 0; 0; 0; s8 "";
870 2; 10; 0; 0; 0x010a00 *2; s8 "M";
871 2; -1; 0; 0; 0; 0; s8 "";
872 2; 17; 0; 0; 0x011100 *2; s8 "N";
873 ( 2; -1; 0; 0; 0; 0; s8 "" ) * 2;
874 2; 25; 0; 0; 0x011900 *2; s8 "O";
875 ( 2; -1; 0; 0; 0; 0; s8 "" ) * 3;
877 dnl Variable display parameters
892 dnl Character encoding record.
893 7; 20; 1; 12; "windows-1252";
895 dnl Dictionary termination record.
898 for variant in be le; do
899 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
900 AT_DATA([sys-file.sps], [dnl
901 GET FILE='sys-file.sav'.
904 AT_CHECK([pspp -o pspp.csv sys-file.sps])
905 AT_CHECK([cat pspp.csv], [0], [dnl
906 Variable,Description,Position
909 Display Alignment: Left
913 Display Alignment: Left
917 Display Alignment: Left
921 Display Alignment: Right
925 Display Alignment: Right
929 Display Alignment: Right
933 Display Alignment: Center
937 Display Alignment: Center
941 Display Alignment: Center
945 Display Alignment: Left
946 Display Width: 10",10
949 Display Alignment: Right
950 Display Width: 11",11
953 Display Alignment: Center
954 Display Width: 12",12
959 AT_SETUP([long variable names])
960 AT_KEYWORDS([sack synthetic system file positive])
961 AT_DATA([sys-file.sack], [dnl
963 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
965 7; dnl Nominal case size
966 0; dnl Not compressed
970 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
973 dnl Numeric variables.
974 2; 0; 0; 0; 0x050800 *2; s8 "LONGVARI";
975 2; 0; 0; 0; 0x050800 *2; s8 "LONGVA_A";
976 2; 0; 0; 0; 0x050800 *2; s8 "LONGVA_B";
977 2; 0; 0; 0; 0x050800 *2; s8 "LONGVA_C";
978 2; 0; 0; 0; 0x050800 *2; "CO"; i8 214; "RDINA";
979 2; 0; 0; 0; 0x050800 *2; "CO"; i8 214; "RDI_A";
980 2; 0; 0; 0; 0x050800 *2; "CO"; i8 214; "RDI_B";
982 dnl Machine integer info record.
983 7; 3; 4; 8; 1; 2; 3; -1; 1; 1; ENDIAN; 1252;
985 dnl Machine floating-point info record.
986 7; 4; 8; 3; SYSMIS; HIGHEST; LOWEST;
988 dnl Long variable names.
990 "LONGVARI=LongVariableName1"; i8 9;
991 "LONGVA_A=LongVariableName2"; i8 9;
992 "LONGVA_B=LongVariableName3"; i8 9;
993 "LONGVA_C=LongVariableName4"; i8 9;
994 "CO"; i8 214; "RDINA=Co"; i8 246; "rdinate_X"; i8 9;
995 "CO"; i8 214; "RDI_A=Co"; i8 246; "rdinate_Y"; i8 9;
996 "CO"; i8 214; "RDI_B=Co"; i8 246; "rdinate_Z";
999 dnl Character encoding record.
1000 7; 20; 1; 12; "windows-1252";
1002 dnl Dictionary termination record.
1005 for variant in be le; do
1006 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1007 AT_DATA([sys-file.sps], [dnl
1008 GET FILE='sys-file.sav'.
1011 AT_CHECK([pspp -o pspp.csv sys-file.sps])
1012 AT_CHECK([cat pspp.csv], [0], [dnl
1013 Variable,Description,Position
1014 LongVariableName1,Format: F8.0,1
1015 LongVariableName2,Format: F8.0,2
1016 LongVariableName3,Format: F8.0,3
1017 LongVariableName4,Format: F8.0,4
1018 Coördinate_X,Format: F8.0,5
1019 Coördinate_Y,Format: F8.0,6
1020 Coördinate_Z,Format: F8.0,7
1025 AT_SETUP([very long strings])
1026 AT_KEYWORDS([sack synthetic system file positive])
1027 AT_DATA([sys-file.sack], [dnl
1029 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1031 109; dnl Nominal case size
1032 0; dnl Not compressed
1036 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
1039 dnl 256-byte string.
1040 2; 255; 0; 0; 0x01FF00 *2; "S"; i8 201; s6 "Q256";
1041 (2; -1; 0; 0; 0; 0; s8 "") * 31;
1042 2; 4; 0; 0; 0x010400 *2; "S"; i8 201; "Q256_1";
1044 dnl 600-byte string.
1045 2; 255; 0; 0; 0x01FF00 *2; s8 "STR600";
1046 (2; -1; 0; 0; 0; 0; s8 "") * 31;
1047 2; 255; 0; 0; 0x01FF00 *2; s8 "STR600_1";
1048 (2; -1; 0; 0; 0; 0; s8 "") * 31;
1049 2; 96; 0; 0; 0x016000 *2; s8 "STR600_2";
1050 (2; -1; 0; 0; 0; 0; s8 "") * 11;
1052 dnl Machine integer info record.
1053 7; 3; 4; 8; 1; 2; 3; -1; 1; 1; ENDIAN; 1252;
1055 dnl Very long string record.
1057 "S"; i8 201; "Q256=00256"; i8 0; i8 9;
1058 "STR600=00600"; i8 0; i8 9;
1061 dnl Character encoding record.
1062 7; 20; 1; 12; "windows-1252";
1064 dnl Dictionary termination record.
1068 "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#" * 4;
1070 "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#" * 9;
1071 "abcdefghijklmnopqrstuvwxyzABCDEF";
1073 for variant in be le; do
1074 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1075 AT_DATA([sys-file.sps], [dnl
1076 GET FILE='sys-file.sav'.
1080 AT_CHECK([pspp -o pspp.csv sys-file.sps])
1081 AT_CHECK([cat pspp.csv], [0], [dnl
1082 Variable,Description,Position
1083 séq256,Format: A256,1
1084 str600,Format: A600,2
1088 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@a,abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789@#abcdefghijklmnopqrstuvwxyz
1093 AT_SETUP([data file and variable attributes])
1094 AT_KEYWORDS([sack synthetic system file positive])
1095 AT_DATA([sys-file.sack], [dnl
1097 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1099 2; dnl Nominal case size
1100 0; dnl Not compressed
1104 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
1108 2; 0; 0; 0; 0x050800 *2; s8 "FIRSTVAR";
1109 2; 0; 0; 0; 0x050800 *2; s8 "SECONDVA";
1111 dnl Machine integer info record.
1112 7; 3; 4; 8; 1; 2; 3; -1; 1; 1; ENDIAN; 1252;
1114 dnl Long variable names.
1116 "FIRSTVAR=FirstVariable"; i8 9;
1117 "SECONDVA=S"; i8 233; "condVariable"; i8 9;
1120 dnl Data file attributes record.
1122 "Attr1('Value1'"; i8 10; "''d"; i8 233; "claration''"; i8 10; ")";
1123 "S"; i8 233; "condAttr('123'"; i8 10; "'456'"; i8 10; ")";
1126 dnl Variable attributes record.
1129 "ad"; i8 232; "le('23'"; i8 10; "'34'"; i8 10; ")";
1130 "bert('123'"; i8 10; ")";
1131 "$@Role('1'"; i8 10; ")";
1132 "/S"; i8 233; "condVariable:";
1133 "xyzzy('quux'"; i8 10; ")";
1137 dnl Character encoding record.
1138 7; 20; 1; 12; "windows-1252";
1140 dnl Dictionary termination record.
1143 for variant in be le; do
1144 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1145 AT_DATA([sys-file.sps], [dnl
1146 GET FILE='sys-file.sav'.
1147 DISPLAY @ATTRIBUTES.
1149 AT_CHECK([pspp -o pspp.csv sys-file.sps])
1150 AT_CHECK([cat pspp.csv], [0],
1151 [[Variable,Description
1152 FirstVariable,"Attribute,Value
1157 SécondVariable,"Attribute,Value
1160 Table: Custom data file attributes.
1163 Attr1[2],'déclaration'
1167 AT_DATA([sys-file.sps], [dnl
1168 GET FILE='sys-file.sav'.
1171 AT_CHECK([pspp -o pspp.csv sys-file.sps])
1172 AT_CHECK([cat pspp.csv], [0],
1173 [[Variable,Description,Position
1174 FirstVariable,"Format: F8.0
1181 SécondVariable,"Format: F8.0
1187 Table: Custom data file attributes.
1190 Attr1[2],'déclaration'
1197 AT_SETUP([variable roles])
1198 AT_KEYWORDS([sack synthetic system file positive])
1199 AT_DATA([sys-file.sack], [dnl
1201 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1203 7; dnl Nominal case size
1204 0; dnl Not compressed
1208 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
1212 2; 0; 0; 0; 0x050800 *2; s8 "I";
1213 2; 0; 0; 0; 0x050800 *2; s8 "O";
1214 2; 0; 0; 0; 0x050800 *2; s8 "B";
1215 2; 0; 0; 0; 0x050800 *2; s8 "N";
1216 2; 0; 0; 0; 0x050800 *2; s8 "P";
1217 2; 0; 0; 0; 0x050800 *2; s8 "S";
1218 2; 0; 0; 0; 0x050800 *2; s8 "X";
1220 dnl Machine integer info record.
1221 7; 3; 4; 8; 1; 2; 3; -1; 1; 1; ENDIAN; 1252;
1223 dnl Variable attributes record.
1225 "I:$@Role('0'"; i8 10; ")";
1226 "/O:$@Role('1'"; i8 10; ")";
1227 "/B:$@Role('2'"; i8 10; ")";
1228 "/N:$@Role('3'"; i8 10; ")";
1229 "/P:$@Role('4'"; i8 10; ")";
1230 "/S:$@Role('5'"; i8 10; ")";
1231 "/X:$@Role('6'"; i8 10; ")";
1234 dnl Character encoding record.
1235 7; 20; 1; 12; "windows-1252";
1237 dnl Dictionary termination record.
1240 for variant in be le; do
1241 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1242 AT_DATA([sys-file.sps], [dnl
1243 GET FILE='sys-file.sav'.
1246 AT_CHECK([pspp -o pspp.csv sys-file.sps], [0], [dnl
1247 warning: `sys-file.sav': Invalid role for variable x.
1249 AT_CHECK([cat pspp.csv], [0], [dnl
1250 warning: `sys-file.sav': Invalid role for variable x.
1252 Variable,Description,Position
1271 AT_SETUP([compressed data])
1272 AT_KEYWORDS([sack synthetic system file positive])
1273 AT_DATA([sys-file.sack], [dnl
1275 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1277 6; dnl Nominal case size
1278 1; dnl Simple compression
1280 -1; dnl Unspecified number of cases.
1282 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
1285 dnl Numeric variables.
1286 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1287 2; 0; 0; 0; 0x050800 *2; s8 "NUM2";
1289 dnl String variable.
1290 2; 4; 0; 0; 0x010400 *2; s8 "STR4";
1291 2; 8; 0; 0; 0x010800 *2; s8 "STR8";
1292 2; 15; 0; 0; 0x010f00 *2; s8 "STR15";
1293 2; -1; 0; 0; 0; 0; s8 "";
1295 dnl Character encoding record.
1296 7; 20; 1; 12; "windows-1252";
1298 dnl Dictionary termination record.
1301 dnl Compressed data.
1302 i8 1 100 254 253 254 253; i8 255 251; "abcdefgh"; s8 "0123";
1303 i8 253 253 253 254; i8 101 102 253 253; s8 "jklm"; s8 "nopqrstu";
1304 s8 "vwxyzABC"; s8 "DEFG"; s8 "HIJKLMNO";
1305 i8 254 253 252 0 0 0 0 0; s8 "PQRSTUVW";
1308 for variant in be le; do
1309 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1310 AT_DATA([sys-file.sps], [dnl
1311 GET FILE='sys-file.sav'.
1315 AT_CHECK([pspp -o pspp.csv sys-file.sps])
1316 AT_CHECK([cat pspp.csv], [0], [dnl
1317 Variable,Description,Position
1325 num1,num2,str4,str8,str15
1326 -99,0,,abcdefgh,0123 @&t@
1327 .,151,jklm,nopqrstu,vwxyzABC @&t@
1328 1,2,DEFG,HIJKLMNO,PQRSTUV
1333 AT_SETUP([compressed data, zero bias])
1334 AT_KEYWORDS([sack synthetic system file positive])
1335 AT_DATA([sys-file.sack], [dnl
1337 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1339 6; dnl Nominal case size
1340 1; dnl Simple compression.
1342 -1; dnl Unspecified number of cases.
1344 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
1347 dnl Numeric variables.
1348 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1349 2; 0; 0; 0; 0x050800 *2; s8 "NUM2";
1351 dnl String variable.
1352 2; 4; 0; 0; 0x010400 *2; s8 "STR4";
1353 2; 8; 0; 0; 0x010800 *2; s8 "STR8";
1354 2; 15; 0; 0; 0x010f00 *2; s8 "STR15";
1355 2; -1; 0; 0; 0; 0; s8 "";
1357 dnl Character encoding record.
1358 7; 20; 1; 12; "windows-1252";
1360 dnl Dictionary termination record.
1363 dnl Compressed data.
1364 i8 1 100 254 253 254 253; i8 255 251; "abcdefgh"; s8 "0123";
1365 i8 253 253 253 254; i8 101 102 253 253; s8 "jklm"; s8 "nopqrstu";
1366 s8 "vwxyzABC"; s8 "DEFG"; s8 "HIJKLMNO";
1367 i8 254 253 252 0 0 0 0 0; s8 "PQRSTUVW";
1370 for variant in be le; do
1371 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1372 AT_DATA([sys-file.sps], [dnl
1373 GET FILE='sys-file.sav'.
1377 AT_CHECK([pspp -o pspp.csv sys-file.sps], [0])
1378 AT_CHECK([cat pspp.csv], [0], [dnl
1379 Variable,Description,Position
1387 num1,num2,str4,str8,str15
1388 1,100,,abcdefgh,0123 @&t@
1389 .,251,jklm,nopqrstu,vwxyzABC @&t@
1390 101,102,DEFG,HIJKLMNO,PQRSTUV
1395 AT_SETUP([compressed data, other bias])
1396 AT_KEYWORDS([sack synthetic system file positive])
1397 AT_DATA([sys-file.sack], [dnl
1399 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1401 6; dnl Nominal case size
1402 1; dnl Simple compression.
1404 -1; dnl Unspecified number of cases.
1406 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
1409 dnl Numeric variables.
1410 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1411 2; 0; 0; 0; 0x050800 *2; s8 "NUM2";
1413 dnl String variable.
1414 2; 4; 0; 0; 0x010400 *2; s8 "STR4";
1415 2; 8; 0; 0; 0x010800 *2; s8 "STR8";
1416 2; 15; 0; 0; 0x010f00 *2; s8 "STR15";
1417 2; -1; 0; 0; 0; 0; s8 "";
1419 dnl Character encoding record.
1420 7; 20; 1; 12; "windows-1252";
1422 dnl Dictionary termination record.
1425 dnl Compressed data.
1426 i8 1 100 254 253 254 253; i8 255 251; "abcdefgh"; s8 "0123";
1427 i8 253 253 253 254; i8 101 102 253 253; s8 "jklm"; s8 "nopqrstu";
1428 s8 "vwxyzABC"; s8 "DEFG"; s8 "HIJKLMNO";
1429 i8 254 253 252 0 0 0 0 0; s8 "PQRSTUVW";
1432 for variant in be le; do
1433 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1434 AT_DATA([sys-file.sps], [dnl
1435 GET FILE='sys-file.sav'.
1439 AT_CHECK([pspp -o pspp.csv sys-file.sps], [0],
1440 [warning: `sys-file.sav' near offset 0x54: Compression bias is not the usual value of 100, or system file uses unrecognized floating-point format.
1442 AT_CHECK([cat pspp.csv], [0], [dnl
1443 "warning: `sys-file.sav' near offset 0x54: Compression bias is not the usual value of 100, or system file uses unrecognized floating-point format."
1445 Variable,Description,Position
1453 num1,num2,str4,str8,str15
1454 -49,50,,abcdefgh,0123 @&t@
1455 .,201,jklm,nopqrstu,vwxyzABC @&t@
1456 51,52,DEFG,HIJKLMNO,PQRSTUV
1461 m4_divert_push([PREPARE_TESTS])
1462 zcompressed_sack () {
1465 "$FL3"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1467 6; dnl Nominal case size
1468 2; dnl zlib compressed
1470 -1; dnl Unspecified number of cases.
1472 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
1475 dnl Numeric variables.
1476 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1477 2; 0; 0; 0; 0x050800 *2; s8 "NUM2";
1479 dnl String variable.
1480 2; 4; 0; 0; 0x010400 *2; s8 "STR4";
1481 2; 8; 0; 0; 0x010800 *2; s8 "STR8";
1482 2; 15; 0; 0; 0x010f00 *2; s8 "STR15";
1483 2; -1; 0; 0; 0; 0; s8 "";
1485 dnl Character encoding record.
1486 7; 20; 1; 12; "windows-1252";
1488 dnl Dictionary termination record.
1491 dnl ZLIB data header.
1492 i64 0x194; # zheader_ofs
1493 i64 0x205; # ztrailer_ofs
1494 i64 48; # ztrailer_len
1496 dnl ZLIB data block.
1498 dnl This is the compressed form of:
1500 dnl 01 64 fe fd fe fd ff fb 61 62 63 64 65 66 67 68 |.d......abcdefgh|
1501 dnl 30 31 32 33 20 20 20 20 fd fd fd fe 65 66 fd fd |0123 ....ef..|
1502 dnl 6a 6b 6c 6d 20 20 20 20 6e 6f 70 71 72 73 74 75 |jklm nopqrstu|
1503 dnl 76 77 78 79 7a 41 42 43 44 45 46 47 20 20 20 20 |vwxyzABCDEFG |
1504 dnl 48 49 4a 4b 4c 4d 4e 4f fe fd fc 00 00 00 00 00 |HIJKLMNO........|
1505 dnl 50 51 52 53 54 55 56 57 |PQRSTUVW|
1507 dnl which is the data from the "compressed data" test.
1508 hex "78 01 63 4c f9 f7 f7 df df ff bf 13 93 92 53 52";
1509 hex "d3 d2 33 0c 0c 8d 8c 15 80 e0 ef df bf ff 52 d3";
1510 hex "fe fe cd ca ce c9 05 f1 f3 f2 0b 0a 8b 8a 4b 4a";
1511 hex "cb ca 2b 2a ab 1c 9d 9c 5d 5c dd dc 41 e2 1e 9e";
1512 hex "5e de 3e be 7e fe ff fe fe 61 00 81 80 c0 a0 e0";
1513 hex "90 d0 b0 70 00 0f 3f 23 d7";
1515 dnl ZLIB data trailer fixed header:
1516 i64 -100; # ztrailer_bias
1517 i64 0; # ztrailer_zero
1518 0x3ff000; # block_size
1521 dnl ZLIB block descriptor:
1522 i64 0x194; # uncompressed_ofs
1523 i64 0x1ac; # compressed_ofs
1524 88; # uncompressed_size
1525 89; # compressed_size
1528 m4_divert_pop([PREPARE_TESTS])
1530 AT_SETUP([zcompressed data])
1531 AT_KEYWORDS([sack synthetic system file positive zlib])
1532 zcompressed_sack > sys-file.sack
1533 for variant in be le; do
1534 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1535 AT_DATA([sys-file.sps], [dnl
1536 GET FILE='sys-file.sav'.
1540 AT_CHECK([pspp -o pspp.csv sys-file.sps])
1541 AT_CHECK([cat pspp.csv], [0], [dnl
1542 Variable,Description,Position
1550 num1,num2,str4,str8,str15
1551 -99,0,,abcdefgh,0123 @&t@
1552 .,151,jklm,nopqrstu,vwxyzABC @&t@
1553 1,2,DEFG,HIJKLMNO,PQRSTUV
1558 AT_BANNER([system file reader - negative])
1560 AT_SETUP([no variables])
1561 AT_KEYWORDS([sack synthetic system file negative])
1562 AT_DATA([sys-file.sack], [dnl
1564 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1566 0; dnl Nominal case size (empty)
1567 0; dnl Not compressed
1571 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
1574 dnl Character encoding record.
1575 7; 20; 1; 12; "windows-1252";
1577 dnl Dictionary termination record.
1580 for variant in be le; do
1581 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1582 AT_DATA([sys-file.sps], [dnl
1583 GET FILE='sys-file.sav'.
1585 AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
1586 sys-file.sps:1: error: GET: `sys-file.sav': Data file dictionary has no variables.
1589 dnl At one point pspp-convert would hang forever if there were no variables,
1590 dnl so check against regression.
1591 AT_CHECK([pspp-convert sys-file.sav sys-file.txt])
1592 AT_CHECK([cat sys-file.txt], [0], [
1597 AT_SETUP([unspecified character encoding])
1598 AT_KEYWORDS([sack synthetic system file positive])
1599 AT_DATA([sys-file.sack], [dnl
1601 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1603 4; dnl Nominal case size
1604 0; dnl Not compressed
1608 "01 Jan 11"; "20:53:52";
1609 "PSPP synthetic test file: "; i8 244; i8 245; i8 246; i8 248; s34 "";
1612 dnl Numeric variables.
1613 2; 0; 0; 0; 0x050800 *2; s8 "A";
1614 2; 0; 0; 0; 0x050800 *2; s8 "B";
1615 2; 0; 0; 0; 0x050800 *2; s8 "C";
1616 2; 0; 0; 0; 0x050800 *2; s8 "D";
1618 dnl Dictionary termination record.
1621 for variant in be le; do
1622 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1623 AT_DATA([sys-file.sps], [dnl
1626 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [stdout])
1627 AT_CHECK([sed 's/default encoding.*For/default encoding. For/' stdout], [0], [dnl
1628 "warning: `sys-file.sav': This system file does not indicate its own character encoding. Using default encoding. For best results, specify an encoding explicitly. Use SYSFILE INFO with ENCODING=""DETECT"" to analyze the possible encodings."
1633 AT_SETUP([misplaced type 4 record])
1634 AT_KEYWORDS([sack synthetic system file negative])
1635 AT_DATA([sys-file.sack], [dnl
1637 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1638 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1640 dnl Numeric variable.
1641 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1646 for variant in be le; do
1647 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1648 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1650 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
1651 [error: `sys-file.sav' near offset 0xd4: Misplaced type 4 record.
1656 AT_SETUP([bad record type])
1657 AT_KEYWORDS([sack synthetic system file negative])
1658 AT_DATA([sys-file.sack], [dnl
1660 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1661 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1663 dnl Numeric variable.
1664 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1666 dnl Type 8 record (not a valid type).
1669 for variant in be le; do
1670 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1671 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1673 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
1674 [error: `sys-file.sav' near offset 0xd4: Unrecognized record type 8.
1679 AT_SETUP([wrong number of variable positions])
1680 AT_KEYWORDS([sack synthetic system file negative])
1681 AT_DATA([sys-file.sack], [dnl
1683 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1684 2; >>2<<; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1686 dnl Numeric variable.
1687 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1689 dnl Character encoding record.
1690 7; 20; 1; 12; "windows-1252";
1692 dnl End of dictionary.
1695 for variant in be le; do
1696 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1697 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1699 AT_CHECK([pspp -O format=csv sys-file.sps], [0],
1700 [warning: `sys-file.sav': File header claims 2 variable positions but 1 were read from file.
1705 AT_SETUP([variable name may not begin with `#'])
1706 AT_KEYWORDS([sack synthetic system file negative])
1707 AT_DATA([sys-file.sack], [dnl
1709 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1710 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1712 dnl Numeric variable.
1713 2; 0; 0; 0; 0x050800 *2; s8 >>"$UM1"<<;
1715 dnl Character encoding record.
1716 7; 20; 1; 12; "windows-1252";
1718 dnl End of dictionary.
1721 for variant in be le; do
1722 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1723 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1725 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
1726 [error: `sys-file.sav' near offset 0xb4: Invalid variable name `$UM1'.
1731 AT_SETUP([variable name may not be reserved word])
1732 AT_KEYWORDS([sack synthetic system file negative])
1733 AT_DATA([sys-file.sack], [dnl
1735 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1736 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1738 dnl Numeric variable.
1739 2; 0; 0; 0; 0x050800 *2; s8 >>"TO"<<;
1741 dnl Character encoding record.
1742 7; 20; 1; 12; "windows-1252";
1744 dnl End of dictionary.
1747 for variant in be le; do
1748 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1749 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1751 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
1752 [error: `sys-file.sav' near offset 0xb4: Invalid variable name `TO'.
1757 AT_SETUP([variable width must be between 0 and 255])
1758 AT_KEYWORDS([sack synthetic system file negative])
1759 AT_DATA([sys-file.sack], [dnl
1761 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1762 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1764 dnl String variable with invalid width 256.
1765 2; 256; 0; 0; 0x050800 *2; s8 "VAR1";
1767 dnl Character encoding record.
1768 7; 20; 1; 12; "windows-1252";
1770 dnl End of dictionary.
1773 for variant in be le; do
1774 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1775 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1777 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
1778 [error: `sys-file.sav' near offset 0xb4: Bad width 256 for variable VAR1.
1783 dnl SPSS-generated system file can contain duplicate variable names
1784 dnl (see bug #41475).
1785 AT_SETUP([duplicate variable name])
1786 AT_KEYWORDS([sack synthetic system file negative])
1787 AT_DATA([sys-file.sack], [dnl
1789 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1790 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1792 dnl Numeric variables.
1793 2; 0; 0; 0; 0x050800 *2; s8 "VAR1";
1794 2; 0; 0; 0; 0x050800 *2; s8 "VAR1";
1796 dnl Character encoding record.
1797 7; 20; 1; 12; "windows-1252";
1799 dnl End of dictionary.
1802 for variant in be le; do
1803 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1804 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1807 AT_CHECK([pspp -O format=csv sys-file.sps], [0],
1808 [warning: `sys-file.sav' near offset 0xd4: Renaming variable with duplicate name `VAR1' to `VAR001'.
1810 Variable,Description,Position
1812 var001,Format: F8.0,2
1817 AT_SETUP([variable label indicator not 0 or 1])
1818 AT_KEYWORDS([sack synthetic system file negative])
1819 AT_DATA([sys-file.sack], [dnl
1821 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1822 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1824 dnl Numeric variable.
1825 2; 0; >>2<<; 0; 0x050800 *2; s8 "VAR1";
1827 dnl Character encoding record.
1828 7; 20; 1; 12; "windows-1252";
1830 dnl End of dictionary.
1833 for variant in be le; do
1834 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1835 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1837 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
1838 [error: `sys-file.sav' near offset 0xb4: Variable label indicator field is not 0 or 1.
1843 AT_SETUP([invalid numeric missing value indicator])
1844 AT_KEYWORDS([sack synthetic system file negative])
1845 AT_DATA([sys-file.sack], [dnl
1847 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1848 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1850 dnl Numeric variable.
1851 2; 0; 0; >>-1<<; 0x050800 *2; s8 "VAR1";
1853 dnl Character encoding record.
1854 7; 20; 1; 12; "windows-1252";
1856 dnl End of dictionary.
1859 for variant in be le; do
1860 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1861 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1863 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
1864 ["error: `sys-file.sav' near offset 0xb4: Numeric missing value indicator field is not -3, -2, 0, 1, 2, or 3."
1869 AT_SETUP([invalid string missing value indicator])
1870 AT_KEYWORDS([sack synthetic system file negative])
1871 AT_DATA([sys-file.sack], [dnl
1873 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1874 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1876 dnl String variable.
1877 2; 8; 0; >>4<<; 0x010800 *2; s8 "VAR1";
1879 dnl Character encoding record.
1880 7; 20; 1; 12; "windows-1252";
1882 dnl End of dictionary.
1885 for variant in be le; do
1886 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1887 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1889 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
1890 ["error: `sys-file.sav' near offset 0xb4: String missing value indicator field is not 0, 1, 2, or 3."
1895 AT_SETUP([missing string continuation record])
1896 AT_KEYWORDS([sack synthetic system file negative])
1897 AT_DATA([sys-file.sack], [dnl
1899 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1900 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1902 dnl String variable.
1903 2; 10; 0; 0; 0x010a00 *2; s8 "VAR1";
1904 >>2; 0; 0; 0; 0x050800 *2; s8 "VAR2";<<
1906 dnl Character encoding record.
1907 7; 20; 1; 12; "windows-1252";
1909 dnl End of dictionary.
1912 for variant in be le; do
1913 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1914 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1916 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
1917 [error: `sys-file.sav' near offset 0xb4: Missing string continuation record.
1922 AT_SETUP([invalid variable format])
1923 AT_KEYWORDS([sack synthetic system file negative])
1924 AT_DATA([sys-file.sack], [dnl
1926 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1927 2; 4; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1929 dnl Numeric variable, invalid format types.
1930 dnl No warning is issued for type 0 because it has been observed in real
1932 2; 0; 0; 0; >>0xff0800; 0<<; s8 "NUM1";
1934 dnl Numeric variable, string formats.
1935 2; 0; 0; 0; >>0x010800<<; >>0x021000<<; s8 "VAR1";
1937 dnl String variable, numeric formats.
1938 2; 4; 0; 0; >>0x050800<<; >>0x110a01<<; s8 "STR1";
1940 dnl String variable, wrong width formats.
1941 2; 4; 0; 0; >>0x010800<<; >>0x020400<<; s8 "STR2";
1943 dnl Character encoding record.
1944 7; 20; 1; 12; "windows-1252";
1946 dnl End of dictionary.
1949 for variant in be le; do
1950 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1951 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1953 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
1954 warning: `sys-file.sav' near offset 0xc0: Variable NUM1 with width 0 has invalid print format 0xff0800.
1956 warning: `sys-file.sav' near offset 0xe0: Variable VAR1 with width 0 has invalid print format 0x10800.
1958 warning: `sys-file.sav' near offset 0xe4: Variable VAR1 with width 0 has invalid write format 0x21000.
1960 warning: `sys-file.sav' near offset 0x100: Variable STR1 with width 4 has invalid print format 0x50800.
1962 warning: `sys-file.sav' near offset 0x104: Variable STR1 with width 4 has invalid write format 0x110a01.
1964 warning: `sys-file.sav' near offset 0x120: Variable STR2 with width 4 has invalid print format 0x10800.
1966 warning: `sys-file.sav' near offset 0x124: Variable STR2 with width 4 has invalid write format 0x20400.
1971 AT_SETUP([invalid long string missing values])
1972 AT_KEYWORDS([sack synthetic system file negative])
1973 AT_DATA([sys-file.sack], [dnl
1975 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1977 7; dnl Nominal case size
1978 0; dnl Not compressed
1982 "01 Jan 11"; "20:53:52";
1983 "PSPP synthetic test file: "; i8 244; i8 245; i8 246; i8 248; s34 "";
1986 dnl One numeric variable.
1987 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1989 dnl Long string variables that will have missing values added with a
1991 2; 9; 0; 0; 0x010900 *2; s8 "STR1";
1992 2; -1; 0; 0; 0; 0; s8 "";
1993 2; 10; 0; 0; 0x010a00 *2; s8 "STR2";
1994 2; -1; 0; 0; 0; 0; s8 "";
1995 2; 11; 0; 0; 0x010b00 *2; s8 "STR3";
1996 2; -1; 0; 0; 0; 0; s8 "";
1998 dnl Machine integer info record.
1999 7; 3; 4; 8; 1; 2; 3; -1; 1; 1; ENDIAN; 1252;
2001 dnl Machine floating-point info record.
2002 7; 4; 8; 3; SYSMIS; HIGHEST; LOWEST;
2004 dnl Long string variable missing values record.
2006 dnl Zero missing values (not allowed) for STR1 .
2007 COUNT("STR1"); i8 >>0<<;
2009 dnl Four missing values (not allowed) for STR2.
2010 COUNT("STR2"); i8 4;
2011 8; "abcdefgh"; 8; "ijklmnop"; 8; "qrstuvwx"; 8; "yz012345";
2013 dnl Missing values for unknown variable
2014 COUNT(>>"Nonexistent"<<); i8 1; 8; "abcdefgh";
2016 dnl Missing values for numeric variable
2017 COUNT(>>"NUM1"<<); i8 1; 8; "abcdefgh";
2019 dnl Too long missing value
2020 COUNT("STR3"); i8 1; >>COUNT("abcdefghijkl")<<;
2023 dnl Character encoding record.
2024 7; 20; 1; 12; "windows-1252";
2026 dnl Dictionary termination record.
2028 s8 "abcd"; s8 "efgh"; s8 "ijkl"; s8 "mnop"; s8 "qrst"; s8 "uvwx";
2029 s16 "yzABCDEFGHI"; s16 "JKLMNOPQR"; s16 "STUVWXYZ01";
2030 s16 "23456789abc"; s32 "defghijklmnopqstuvwxyzABC";
2033 for variant in be le; do
2034 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2035 AT_DATA([sys-file.sps], [dnl
2036 GET FILE='sys-file.sav'.
2039 AT_CHECK([pspp -O format=csv sys-file.sps], [0],
2040 ["warning: `sys-file.sav' near offset 0x1f8: Long string missing values record says variable STR1 has 0 missing values, but only 1 to 3 missing values are allowed."
2042 "warning: `sys-file.sav' near offset 0x201: Long string missing values record says variable STR2 has 4 missing values, but only 1 to 3 missing values are allowed."
2044 warning: `sys-file.sav' near offset 0x242: Ignoring long string missing value record for unknown variable Nonexistent.
2046 warning: `sys-file.sav' near offset 0x257: Ignoring long string missing value record for numeric variable NUM1.
2048 "warning: `sys-file.sav' near offset 0x270: Ignoring long string missing value 0 for variable str3, with width 11, that has bad value width 12."
2050 Variable,Description,Position
2054 Missing Values: ""abcdefgh""; ""ijklmnop""; ""qrstuvwx""",3
2060 AT_SETUP([weighting variable must be numeric])
2061 AT_KEYWORDS([sack synthetic system file negative])
2062 AT_DATA([sys-file.sack], [dnl
2064 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2065 2; 2; 1; >>2<<; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2067 dnl Numeric variable.
2068 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2070 dnl String variable.
2071 2; 4; 0; 0; 0x010400 *2; s8 "STR1";
2073 dnl Character encoding record.
2074 7; 20; 1; 12; "windows-1252";
2076 dnl End of dictionary.
2079 for variant in be le; do
2080 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2081 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2084 AT_CHECK([pspp -O format=csv sys-file.sps], [0],
2085 [warning: `sys-file.sav': Ignoring string variable `STR1' set as weighting variable.
2087 Variable,Description,Position
2094 AT_SETUP([bad weighting variable index])
2095 AT_KEYWORDS([sack synthetic system file negative])
2096 AT_DATA([sys-file.sack], [dnl
2098 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2099 2; 2; 1; >>3<<; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2101 dnl Numeric variable.
2102 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2104 dnl String variable.
2105 2; 4; 0; 0; 0x010400 *2; s8 "STR1";
2107 dnl Character encoding record.
2108 7; 20; 1; 12; "windows-1252";
2110 dnl End of dictionary.
2113 for variant in be le; do
2114 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2115 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2117 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
2118 [error: `sys-file.sav' near offset 0x4c: Variable index 3 not in valid range 1...2.
2123 AT_SETUP([variable index is long string contination])
2124 AT_KEYWORDS([sack synthetic system file negative])
2125 AT_DATA([sys-file.sack], [dnl
2127 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2128 2; 3; 1; >>3<<; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2130 dnl Numeric variable.
2131 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2133 dnl Long string variable.
2134 2; 9; 0; 0; 0x010900 *2; s8 "STR1";
2135 (2; -1; 0; 0; 0; 0; s8 "");
2137 dnl Character encoding record.
2138 7; 20; 1; 12; "windows-1252";
2140 dnl End of dictionary.
2143 for variant in be le; do
2144 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2145 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2147 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
2148 [error: `sys-file.sav' near offset 0x4c: Variable index 3 refers to long string continuation.
2153 AT_SETUP([multiple documents records])
2154 AT_KEYWORDS([sack synthetic system file negative])
2155 AT_DATA([sys-file.sack], [dnl
2157 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2158 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2160 dnl Numeric variable, no label or missing values.
2161 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2163 dnl Two document records.
2164 (6; 1; s80 "One line of documents") >>* 2<<;
2166 dnl Dictionary termination record.
2169 dnl Character encoding record.
2170 7; 20; 1; 12; "windows-1252";
2175 for variant in be le; do
2176 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2177 AT_DATA([sys-file.sps], [dnl
2178 GET FILE='sys-file.sav'.
2180 AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
2181 error: `sys-file.sav' near offset 0x12c: Duplicate type 6 (document) record.
2187 AT_SETUP([empty document record])
2188 AT_KEYWORDS([sack synthetic system file negative])
2189 AT_DATA([sys-file.sack], [dnl
2191 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2192 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2194 dnl Numeric variable, no label or missing values.
2195 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2197 dnl Empty document record.
2200 dnl Dictionary termination record.
2206 for variant in be le; do
2207 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2208 AT_DATA([sys-file.sps], [dnl
2209 GET FILE='sys-file.sav'.
2211 AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
2212 error: `sys-file.sav' near offset 0xd4: Number of document lines (0) must be greater than 0 and less than 26843545.
2217 AT_SETUP([extension record too large])
2218 AT_KEYWORDS([sack synthetic system file negative])
2219 AT_DATA([sys-file.sack], [dnl
2221 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2222 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2224 dnl Numeric variable, no label or missing values.
2225 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2227 dnl Too-large extension record.
2228 7; 3; >>0xfffff000 * 2<<;
2230 for variant in be le; do
2231 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2232 AT_DATA([sys-file.sps], [dnl
2233 GET FILE='sys-file.sav'.
2235 AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
2236 error: `sys-file.sav' near offset 0xd8: Record type 7 subtype 3 too large.
2241 AT_SETUP([unknown extension record])
2242 AT_KEYWORDS([sack synthetic system file negative])
2243 AT_DATA([sys-file.sack], [dnl
2245 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2246 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2248 dnl Numeric variable, no label or missing values.
2249 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2251 dnl Unknown extension record type.
2254 dnl Character encoding record.
2255 7; 20; 1; 12; "windows-1252";
2257 dnl End of dictionary.
2260 for variant in be le; do
2261 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2262 AT_DATA([sys-file.sps], [dnl
2263 GET FILE='sys-file.sav'.
2265 AT_CHECK_UNQUOTED([pspp -O format=csv sys-file.sps], [0], [dnl
2266 "warning: \`sys-file.sav' near offset 0xd8: Unrecognized record type 7, subtype 30. For help, please send this file to ${PACKAGE_BUGREPORT} and mention that you were using ${PACKAGE_STRING}."
2271 AT_SETUP([bad machine integer info size])
2272 AT_KEYWORDS([sack synthetic system file negative])
2273 AT_DATA([sys-file.sack], [dnl
2275 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2276 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2278 dnl Numeric variable, no label or missing values.
2279 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2281 dnl Machine integer info record.
2282 7; 3; 4; >>9<<; 1; 2; 3; -1; 1; 1; ENDIAN; 1252; >>1234<<;
2284 dnl Character encoding record.
2285 7; 20; 1; 12; "windows-1252";
2287 dnl End of dictionary.
2290 for variant in be le; do
2291 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2292 AT_DATA([sys-file.sps], [dnl
2293 GET FILE='sys-file.sav'.
2295 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2296 "warning: `sys-file.sav' near offset 0xd8: Record type 7, subtype 3 has bad count 9 (expected 8)."
2301 AT_SETUP([bad machine integer info float format])
2302 AT_KEYWORDS([sack synthetic system file negative])
2303 AT_DATA([sys-file.sack], [dnl
2305 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2306 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2308 dnl Numeric variable, no label or missing values.
2309 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2311 dnl Machine integer info record.
2312 7; 3; 4; 8; 1; 2; 3; -1; >>2<<; 1; ENDIAN; 1252;
2314 dnl Character encoding record.
2315 7; 20; 1; 12; "windows-1252";
2317 dnl End of dictionary.
2320 for variant in be le; do
2321 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2322 AT_DATA([sys-file.sps], [dnl
2323 GET FILE='sys-file.sav'.
2325 AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
2326 error: `sys-file.sav' near offset 0xd8: Floating-point representation indicated by system file (2) differs from expected (1).
2331 AT_SETUP([bad machine integer info endianness])
2332 AT_KEYWORDS([sack synthetic system file negative])
2333 AT_DATA([sys-file.sack], [dnl
2335 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2336 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2338 dnl Numeric variable, no label or missing values.
2339 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2341 dnl Machine integer info record.
2342 7; 3; 4; 8; 1; 2; 3; -1; 1; 1; >>3<<; 1252;
2344 dnl Character encoding record.
2345 7; 20; 1; 12; "windows-1252";
2347 dnl End of dictionary.
2350 for variant in "be 1" "le 2"; do
2352 AT_CHECK([sack --$[1] sys-file.sack > sys-file.sav])
2353 AT_DATA([sys-file.sps], [dnl
2354 GET FILE='sys-file.sav'.
2357 AT_CHECK_UNQUOTED([pspp -O format=csv sys-file.sps], [0], [dnl
2358 warning: \`sys-file.sav' near offset 0xd8: Integer format indicated by system file (3) differs from expected ($[2]).
2360 Variable,Description,Position
2367 AT_SETUP([bad machine floating-point info size])
2368 AT_KEYWORDS([sack synthetic system file negative])
2369 AT_DATA([sys-file.sack], [dnl
2371 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2372 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2374 dnl Numeric variable, no label or missing values.
2375 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2377 dnl Machine floating-point info record.
2378 7; 4; 8; >>4<<; SYSMIS; HIGHEST; LOWEST; 0.0;
2380 dnl Character encoding record.
2381 7; 20; 1; 12; "windows-1252";
2383 dnl End of dictionary.
2386 for variant in be le; do
2387 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2388 AT_DATA([sys-file.sps], [dnl
2389 GET FILE='sys-file.sav'.
2391 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2392 "warning: `sys-file.sav' near offset 0xd8: Record type 7, subtype 4 has bad count 4 (expected 3)."
2397 AT_SETUP([wrong special floating point values])
2398 AT_KEYWORDS([sack synthetic system file negative])
2399 AT_DATA([sys-file.sack], [dnl
2401 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2402 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2404 dnl Numeric variable, no label or missing values.
2405 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2407 dnl Machine floating-point info record.
2408 7; 4; 8; 3; >>0.0<<; >>1.0<<; >>2.0<<;
2410 dnl Character encoding record.
2411 7; 20; 1; 12; "windows-1252";
2413 dnl End of dictionary.
2416 for variant in be le; do
2417 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2418 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2420 AT_CHECK([pspp -O format=csv sys-file.sps | sed 's/ [(].*/.../'], [0], [dnl
2421 "warning: `sys-file.sav' near offset 0xd8: File specifies unexpected value 0...
2423 "warning: `sys-file.sav' near offset 0xd8: File specifies unexpected value 1...
2425 "warning: `sys-file.sav' near offset 0xd8: File specifies unexpected value 2...
2430 AT_SETUP([bad mrsets name])
2431 AT_KEYWORDS([sack synthetic system file negative multiple response])
2432 AT_DATA([sys-file.sack], [dnl
2434 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2436 16; dnl Nominal case size
2437 0; dnl Not compressed
2441 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
2445 2; 0; 0; 0; 0x050800 *2; i8 0x82; i8 0xa0; s6 "";
2446 2; 0; 0; 0; 0x050800 *2; s8 "B";
2447 2; 0; 0; 0; 0x050800 *2; s8 "C";
2450 2; 0; 0; 0; 0x050800 *2; s8 "D";
2451 2; 0; 0; 0; 0x050800 *2; s8 "E";
2452 2; 0; 0; 0; 0x050800 *2; s8 "F";
2453 2; 0; 0; 0; 0x050800 *2; s8 "G";
2456 2; 4; 0; 0; 0x010400 *2; s8 "H";
2457 2; 4; 0; 0; 0x010400 *2; s8 "I";
2458 2; 4; 0; 0; 0x010400 *2; s8 "J";
2461 2; 0; 0; 0; 0x050800 *2; s8 "K";
2462 2; 0; 0; 0; 0x050800 *2; s8 "L";
2463 2; 0; 0; 0; 0x050800 *2; s8 "M";
2466 2; 6; 0; 0; 0x010600 *2; s8 "N";
2467 2; 6; 0; 0; 0x010600 *2; s8 "O";
2468 2; 6; 0; 0; 0x010600 *2; s8 "P";
2470 dnl Machine integer info record.
2471 7; 3; 4; 8; 1; 2; 3; -1; 1; 1; ENDIAN; 932;
2475 "$a=C 10 my mcgroup "; i8 0x82; i8 0xa0; " b c"; i8 10;
2476 "b=D2 55 0 g e f d"; i8 10;
2477 "$c=D4 "; i8 0x82; i8 0xcd; i8 0x82; i8 0xa2; " 10 mdgroup #2 h i j"; i8 10);
2481 "$d=E 1 2 34 13 third mdgroup k l m"; i8 10;
2482 "e=E 11 6 choice 0 n o p"; i8 10);
2484 dnl Character encoding record.
2485 7; 20; 1; 9; "shift_jis";
2487 dnl Dictionary termination record.
2490 for variant in be le; do
2491 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2492 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2493 MRSETS /DISPLAY NAME=ALL.
2495 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2496 warning: `sys-file.sav': Multiple response set name `b' does not begin with `$'.
2498 warning: `sys-file.sav': Multiple response set name `e' does not begin with `$'.
2500 Table: Multiple Response Sets
2501 Name,Variables,Details
2505 ","Multiple category set
2511 ","Multiple dichotomy set
2513 Label source: Provided by user
2515 Category label source: Variable labels
2520 ","Multiple dichotomy set
2521 Label: third mdgroup
2522 Label source: Provided by user
2524 Category label source: Value labels of counted value
2530 AT_SETUP([missing space after C in mrsets])
2531 AT_KEYWORDS([sack synthetic system file negative multiple response])
2532 AT_DATA([sys-file.sack], [dnl
2534 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2535 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2537 dnl Numeric variable, no label or missing values.
2538 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2540 dnl Multiple response sets.
2541 7; 7; 1; COUNT("$a=Cx");
2543 dnl Character encoding record.
2544 7; 20; 1; 12; "windows-1252";
2548 for variant in be le; do
2549 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2550 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2552 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2553 warning: `sys-file.sav' near offset 0xd8: Missing space following `C' at offset 4 in MRSETS record.
2558 AT_SETUP([missing space after E in mrsets])
2559 AT_KEYWORDS([sack synthetic system file negative multiple response])
2560 AT_DATA([sys-file.sack], [dnl
2562 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2563 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2565 dnl Numeric variable, no label or missing values.
2566 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2568 dnl Multiple response sets.
2569 7; 7; 1; COUNT("$a=Ex");
2571 dnl Character encoding record.
2572 7; 20; 1; 12; "windows-1252";
2576 for variant in be le; do
2577 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2578 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2580 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2581 warning: `sys-file.sav' near offset 0xd8: Missing space following `E' at offset 4 in MRSETS record.
2586 AT_SETUP([unexpected label source in mrsets])
2587 AT_KEYWORDS([sack synthetic system file negative multiple response])
2588 AT_DATA([sys-file.sack], [dnl
2590 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2591 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2593 dnl Numeric variable, no label or missing values.
2594 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2596 dnl Multiple response sets.
2597 7; 7; 1; COUNT("$a=E 2");
2599 dnl Character encoding record.
2600 7; 20; 1; 12; "windows-1252";
2604 for variant in be le; do
2605 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2606 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2608 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2609 warning: `sys-file.sav' near offset 0xd8: Unexpected label source value following `E' at offset 7 in MRSETS record.
2611 warning: `sys-file.sav' near offset 0xd8: Expecting digit at offset 7 in MRSETS record.
2616 AT_SETUP([bad type character in mrsets])
2617 AT_KEYWORDS([sack synthetic system file negative multiple response])
2618 AT_DATA([sys-file.sack], [dnl
2620 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2621 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2623 dnl Numeric variable, no label or missing values.
2624 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2626 dnl Multiple response sets.
2627 7; 7; 1; COUNT("$a=");
2629 dnl Character encoding record.
2630 7; 20; 1; 12; "windows-1252";
2634 for variant in be le; do
2635 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2636 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2638 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2639 "warning: `sys-file.sav' near offset 0xd8: Missing `C', `D', or `E' at offset 3 in MRSETS record."
2644 AT_SETUP([bad counted string length in mrsets])
2645 AT_KEYWORDS([sack synthetic system file negative multiple response])
2646 AT_DATA([sys-file.sack], [dnl
2648 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2649 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2651 dnl Numeric variable, no label or missing values.
2652 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2654 dnl Multiple response sets.
2655 7; 7; 1; COUNT("$a=Dx");
2657 dnl Character encoding record.
2658 7; 20; 1; 12; "windows-1252";
2662 for variant in be le; do
2663 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2664 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2666 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2667 warning: `sys-file.sav' near offset 0xd8: Expecting digit at offset 4 in MRSETS record.
2672 AT_SETUP([missing space in counted string in mrsets])
2673 AT_KEYWORDS([sack synthetic system file negative multiple response])
2674 AT_DATA([sys-file.sack], [dnl
2676 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2677 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2679 dnl Numeric variable, no label or missing values.
2680 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2682 dnl Multiple response sets.
2683 7; 7; 1; COUNT("$a=D1x");
2685 dnl Character encoding record.
2686 7; 20; 1; 12; "windows-1252";
2690 for variant in be le; do
2691 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2692 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2694 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2695 warning: `sys-file.sav' near offset 0xd8: Expecting space at offset 5 in MRSETS record.
2700 AT_SETUP([counted string too long in mrsets])
2701 AT_KEYWORDS([sack synthetic system file negative multiple response])
2702 AT_DATA([sys-file.sack], [dnl
2704 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2705 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2707 dnl Numeric variable, no label or missing values.
2708 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2710 dnl Multiple response sets.
2711 7; 7; 1; COUNT("$a=D4 abc");
2713 dnl Character encoding record.
2714 7; 20; 1; 12; "windows-1252";
2718 for variant in be le; do
2719 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2720 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2722 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2723 warning: `sys-file.sav' near offset 0xd8: 4-byte string starting at offset 6 exceeds record length 9.
2728 AT_SETUP([missing space after counted string in mrsets])
2729 AT_KEYWORDS([sack synthetic system file negative multiple response])
2730 AT_DATA([sys-file.sack], [dnl
2732 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2733 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2735 dnl Numeric variable, no label or missing values.
2736 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2738 dnl Multiple response sets.
2739 7; 7; 1; COUNT("$a=D3 abcx");
2741 dnl Character encoding record.
2742 7; 20; 1; 12; "windows-1252";
2746 for variant in be le; do
2747 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2748 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2750 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2751 warning: `sys-file.sav' near offset 0xd8: Expecting space at offset 9 following 3-byte string.
2756 AT_SETUP([missing newline after variable name in mrsets])
2757 AT_KEYWORDS([sack synthetic system file negative multiple response])
2758 AT_DATA([sys-file.sack], [dnl
2760 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2761 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2763 dnl Numeric variable, no label or missing values.
2764 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2766 dnl Multiple response sets.
2767 7; 7; 1; COUNT("$a=C 0 NUM1");
2769 dnl Character encoding record.
2770 7; 20; 1; 12; "windows-1252";
2774 for variant in be le; do
2775 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2776 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2778 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2779 warning: `sys-file.sav' near offset 0xd8: Missing new-line parsing variable names at offset 13 in MRSETS record.
2781 warning: `sys-file.sav': MRSET $a has only one variable.
2786 AT_SETUP([duplicate variable name in mrsets])
2787 AT_KEYWORDS([sack synthetic system file negative multiple response])
2788 AT_DATA([sys-file.sack], [dnl
2790 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2791 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2793 dnl Numeric variable, no label or missing values.
2794 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2796 dnl Multiple response sets.
2797 7; 7; 1; COUNT("$a=C 0 NUM1 NUM1"; i8 10);
2799 dnl Character encoding record.
2800 7; 20; 1; 12; "windows-1252";
2804 for variant in be le; do
2805 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2806 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2808 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2809 warning: `sys-file.sav': MRSET $a contains duplicate variable name NUM1.
2811 warning: `sys-file.sav': MRSET $a has only one variable.
2816 AT_SETUP([mixed variable types in mrsets])
2817 AT_KEYWORDS([sack synthetic system file negative multiple response])
2818 AT_DATA([sys-file.sack], [dnl
2820 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2821 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2824 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2825 2; 8; 0; 0; 0x010800 *2; s8 "STR1";
2827 dnl Multiple response sets.
2828 7; 7; 1; COUNT("$a=C 0 NUM1 STR1"; i8 10);
2830 dnl Character encoding record.
2831 7; 20; 1; 12; "windows-1252";
2835 for variant in be le; do
2836 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2837 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2839 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2840 warning: `sys-file.sav': MRSET $a contains both string and numeric variables.
2842 warning: `sys-file.sav': MRSET $a has only one variable.
2847 AT_SETUP([missing newline after variable name in mrsets])
2848 AT_KEYWORDS([sack synthetic system file negative multiple response])
2849 AT_DATA([sys-file.sack], [dnl
2851 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2852 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2854 dnl Numeric variable, no label or missing values.
2855 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2857 dnl Multiple response sets.
2858 7; 7; 1; COUNT("$a=C 0 NUM1"; i8 10);
2860 dnl Character encoding record.
2861 7; 20; 1; 12; "windows-1252";
2865 for variant in be le; do
2866 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2867 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2869 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2870 warning: `sys-file.sav': MRSET $a has only one variable.
2875 AT_SETUP([zero or one variable in mrset])
2876 AT_KEYWORDS([sack synthetic system file negative multiple response])
2877 AT_DATA([sys-file.sack], [dnl
2879 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2880 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2882 dnl Numeric variable, no label or missing values.
2883 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2885 dnl Multiple response sets.
2886 7; 7; 1; COUNT("$a=C 0 NUM1"; i8 10; "$b=C 0 "; i8 10);
2888 dnl Character encoding record.
2889 7; 20; 1; 12; "windows-1252";
2893 for variant in be le; do
2894 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2895 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2897 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2898 warning: `sys-file.sav': MRSET $a has only one variable.
2900 warning: `sys-file.sav': MRSET $b has no variables.
2905 AT_SETUP([wrong display parameter size])
2906 AT_KEYWORDS([sack synthetic system file negative])
2907 AT_DATA([sys-file.sack], [dnl
2909 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2910 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2912 dnl Numeric variable, no label or missing values.
2913 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2915 dnl Display parameters record.
2916 7; 11; >>8<<; 2; 1.0; 1.0;
2918 dnl Character encoding record.
2919 7; 20; 1; 12; "windows-1252";
2921 dnl End of dictionary.
2924 for variant in be le; do
2925 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2926 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2928 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2929 "warning: `sys-file.sav' near offset 0xd8: Record type 7, subtype 11 has bad size 8 (expected 4)."
2934 AT_SETUP([wrong display parameter count])
2935 AT_KEYWORDS([sack synthetic system file negative])
2936 AT_DATA([sys-file.sack], [dnl
2938 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2939 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2941 dnl Numeric variable, no label or missing values.
2942 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2944 dnl Display parameters record.
2945 7; 11; 4; >>4<<; 1; 1; 2; 2;
2947 dnl Character encoding record.
2948 7; 20; 1; 12; "windows-1252";
2950 dnl End of dictionary.
2953 for variant in be le; do
2954 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2955 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2957 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2958 warning: `sys-file.sav' near offset 0xd8: Extension 11 has bad count 4 (for 1 variables).
2963 AT_SETUP([wrong display measurement level])
2964 AT_KEYWORDS([sack synthetic system file negative])
2965 AT_DATA([sys-file.sack], [dnl
2967 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2968 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2970 dnl Numeric variable, no label or missing values.
2971 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2973 dnl Display parameters record.
2974 7; 11; 4; 2; >>4<<; 0;
2976 dnl Character encoding record.
2977 7; 20; 1; 12; "windows-1252";
2979 dnl End of dictionary.
2982 for variant in be le; do
2983 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2984 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2986 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2987 warning: `sys-file.sav' near offset 0xd8: Invalid variable display parameters for variable 0 (NUM1). Default parameters substituted.
2992 AT_SETUP([wrong display alignment])
2993 AT_KEYWORDS([sack synthetic system file negative])
2994 AT_DATA([sys-file.sack], [dnl
2996 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2997 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2999 dnl Numeric variable, no label or missing values.
3000 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3002 dnl Display parameters record.
3003 7; 11; 4; 2; 1; >>-1<<;
3005 dnl Character encoding record.
3006 7; 20; 1; 12; "windows-1252";
3008 dnl End of dictionary.
3011 for variant in be le; do
3012 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3013 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3015 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
3016 warning: `sys-file.sav' near offset 0xd8: Invalid variable display parameters for variable 0 (NUM1). Default parameters substituted.
3021 AT_SETUP([bad variable name in variable/value pair])
3022 AT_KEYWORDS([sack synthetic system file negative])
3023 AT_DATA([sys-file.sack], [dnl
3025 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3026 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3028 dnl Numeric variables.
3029 2; 0; 0; 0; 0x050800 *2; s8 "LONGVARI";
3031 dnl Long variable names.
3032 7; 13; 1; COUNT (>>"xyzzy"<<);
3034 dnl Character encoding record.
3035 7; 20; 1; 12; "windows-1252";
3037 dnl Dictionary termination record.
3040 for variant in be le; do
3041 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3042 AT_DATA([sys-file.sps], [dnl
3043 GET FILE='sys-file.sav'.
3045 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
3046 warning: `sys-file.sav' near offset 0xde: Dictionary record refers to unknown variable xyzzy.
3051 AT_SETUP([duplicate long variable name])
3052 AT_KEYWORDS([sack synthetic system file negative])
3053 AT_DATA([sys-file.sack], [dnl
3055 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3056 2; 4; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3058 dnl Numeric variables.
3059 2; 0; 0; 0; 0x050800 *2; s8 "LONGVARI";
3060 2; 0; 0; 0; 0x050800 *2; s8 "LONGVA_A";
3061 2; 0; 0; 0; 0x050800 *2; s8 "LONGVA_B";
3062 2; 0; 0; 0; 0x050800 *2; s8 "LONGVA_C";
3064 dnl Long variable names.
3066 "LONGVARI=_Invalid"; i8 9;
3067 "LONGVA_A=LongVariableName"; i8 9;
3068 "LONGVA_B=LONGVARIABLENAME"; i8 9;
3071 dnl Character encoding record.
3072 7; 20; 1; 12; "windows-1252";
3074 dnl Dictionary termination record.
3077 for variant in be le; do
3078 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3079 AT_DATA([sys-file.sps], [dnl
3080 GET FILE='sys-file.sav'.
3082 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
3083 warning: `sys-file.sav' near offset 0x138: Long variable mapping from LONGVARI to invalid variable name `_Invalid'.
3085 warning: `sys-file.sav' near offset 0x138: Duplicate long variable name `LONGVARIABLENAME'.
3090 AT_SETUP([bad very long string length])
3091 AT_KEYWORDS([sack synthetic system file negative])
3092 AT_DATA([sys-file.sack], [dnl
3094 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3095 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3097 dnl Numeric variable.
3098 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3100 dnl Very long string map.
3102 "NUM1=00000"; i8 0; i8 9;
3103 "NUM1=00255"; i8 0; i8 9;
3104 "NUM1=00256"; i8 0; i8 9;
3107 dnl Character encoding record.
3108 7; 20; 1; 12; "windows-1252";
3110 dnl Dictionary termination record.
3113 for variant in be le; do
3114 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3115 AT_DATA([sys-file.sps], [dnl
3116 GET FILE='sys-file.sav'.
3118 AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
3119 warning: `sys-file.sav' near offset 0xd8: NUM1 listed as string of invalid length 00000 in very long string record.
3121 "warning: `sys-file.sav' near offset 0xd8: NUM1 listed in very long string record with width 00255, which requires only one segment."
3123 error: `sys-file.sav' near offset 0xd8: Very long string NUM1 overflows dictionary.
3128 AT_SETUP([bad very long string segment width])
3129 AT_KEYWORDS([sack synthetic system file negative])
3130 AT_DATA([sys-file.sack], [dnl
3132 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3133 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3136 2; 255; 0; 0; 0x01ff00 *2; s8 "STR1";
3137 (2; -1; 0; 0; 0; 0; s8 "") * 31;
3138 2; >>9<<; 0; 0; 0x010900 *2; s8 "STR1_A";
3139 >>2; -1; 0; 0; 0; 0; s8 "";<<
3141 dnl Very long string map.
3143 "STR1=00256"; i8 0; i8 9;
3146 dnl Character encoding record.
3147 7; 20; 1; 12; "windows-1252";
3149 dnl Dictionary termination record.
3152 for variant in be le; do
3153 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3154 AT_DATA([sys-file.sps], [dnl
3155 GET FILE='sys-file.sav'.
3157 AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
3158 error: `sys-file.sav' near offset 0x4f8: Very long string with width 256 has segment 1 of width 9 (expected 4).
3163 AT_SETUP([too many value labels])
3164 AT_KEYWORDS([sack synthetic system file negative])
3165 AT_DATA([sys-file.sack], [dnl
3167 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3168 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3170 dnl Numeric variable.
3171 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3174 for variant in be le; do
3175 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3176 AT_DATA([sys-file.sps], [dnl
3177 GET FILE='sys-file.sav'.
3179 AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
3180 error: `sys-file.sav' near offset 0xd4: Invalid number of labels 2147483647.
3185 AT_SETUP([missing type 4 record])
3186 AT_KEYWORDS([sack synthetic system file negative])
3187 AT_DATA([sys-file.sack], [dnl
3189 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3190 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3192 dnl Numeric variable.
3193 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3195 dnl Value label with missing type 4 record.
3196 3; 1; 1.0; i8 3; s7 "one";
3198 dnl Character encoding record.
3199 7; 20; 1; 12; "windows-1252";
3201 dnl End of dictionary.
3204 for variant in be le; do
3205 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3206 AT_DATA([sys-file.sps], [dnl
3207 GET FILE='sys-file.sav'.
3209 AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
3210 error: `sys-file.sav' near offset 0xe8: Variable index record (type 4) does not immediately follow value label record (type 3) as it should.
3215 AT_SETUP([value label with no associated variables])
3216 AT_KEYWORDS([sack synthetic system file negative])
3217 AT_DATA([sys-file.sack], [dnl
3219 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3220 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3222 dnl Numeric variable.
3223 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3225 dnl Value label with no variables.
3226 3; 1; 1.0; i8 3; s7 "one"; 4; >>0<<;
3228 for variant in be le; do
3229 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3230 AT_DATA([sys-file.sps], [dnl
3231 GET FILE='sys-file.sav'.
3233 AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
3234 error: `sys-file.sav' near offset 0xec: Number of variables associated with a value label (0) is not between 1 and the number of variables (1).
3239 AT_SETUP([type 4 record names long string variable])
3240 AT_KEYWORDS([sack synthetic system file negative])
3241 AT_DATA([sys-file.sack], [dnl
3243 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3244 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3246 dnl Long string variable.
3247 2; 9; 0; 0; 0x010900 *2; s8 "STR1";
3248 2; -1; 0; 0; 0; 0; s8 "";
3250 dnl Value label that names long string variable.
3251 3; 1; s8 "xyzzy"; i8 3; s7 "one"; 4; 1; >>1<<;
3253 dnl Character encoding record.
3254 7; 20; 1; 12; "windows-1252";
3256 dnl End of dictionary.
3259 for variant in be le; do
3260 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3261 AT_DATA([sys-file.sps], [dnl
3262 GET FILE='sys-file.sav'.
3264 AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
3265 error: `sys-file.sav' near offset 0xf4: Value labels may not be added to long string variables (e.g. STR1) using records types 3 and 4.
3270 AT_SETUP([variables for value label must all be same type])
3271 AT_KEYWORDS([sack synthetic system file negative])
3272 AT_DATA([sys-file.sack], [dnl
3274 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3275 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3278 2; 6; 0; 0; 0x010600 *2; s8 "STR1";
3279 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3281 dnl Value label that names numeric and string variables.
3282 3; 1; s8 "xyzzy"; i8 3; s7 "one"; 4; 2; >>1; 2<<;
3284 dnl Character encoding record.
3285 7; 20; 1; 12; "windows-1252";
3287 dnl End of dictionary.
3290 for variant in be le; do
3291 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3292 AT_DATA([sys-file.sps], [dnl
3293 GET FILE='sys-file.sav'.
3295 AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
3296 "error: `sys-file.sav' near offset 0xf4: Variables associated with value label are not all of identical type. Variable STR1 is string, but variable NUM1 is numeric."
3301 AT_SETUP([duplicate value labels type])
3302 AT_KEYWORDS([sack synthetic system file negative])
3303 AT_DATA([sys-file.sack], [dnl
3305 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3306 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3309 2; 6; 0; 0; 0x010600 *2; s8 "STR1";
3310 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3312 dnl Duplicate value labels.
3313 3; 1; s8 "xyzzy"; i8 3; s7 "one"; 4; 2; >>1; 1<<;
3314 3; 1; 1.0; i8 3; s7 "one"; 4; 2; >>2; 2<<;
3316 dnl Character encoding record.
3317 7; 20; 1; 12; "windows-1252";
3319 dnl End of dictionary.
3322 for variant in be le; do
3323 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3324 AT_DATA([sys-file.sps], [dnl
3325 GET FILE='sys-file.sav'.
3327 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
3328 warning: `sys-file.sav' near offset 0xf4: Duplicate value label for `xyzzy ' on STR1.
3330 warning: `sys-file.sav' near offset 0x11c: Duplicate value label for 1 on NUM1.
3335 AT_SETUP([missing attribute value])
3336 AT_KEYWORDS([sack synthetic system file negative])
3337 AT_DATA([sys-file.sack], [dnl
3339 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3340 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3343 2; 0; 0; 0; 0x050800 *2; s8 "FIRSTVAR";
3345 dnl Data file attributes record.
3350 dnl Variable attributes record.
3356 dnl Character encoding record.
3357 7; 20; 1; 12; "windows-1252";
3359 dnl Dictionary termination record.
3362 for variant in be le; do
3363 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3364 AT_DATA([sys-file.sps], [dnl
3365 GET FILE='sys-file.sav'.
3367 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
3368 warning: `sys-file.sav' near offset 0xde: Error parsing attribute value Attr1[[1]].
3370 warning: `sys-file.sav' near offset 0x101: Error parsing attribute value fred[[2]].
3375 AT_SETUP([unquoted attribute value])
3376 AT_KEYWORDS([sack synthetic system file negative])
3377 AT_DATA([sys-file.sack], [dnl
3379 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3380 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3383 2; 0; 0; 0; 0x050800 *2; s8 "FIRSTVAR";
3385 dnl Data file attributes record.
3387 "Attr1(value"; i8 10;
3391 dnl Variable attributes record.
3394 "fred(23"; i8 10; ")"
3397 dnl Character encoding record.
3398 7; 20; 1; 12; "windows-1252";
3400 dnl Dictionary termination record.
3403 for variant in be le; do
3404 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3405 AT_DATA([sys-file.sps], [dnl
3406 GET FILE='sys-file.sav'.
3408 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
3409 warning: `sys-file.sav' near offset 0xe4: Attribute value Attr1[[1]] is not quoted: value.
3411 warning: `sys-file.sav' near offset 0x106: Attribute value fred[[1]] is not quoted: 23.
3416 AT_SETUP([bad variable name in long string value label])
3417 AT_KEYWORDS([sack synthetic system file negative])
3418 AT_DATA([sys-file.sack], [dnl
3420 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3421 2; 3; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3424 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3425 2; 14; 0; 0; 0x010e00 *2; s8 "STR14";
3426 2; -1; 0; 0; 0; 0; s8 "";
3429 dnl No variable named STR9.
3430 COUNT(>>"STR9"<<); 9;
3431 1; COUNT("RSTUVWXYZ"); COUNT("value label for `RSTUVWXYZ'");
3433 dnl NUM1 is numeric.
3434 COUNT(>>"NUM1"<<); 0;
3435 1; COUNT("xyz"); COUNT("value label for 1.0");
3437 dnl Wrong width for STR14.
3438 COUNT("STR14"); >>9<<;
3439 1; COUNT("RSTUVWXYZ"); COUNT("value label for `RSTUVWXYZ'");
3441 dnl Wrong width for value.
3443 1; COUNT(>>"RSTUVWXYZ"<<); COUNT("value label for `RSTUVWXYZ'");
3445 dnl Duplicate value label.
3446 COUNT("STR14"); 14; 2;
3447 COUNT("abcdefghijklmn"); COUNT("value label for `abcdefghijklmn'");
3448 >>COUNT("abcdefghijklmn"); COUNT("another value label for `abcdefghijklmn'")<<;
3451 dnl Character encoding record.
3452 7; 20; 1; 12; "windows-1252";
3454 dnl Dictionary termination record.
3457 for variant in be le; do
3458 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3459 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3461 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
3462 warning: `sys-file.sav' near offset 0x128: Ignoring long string value label record for unknown variable STR9.
3464 warning: `sys-file.sav' near offset 0x164: Ignoring long string value label record for numeric variable NUM1.
3466 warning: `sys-file.sav' near offset 0x193: Ignoring long string value label record for variable STR14 because the record's width (9) does not match the variable's width (14).
3468 "warning: `sys-file.sav' near offset 0x1d4: Ignoring long string value label 0 for variable str14, with width 14, that has bad value width 9."
3470 warning: `sys-file.sav' near offset 0x259: Duplicate value label for `abcdefghijklmn' on str14.
3475 AT_SETUP([fewer data records than indicated by file header])
3476 AT_KEYWORDS([sack synthetic system file negative])
3477 AT_DATA([sys-file.sack], [dnl
3479 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3480 2; 2; 0; 0; >>5<<; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3482 dnl Numeric variables.
3483 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3484 2; 0; 0; 0; 0x050800 *2; s8 "NUM2";
3486 dnl Character encoding record.
3487 7; 20; 1; 12; "windows-1252";
3495 dnl Missing record here.
3497 for variant in be le; do
3498 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3499 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3502 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
3503 [error: Error reading case from file `sys-file.sav'.
3515 AT_SETUP([partial data record between variables])
3516 AT_KEYWORDS([sack synthetic system file negative])
3517 AT_DATA([sys-file.sack], [dnl
3519 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3520 2; 2; 0; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3522 dnl Numeric variables.
3523 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3524 2; 0; 0; 0; 0x050800 *2; s8 "NUM2";
3526 dnl Character encoding record.
3527 7; 20; 1; 12; "windows-1252";
3534 for variant in be le; do
3535 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3536 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3539 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
3540 [error: `sys-file.sav' near offset 0x12c: File ends in partial case.
3549 AT_SETUP([partial data record within long string])
3550 AT_KEYWORDS([sack synthetic system file negative])
3551 AT_DATA([sys-file.sack], [dnl
3553 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3554 2; 2; 0; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3556 dnl Numeric variables.
3557 2; 14; 0; 0; 0x010e00 *2; s8 "STR14";
3558 2; -1; 0; 0; 0; 0; s8 "";
3560 dnl Character encoding record.
3561 7; 20; 1; 12; "windows-1252";
3565 s14 "one data item";
3568 for variant in be le; do
3569 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3570 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3573 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
3574 [error: `sys-file.sav' near offset 0x12a: Unexpected end of file.
3583 AT_SETUP([partial compressed data record])
3584 AT_KEYWORDS([sack synthetic system file positive])
3585 AT_DATA([sys-file.sack], [dnl
3587 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3589 6; dnl Nominal case size
3592 -1; dnl Unspecified number of cases.
3594 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
3597 dnl Numeric variables.
3598 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3599 2; 0; 0; 0; 0x050800 *2; s8 "NUM2";
3601 dnl String variable.
3602 2; 4; 0; 0; 0x010400 *2; s8 "STR4";
3603 2; 8; 0; 0; 0x010800 *2; s8 "STR8";
3604 2; 15; 0; 0; 0x010f00 *2; s8 "STR15";
3605 2; -1; 0; 0; 0; 0; s8 "";
3607 dnl Character encoding record.
3608 7; 20; 1; 12; "windows-1252";
3610 dnl Dictionary termination record.
3613 dnl Compressed data.
3614 i8 1 100 254 253 254 253; i8 255 251; "abcdefgh"; s8 "0123";
3616 for variant in be le; do
3617 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3618 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3621 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
3622 [error: `sys-file.sav' near offset 0x1ac: File ends in partial case.
3625 num1,num2,str4,str8,str15
3626 -99,0,,abcdefgh,0123 @&t@
3631 AT_SETUP([zcompressed data - bad zheader_ofs])
3632 AT_KEYWORDS([sack synthetic system file negative zlib])
3633 zcompressed_sack | sed 's/.*zheader_ofs.*/>>i64 0<<;/' > sys-file.sack
3634 for variant in be le; do
3635 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3636 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3638 AT_CHECK([pspp -o pspp.csv sys-file.sps], [1], [error: `sys-file.sav' near offset 0x194: Wrong ZLIB data header offset 0 (expected 0x194).
3643 AT_SETUP([zcompressed data - bad ztrailer_ofs])
3644 AT_KEYWORDS([sack synthetic system file negative zlib])
3645 zcompressed_sack | sed 's/.*ztrailer_ofs.*/>>i64 0<<;/' > sys-file.sack
3646 for variant in be le; do
3647 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3648 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3650 AT_CHECK([pspp -o pspp.csv sys-file.sps], [1], [error: `sys-file.sav' near offset 0x194: Impossible ZLIB trailer offset 0x0.
3655 # ztrailer_len must be a multiple of 24 and at least 48,
3656 # so a value of 12 is impossible.
3657 AT_SETUP([zcompressed data - invalid ztrailer_len])
3658 AT_KEYWORDS([sack synthetic system file negative zlib])
3659 zcompressed_sack | sed 's/.*ztrailer_len.*/>>i64 12<<;/' > sys-file.sack
3660 for variant in be le; do
3661 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3662 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3664 AT_CHECK([pspp -o pspp.csv sys-file.sps], [1], [error: `sys-file.sav' near offset 0x194: Invalid ZLIB trailer length 12.
3669 # ztrailer_ofs + ztrailer_len must be the file size.
3670 AT_SETUP([zcompressed data - wrong ztrailer_len])
3671 AT_KEYWORDS([sack synthetic system file negative zlib])
3672 zcompressed_sack | sed 's/.*ztrailer_len.*/>>i64 72<<;/' > sys-file.sack
3673 for variant in be le; do
3674 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3675 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3677 AT_CHECK([pspp -o pspp.csv sys-file.sps], [1], [warning: `sys-file.sav' near offset 0x1ac: End of ZLIB trailer (0x24d) is not file size (0x235).
3678 error: `sys-file.sav' near offset 0x21d: 72-byte ZLIB trailer specifies 1 data blocks (expected 2).
3683 AT_SETUP([zcompressed data - wrong ztrailer_bias])
3684 AT_KEYWORDS([sack synthetic system file negative zlib])
3685 zcompressed_sack | sed 's/.*ztrailer_bias.*/>>i64 0<<;/' > sys-file.sack
3686 for variant in be le; do
3687 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3688 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3690 AT_CHECK([pspp -o pspp.csv sys-file.sps], [1], [error: `sys-file.sav' near offset 0x20d: ZLIB trailer bias (0) differs from file header bias (100.00).
3695 AT_SETUP([zcompressed data - wrong ztrailer_zero])
3696 AT_KEYWORDS([sack synthetic system file negative zlib])
3697 zcompressed_sack | sed 's/.*ztrailer_zero.*/>>i64 100<<;/' > sys-file.sack
3698 for variant in be le; do
3699 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3700 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3702 AT_CHECK([pspp -o pspp.csv sys-file.sps], [0], [warning: `sys-file.sav' near offset 0x215: ZLIB trailer "zero" field has nonzero value 100.
3707 AT_SETUP([zcompressed data - wrong block_size])
3708 AT_KEYWORDS([sack synthetic system file negative zlib])
3709 zcompressed_sack | sed 's/.*block_size.*/>>0x1000<<;/' > sys-file.sack
3710 for variant in be le; do
3711 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3712 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3714 AT_CHECK([pspp -o pspp.csv sys-file.sps], [0], [warning: `sys-file.sav' near offset 0x219: ZLIB trailer specifies unexpected 4096-byte block size.
3719 AT_SETUP([zcompressed data - wrong n_blocks])
3720 AT_KEYWORDS([sack synthetic system file negative zlib])
3721 zcompressed_sack | sed 's/.*n_blocks.*/>>2<<;/' > sys-file.sack
3722 for variant in be le; do
3723 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3724 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3726 AT_CHECK([pspp -o pspp.csv sys-file.sps], [1], [error: `sys-file.sav' near offset 0x21d: 48-byte ZLIB trailer specifies 2 data blocks (expected 1).
3731 AT_SETUP([zcompressed data - wrong uncompressed_ofs])
3732 AT_KEYWORDS([sack synthetic system file negative zlib])
3733 zcompressed_sack | sed 's/.*uncompressed_ofs.*/i64 >>0x177<<;/' > sys-file.sack
3734 for variant in be le; do
3735 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3736 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3738 AT_CHECK([pspp -o pspp.csv sys-file.sps], [1], [error: `sys-file.sav' near offset 0x21d: ZLIB block descriptor 0 reported uncompressed data offset 0x177, when 0x194 was expected.
3743 AT_SETUP([zcompressed data - wrong compressed_ofs])
3744 AT_KEYWORDS([sack synthetic system file negative zlib])
3745 zcompressed_sack | sed 's/.*@%:@ compressed_ofs.*/i64 >>0x191<<;/' > sys-file.sack
3746 for variant in be le; do
3747 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3748 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3750 AT_CHECK([pspp -o pspp.csv sys-file.sps], [1], [error: `sys-file.sav' near offset 0x21d: ZLIB block descriptor 0 reported compressed data offset 0x191, when 0x1ac was expected.
3755 AT_SETUP([zcompressed data - compressed sizes don't add up])
3756 AT_KEYWORDS([sack synthetic system file negative zlib])
3757 AT_DATA([sys-file.sack], [dnl
3759 "$FL3"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3761 6; dnl Nominal case size
3762 2; dnl zlib compressed
3764 -1; dnl Unspecified number of cases.
3766 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
3769 dnl Numeric variables.
3770 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3771 2; 0; 0; 0; 0x050800 *2; s8 "NUM2";
3773 dnl String variable.
3774 2; 4; 0; 0; 0x010400 *2; s8 "STR4";
3775 2; 8; 0; 0; 0x010800 *2; s8 "STR8";
3776 2; 15; 0; 0; 0x010f00 *2; s8 "STR15";
3777 2; -1; 0; 0; 0; 0; s8 "";
3779 dnl Character encoding record.
3780 7; 20; 1; 12; "windows-1252";
3782 dnl Dictionary termination record.
3785 dnl ZLIB data header.
3786 i64 0x194; # zheader_ofs
3787 i64 0x1ac; # ztrailer_ofs
3788 i64 72; # ztrailer_len
3790 dnl This is where the ZLIB data blocks would go, but we don't need any to
3791 dnl provoke this message so we omit them.
3793 dnl ZLIB data trailer fixed header:
3794 i64 -100; # ztrailer_bias
3795 i64 0; # ztrailer_zero
3796 0x3ff000; # block_size
3799 dnl ZLIB block descriptor 1:
3800 i64 0x194; # uncompressed_ofs
3801 i64 0x1ac; # compressed_ofs
3802 0x100000; # uncompressed_size
3803 0x12345; # compressed_size
3805 dnl ZLIB block descriptor 2:
3806 i64 0x100194; # uncompressed_ofs
3807 i64 0x12421; # compressed_ofs
3808 0x100000; # uncompressed_size
3809 0x12345; # compressed_size
3811 for variant in be le; do
3812 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3813 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3815 AT_CHECK([pspp -o pspp.csv sys-file.sps], [1], [warning: `sys-file.sav' near offset 0x1c4: ZLIB block descriptor 0 reported block size 0x100000, when 0x3ff000 was expected.
3816 error: `sys-file.sav' near offset 0x1dc: ZLIB block descriptor 1 reported compressed data offset 0x12421, when 0x124f1 was expected.
3821 AT_SETUP([zcompressed data - uncompressed_size > block_size])
3822 AT_KEYWORDS([sack synthetic system file negative zlib])
3823 zcompressed_sack | sed 's/.*uncompressed_size.*/>>0x400000<<;/' > sys-file.sack
3824 for variant in be le; do
3825 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3826 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3828 AT_CHECK([pspp -o pspp.csv sys-file.sps], [0], [warning: `sys-file.sav' near offset 0x21d: ZLIB block descriptor 0 reported block size 0x400000, when at most 0x3ff000 was expected.
3833 AT_SETUP([zcompressed data - compression expands data too much])
3834 AT_KEYWORDS([sack synthetic system file negative zlib])
3835 zcompressed_sack | sed 's/.*uncompressed_size.*/>>50<<;/
3836 s/.*@%:@ compressed_size.*/>>100<<;/' > sys-file.sack
3837 for variant in be le; do
3838 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3839 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3841 AT_CHECK([pspp -o pspp.csv sys-file.sps], [1], [error: `sys-file.sav' near offset 0x21d: ZLIB block descriptor 0 reports compressed size 100 and uncompressed size 50.
3846 AT_SETUP([zcompressed data - compressed sizes don't add up])
3847 AT_KEYWORDS([sack synthetic system file negative zlib])
3848 zcompressed_sack | sed 's/.*@%:@ compressed_size.*/>>88<<;/' > sys-file.sack
3849 for variant in be le; do
3850 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3851 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3853 AT_CHECK([pspp -o pspp.csv sys-file.sps], [1], [error: `sys-file.sav' near offset 0x235: ZLIB trailer is at offset 0x205 but 0x204 would be expected from block descriptors.