tests: Fix synthetic system file reader tests on Windows.
[pspp] / tests / data / sys-file-reader.at
index afe3bff3b5d87195ebad697c8d048706bcb0445c..2cdbc330846d7cf72ebb964b9a0f683e2ba1f5c8 100644 (file)
@@ -1,16 +1,16 @@
 dnl PSPP - a program for statistical analysis.
 dnl Copyright (C) 2017 Free Software Foundation, Inc.
-dnl 
+dnl
 dnl This program is free software: you can redistribute it and/or modify
 dnl it under the terms of the GNU General Public License as published by
 dnl the Free Software Foundation, either version 3 of the License, or
 dnl (at your option) any later version.
-dnl 
+dnl
 dnl This program is distributed in the hope that it will be useful,
 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 dnl GNU General Public License for more details.
-dnl 
+dnl
 dnl You should have received a copy of the GNU General Public License
 dnl along with this program.  If not, see <http://www.gnu.org/licenses/>.
 dnl
@@ -147,7 +147,8 @@ LIST.
 ])
   AT_CHECK([pspp -o pspp.csv sys-file.sps])
   AT_CHECK([cat pspp.csv], [0], [dnl
-File label: PSPP synthetic test file: ôõöø
+Table: File Label
+Label,PSPP synthetic test file: ôõöø
 
 Table: Variables
 Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
@@ -188,7 +189,7 @@ dnl File header.
 2; dnl Layout code
 -1; dnl Nominal case size (unspecified)
 0; dnl Not compressed
-0; dnl Not weighted 
+0; dnl Not weighted
 1; dnl 1 case.
 100.0; dnl Bias.
 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
@@ -208,7 +209,7 @@ dnl Dictionary termination record.
 999; 0;
 
 dnl Data.
-1.0; 2.0; 
+1.0; 2.0;
 ])
 for variant in be le; do
   AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
@@ -239,7 +240,7 @@ dnl File header.
 2; dnl Layout code
 -1; dnl Nominal case size (unspecified)
 0; dnl Not compressed
-0; dnl Not weighted 
+0; dnl Not weighted
 1; dnl 1 case.
 100.0; dnl Bias.
 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
@@ -262,7 +263,7 @@ dnl Dictionary termination record.
 999; 0;
 
 dnl Data.
-1.0; 2.0; 
+1.0; 2.0;
 ])
 for variant in be le; do
   AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
@@ -293,7 +294,7 @@ dnl File header.
 2; dnl Layout code
 22; dnl Nominal case size
 0; dnl Not compressed
-0; dnl Not weighted 
+0; dnl Not weighted
 1; dnl 1 case.
 100.0; dnl Bias.
 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
@@ -427,7 +428,7 @@ str16,16,,Nominal,Input,16,Left,A16,A16,
 str17,17,,Nominal,Input,17,Left,A17,A17,
 
 Table: Value Labels
-Variable,Value,Label
+Variable Value,,Label
 num1,1,один (in Russian)
 num2,1,one
 ,2,two
@@ -476,7 +477,7 @@ dnl File header.
 2; dnl Layout code
 1; dnl Nominal case size
 0; dnl Not compressed
-0; dnl Not weighted 
+0; dnl Not weighted
 1; dnl 1 case.
 100.0; dnl Bias.
 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
