AT_BANNER([DATA LIST]) AT_SETUP([DATA LIST LIST with empty fields]) AT_DATA([data-list.pspp], [dnl DATA LIST LIST NOTABLE /A B C (F1.0). BEGIN DATA. ,, ,,3 ,2, ,2,3 1,, 1,,3 1,2, 1,2,3 END DATA. LIST. ]) AT_CHECK([pspp -O format=csv data-list.pspp], [0], [dnl Table: Data List A,B,C .,.,. .,.,3 .,2,. .,2,3 1,.,. 1,.,3 1,2,. 1,2,3 ]) AT_CLEANUP AT_SETUP([DATA LIST LIST with explicit delimiters]) AT_DATA([data-list.pspp], [dnl data list list ('|','X') /A B C D. begin data. 1|23X45|2.03x 2X22|34|23| 3|34|34X34 end data. list. ]) AT_CHECK([pspp -O format=csv data-list.pspp], [0], [dnl Table: Reading free-form data from INLINE. Variable,Format A,F8.0 B,F8.0 C,F8.0 D,F8.0 data-list.pspp:3.9-13: warning: Data for variable D is not valid as format F: Number followed by garbage. Table: Data List A,B,C,D 1.00,23.00,45.00,. @&t@ 2.00,22.00,34.00,23.00 3.00,34.00,34.00,34.00 ]) AT_CLEANUP AT_SETUP([DATA LIST FREE with SKIP]) AT_DATA([data-list.pspp], [dnl data list free skip=1/A B C D. begin data. # This record is ignored. ,1,2,x ,4,,5 6 7, 8 9 0,1 ,,, ,,,, 2 3 4 5 end data. list. ]) AT_CHECK([pspp -O format=csv data-list.pspp], [0], [dnl data-list.pspp:4.6: warning: Data for variable D is not valid as format F: Field contents are not numeric. Table: Data List A,B,C,D . ,1.00,2.00,. @&t@ . ,4.00,. ,5.00 6.00,7.00,8.00,9.00 .00,1.00,. ,. @&t@ . ,. ,. ,. @&t@ 2.00,3.00,4.00,5.00 ]) AT_CLEANUP AT_SETUP([DATA LIST LIST with SKIP and tab delimiter]) AT_DATA([data-list.pspp], [dnl data list free (tab) skip=2/A B C D. begin data. # These records # are skipped. 1 2 3 4 1 2 3 @&t@ 1 2 4 1 2 @&t@ 1 3 4 1 3 @&t@ 1 4 1 @&t@ 2 3 4 2 3 @&t@ 2 4 2 @&t@ 3 4 3 @&t@ 4 @&t@ end data. list. ]) AT_CHECK([pspp -O format=csv data-list.pspp], [0], [dnl Table: Data List A,B,C,D 1.00,2.00,3.00,4.00 1.00,2.00,3.00,. @&t@ 1.00,2.00,. ,4.00 1.00,2.00,. ,. @&t@ 1.00,. ,3.00,4.00 1.00,. ,3.00,. @&t@ 1.00,. ,. ,4.00 1.00,. ,. ,. @&t@ . ,2.00,3.00,4.00 . ,2.00,3.00,. @&t@ . ,2.00,. ,4.00 . ,2.00,. ,. @&t@ . ,. ,3.00,4.00 . ,. ,3.00,. @&t@ . ,. ,. ,4.00 . ,. ,. ,. @&t@ ]) AT_CLEANUP AT_SETUP([DATA LIST FIXED with multiple records per case]) AT_DATA([data-list.pspp], [dnl data list fixed notable /1 start 1-20 (adate) /2 end 1-20 (adate) /3 count 1-3. begin data. 07-22-2007 10-06-2007 x 07-14-1789 08-26-1789 xy 01-01-1972 12-31-1999 682 end data. list. ]) AT_CHECK([pspp -O format=csv data-list.pspp], [0], [dnl data-list.pspp:8.1-3: warning: Data for variable count is not valid as format F: Field contents are not numeric. data-list.pspp:11.1-3: warning: Data for variable count is not valid as format F: Field contents are not numeric. Table: Data List start,end,count 07/22/2007,10/06/2007,. 07/14/1789,08/26/1789,. 01/01/1972,12/31/1999,682 ]) AT_CLEANUP AT_SETUP([DATA LIST FIXED with empty trailing record]) AT_DATA([data-list.pspp], [dnl data list fixed notable records=2/x 1 y 2. begin data. 12 34 56 78 90 end data. list. ]) AT_CHECK([pspp -O format=csv data-list.pspp], [0], [dnl Table: Data List x,y 1,2 3,4 5,6 7,8 9,0 ]) AT_CLEANUP dnl Test that PSPP accepts LF and CR LF as line ends, but dnl treats isolated CR as linear whitespace. AT_SETUP([DATA LIST with various line-ends]) AT_DATA([data-list.sps], [dnl data list list notable file='input.txt'/a b c. list. ]) printf '1 2 3\n4 5 6\r\n7\r8\r9\r\n10 11 12\n13 14 15 \r\n16\r\r17\r18\n' > input.txt dnl Make sure that input.txt actually received the data that we expect. dnl It might not have, if we're running on a system that translates \n dnl into some other sequence. AT_CHECK([cksum input.txt], [0], [1732021750 50 input.txt ]) AT_CHECK([pspp -o pspp.csv data-list.sps]) AT_CHECK([cat pspp.csv], [0], [dnl Table: Data List a,b,c 1.00,2.00,3.00 4.00,5.00,6.00 7.00,8.00,9.00 10.00,11.00,12.00 13.00,14.00,15.00 16.00,17.00,18.00 ]) AT_CLEANUP