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 3; 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";
1110 2; 0; 0; 0; 0x050800 *2; s8 "THIRDVAR";
1112 dnl Machine integer info record.
1113 7; 3; 4; 8; 1; 2; 3; -1; 1; 1; ENDIAN; 1252;
1115 dnl Long variable names.
1117 "FIRSTVAR=FirstVariable"; i8 9;
1118 "SECONDVA=S"; i8 233; "condVariable"; i8 9;
1119 "THIRDVAR=ThirdVariable"; i8 9
1122 dnl Data file attributes record.
1124 "Attr1('Value1'"; i8 10; "''d"; i8 233; "claration''"; i8 10; ")";
1125 "S"; i8 233; "condAttr('123'"; i8 10; "'456'"; i8 10; ")";
1128 dnl Variable attributes record.
1131 "ad"; i8 232; "le('23'"; i8 10; "'34'"; i8 10; ")";
1132 "bert('123'"; i8 10; ")";
1133 "$@Role('1'"; i8 10; ")";
1134 "/S"; i8 233; "condVariable:";
1135 "xyzzy('quux'"; i8 10; ")";
1138 dnl Another variable attributes record.
1139 dnl Only system files written by "Stata 14.1/-savespss- 1.77 by S.Radyakin"
1140 dnl include multiple variable attributes records.
1141 7; 18; 1; COUNT ("ThirdVariable:fizz('buzz'"; i8 10; ")";);
1143 dnl Character encoding record.
1144 7; 20; 1; 12; "windows-1252";
1146 dnl Dictionary termination record.
1149 for variant in be le; do
1150 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1151 AT_DATA([sys-file.sps], [dnl
1152 GET FILE='sys-file.sav'.
1153 DISPLAY @ATTRIBUTES.
1155 AT_CHECK([pspp -o pspp.csv sys-file.sps])
1156 AT_CHECK([cat pspp.csv], [0],
1157 [[Variable,Description
1158 FirstVariable,"Attribute,Value
1163 SécondVariable,"Attribute,Value
1165 ThirdVariable,"Attribute,Value
1168 Table: Custom data file attributes.
1171 Attr1[2],'déclaration'
1175 AT_DATA([sys-file.sps], [dnl
1176 GET FILE='sys-file.sav'.
1179 AT_CHECK([pspp -o pspp.csv sys-file.sps])
1180 AT_CHECK([cat pspp.csv], [0],
1181 [[Variable,Description,Position
1182 FirstVariable,"Format: F8.0
1189 SécondVariable,"Format: F8.0
1194 ThirdVariable,"Format: F8.0
1200 Table: Custom data file attributes.
1203 Attr1[2],'déclaration'
1210 AT_SETUP([variable roles])
1211 AT_KEYWORDS([sack synthetic system file positive])
1212 AT_DATA([sys-file.sack], [dnl
1214 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1216 7; dnl Nominal case size
1217 0; dnl Not compressed
1221 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
1225 2; 0; 0; 0; 0x050800 *2; s8 "I";
1226 2; 0; 0; 0; 0x050800 *2; s8 "O";
1227 2; 0; 0; 0; 0x050800 *2; s8 "B";
1228 2; 0; 0; 0; 0x050800 *2; s8 "N";
1229 2; 0; 0; 0; 0x050800 *2; s8 "P";
1230 2; 0; 0; 0; 0x050800 *2; s8 "S";
1231 2; 0; 0; 0; 0x050800 *2; s8 "X";
1233 dnl Machine integer info record.
1234 7; 3; 4; 8; 1; 2; 3; -1; 1; 1; ENDIAN; 1252;
1236 dnl Variable attributes record.
1238 "I:$@Role('0'"; i8 10; ")";
1239 "/O:$@Role('1'"; i8 10; ")";
1240 "/B:$@Role('2'"; i8 10; ")";
1241 "/N:$@Role('3'"; i8 10; ")";
1242 "/P:$@Role('4'"; i8 10; ")";
1243 "/S:$@Role('5'"; i8 10; ")";
1244 "/X:$@Role('6'"; i8 10; ")";
1247 dnl Character encoding record.
1248 7; 20; 1; 12; "windows-1252";
1250 dnl Dictionary termination record.
1253 for variant in be le; do
1254 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1255 AT_DATA([sys-file.sps], [dnl
1256 GET FILE='sys-file.sav'.
1259 AT_CHECK([pspp -o pspp.csv sys-file.sps], [0], [dnl
1260 warning: `sys-file.sav': Invalid role for variable x.
1262 AT_CHECK([cat pspp.csv], [0], [dnl
1263 warning: `sys-file.sav': Invalid role for variable x.
1265 Variable,Description,Position
1284 AT_SETUP([compressed data])
1285 AT_KEYWORDS([sack synthetic system file positive])
1286 AT_DATA([sys-file.sack], [dnl
1288 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1290 6; dnl Nominal case size
1291 1; dnl Simple compression
1293 -1; dnl Unspecified number of cases.
1295 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
1298 dnl Numeric variables.
1299 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1300 2; 0; 0; 0; 0x050800 *2; s8 "NUM2";
1302 dnl String variable.
1303 2; 4; 0; 0; 0x010400 *2; s8 "STR4";
1304 2; 8; 0; 0; 0x010800 *2; s8 "STR8";
1305 2; 15; 0; 0; 0x010f00 *2; s8 "STR15";
1306 2; -1; 0; 0; 0; 0; s8 "";
1308 dnl Character encoding record.
1309 7; 20; 1; 12; "windows-1252";
1311 dnl Dictionary termination record.
1314 dnl Compressed data.
1315 i8 1 100 254 253 254 253; i8 255 251; "abcdefgh"; s8 "0123";
1316 i8 253 253 253 254; i8 101 102 253 253; s8 "jklm"; s8 "nopqrstu";
1317 s8 "vwxyzABC"; s8 "DEFG"; s8 "HIJKLMNO";
1318 i8 254 253 252 0 0 0 0 0; s8 "PQRSTUVW";
1321 for variant in be le; do
1322 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1323 AT_DATA([sys-file.sps], [dnl
1324 GET FILE='sys-file.sav'.
1328 AT_CHECK([pspp -o pspp.csv sys-file.sps])
1329 AT_CHECK([cat pspp.csv], [0], [dnl
1330 Variable,Description,Position
1338 num1,num2,str4,str8,str15
1339 -99,0,,abcdefgh,0123 @&t@
1340 .,151,jklm,nopqrstu,vwxyzABC @&t@
1341 1,2,DEFG,HIJKLMNO,PQRSTUV
1346 AT_SETUP([compressed data, zero bias])
1347 AT_KEYWORDS([sack synthetic system file positive])
1348 AT_DATA([sys-file.sack], [dnl
1350 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1352 6; dnl Nominal case size
1353 1; dnl Simple compression.
1355 -1; dnl Unspecified number of cases.
1357 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
1360 dnl Numeric variables.
1361 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1362 2; 0; 0; 0; 0x050800 *2; s8 "NUM2";
1364 dnl String variable.
1365 2; 4; 0; 0; 0x010400 *2; s8 "STR4";
1366 2; 8; 0; 0; 0x010800 *2; s8 "STR8";
1367 2; 15; 0; 0; 0x010f00 *2; s8 "STR15";
1368 2; -1; 0; 0; 0; 0; s8 "";
1370 dnl Character encoding record.
1371 7; 20; 1; 12; "windows-1252";
1373 dnl Dictionary termination record.
1376 dnl Compressed data.
1377 i8 1 100 254 253 254 253; i8 255 251; "abcdefgh"; s8 "0123";
1378 i8 253 253 253 254; i8 101 102 253 253; s8 "jklm"; s8 "nopqrstu";
1379 s8 "vwxyzABC"; s8 "DEFG"; s8 "HIJKLMNO";
1380 i8 254 253 252 0 0 0 0 0; s8 "PQRSTUVW";
1383 for variant in be le; do
1384 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1385 AT_DATA([sys-file.sps], [dnl
1386 GET FILE='sys-file.sav'.
1390 AT_CHECK([pspp -o pspp.csv sys-file.sps], [0])
1391 AT_CHECK([cat pspp.csv], [0], [dnl
1392 Variable,Description,Position
1400 num1,num2,str4,str8,str15
1401 1,100,,abcdefgh,0123 @&t@
1402 .,251,jklm,nopqrstu,vwxyzABC @&t@
1403 101,102,DEFG,HIJKLMNO,PQRSTUV
1408 AT_SETUP([compressed data, other bias])
1409 AT_KEYWORDS([sack synthetic system file positive])
1410 AT_DATA([sys-file.sack], [dnl
1412 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1414 6; dnl Nominal case size
1415 1; dnl Simple compression.
1417 -1; dnl Unspecified number of cases.
1419 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
1422 dnl Numeric variables.
1423 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1424 2; 0; 0; 0; 0x050800 *2; s8 "NUM2";
1426 dnl String variable.
1427 2; 4; 0; 0; 0x010400 *2; s8 "STR4";
1428 2; 8; 0; 0; 0x010800 *2; s8 "STR8";
1429 2; 15; 0; 0; 0x010f00 *2; s8 "STR15";
1430 2; -1; 0; 0; 0; 0; s8 "";
1432 dnl Character encoding record.
1433 7; 20; 1; 12; "windows-1252";
1435 dnl Dictionary termination record.
1438 dnl Compressed data.
1439 i8 1 100 254 253 254 253; i8 255 251; "abcdefgh"; s8 "0123";
1440 i8 253 253 253 254; i8 101 102 253 253; s8 "jklm"; s8 "nopqrstu";
1441 s8 "vwxyzABC"; s8 "DEFG"; s8 "HIJKLMNO";
1442 i8 254 253 252 0 0 0 0 0; s8 "PQRSTUVW";
1445 for variant in be le; do
1446 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1447 AT_DATA([sys-file.sps], [dnl
1448 GET FILE='sys-file.sav'.
1452 AT_CHECK([pspp -o pspp.csv sys-file.sps], [0],
1453 [warning: `sys-file.sav' near offset 0x54: Compression bias is not the usual value of 100, or system file uses unrecognized floating-point format.
1455 AT_CHECK([cat pspp.csv], [0], [dnl
1456 "warning: `sys-file.sav' near offset 0x54: Compression bias is not the usual value of 100, or system file uses unrecognized floating-point format."
1458 Variable,Description,Position
1466 num1,num2,str4,str8,str15
1467 -49,50,,abcdefgh,0123 @&t@
1468 .,201,jklm,nopqrstu,vwxyzABC @&t@
1469 51,52,DEFG,HIJKLMNO,PQRSTUV
1474 m4_divert_push([PREPARE_TESTS])
1475 zcompressed_sack () {
1478 "$FL3"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1480 6; dnl Nominal case size
1481 2; dnl zlib compressed
1483 -1; dnl Unspecified number of cases.
1485 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
1488 dnl Numeric variables.
1489 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1490 2; 0; 0; 0; 0x050800 *2; s8 "NUM2";
1492 dnl String variable.
1493 2; 4; 0; 0; 0x010400 *2; s8 "STR4";
1494 2; 8; 0; 0; 0x010800 *2; s8 "STR8";
1495 2; 15; 0; 0; 0x010f00 *2; s8 "STR15";
1496 2; -1; 0; 0; 0; 0; s8 "";
1498 dnl Character encoding record.
1499 7; 20; 1; 12; "windows-1252";
1501 dnl Dictionary termination record.
1504 dnl ZLIB data header.
1505 i64 0x194; # zheader_ofs
1506 i64 0x205; # ztrailer_ofs
1507 i64 48; # ztrailer_len
1509 dnl ZLIB data block.
1511 dnl This is the compressed form of:
1513 dnl 01 64 fe fd fe fd ff fb 61 62 63 64 65 66 67 68 |.d......abcdefgh|
1514 dnl 30 31 32 33 20 20 20 20 fd fd fd fe 65 66 fd fd |0123 ....ef..|
1515 dnl 6a 6b 6c 6d 20 20 20 20 6e 6f 70 71 72 73 74 75 |jklm nopqrstu|
1516 dnl 76 77 78 79 7a 41 42 43 44 45 46 47 20 20 20 20 |vwxyzABCDEFG |
1517 dnl 48 49 4a 4b 4c 4d 4e 4f fe fd fc 00 00 00 00 00 |HIJKLMNO........|
1518 dnl 50 51 52 53 54 55 56 57 |PQRSTUVW|
1520 dnl which is the data from the "compressed data" test.
1521 hex "78 01 63 4c f9 f7 f7 df df ff bf 13 93 92 53 52";
1522 hex "d3 d2 33 0c 0c 8d 8c 15 80 e0 ef df bf ff 52 d3";
1523 hex "fe fe cd ca ce c9 05 f1 f3 f2 0b 0a 8b 8a 4b 4a";
1524 hex "cb ca 2b 2a ab 1c 9d 9c 5d 5c dd dc 41 e2 1e 9e";
1525 hex "5e de 3e be 7e fe ff fe fe 61 00 81 80 c0 a0 e0";
1526 hex "90 d0 b0 70 00 0f 3f 23 d7";
1528 dnl ZLIB data trailer fixed header:
1529 i64 -100; # ztrailer_bias
1530 i64 0; # ztrailer_zero
1531 0x3ff000; # block_size
1534 dnl ZLIB block descriptor:
1535 i64 0x194; # uncompressed_ofs
1536 i64 0x1ac; # compressed_ofs
1537 88; # uncompressed_size
1538 89; # compressed_size
1541 m4_divert_pop([PREPARE_TESTS])
1543 AT_SETUP([zcompressed data])
1544 AT_KEYWORDS([sack synthetic system file positive zlib])
1545 zcompressed_sack > sys-file.sack
1546 for variant in be le; do
1547 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1548 AT_DATA([sys-file.sps], [dnl
1549 GET FILE='sys-file.sav'.
1553 AT_CHECK([pspp -o pspp.csv sys-file.sps])
1554 AT_CHECK([cat pspp.csv], [0], [dnl
1555 Variable,Description,Position
1563 num1,num2,str4,str8,str15
1564 -99,0,,abcdefgh,0123 @&t@
1565 .,151,jklm,nopqrstu,vwxyzABC @&t@
1566 1,2,DEFG,HIJKLMNO,PQRSTUV
1571 AT_BANNER([system file reader - negative])
1573 AT_SETUP([no variables])
1574 AT_KEYWORDS([sack synthetic system file negative])
1575 AT_DATA([sys-file.sack], [dnl
1577 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1579 0; dnl Nominal case size (empty)
1580 0; dnl Not compressed
1584 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
1587 dnl Character encoding record.
1588 7; 20; 1; 12; "windows-1252";
1590 dnl Dictionary termination record.
1593 for variant in be le; do
1594 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1595 AT_DATA([sys-file.sps], [dnl
1596 GET FILE='sys-file.sav'.
1598 AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
1599 sys-file.sps:1: error: GET: `sys-file.sav': Data file dictionary has no variables.
1602 dnl At one point pspp-convert would hang forever if there were no variables,
1603 dnl so check against regression.
1604 AT_CHECK([pspp-convert sys-file.sav sys-file.txt])
1605 AT_CHECK([cat sys-file.txt], [0], [
1610 AT_SETUP([unspecified character encoding])
1611 AT_KEYWORDS([sack synthetic system file positive])
1612 AT_DATA([sys-file.sack], [dnl
1614 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1616 4; dnl Nominal case size
1617 0; dnl Not compressed
1621 "01 Jan 11"; "20:53:52";
1622 "PSPP synthetic test file: "; i8 244; i8 245; i8 246; i8 248; s34 "";
1625 dnl Numeric variables.
1626 2; 0; 0; 0; 0x050800 *2; s8 "A";
1627 2; 0; 0; 0; 0x050800 *2; s8 "B";
1628 2; 0; 0; 0; 0x050800 *2; s8 "C";
1629 2; 0; 0; 0; 0x050800 *2; s8 "D";
1631 dnl Dictionary termination record.
1634 for variant in be le; do
1635 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1636 AT_DATA([sys-file.sps], [dnl
1639 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [stdout])
1640 AT_CHECK([sed 's/default encoding.*For/default encoding. For/' stdout], [0], [dnl
1641 "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."
1646 AT_SETUP([misplaced type 4 record])
1647 AT_KEYWORDS([sack synthetic system file negative])
1648 AT_DATA([sys-file.sack], [dnl
1650 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1651 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1653 dnl Numeric variable.
1654 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1659 for variant in be le; do
1660 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1661 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1663 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
1664 [error: `sys-file.sav' near offset 0xd4: Misplaced type 4 record.
1669 AT_SETUP([bad record type])
1670 AT_KEYWORDS([sack synthetic system file negative])
1671 AT_DATA([sys-file.sack], [dnl
1673 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1674 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1676 dnl Numeric variable.
1677 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1679 dnl Type 8 record (not a valid type).
1682 for variant in be le; do
1683 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1684 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1686 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
1687 [error: `sys-file.sav' near offset 0xd4: Unrecognized record type 8.
1692 AT_SETUP([wrong number of variable positions])
1693 AT_KEYWORDS([sack synthetic system file negative])
1694 AT_DATA([sys-file.sack], [dnl
1696 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1697 2; >>2<<; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1699 dnl Numeric variable.
1700 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
1702 dnl Character encoding record.
1703 7; 20; 1; 12; "windows-1252";
1705 dnl End of dictionary.
1708 for variant in be le; do
1709 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1710 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1712 AT_CHECK([pspp -O format=csv sys-file.sps], [0],
1713 [warning: `sys-file.sav': File header claims 2 variable positions but 1 were read from file.
1718 AT_SETUP([variable name may not begin with `#'])
1719 AT_KEYWORDS([sack synthetic system file negative])
1720 AT_DATA([sys-file.sack], [dnl
1722 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1723 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1725 dnl Numeric variable.
1726 2; 0; 0; 0; 0x050800 *2; s8 >>"$UM1"<<;
1728 dnl Character encoding record.
1729 7; 20; 1; 12; "windows-1252";
1731 dnl End of dictionary.
1734 for variant in be le; do
1735 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1736 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1738 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
1739 [error: `sys-file.sav' near offset 0xb4: Invalid variable name `$UM1'.
1744 AT_SETUP([variable name may not be reserved word])
1745 AT_KEYWORDS([sack synthetic system file negative])
1746 AT_DATA([sys-file.sack], [dnl
1748 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1749 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1751 dnl Numeric variable.
1752 2; 0; 0; 0; 0x050800 *2; s8 >>"TO"<<;
1754 dnl Character encoding record.
1755 7; 20; 1; 12; "windows-1252";
1757 dnl End of dictionary.
1760 for variant in be le; do
1761 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1762 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1764 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
1765 [error: `sys-file.sav' near offset 0xb4: Invalid variable name `TO'.
1770 AT_SETUP([variable width must be between 0 and 255])
1771 AT_KEYWORDS([sack synthetic system file negative])
1772 AT_DATA([sys-file.sack], [dnl
1774 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1775 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1777 dnl String variable with invalid width 256.
1778 2; 256; 0; 0; 0x050800 *2; s8 "VAR1";
1780 dnl Character encoding record.
1781 7; 20; 1; 12; "windows-1252";
1783 dnl End of dictionary.
1786 for variant in be le; do
1787 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1788 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1790 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
1791 [error: `sys-file.sav' near offset 0xb4: Bad width 256 for variable VAR1.
1796 dnl SPSS-generated system file can contain duplicate variable names
1797 dnl (see bug #41475).
1798 AT_SETUP([duplicate variable name])
1799 AT_KEYWORDS([sack synthetic system file negative])
1800 AT_DATA([sys-file.sack], [dnl
1802 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1803 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1805 dnl Numeric variables.
1806 2; 0; 0; 0; 0x050800 *2; s8 "VAR1";
1807 2; 0; 0; 0; 0x050800 *2; s8 "VAR1";
1809 dnl Character encoding record.
1810 7; 20; 1; 12; "windows-1252";
1812 dnl End of dictionary.
1815 for variant in be le; do
1816 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1817 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1820 AT_CHECK([pspp -O format=csv sys-file.sps], [0],
1821 [warning: `sys-file.sav' near offset 0xd4: Renaming variable with duplicate name `VAR1' to `VAR001'.
1823 Variable,Description,Position
1825 var001,Format: F8.0,2
1830 AT_SETUP([variable label indicator not 0 or 1])
1831 AT_KEYWORDS([sack synthetic system file negative])
1832 AT_DATA([sys-file.sack], [dnl
1834 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1835 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1837 dnl Numeric variable.
1838 2; 0; >>2<<; 0; 0x050800 *2; s8 "VAR1";
1840 dnl Character encoding record.
1841 7; 20; 1; 12; "windows-1252";
1843 dnl End of dictionary.
1846 for variant in be le; do
1847 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1848 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1850 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
1851 [error: `sys-file.sav' near offset 0xb4: Variable label indicator field is not 0 or 1.
1856 AT_SETUP([invalid numeric missing value indicator])
1857 AT_KEYWORDS([sack synthetic system file negative])
1858 AT_DATA([sys-file.sack], [dnl
1860 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1861 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1863 dnl Numeric variable.
1864 2; 0; 0; >>-1<<; 0x050800 *2; s8 "VAR1";
1866 dnl Character encoding record.
1867 7; 20; 1; 12; "windows-1252";
1869 dnl End of dictionary.
1872 for variant in be le; do
1873 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1874 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1876 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
1877 ["error: `sys-file.sav' near offset 0xb4: Numeric missing value indicator field is not -3, -2, 0, 1, 2, or 3."
1882 AT_SETUP([invalid string missing value indicator])
1883 AT_KEYWORDS([sack synthetic system file negative])
1884 AT_DATA([sys-file.sack], [dnl
1886 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1887 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1889 dnl String variable.
1890 2; 8; 0; >>4<<; 0x010800 *2; s8 "VAR1";
1892 dnl Character encoding record.
1893 7; 20; 1; 12; "windows-1252";
1895 dnl End of dictionary.
1898 for variant in be le; do
1899 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1900 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1902 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
1903 ["error: `sys-file.sav' near offset 0xb4: String missing value indicator field is not 0, 1, 2, or 3."
1908 AT_SETUP([missing string continuation record])
1909 AT_KEYWORDS([sack synthetic system file negative])
1910 AT_DATA([sys-file.sack], [dnl
1912 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1913 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1915 dnl String variable.
1916 2; 10; 0; 0; 0x010a00 *2; s8 "VAR1";
1917 >>2; 0; 0; 0; 0x050800 *2; s8 "VAR2";<<
1919 dnl Character encoding record.
1920 7; 20; 1; 12; "windows-1252";
1922 dnl End of dictionary.
1925 for variant in be le; do
1926 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1927 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1929 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
1930 [error: `sys-file.sav' near offset 0xb4: Missing string continuation record.
1935 AT_SETUP([invalid variable format])
1936 AT_KEYWORDS([sack synthetic system file negative])
1937 AT_DATA([sys-file.sack], [dnl
1939 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1940 2; 4; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
1942 dnl Numeric variable, invalid format types.
1943 dnl No warning is issued for type 0 because it has been observed in real
1945 2; 0; 0; 0; >>0xff0800; 0<<; s8 "NUM1";
1947 dnl Numeric variable, string formats.
1948 2; 0; 0; 0; >>0x010800<<; >>0x021000<<; s8 "VAR1";
1950 dnl String variable, numeric formats.
1951 2; 4; 0; 0; >>0x050800<<; >>0x110a01<<; s8 "STR1";
1953 dnl String variable, wrong width formats.
1954 2; 4; 0; 0; >>0x010800<<; >>0x020400<<; s8 "STR2";
1956 dnl Character encoding record.
1957 7; 20; 1; 12; "windows-1252";
1959 dnl End of dictionary.
1962 for variant in be le; do
1963 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
1964 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
1966 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
1967 warning: `sys-file.sav' near offset 0xc0: Variable NUM1 with width 0 has invalid print format 0xff0800.
1969 warning: `sys-file.sav' near offset 0xe0: Variable VAR1 with width 0 has invalid print format 0x10800.
1971 warning: `sys-file.sav' near offset 0xe4: Variable VAR1 with width 0 has invalid write format 0x21000.
1973 warning: `sys-file.sav' near offset 0x100: Variable STR1 with width 4 has invalid print format 0x50800.
1975 warning: `sys-file.sav' near offset 0x104: Variable STR1 with width 4 has invalid write format 0x110a01.
1977 warning: `sys-file.sav' near offset 0x120: Variable STR2 with width 4 has invalid print format 0x10800.
1979 warning: `sys-file.sav' near offset 0x124: Variable STR2 with width 4 has invalid write format 0x20400.
1984 AT_SETUP([invalid long string missing values])
1985 AT_KEYWORDS([sack synthetic system file negative])
1986 AT_DATA([sys-file.sack], [dnl
1988 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
1990 7; dnl Nominal case size
1991 0; dnl Not compressed
1995 "01 Jan 11"; "20:53:52";
1996 "PSPP synthetic test file: "; i8 244; i8 245; i8 246; i8 248; s34 "";
1999 dnl One numeric variable.
2000 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2002 dnl Long string variables that will have missing values added with a
2004 2; 9; 0; 0; 0x010900 *2; s8 "STR1";
2005 2; -1; 0; 0; 0; 0; s8 "";
2006 2; 10; 0; 0; 0x010a00 *2; s8 "STR2";
2007 2; -1; 0; 0; 0; 0; s8 "";
2008 2; 11; 0; 0; 0x010b00 *2; s8 "STR3";
2009 2; -1; 0; 0; 0; 0; s8 "";
2011 dnl Machine integer info record.
2012 7; 3; 4; 8; 1; 2; 3; -1; 1; 1; ENDIAN; 1252;
2014 dnl Machine floating-point info record.
2015 7; 4; 8; 3; SYSMIS; HIGHEST; LOWEST;
2017 dnl Long string variable missing values record.
2019 dnl Zero missing values (not allowed) for STR1 .
2020 COUNT("STR1"); i8 >>0<<;
2022 dnl Four missing values (not allowed) for STR2.
2023 COUNT("STR2"); i8 4;
2024 8; "abcdefgh"; 8; "ijklmnop"; 8; "qrstuvwx"; 8; "yz012345";
2026 dnl Missing values for unknown variable
2027 COUNT(>>"Nonexistent"<<); i8 1; 8; "abcdefgh";
2029 dnl Missing values for numeric variable
2030 COUNT(>>"NUM1"<<); i8 1; 8; "abcdefgh";
2032 dnl Too long missing value
2033 COUNT("STR3"); i8 1; >>COUNT("abcdefghijkl")<<;
2036 dnl Character encoding record.
2037 7; 20; 1; 12; "windows-1252";
2039 dnl Dictionary termination record.
2041 s8 "abcd"; s8 "efgh"; s8 "ijkl"; s8 "mnop"; s8 "qrst"; s8 "uvwx";
2042 s16 "yzABCDEFGHI"; s16 "JKLMNOPQR"; s16 "STUVWXYZ01";
2043 s16 "23456789abc"; s32 "defghijklmnopqstuvwxyzABC";
2046 for variant in be le; do
2047 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2048 AT_DATA([sys-file.sps], [dnl
2049 GET FILE='sys-file.sav'.
2052 AT_CHECK([pspp -O format=csv sys-file.sps], [0],
2053 ["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."
2055 "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."
2057 warning: `sys-file.sav' near offset 0x242: Ignoring long string missing value record for unknown variable Nonexistent.
2059 warning: `sys-file.sav' near offset 0x257: Ignoring long string missing value record for numeric variable NUM1.
2061 "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."
2063 Variable,Description,Position
2067 Missing Values: ""abcdefgh""; ""ijklmnop""; ""qrstuvwx""",3
2073 AT_SETUP([weighting variable must be numeric])
2074 AT_KEYWORDS([sack synthetic system file negative])
2075 AT_DATA([sys-file.sack], [dnl
2077 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2078 2; 2; 1; >>2<<; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2080 dnl Numeric variable.
2081 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2083 dnl String variable.
2084 2; 4; 0; 0; 0x010400 *2; s8 "STR1";
2086 dnl Character encoding record.
2087 7; 20; 1; 12; "windows-1252";
2089 dnl End of dictionary.
2092 for variant in be le; do
2093 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2094 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2097 AT_CHECK([pspp -O format=csv sys-file.sps], [0],
2098 [warning: `sys-file.sav': Ignoring string variable `STR1' set as weighting variable.
2100 Variable,Description,Position
2107 AT_SETUP([bad weighting variable index])
2108 AT_KEYWORDS([sack synthetic system file negative])
2109 AT_DATA([sys-file.sack], [dnl
2111 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2112 2; 2; 1; >>3<<; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2114 dnl Numeric variable.
2115 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2117 dnl String variable.
2118 2; 4; 0; 0; 0x010400 *2; s8 "STR1";
2120 dnl Character encoding record.
2121 7; 20; 1; 12; "windows-1252";
2123 dnl End of dictionary.
2126 for variant in be le; do
2127 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2128 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2130 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
2131 [error: `sys-file.sav' near offset 0x4c: Variable index 3 not in valid range 1...2.
2136 AT_SETUP([variable index is long string contination])
2137 AT_KEYWORDS([sack synthetic system file negative])
2138 AT_DATA([sys-file.sack], [dnl
2140 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2141 2; 3; 1; >>3<<; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2143 dnl Numeric variable.
2144 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2146 dnl Long string variable.
2147 2; 9; 0; 0; 0x010900 *2; s8 "STR1";
2148 (2; -1; 0; 0; 0; 0; s8 "");
2150 dnl Character encoding record.
2151 7; 20; 1; 12; "windows-1252";
2153 dnl End of dictionary.
2156 for variant in be le; do
2157 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2158 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2160 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
2161 [error: `sys-file.sav' near offset 0x4c: Variable index 3 refers to long string continuation.
2166 AT_SETUP([multiple documents records])
2167 AT_KEYWORDS([sack synthetic system file negative])
2168 AT_DATA([sys-file.sack], [dnl
2170 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2171 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2173 dnl Numeric variable, no label or missing values.
2174 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2176 dnl Two document records.
2177 (6; 1; s80 "One line of documents") >>* 2<<;
2179 dnl Dictionary termination record.
2182 dnl Character encoding record.
2183 7; 20; 1; 12; "windows-1252";
2188 for variant in be le; do
2189 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2190 AT_DATA([sys-file.sps], [dnl
2191 GET FILE='sys-file.sav'.
2193 AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
2194 error: `sys-file.sav' near offset 0x12c: Duplicate type 6 (document) record.
2200 AT_SETUP([empty document record])
2201 AT_KEYWORDS([sack synthetic system file negative])
2202 AT_DATA([sys-file.sack], [dnl
2204 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2205 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2207 dnl Numeric variable, no label or missing values.
2208 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2210 dnl Empty document record.
2213 dnl Dictionary termination record.
2219 for variant in be le; do
2220 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2221 AT_DATA([sys-file.sps], [dnl
2222 GET FILE='sys-file.sav'.
2224 AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
2225 error: `sys-file.sav' near offset 0xd4: Number of document lines (0) must be greater than 0 and less than 26843545.
2230 AT_SETUP([extension record too large])
2231 AT_KEYWORDS([sack synthetic system file negative])
2232 AT_DATA([sys-file.sack], [dnl
2234 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2235 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2237 dnl Numeric variable, no label or missing values.
2238 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2240 dnl Too-large extension record.
2241 7; 3; >>0xfffff000 * 2<<;
2243 for variant in be le; do
2244 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2245 AT_DATA([sys-file.sps], [dnl
2246 GET FILE='sys-file.sav'.
2248 AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
2249 error: `sys-file.sav' near offset 0xd8: Record type 7 subtype 3 too large.
2254 AT_SETUP([unknown extension record])
2255 AT_KEYWORDS([sack synthetic system file negative])
2256 AT_DATA([sys-file.sack], [dnl
2258 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2259 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2261 dnl Numeric variable, no label or missing values.
2262 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2264 dnl Unknown extension record type.
2267 dnl Character encoding record.
2268 7; 20; 1; 12; "windows-1252";
2270 dnl End of dictionary.
2273 for variant in be le; do
2274 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2275 AT_DATA([sys-file.sps], [dnl
2276 GET FILE='sys-file.sav'.
2278 AT_CHECK_UNQUOTED([pspp -O format=csv sys-file.sps], [0], [dnl
2279 "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}."
2284 AT_SETUP([bad machine integer info size])
2285 AT_KEYWORDS([sack synthetic system file negative])
2286 AT_DATA([sys-file.sack], [dnl
2288 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2289 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2291 dnl Numeric variable, no label or missing values.
2292 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2294 dnl Machine integer info record.
2295 7; 3; 4; >>9<<; 1; 2; 3; -1; 1; 1; ENDIAN; 1252; >>1234<<;
2297 dnl Character encoding record.
2298 7; 20; 1; 12; "windows-1252";
2300 dnl End of dictionary.
2303 for variant in be le; do
2304 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2305 AT_DATA([sys-file.sps], [dnl
2306 GET FILE='sys-file.sav'.
2308 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2309 "warning: `sys-file.sav' near offset 0xd8: Record type 7, subtype 3 has bad count 9 (expected 8)."
2314 AT_SETUP([bad machine integer info float format])
2315 AT_KEYWORDS([sack synthetic system file negative])
2316 AT_DATA([sys-file.sack], [dnl
2318 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2319 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2321 dnl Numeric variable, no label or missing values.
2322 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2324 dnl Machine integer info record.
2325 7; 3; 4; 8; 1; 2; 3; -1; >>2<<; 1; ENDIAN; 1252;
2327 dnl Character encoding record.
2328 7; 20; 1; 12; "windows-1252";
2330 dnl End of dictionary.
2333 for variant in be le; do
2334 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2335 AT_DATA([sys-file.sps], [dnl
2336 GET FILE='sys-file.sav'.
2338 AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
2339 error: `sys-file.sav' near offset 0xd8: Floating-point representation indicated by system file (2) differs from expected (1).
2344 AT_SETUP([bad machine integer info endianness])
2345 AT_KEYWORDS([sack synthetic system file negative])
2346 AT_DATA([sys-file.sack], [dnl
2348 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2349 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2351 dnl Numeric variable, no label or missing values.
2352 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2354 dnl Machine integer info record.
2355 7; 3; 4; 8; 1; 2; 3; -1; 1; 1; >>3<<; 1252;
2357 dnl Character encoding record.
2358 7; 20; 1; 12; "windows-1252";
2360 dnl End of dictionary.
2363 for variant in "be 1" "le 2"; do
2365 AT_CHECK([sack --$[1] sys-file.sack > sys-file.sav])
2366 AT_DATA([sys-file.sps], [dnl
2367 GET FILE='sys-file.sav'.
2370 AT_CHECK_UNQUOTED([pspp -O format=csv sys-file.sps], [0], [dnl
2371 warning: \`sys-file.sav' near offset 0xd8: Integer format indicated by system file (3) differs from expected ($[2]).
2373 Variable,Description,Position
2380 AT_SETUP([bad machine floating-point info size])
2381 AT_KEYWORDS([sack synthetic system file negative])
2382 AT_DATA([sys-file.sack], [dnl
2384 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2385 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2387 dnl Numeric variable, no label or missing values.
2388 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2390 dnl Machine floating-point info record.
2391 7; 4; 8; >>4<<; SYSMIS; HIGHEST; LOWEST; 0.0;
2393 dnl Character encoding record.
2394 7; 20; 1; 12; "windows-1252";
2396 dnl End of dictionary.
2399 for variant in be le; do
2400 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2401 AT_DATA([sys-file.sps], [dnl
2402 GET FILE='sys-file.sav'.
2404 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2405 "warning: `sys-file.sav' near offset 0xd8: Record type 7, subtype 4 has bad count 4 (expected 3)."
2410 AT_SETUP([wrong special floating point values])
2411 AT_KEYWORDS([sack synthetic system file negative])
2412 AT_DATA([sys-file.sack], [dnl
2414 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2415 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2417 dnl Numeric variable, no label or missing values.
2418 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2420 dnl Machine floating-point info record.
2421 7; 4; 8; 3; >>0.0<<; >>1.0<<; >>2.0<<;
2423 dnl Character encoding record.
2424 7; 20; 1; 12; "windows-1252";
2426 dnl End of dictionary.
2429 for variant in be le; do
2430 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2431 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2433 AT_CHECK([pspp -O format=csv sys-file.sps | sed 's/ [(].*/.../'], [0], [dnl
2434 "warning: `sys-file.sav' near offset 0xd8: File specifies unexpected value 0...
2436 "warning: `sys-file.sav' near offset 0xd8: File specifies unexpected value 1...
2438 "warning: `sys-file.sav' near offset 0xd8: File specifies unexpected value 2...
2443 AT_SETUP([bad mrsets name])
2444 AT_KEYWORDS([sack synthetic system file negative multiple response])
2445 AT_DATA([sys-file.sack], [dnl
2447 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2449 16; dnl Nominal case size
2450 0; dnl Not compressed
2454 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
2458 2; 0; 0; 0; 0x050800 *2; i8 0x82; i8 0xa0; s6 "";
2459 2; 0; 0; 0; 0x050800 *2; s8 "B";
2460 2; 0; 0; 0; 0x050800 *2; s8 "C";
2463 2; 0; 0; 0; 0x050800 *2; s8 "D";
2464 2; 0; 0; 0; 0x050800 *2; s8 "E";
2465 2; 0; 0; 0; 0x050800 *2; s8 "F";
2466 2; 0; 0; 0; 0x050800 *2; s8 "G";
2469 2; 4; 0; 0; 0x010400 *2; s8 "H";
2470 2; 4; 0; 0; 0x010400 *2; s8 "I";
2471 2; 4; 0; 0; 0x010400 *2; s8 "J";
2474 2; 0; 0; 0; 0x050800 *2; s8 "K";
2475 2; 0; 0; 0; 0x050800 *2; s8 "L";
2476 2; 0; 0; 0; 0x050800 *2; s8 "M";
2479 2; 6; 0; 0; 0x010600 *2; s8 "N";
2480 2; 6; 0; 0; 0x010600 *2; s8 "O";
2481 2; 6; 0; 0; 0x010600 *2; s8 "P";
2483 dnl Machine integer info record.
2484 7; 3; 4; 8; 1; 2; 3; -1; 1; 1; ENDIAN; 932;
2488 "$a=C 10 my mcgroup "; i8 0x82; i8 0xa0; " b c"; i8 10;
2489 "b=D2 55 0 g e f d"; i8 10;
2490 "$c=D4 "; i8 0x82; i8 0xcd; i8 0x82; i8 0xa2; " 10 mdgroup #2 h i j"; i8 10);
2494 "$d=E 1 2 34 13 third mdgroup k l m"; i8 10;
2495 "e=E 11 6 choice 0 n o p"; i8 10);
2497 dnl Character encoding record.
2498 7; 20; 1; 9; "shift_jis";
2500 dnl Dictionary termination record.
2503 for variant in be le; do
2504 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2505 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2506 MRSETS /DISPLAY NAME=ALL.
2508 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2509 warning: `sys-file.sav': Multiple response set name `b' does not begin with `$'.
2511 warning: `sys-file.sav': Multiple response set name `e' does not begin with `$'.
2513 Table: Multiple Response Sets
2514 Name,Variables,Details
2518 ","Multiple category set
2524 ","Multiple dichotomy set
2526 Label source: Provided by user
2528 Category label source: Variable labels
2533 ","Multiple dichotomy set
2534 Label: third mdgroup
2535 Label source: Provided by user
2537 Category label source: Value labels of counted value
2543 AT_SETUP([missing space after C in mrsets])
2544 AT_KEYWORDS([sack synthetic system file negative multiple response])
2545 AT_DATA([sys-file.sack], [dnl
2547 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2548 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2550 dnl Numeric variable, no label or missing values.
2551 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2553 dnl Multiple response sets.
2554 7; 7; 1; COUNT("$a=Cx");
2556 dnl Character encoding record.
2557 7; 20; 1; 12; "windows-1252";
2561 for variant in be le; do
2562 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2563 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2565 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2566 warning: `sys-file.sav' near offset 0xd8: Missing space following `C' at offset 4 in MRSETS record.
2571 AT_SETUP([missing space after E in mrsets])
2572 AT_KEYWORDS([sack synthetic system file negative multiple response])
2573 AT_DATA([sys-file.sack], [dnl
2575 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2576 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2578 dnl Numeric variable, no label or missing values.
2579 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2581 dnl Multiple response sets.
2582 7; 7; 1; COUNT("$a=Ex");
2584 dnl Character encoding record.
2585 7; 20; 1; 12; "windows-1252";
2589 for variant in be le; do
2590 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2591 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2593 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2594 warning: `sys-file.sav' near offset 0xd8: Missing space following `E' at offset 4 in MRSETS record.
2599 AT_SETUP([unexpected label source in mrsets])
2600 AT_KEYWORDS([sack synthetic system file negative multiple response])
2601 AT_DATA([sys-file.sack], [dnl
2603 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2604 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2606 dnl Numeric variable, no label or missing values.
2607 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2609 dnl Multiple response sets.
2610 7; 7; 1; COUNT("$a=E 2");
2612 dnl Character encoding record.
2613 7; 20; 1; 12; "windows-1252";
2617 for variant in be le; do
2618 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2619 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2621 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2622 warning: `sys-file.sav' near offset 0xd8: Unexpected label source value following `E' at offset 7 in MRSETS record.
2624 warning: `sys-file.sav' near offset 0xd8: Expecting digit at offset 7 in MRSETS record.
2629 AT_SETUP([bad type character in mrsets])
2630 AT_KEYWORDS([sack synthetic system file negative multiple response])
2631 AT_DATA([sys-file.sack], [dnl
2633 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2634 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2636 dnl Numeric variable, no label or missing values.
2637 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2639 dnl Multiple response sets.
2640 7; 7; 1; COUNT("$a=");
2642 dnl Character encoding record.
2643 7; 20; 1; 12; "windows-1252";
2647 for variant in be le; do
2648 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2649 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2651 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2652 "warning: `sys-file.sav' near offset 0xd8: Missing `C', `D', or `E' at offset 3 in MRSETS record."
2657 AT_SETUP([bad counted string length in mrsets])
2658 AT_KEYWORDS([sack synthetic system file negative multiple response])
2659 AT_DATA([sys-file.sack], [dnl
2661 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2662 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2664 dnl Numeric variable, no label or missing values.
2665 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2667 dnl Multiple response sets.
2668 7; 7; 1; COUNT("$a=Dx");
2670 dnl Character encoding record.
2671 7; 20; 1; 12; "windows-1252";
2675 for variant in be le; do
2676 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2677 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2679 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2680 warning: `sys-file.sav' near offset 0xd8: Expecting digit at offset 4 in MRSETS record.
2685 AT_SETUP([missing space in counted string in mrsets])
2686 AT_KEYWORDS([sack synthetic system file negative multiple response])
2687 AT_DATA([sys-file.sack], [dnl
2689 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2690 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2692 dnl Numeric variable, no label or missing values.
2693 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2695 dnl Multiple response sets.
2696 7; 7; 1; COUNT("$a=D1x");
2698 dnl Character encoding record.
2699 7; 20; 1; 12; "windows-1252";
2703 for variant in be le; do
2704 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2705 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2707 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2708 warning: `sys-file.sav' near offset 0xd8: Expecting space at offset 5 in MRSETS record.
2713 AT_SETUP([counted string too long in mrsets])
2714 AT_KEYWORDS([sack synthetic system file negative multiple response])
2715 AT_DATA([sys-file.sack], [dnl
2717 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2718 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2720 dnl Numeric variable, no label or missing values.
2721 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2723 dnl Multiple response sets.
2724 7; 7; 1; COUNT("$a=D4 abc");
2726 dnl Character encoding record.
2727 7; 20; 1; 12; "windows-1252";
2731 for variant in be le; do
2732 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2733 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2735 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2736 warning: `sys-file.sav' near offset 0xd8: 4-byte string starting at offset 6 exceeds record length 9.
2741 AT_SETUP([missing space after counted string in mrsets])
2742 AT_KEYWORDS([sack synthetic system file negative multiple response])
2743 AT_DATA([sys-file.sack], [dnl
2745 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2746 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2748 dnl Numeric variable, no label or missing values.
2749 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2751 dnl Multiple response sets.
2752 7; 7; 1; COUNT("$a=D3 abcx");
2754 dnl Character encoding record.
2755 7; 20; 1; 12; "windows-1252";
2759 for variant in be le; do
2760 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2761 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2763 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2764 warning: `sys-file.sav' near offset 0xd8: Expecting space at offset 9 following 3-byte string.
2769 AT_SETUP([missing newline after variable name in mrsets])
2770 AT_KEYWORDS([sack synthetic system file negative multiple response])
2771 AT_DATA([sys-file.sack], [dnl
2773 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2774 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2776 dnl Numeric variable, no label or missing values.
2777 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2779 dnl Multiple response sets.
2780 7; 7; 1; COUNT("$a=C 0 NUM1");
2782 dnl Character encoding record.
2783 7; 20; 1; 12; "windows-1252";
2787 for variant in be le; do
2788 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2789 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2791 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2792 warning: `sys-file.sav' near offset 0xd8: Missing new-line parsing variable names at offset 13 in MRSETS record.
2794 warning: `sys-file.sav': MRSET $a has only one variable.
2799 AT_SETUP([duplicate variable name in mrsets])
2800 AT_KEYWORDS([sack synthetic system file negative multiple response])
2801 AT_DATA([sys-file.sack], [dnl
2803 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2804 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2806 dnl Numeric variable, no label or missing values.
2807 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2809 dnl Multiple response sets.
2810 7; 7; 1; COUNT("$a=C 0 NUM1 NUM1"; i8 10);
2812 dnl Character encoding record.
2813 7; 20; 1; 12; "windows-1252";
2817 for variant in be le; do
2818 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2819 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2821 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2822 warning: `sys-file.sav': MRSET $a contains duplicate variable name NUM1.
2824 warning: `sys-file.sav': MRSET $a has only one variable.
2829 AT_SETUP([mixed variable types in mrsets])
2830 AT_KEYWORDS([sack synthetic system file negative multiple response])
2831 AT_DATA([sys-file.sack], [dnl
2833 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2834 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2837 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2838 2; 8; 0; 0; 0x010800 *2; s8 "STR1";
2840 dnl Multiple response sets.
2841 7; 7; 1; COUNT("$a=C 0 NUM1 STR1"; i8 10);
2843 dnl Character encoding record.
2844 7; 20; 1; 12; "windows-1252";
2848 for variant in be le; do
2849 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2850 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2852 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2853 warning: `sys-file.sav': MRSET $a contains both string and numeric variables.
2855 warning: `sys-file.sav': MRSET $a has only one variable.
2860 AT_SETUP([missing newline after variable name in mrsets])
2861 AT_KEYWORDS([sack synthetic system file negative multiple response])
2862 AT_DATA([sys-file.sack], [dnl
2864 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2865 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2867 dnl Numeric variable, no label or missing values.
2868 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2870 dnl Multiple response sets.
2871 7; 7; 1; COUNT("$a=C 0 NUM1"; i8 10);
2873 dnl Character encoding record.
2874 7; 20; 1; 12; "windows-1252";
2878 for variant in be le; do
2879 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2880 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2882 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2883 warning: `sys-file.sav': MRSET $a has only one variable.
2888 AT_SETUP([zero or one variable in mrset])
2889 AT_KEYWORDS([sack synthetic system file negative multiple response])
2890 AT_DATA([sys-file.sack], [dnl
2892 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2893 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2895 dnl Numeric variable, no label or missing values.
2896 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2898 dnl Multiple response sets.
2899 7; 7; 1; COUNT("$a=C 0 NUM1"; i8 10; "$b=C 0 "; i8 10);
2901 dnl Character encoding record.
2902 7; 20; 1; 12; "windows-1252";
2906 for variant in be le; do
2907 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2908 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2910 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2911 warning: `sys-file.sav': MRSET $a has only one variable.
2913 warning: `sys-file.sav': MRSET $b has no variables.
2918 AT_SETUP([wrong display parameter size])
2919 AT_KEYWORDS([sack synthetic system file negative])
2920 AT_DATA([sys-file.sack], [dnl
2922 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2923 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2925 dnl Numeric variable, no label or missing values.
2926 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2928 dnl Display parameters record.
2929 7; 11; >>8<<; 2; 1.0; 1.0;
2931 dnl Character encoding record.
2932 7; 20; 1; 12; "windows-1252";
2934 dnl End of dictionary.
2937 for variant in be le; do
2938 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2939 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2941 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2942 "warning: `sys-file.sav' near offset 0xd8: Record type 7, subtype 11 has bad size 8 (expected 4)."
2947 AT_SETUP([wrong display parameter count])
2948 AT_KEYWORDS([sack synthetic system file negative])
2949 AT_DATA([sys-file.sack], [dnl
2951 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2952 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2954 dnl Numeric variable, no label or missing values.
2955 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2957 dnl Display parameters record.
2958 7; 11; 4; >>4<<; 1; 1; 2; 2;
2960 dnl Character encoding record.
2961 7; 20; 1; 12; "windows-1252";
2963 dnl End of dictionary.
2966 for variant in be le; do
2967 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2968 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2970 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
2971 warning: `sys-file.sav' near offset 0xd8: Extension 11 has bad count 4 (for 1 variables).
2976 AT_SETUP([wrong display measurement level])
2977 AT_KEYWORDS([sack synthetic system file negative])
2978 AT_DATA([sys-file.sack], [dnl
2980 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
2981 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
2983 dnl Numeric variable, no label or missing values.
2984 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
2986 dnl Display parameters record.
2987 7; 11; 4; 2; >>4<<; 0;
2989 dnl Character encoding record.
2990 7; 20; 1; 12; "windows-1252";
2992 dnl End of dictionary.
2995 for variant in be le; do
2996 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
2997 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
2999 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
3000 warning: `sys-file.sav' near offset 0xd8: Invalid variable display parameters for variable 0 (NUM1). Default parameters substituted.
3005 AT_SETUP([wrong display alignment])
3006 AT_KEYWORDS([sack synthetic system file negative])
3007 AT_DATA([sys-file.sack], [dnl
3009 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3010 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3012 dnl Numeric variable, no label or missing values.
3013 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3015 dnl Display parameters record.
3016 7; 11; 4; 2; 1; >>-1<<;
3018 dnl Character encoding record.
3019 7; 20; 1; 12; "windows-1252";
3021 dnl End of dictionary.
3024 for variant in be le; do
3025 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3026 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3028 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
3029 warning: `sys-file.sav' near offset 0xd8: Invalid variable display parameters for variable 0 (NUM1). Default parameters substituted.
3034 AT_SETUP([bad variable name in variable/value pair])
3035 AT_KEYWORDS([sack synthetic system file negative])
3036 AT_DATA([sys-file.sack], [dnl
3038 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3039 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3041 dnl Numeric variables.
3042 2; 0; 0; 0; 0x050800 *2; s8 "LONGVARI";
3044 dnl Long variable names.
3045 7; 13; 1; COUNT (>>"xyzzy"<<);
3047 dnl Character encoding record.
3048 7; 20; 1; 12; "windows-1252";
3050 dnl Dictionary termination record.
3053 for variant in be le; do
3054 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3055 AT_DATA([sys-file.sps], [dnl
3056 GET FILE='sys-file.sav'.
3058 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
3059 warning: `sys-file.sav' near offset 0xde: Dictionary record refers to unknown variable xyzzy.
3064 AT_SETUP([duplicate long variable name])
3065 AT_KEYWORDS([sack synthetic system file negative])
3066 AT_DATA([sys-file.sack], [dnl
3068 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3069 2; 4; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3071 dnl Numeric variables.
3072 2; 0; 0; 0; 0x050800 *2; s8 "LONGVARI";
3073 2; 0; 0; 0; 0x050800 *2; s8 "LONGVA_A";
3074 2; 0; 0; 0; 0x050800 *2; s8 "LONGVA_B";
3075 2; 0; 0; 0; 0x050800 *2; s8 "LONGVA_C";
3077 dnl Long variable names.
3079 "LONGVARI=_Invalid"; i8 9;
3080 "LONGVARI=$Invalid"; i8 9;
3081 "LONGVARI=#Invalid"; i8 9;
3082 "LONGVA_A=LongVariableName"; i8 9;
3083 "LONGVA_B=LONGVARIABLENAME"; i8 9;
3086 dnl Character encoding record.
3087 7; 20; 1; 12; "windows-1252";
3089 dnl Dictionary termination record.
3092 for variant in be le; do
3093 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3094 AT_DATA([sys-file.sps], [dnl
3095 GET FILE='sys-file.sav'.
3097 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
3098 warning: `sys-file.sav' near offset 0x138: Long variable mapping from LONGVARI to invalid variable name `_Invalid'.
3100 warning: `sys-file.sav' near offset 0x138: Long variable mapping from LONGVARI to invalid variable name `$Invalid'.
3102 warning: `sys-file.sav' near offset 0x138: Long variable mapping from LONGVARI to invalid variable name `#Invalid'.
3104 warning: `sys-file.sav' near offset 0x138: Duplicate long variable name `LONGVARIABLENAME'.
3109 AT_SETUP([bad very long string length])
3110 AT_KEYWORDS([sack synthetic system file negative])
3111 AT_DATA([sys-file.sack], [dnl
3113 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3114 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3116 dnl Numeric variable.
3117 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3119 dnl Very long string map.
3121 "NUM1=00000"; i8 0; i8 9;
3122 "NUM1=00255"; i8 0; i8 9;
3123 "NUM1=00256"; i8 0; i8 9;
3126 dnl Character encoding record.
3127 7; 20; 1; 12; "windows-1252";
3129 dnl Dictionary termination record.
3132 for variant in be le; do
3133 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3134 AT_DATA([sys-file.sps], [dnl
3135 GET FILE='sys-file.sav'.
3137 AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
3138 warning: `sys-file.sav' near offset 0xd8: NUM1 listed as string of invalid length 00000 in very long string record.
3140 "warning: `sys-file.sav' near offset 0xd8: NUM1 listed in very long string record with width 00255, which requires only one segment."
3142 error: `sys-file.sav' near offset 0xd8: Very long string NUM1 overflows dictionary.
3147 AT_SETUP([bad very long string segment width])
3148 AT_KEYWORDS([sack synthetic system file negative])
3149 AT_DATA([sys-file.sack], [dnl
3151 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3152 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3155 2; 255; 0; 0; 0x01ff00 *2; s8 "STR1";
3156 (2; -1; 0; 0; 0; 0; s8 "") * 31;
3157 2; >>9<<; 0; 0; 0x010900 *2; s8 "STR1_A";
3158 >>2; -1; 0; 0; 0; 0; s8 "";<<
3160 dnl Very long string map.
3162 "STR1=00256"; i8 0; i8 9;
3165 dnl Character encoding record.
3166 7; 20; 1; 12; "windows-1252";
3168 dnl Dictionary termination record.
3171 for variant in be le; do
3172 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3173 AT_DATA([sys-file.sps], [dnl
3174 GET FILE='sys-file.sav'.
3176 AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
3177 error: `sys-file.sav' near offset 0x4f8: Very long string with width 256 has segment 1 of width 9 (expected 4).
3182 AT_SETUP([too many value labels])
3183 AT_KEYWORDS([sack synthetic system file negative])
3184 AT_DATA([sys-file.sack], [dnl
3186 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3187 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3189 dnl Numeric variable.
3190 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3193 for variant in be le; do
3194 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3195 AT_DATA([sys-file.sps], [dnl
3196 GET FILE='sys-file.sav'.
3198 AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
3199 error: `sys-file.sav' near offset 0xd4: Invalid number of labels 2147483647.
3204 AT_SETUP([missing type 4 record])
3205 AT_KEYWORDS([sack synthetic system file negative])
3206 AT_DATA([sys-file.sack], [dnl
3208 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3209 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3211 dnl Numeric variable.
3212 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3214 dnl Value label with missing type 4 record.
3215 3; 1; 1.0; i8 3; s7 "one";
3217 dnl Character encoding record.
3218 7; 20; 1; 12; "windows-1252";
3220 dnl End of dictionary.
3223 for variant in be le; do
3224 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3225 AT_DATA([sys-file.sps], [dnl
3226 GET FILE='sys-file.sav'.
3228 AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
3229 error: `sys-file.sav' near offset 0xe8: Variable index record (type 4) does not immediately follow value label record (type 3) as it should.
3234 AT_SETUP([value label with no associated variables])
3235 AT_KEYWORDS([sack synthetic system file negative])
3236 AT_DATA([sys-file.sack], [dnl
3238 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3239 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3241 dnl Numeric variable.
3242 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3244 dnl Value label with no variables.
3245 3; 1; 1.0; i8 3; s7 "one"; 4; >>0<<;
3247 for variant in be le; do
3248 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3249 AT_DATA([sys-file.sps], [dnl
3250 GET FILE='sys-file.sav'.
3252 AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
3253 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).
3258 AT_SETUP([type 4 record names long string variable])
3259 AT_KEYWORDS([sack synthetic system file negative])
3260 AT_DATA([sys-file.sack], [dnl
3262 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3263 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3265 dnl Long string variable.
3266 2; 9; 0; 0; 0x010900 *2; s8 "STR1";
3267 2; -1; 0; 0; 0; 0; s8 "";
3269 dnl Value label that names long string variable.
3270 3; 1; s8 "xyzzy"; i8 3; s7 "one"; 4; 1; >>1<<;
3272 dnl Character encoding record.
3273 7; 20; 1; 12; "windows-1252";
3275 dnl End of dictionary.
3278 for variant in be le; do
3279 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3280 AT_DATA([sys-file.sps], [dnl
3281 GET FILE='sys-file.sav'.
3283 AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
3284 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.
3289 AT_SETUP([variables for value label must all be same type])
3290 AT_KEYWORDS([sack synthetic system file negative])
3291 AT_DATA([sys-file.sack], [dnl
3293 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3294 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3297 2; 6; 0; 0; 0x010600 *2; s8 "STR1";
3298 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3300 dnl Value label that names numeric and string variables.
3301 3; 1; s8 "xyzzy"; i8 3; s7 "one"; 4; 2; >>1; 2<<;
3303 dnl Character encoding record.
3304 7; 20; 1; 12; "windows-1252";
3306 dnl End of dictionary.
3309 for variant in be le; do
3310 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3311 AT_DATA([sys-file.sps], [dnl
3312 GET FILE='sys-file.sav'.
3314 AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
3315 "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."
3320 AT_SETUP([duplicate value labels type])
3321 AT_KEYWORDS([sack synthetic system file negative])
3322 AT_DATA([sys-file.sack], [dnl
3324 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3325 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3328 2; 6; 0; 0; 0x010600 *2; s8 "STR1";
3329 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3331 dnl Duplicate value labels.
3332 3; 1; s8 "xyzzy"; i8 3; s7 "one"; 4; 2; >>1; 1<<;
3333 3; 1; 1.0; i8 3; s7 "one"; 4; 2; >>2; 2<<;
3335 dnl Character encoding record.
3336 7; 20; 1; 12; "windows-1252";
3338 dnl End of dictionary.
3341 for variant in be le; do
3342 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3343 AT_DATA([sys-file.sps], [dnl
3344 GET FILE='sys-file.sav'.
3346 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
3347 warning: `sys-file.sav' near offset 0xf4: Duplicate value label for `xyzzy ' on STR1.
3349 warning: `sys-file.sav' near offset 0x11c: Duplicate value label for 1 on NUM1.
3354 AT_SETUP([missing attribute value])
3355 AT_KEYWORDS([sack synthetic system file negative])
3356 AT_DATA([sys-file.sack], [dnl
3358 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3359 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3362 2; 0; 0; 0; 0x050800 *2; s8 "FIRSTVAR";
3364 dnl Data file attributes record.
3369 dnl Variable attributes record.
3375 dnl Character encoding record.
3376 7; 20; 1; 12; "windows-1252";
3378 dnl Dictionary termination record.
3381 for variant in be le; do
3382 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3383 AT_DATA([sys-file.sps], [dnl
3384 GET FILE='sys-file.sav'.
3386 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
3387 warning: `sys-file.sav' near offset 0xde: Error parsing attribute value Attr1[[1]].
3389 warning: `sys-file.sav' near offset 0x101: Error parsing attribute value fred[[2]].
3394 AT_SETUP([unquoted attribute value])
3395 AT_KEYWORDS([sack synthetic system file negative])
3396 AT_DATA([sys-file.sack], [dnl
3398 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3399 2; 1; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3402 2; 0; 0; 0; 0x050800 *2; s8 "FIRSTVAR";
3404 dnl Data file attributes record.
3406 "Attr1(value"; i8 10;
3410 dnl Variable attributes record.
3413 "fred(23"; i8 10; ")"
3416 dnl Character encoding record.
3417 7; 20; 1; 12; "windows-1252";
3419 dnl Dictionary termination record.
3422 for variant in be le; do
3423 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3424 AT_DATA([sys-file.sps], [dnl
3425 GET FILE='sys-file.sav'.
3427 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
3428 warning: `sys-file.sav' near offset 0xe4: Attribute value Attr1[[1]] is not quoted: value.
3430 warning: `sys-file.sav' near offset 0x106: Attribute value fred[[1]] is not quoted: 23.
3435 AT_SETUP([bad variable name in long string value label])
3436 AT_KEYWORDS([sack synthetic system file negative])
3437 AT_DATA([sys-file.sack], [dnl
3439 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3440 2; 3; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3443 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3444 2; 14; 0; 0; 0x010e00 *2; s8 "STR14";
3445 2; -1; 0; 0; 0; 0; s8 "";
3448 dnl No variable named STR9.
3449 COUNT(>>"STR9"<<); 9;
3450 1; COUNT("RSTUVWXYZ"); COUNT("value label for `RSTUVWXYZ'");
3452 dnl NUM1 is numeric.
3453 COUNT(>>"NUM1"<<); 0;
3454 1; COUNT("xyz"); COUNT("value label for 1.0");
3456 dnl Wrong width for STR14.
3457 COUNT("STR14"); >>9<<;
3458 1; COUNT("RSTUVWXYZ"); COUNT("value label for `RSTUVWXYZ'");
3460 dnl Wrong width for value.
3462 1; COUNT(>>"RSTUVWXYZ"<<); COUNT("value label for `RSTUVWXYZ'");
3464 dnl Duplicate value label.
3465 COUNT("STR14"); 14; 2;
3466 COUNT("abcdefghijklmn"); COUNT("value label for `abcdefghijklmn'");
3467 >>COUNT("abcdefghijklmn"); COUNT("another value label for `abcdefghijklmn'")<<;
3470 dnl Character encoding record.
3471 7; 20; 1; 12; "windows-1252";
3473 dnl Dictionary termination record.
3476 for variant in be le; do
3477 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3478 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3480 AT_CHECK([pspp -O format=csv sys-file.sps], [0], [dnl
3481 warning: `sys-file.sav' near offset 0x128: Ignoring long string value label record for unknown variable STR9.
3483 warning: `sys-file.sav' near offset 0x164: Ignoring long string value label record for numeric variable NUM1.
3485 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).
3487 "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."
3489 warning: `sys-file.sav' near offset 0x259: Duplicate value label for `abcdefghijklmn' on str14.
3494 AT_SETUP([fewer data records than indicated by file header])
3495 AT_KEYWORDS([sack synthetic system file negative])
3496 AT_DATA([sys-file.sack], [dnl
3498 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3499 2; 2; 0; 0; >>5<<; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3501 dnl Numeric variables.
3502 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3503 2; 0; 0; 0; 0x050800 *2; s8 "NUM2";
3505 dnl Character encoding record.
3506 7; 20; 1; 12; "windows-1252";
3514 dnl Missing record here.
3516 for variant in be le; do
3517 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3518 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3521 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
3522 [error: Error reading case from file `sys-file.sav'.
3534 AT_SETUP([partial data record between variables])
3535 AT_KEYWORDS([sack synthetic system file negative])
3536 AT_DATA([sys-file.sack], [dnl
3538 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3539 2; 2; 0; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3541 dnl Numeric variables.
3542 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3543 2; 0; 0; 0; 0x050800 *2; s8 "NUM2";
3545 dnl Character encoding record.
3546 7; 20; 1; 12; "windows-1252";
3553 for variant in be le; do
3554 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3555 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3558 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
3559 [error: `sys-file.sav' near offset 0x12c: File ends in partial case.
3568 AT_SETUP([partial data record within long string])
3569 AT_KEYWORDS([sack synthetic system file negative])
3570 AT_DATA([sys-file.sack], [dnl
3572 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3573 2; 2; 0; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
3575 dnl Numeric variables.
3576 2; 14; 0; 0; 0x010e00 *2; s8 "STR14";
3577 2; -1; 0; 0; 0; 0; s8 "";
3579 dnl Character encoding record.
3580 7; 20; 1; 12; "windows-1252";
3584 s14 "one data item";
3587 for variant in be le; do
3588 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3589 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3592 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
3593 [error: `sys-file.sav' near offset 0x12a: Unexpected end of file.
3602 AT_SETUP([partial compressed data record])
3603 AT_KEYWORDS([sack synthetic system file positive])
3604 AT_DATA([sys-file.sack], [dnl
3606 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3608 6; dnl Nominal case size
3611 -1; dnl Unspecified number of cases.
3613 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
3616 dnl Numeric variables.
3617 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3618 2; 0; 0; 0; 0x050800 *2; s8 "NUM2";
3620 dnl String variable.
3621 2; 4; 0; 0; 0x010400 *2; s8 "STR4";
3622 2; 8; 0; 0; 0x010800 *2; s8 "STR8";
3623 2; 15; 0; 0; 0x010f00 *2; s8 "STR15";
3624 2; -1; 0; 0; 0; 0; s8 "";
3626 dnl Character encoding record.
3627 7; 20; 1; 12; "windows-1252";
3629 dnl Dictionary termination record.
3632 dnl Compressed data.
3633 i8 1 100 254 253 254 253; i8 255 251; "abcdefgh"; s8 "0123";
3635 for variant in be le; do
3636 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3637 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3640 AT_CHECK([pspp -O format=csv sys-file.sps], [1],
3641 [error: `sys-file.sav' near offset 0x1ac: File ends in partial case.
3644 num1,num2,str4,str8,str15
3645 -99,0,,abcdefgh,0123 @&t@
3650 AT_SETUP([zcompressed data - bad zheader_ofs])
3651 AT_KEYWORDS([sack synthetic system file negative zlib])
3652 zcompressed_sack | sed 's/.*zheader_ofs.*/>>i64 0<<;/' > sys-file.sack
3653 for variant in be le; do
3654 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3655 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3657 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).
3662 AT_SETUP([zcompressed data - bad ztrailer_ofs])
3663 AT_KEYWORDS([sack synthetic system file negative zlib])
3664 zcompressed_sack | sed 's/.*ztrailer_ofs.*/>>i64 0<<;/' > sys-file.sack
3665 for variant in be le; do
3666 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3667 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3669 AT_CHECK([pspp -o pspp.csv sys-file.sps], [1], [error: `sys-file.sav' near offset 0x194: Impossible ZLIB trailer offset 0x0.
3674 # ztrailer_len must be a multiple of 24 and at least 48,
3675 # so a value of 12 is impossible.
3676 AT_SETUP([zcompressed data - invalid ztrailer_len])
3677 AT_KEYWORDS([sack synthetic system file negative zlib])
3678 zcompressed_sack | sed 's/.*ztrailer_len.*/>>i64 12<<;/' > sys-file.sack
3679 for variant in be le; do
3680 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3681 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3683 AT_CHECK([pspp -o pspp.csv sys-file.sps], [1], [error: `sys-file.sav' near offset 0x194: Invalid ZLIB trailer length 12.
3688 # ztrailer_ofs + ztrailer_len must be the file size.
3689 AT_SETUP([zcompressed data - wrong ztrailer_len])
3690 AT_KEYWORDS([sack synthetic system file negative zlib])
3691 zcompressed_sack | sed 's/.*ztrailer_len.*/>>i64 72<<;/' > sys-file.sack
3692 for variant in be le; do
3693 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3694 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3696 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).
3697 error: `sys-file.sav' near offset 0x21d: 72-byte ZLIB trailer specifies 1 data blocks (expected 2).
3702 AT_SETUP([zcompressed data - wrong ztrailer_bias])
3703 AT_KEYWORDS([sack synthetic system file negative zlib])
3704 zcompressed_sack | sed 's/.*ztrailer_bias.*/>>i64 0<<;/' > sys-file.sack
3705 for variant in be le; do
3706 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3707 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3709 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).
3714 AT_SETUP([zcompressed data - wrong ztrailer_zero])
3715 AT_KEYWORDS([sack synthetic system file negative zlib])
3716 zcompressed_sack | sed 's/.*ztrailer_zero.*/>>i64 100<<;/' > sys-file.sack
3717 for variant in be le; do
3718 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3719 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3721 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.
3726 AT_SETUP([zcompressed data - wrong block_size])
3727 AT_KEYWORDS([sack synthetic system file negative zlib])
3728 zcompressed_sack | sed 's/.*block_size.*/>>0x1000<<;/' > sys-file.sack
3729 for variant in be le; do
3730 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3731 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3733 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.
3738 AT_SETUP([zcompressed data - wrong n_blocks])
3739 AT_KEYWORDS([sack synthetic system file negative zlib])
3740 zcompressed_sack | sed 's/.*n_blocks.*/>>2<<;/' > sys-file.sack
3741 for variant in be le; do
3742 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3743 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3745 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).
3750 AT_SETUP([zcompressed data - wrong uncompressed_ofs])
3751 AT_KEYWORDS([sack synthetic system file negative zlib])
3752 zcompressed_sack | sed 's/.*uncompressed_ofs.*/i64 >>0x177<<;/' > sys-file.sack
3753 for variant in be le; do
3754 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3755 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3757 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.
3762 AT_SETUP([zcompressed data - wrong compressed_ofs])
3763 AT_KEYWORDS([sack synthetic system file negative zlib])
3764 zcompressed_sack | sed 's/.*@%:@ compressed_ofs.*/i64 >>0x191<<;/' > sys-file.sack
3765 for variant in be le; do
3766 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3767 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3769 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.
3774 AT_SETUP([zcompressed data - compressed sizes don't add up])
3775 AT_KEYWORDS([sack synthetic system file negative zlib])
3776 AT_DATA([sys-file.sack], [dnl
3778 "$FL3"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
3780 6; dnl Nominal case size
3781 2; dnl zlib compressed
3783 -1; dnl Unspecified number of cases.
3785 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
3788 dnl Numeric variables.
3789 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
3790 2; 0; 0; 0; 0x050800 *2; s8 "NUM2";
3792 dnl String variable.
3793 2; 4; 0; 0; 0x010400 *2; s8 "STR4";
3794 2; 8; 0; 0; 0x010800 *2; s8 "STR8";
3795 2; 15; 0; 0; 0x010f00 *2; s8 "STR15";
3796 2; -1; 0; 0; 0; 0; s8 "";
3798 dnl Character encoding record.
3799 7; 20; 1; 12; "windows-1252";
3801 dnl Dictionary termination record.
3804 dnl ZLIB data header.
3805 i64 0x194; # zheader_ofs
3806 i64 0x1ac; # ztrailer_ofs
3807 i64 72; # ztrailer_len
3809 dnl This is where the ZLIB data blocks would go, but we don't need any to
3810 dnl provoke this message so we omit them.
3812 dnl ZLIB data trailer fixed header:
3813 i64 -100; # ztrailer_bias
3814 i64 0; # ztrailer_zero
3815 0x3ff000; # block_size
3818 dnl ZLIB block descriptor 1:
3819 i64 0x194; # uncompressed_ofs
3820 i64 0x1ac; # compressed_ofs
3821 0x100000; # uncompressed_size
3822 0x12345; # compressed_size
3824 dnl ZLIB block descriptor 2:
3825 i64 0x100194; # uncompressed_ofs
3826 i64 0x12421; # compressed_ofs
3827 0x100000; # uncompressed_size
3828 0x12345; # compressed_size
3830 for variant in be le; do
3831 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3832 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3834 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.
3835 error: `sys-file.sav' near offset 0x1dc: ZLIB block descriptor 1 reported compressed data offset 0x12421, when 0x124f1 was expected.
3840 AT_SETUP([zcompressed data - uncompressed_size > block_size])
3841 AT_KEYWORDS([sack synthetic system file negative zlib])
3842 zcompressed_sack | sed 's/.*uncompressed_size.*/>>0x400000<<;/' > sys-file.sack
3843 for variant in be le; do
3844 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3845 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3847 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.
3852 AT_SETUP([zcompressed data - compression expands data too much])
3853 AT_KEYWORDS([sack synthetic system file negative zlib])
3854 zcompressed_sack | sed 's/.*uncompressed_size.*/>>50<<;/
3855 s/.*@%:@ compressed_size.*/>>100<<;/' > sys-file.sack
3856 for variant in be le; do
3857 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3858 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3860 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.
3865 AT_SETUP([zcompressed data - compressed sizes don't add up])
3866 AT_KEYWORDS([sack synthetic system file negative zlib])
3867 zcompressed_sack | sed 's/.*@%:@ compressed_size.*/>>88<<;/' > sys-file.sack
3868 for variant in be le; do
3869 AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
3870 AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
3872 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.