@@ -515,17 +516,12 @@ LIST.
 ])
   AT_CHECK([pspp -o pspp.csv sys-file.sps])
   AT_CHECK([cat pspp.csv], [0], [dnl
-Documents in the active dataset:
-
-First line of documents
-
+Table: Documents
+"First line of documents
 Second line of documents
-
 abbé appliqué attaché blasé café canapé cliché consommé
 
-
-
-Last line of documents
+Last line of documents"
 
 Table: Data List
 num1
@@ -542,7 +538,7 @@ dnl File header.
 2; dnl Layout code
 1; dnl Nominal case size
 0; dnl Not compressed
-0; dnl Not weighted 
+0; dnl Not weighted
 1; dnl 1 case.
 100.0; dnl Bias.
 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
@@ -589,7 +585,7 @@ dnl File header.
 2; dnl Layout code
 16; dnl Nominal case size
 0; dnl Not compressed
-0; dnl Not weighted 
+0; dnl Not weighted
 0; dnl No cases.
 100.0; dnl Bias.
 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
@@ -651,47 +647,23 @@ MRSETS /DISPLAY NAME=ALL.
   AT_CHECK([pspp -o pspp.csv sys-file.sps])
   AT_CHECK([cat pspp.csv], [0], [dnl
 Table: Multiple Response Sets
-Name,Variables,Details
-$a,"あ
+Name,Label,Encoding,Counted Value,Member Variables
+$a,my mcgroup,Categories,,"あ
 b
-c
-","Multiple category set
-Label: my mcgroup
-"
-$b,"g
+c"
+$b,,Dichotomies,55,"g
 e
 f
-d
-","Multiple dichotomy set
-Counted value: 55
-Category label source: Variable labels
-"
-$c,"h
+d"
+$c,mdgroup #2,Dichotomies,はい,"h
 i
-j
-","Multiple dichotomy set
-Label: mdgroup #2
-Label source: Provided by user
-Counted value: `はい'
-Category label source: Variable labels
-"
-$d,"k
+j"
+$d,third mdgroup,Dichotomies,34,"k
 l
-m
-","Multiple dichotomy set
-Label: third mdgroup
-Label source: Provided by user
-Counted value: 34
-Category label source: Value labels of counted value
-"
-$e,"n
+m"
+$e,,Dichotomies,choice,"n
 o
-p
-","Multiple dichotomy set
-Label source: First variable label among variables
-Counted value: `choice'
-Category label source: Value labels of counted value
-"
+p"
 ])
 done
 AT_CLEANUP
@@ -727,18 +699,19 @@ dnl Character encoding record.
 dnl Dictionary termination record.
 999; 0;
 ])
-for variant in be le; do
+for variant in be; do
   AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
   AT_DATA([sys-file.sps], [dnl
 SYSFILE INFO FILE='sys-file.sav'.
 ])
   AT_CHECK([pspp -o pspp.csv sys-file.sps])
-  AT_CHECK([sed 7q pspp.csv], [0], [dnl
-File:,sys-file.sav
-Label:,"PSPP synthetic
+  AT_CHECK([sed 8q pspp.csv], [0], [dnl
+Table: File Information
+File,sys-file.sav
+Label,"PSPP synthetic
 test file"
-Created:,01 Jan 11 20:53:52 by $(@%:@) SPSS DATA FILE PSPP synthetic test file
-Product:,"Extra product info
+Created,01 Jan 11 20:53:52 by $(@%:@) SPSS DATA FILE PSPP synthetic test file
+Product,"Extra product info
 another line
 blah"
 ])
@@ -753,7 +726,7 @@ dnl File header.
 2; dnl Layout code
 19; dnl Nominal case size
 0; dnl Not compressed
-0; dnl Not weighted 
+0; dnl Not weighted
 0; dnl No cases.
 100.0; dnl Bias.
 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
@@ -836,7 +809,7 @@ dnl File header.
 2; dnl Layout code
 19; dnl Nominal case size
 0; dnl Not compressed
-0; dnl Not weighted 
+0; dnl Not weighted
 0; dnl No cases.
 100.0; dnl Bias.
 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
@@ -919,7 +892,7 @@ dnl File header.
 2; dnl Layout code
 7; dnl Nominal case size
 0; dnl Not compressed
-0; dnl Not weighted 
+0; dnl Not weighted
 0; dnl No cases.
 100.0; dnl Bias.
 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
@@ -986,7 +959,7 @@ dnl File header.
 2; dnl Layout code
 109; dnl Nominal case size
 0; dnl Not compressed
-0; dnl Not weighted 
+0; dnl Not weighted
 1; dnl No cases.
 100.0; dnl Bias.
 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
@@ -1055,7 +1028,7 @@ dnl File header.
 2; dnl Layout code
 3; dnl Nominal case size
 0; dnl Not compressed
-0; dnl Not weighted 
+0; dnl Not weighted
 0; dnl 1 case.
 100.0; dnl Bias.
 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
@@ -1112,7 +1085,7 @@ DISPLAY @ATTRIBUTES.
   AT_CHECK([pspp -o pspp.csv sys-file.sps])
   AT_CHECK([cat pspp.csv], [0],
 [[Table: Variable and Dataset Attributes
-Variable,Name,Value
+Variable and Name,,Value
 (dataset),Attr1[1],Value1
 ,Attr1[2],'déclaration'
 ,SécondAttr[1],123
@@ -1215,7 +1188,7 @@ dnl File header.
 2; dnl Layout code
 6; dnl Nominal case size
 1; dnl Simple compression
-0; dnl Not weighted 
+0; dnl Not weighted
 -1; dnl Unspecified number of cases.
 100.0; dnl Bias.
 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
@@ -1263,8 +1236,8 @@ str15,5,,Nominal,Input,15,Left,A15,A15,
 
 Table: Data List
 num1,num2,str4,str8,str15
--99,0,,abcdefgh,0123   @&t@
-.,151,jklm,nopqrstu,vwxyzABC       @&t@
+-99,0,,abcdefgh,0123
+.,151,jklm,nopqrstu,vwxyzABC
 1,2,DEFG,HIJKLMNO,PQRSTUV
 ])
 done
@@ -1278,7 +1251,7 @@ dnl File header.
 2; dnl Layout code
 6; dnl Nominal case size
 1; dnl Simple compression.
-0; dnl Not weighted 
+0; dnl Not weighted
 -1; dnl Unspecified number of cases.
 0.0; dnl Bias.
 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
@@ -1326,8 +1299,8 @@ str15,5,,Nominal,Input,15,Left,A15,A15,
 
 Table: Data List
 num1,num2,str4,str8,str15
-1,100,,abcdefgh,0123   @&t@
-.,251,jklm,nopqrstu,vwxyzABC       @&t@
+1,100,,abcdefgh,0123
+.,251,jklm,nopqrstu,vwxyzABC
 101,102,DEFG,HIJKLMNO,PQRSTUV
 ])
 done
@@ -1341,7 +1314,7 @@ dnl File header.
 2; dnl Layout code
 6; dnl Nominal case size
 1; dnl Simple compression.
-0; dnl Not weighted 
+0; dnl Not weighted
 -1; dnl Unspecified number of cases.
 50.0; dnl Bias.
 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
@@ -1377,7 +1350,7 @@ GET FILE='sys-file.sav'.
 DISPLAY DICTIONARY.
 LIST.
 ])
-  AT_CHECK([pspp -o pspp.csv sys-file.sps], [0], 
+  AT_CHECK([pspp -o pspp.csv sys-file.sps], [0],
     [warning: `sys-file.sav' near offset 0x54: Compression bias is not the usual value of 100, or system file uses unrecognized floating-point format.
 ])
   AT_CHECK([cat pspp.csv], [0], [dnl
@@ -1393,8 +1366,8 @@ str15,5,,Nominal,Input,15,Left,A15,A15,
 
 Table: Data List
 num1,num2,str4,str8,str15
--49,50,,abcdefgh,0123   @&t@
-.,201,jklm,nopqrstu,vwxyzABC       @&t@
+-49,50,,abcdefgh,0123
+.,201,jklm,nopqrstu,vwxyzABC
 51,52,DEFG,HIJKLMNO,PQRSTUV
 ])
 done
@@ -1491,8 +1464,8 @@ str15,5,,Nominal,Input,15,Left,A15,A15,
 
 Table: Data List
 num1,num2,str4,str8,str15
--99,0,,abcdefgh,0123   @&t@
-.,151,jklm,nopqrstu,vwxyzABC       @&t@
+-99,0,,abcdefgh,0123
+.,151,jklm,nopqrstu,vwxyzABC
 1,2,DEFG,HIJKLMNO,PQRSTUV
 ])
 done
@@ -1590,7 +1563,7 @@ for variant in be le; do
   AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
 ])
-  AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
+  AT_CHECK([pspp -O format=csv sys-file.sps], [1],
    [error: `sys-file.sav' near offset 0xd4: Misplaced type 4 record.
 ])
 done
@@ -1613,7 +1586,7 @@ for variant in be le; do
   AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
 ])
-  AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
+  AT_CHECK([pspp -O format=csv sys-file.sps], [1],
    [error: `sys-file.sav' near offset 0xd4: Unrecognized record type 8.
 ])
 done
@@ -1639,7 +1612,7 @@ for variant in be le; do
   AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
 ])
-  AT_CHECK([pspp -O format=csv sys-file.sps], [0], 
+  AT_CHECK([pspp -O format=csv sys-file.sps], [0],
    [warning: `sys-file.sav': File header claims 2 variable positions but 1 were read from file.
 ])
 done
@@ -1665,8 +1638,8 @@ for variant in be le; do
   AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
 ])
-  AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
-   [error: `sys-file.sav' near offset 0xb4: Invalid variable name `$UM1'.
+  AT_CHECK([pspp -O format=csv sys-file.sps], 0,
+   [warning: `sys-file.sav' near offset 0xb4: Renaming variable with invalid name `$UM1' to `VAR001'.
 ])
 done
 AT_CLEANUP
@@ -1691,8 +1664,8 @@ for variant in be le; do
   AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
 ])
-  AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
-   [error: `sys-file.sav' near offset 0xb4: Invalid variable name `TO'.
+  AT_CHECK([pspp -O format=csv sys-file.sps], 0,
+   [warning: `sys-file.sav' near offset 0xb4: Renaming variable with invalid name `TO' to `VAR001'.
 ])
 done
 AT_CLEANUP
@@ -1717,7 +1690,7 @@ for variant in be le; do
   AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
 ])
-  AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
+  AT_CHECK([pspp -O format=csv sys-file.sps], [1],
    [error: `sys-file.sav' near offset 0xb4: Bad width 256 for variable VAR1.
 ])
 done
@@ -1778,7 +1751,7 @@ for variant in be le; do
   AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
 ])
-  AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
+  AT_CHECK([pspp -O format=csv sys-file.sps], [1],
    [error: `sys-file.sav' near offset 0xb4: Variable label indicator field is not 0 or 1.
 ])
 done
@@ -1804,7 +1777,7 @@ for variant in be le; do
   AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
 ])
-  AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
+  AT_CHECK([pspp -O format=csv sys-file.sps], [1],
    ["error: `sys-file.sav' near offset 0xb4: Numeric missing value indicator field is not -3, -2, 0, 1, 2, or 3."
 ])
 done
@@ -1830,7 +1803,7 @@ for variant in be le; do
   AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
 ])
-  AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
+  AT_CHECK([pspp -O format=csv sys-file.sps], [1],
    ["error: `sys-file.sav' near offset 0xb4: String missing value indicator field is not 0, 1, 2, or 3."
 ])
 done
@@ -1857,7 +1830,7 @@ for variant in be le; do
   AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
 ])
-  AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
+  AT_CHECK([pspp -O format=csv sys-file.sps], [1],
    [error: `sys-file.sav' near offset 0xb4: Missing string continuation record.
 ])
 done
@@ -2026,7 +1999,7 @@ for variant in be le; do
 DISPLAY DICTIONARY.
 ])
   AT_CHECK([pspp -O format=csv sys-file.sps], [0],
-   [warning: `sys-file.sav': Ignoring string variable `STR1' set as weighting variable.
+   [warning: `sys-file.sav' near offset 0x4c: Ignoring string variable `STR1' set as weighting variable.
 
 Table: Variables
 Name,Position,Label,Measurement Level,Role,Width,Alignment,Print Format,Write Format,Missing Values
@@ -2059,13 +2032,13 @@ for variant in be le; do
   AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
 ])
-  AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
-   [error: `sys-file.sav' near offset 0x4c: Variable index 3 not in valid range 1...2.
+  AT_CHECK([pspp -O format=csv sys-file.sps], 0,
+   [warning: `sys-file.sav' near offset 0x4c: Weight variable index 3 not in valid range 1...2.  Treating file as unweighted.
 ])
 done
 AT_CLEANUP
 
-AT_SETUP([variable index is long string contination])
+AT_SETUP([variable index is long string continuation])
 AT_KEYWORDS([sack synthetic system file negative])
 AT_DATA([sys-file.sack], [dnl
 dnl File header.
@@ -2089,8 +2062,8 @@ for variant in be le; do
   AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
 ])
-  AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
-   [error: `sys-file.sav' near offset 0x4c: Variable index 3 refers to long string continuation.
+  AT_CHECK([pspp -O format=csv sys-file.sps], 0,
+   [warning: `sys-file.sav' near offset 0x4c: Weight variable index 3 refers to long string continuation.  Treating file as unweighted.
 ])
 done
 AT_CLEANUP
@@ -2102,18 +2075,19 @@ dnl File header.
 "$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
 2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
 
-dnl Numeric variable, no label or missing values.
+dnl Numeric variables, no label or missing values.
 2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
+2; 0; 0; 0; 0x050800 *2; s8 "NUM2";
 
 dnl Two document records.
 (6; 1; s80 "One line of documents") >>* 2<<;
 
-dnl Dictionary termination record.
-999; 0;
-
 dnl Character encoding record.
 7; 20; 1; 12; "windows-1252";
 
+dnl Dictionary termination record.
+999; 0;
+
 dnl Data.
 1.0;
 ])
@@ -2122,8 +2096,8 @@ for variant in be le; do
   AT_DATA([sys-file.sps], [dnl
 GET FILE='sys-file.sav'.
 ])
-  AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
-error: `sys-file.sav' near offset 0x12c: Duplicate type 6 (document) record.
+  AT_CHECK([pspp -O format=csv sys-file.sps], 0, [dnl
+warning: `sys-file.sav' near offset 0x14c: Duplicate type 6 (document) record.
 ])
 done
 AT_CLEANUP
@@ -2414,31 +2388,16 @@ warning: `sys-file.sav': Invalid multiple response set name `b'.
 warning: `sys-file.sav': Invalid multiple response set name `e'.
 
 Table: Multiple Response Sets
-Name,Variables,Details
-$a,"あ
+Name,Label,Encoding,Counted Value,Member Variables
+$a,my mcgroup,Categories,,"あ
 b
-c
-","Multiple category set
-Label: my mcgroup
-"
-$c,"h
+c"
+$c,mdgroup #2,Dichotomies,はい,"h
 i
-j
-","Multiple dichotomy set
-Label: mdgroup #2
-Label source: Provided by user
-Counted value: `はい'
-Category label source: Variable labels
-"
-$d,"k
+j"
+$d,third mdgroup,Dichotomies,34,"k
 l
-m
-","Multiple dichotomy set
-Label: third mdgroup
-Label source: Provided by user
-Counted value: 34
-Category label source: Value labels of counted value
-"
+m"
 ])
 done
 AT_CLEANUP
@@ -3213,8 +3172,82 @@ for variant in be le; do
   AT_DATA([sys-file.sps], [dnl
 GET FILE='sys-file.sav'.
 ])
-  AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
-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.
+  AT_CHECK([pspp -O format=csv sys-file.sps], 0, [dnl
+warning: `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.
+])
+done
+AT_CLEANUP
+
+AT_SETUP([value label variable indexes must be in correct range])
+AT_KEYWORDS([sack synthetic system file negative])
+AT_DATA([sys-file.sack], [dnl
+dnl File header.
+"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
+2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
+
+dnl Variables.
+2; 6; 0; 0; 0x010600 *2; s8 "STR1";
+2; 0; 0; 0; 0x050800 *2; s8 "NUM1";
+
+dnl Value labels with bad variable indexes.
+3; 1; s8 "xyzzy"; i8 3; s7 "one"; 4; 2; >>3; 4;<<
+3; 1; s8 "xyzzy"; i8 3; s7 "one"; 4; 2; >>5; 6;<<
+3; 1; s8 "xyzzy"; i8 3; s7 "one"; 4; 2; >>7; 8;<<
+
+dnl Character encoding record.
+7; 20; 1; 12; "windows-1252";
+
+dnl End of dictionary.
+999; 0;
+])
+for variant in be le; do
+  AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
+  AT_DATA([sys-file.sps], [dnl
+GET FILE='sys-file.sav'.
+])
+  AT_CHECK([pspp -O format=csv sys-file.sps], 0, [dnl
+warning: `sys-file.sav' near offset 0xf4: Value label variable index 3 not in valid range 1...2.
+
+warning: `sys-file.sav' near offset 0xf4: Value label variable index 4 not in valid range 1...2.
+
+warning: `sys-file.sav' near offset 0x11c: Value label variable index 5 not in valid range 1...2.
+
+warning: `sys-file.sav' near offset 0x11c: Value label variable index 6 not in valid range 1...2.
+
+warning: `sys-file.sav' near offset 0x144: Value label variable index 7 not in valid range 1...2.
+
+warning: `sys-file.sav': Suppressed 1 additional warnings for value labels.
+])
+done
+AT_CLEANUP
+
+AT_SETUP([value label variable indexes must not be long string continuation])
+AT_KEYWORDS([sack synthetic system file negative])
+AT_DATA([sys-file.sack], [dnl
+dnl File header.
+"$FL2"; s60 "$(#) SPSS DATA FILE PSPP synthetic test file";
+2; 2; 1; 0; -1; 100.0; "01 Jan 11"; "20:53:52"; s64 ""; i8 0 *3;
+
+dnl Long string variable.
+2; 9; 0; 0; 0x010900 *2; s8 "STR1";
+(2; -1; 0; 0; 0; 0; s8 "");
+
+dnl Value label with long string indexes.
+3; 1; s8 "xyzzy"; i8 3; s7 "one"; 4; 1; >>2;<<
+
+dnl Character encoding record.
+7; 20; 1; 12; "windows-1252";
+
+dnl End of dictionary.
+999; 0;
+])
+for variant in be le; do
+  AT_CHECK([sack --$variant sys-file.sack > sys-file.sav])
+  AT_DATA([sys-file.sps], [dnl
+GET FILE='sys-file.sav'.
+])
+  AT_CHECK([pspp -O format=csv sys-file.sps], 0, [dnl
+warning: `sys-file.sav' near offset 0xf4: Value label variable index 2 refers to long string continuation.
 ])
 done
 AT_CLEANUP
@@ -3244,8 +3277,8 @@ for variant in be le; do
   AT_DATA([sys-file.sps], [dnl
 GET FILE='sys-file.sav'.
 ])
-  AT_CHECK([pspp -O format=csv sys-file.sps], [1], [dnl
-"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."
+  AT_CHECK([pspp -O format=csv sys-file.sps], 0, [dnl
+"warning: `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."
 ])
 done
 AT_CLEANUP
@@ -3493,7 +3526,7 @@ for variant in be le; do
   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
 LIST.
 ])
-  AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
+  AT_CHECK([pspp -O format=csv sys-file.sps], [1],
    [error: Error reading case from file `sys-file.sav'.
 
 Table: Data List
@@ -3530,7 +3563,7 @@ for variant in be le; do
   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
 LIST.
 ])
-  AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
+  AT_CHECK([pspp -O format=csv sys-file.sps], [1],
    [error: `sys-file.sav' near offset 0x12c: File ends in partial case.
 
 Table: Data List
@@ -3564,12 +3597,12 @@ for variant in be le; do
   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
 LIST.
 ])
-  AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
+  AT_CHECK([pspp -O format=csv sys-file.sps], [1],
    [error: `sys-file.sav' near offset 0x12a: Unexpected end of file.
 
 Table: Data List
 str14
-one data item @&t@
+one data item
 ])
 done
 AT_CLEANUP
@@ -3582,7 +3615,7 @@ dnl File header.
 2; dnl Layout code
 6; dnl Nominal case size
 1; dnl Compressed
-0; dnl Not weighted 
+0; dnl Not weighted
 -1; dnl Unspecified number of cases.
 100.0; dnl Bias.
 "01 Jan 11"; "20:53:52"; s64 "PSPP synthetic test file";
@@ -3612,12 +3645,12 @@ for variant in be le; do
   AT_DATA([sys-file.sps], [GET FILE='sys-file.sav'.
 LIST.
 ])
-  AT_CHECK([pspp -O format=csv sys-file.sps], [1], 
+  AT_CHECK([pspp -O format=csv sys-file.sps], [1],
    [error: `sys-file.sav' near offset 0x1ac: File ends in partial case.
 
 Table: Data List
 num1,num2,str4,str8,str15
--99,0,,abcdefgh,0123   @&t@
+-99,0,,abcdefgh,0123
 ])
 done
 AT_CLEANUP