1 dnl PSPP - a program for statistical analysis.
2 dnl Copyright (C) 2017 Free Software Foundation, Inc.
4 dnl This program is free software: you can redistribute it and/or modify
5 dnl it under the terms of the GNU General Public License as published by
6 dnl the Free Software Foundation, either version 3 of the License, or
7 dnl (at your option) any later version.
9 dnl This program is distributed in the hope that it will be useful,
10 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
11 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 dnl GNU General Public License for more details.
14 dnl You should have received a copy of the GNU General Public License
15 dnl along with this program. If not, see <http://www.gnu.org/licenses/>.
17 AT_BANNER([variable display attributes])
19 AT_SETUP([variable display attribute commands])
20 AT_KEYWORDS([VARIABLE ALIGNMENT])
21 AT_KEYWORDS([VARIABLE WIDTH])
22 AT_KEYWORDS([VARIABLE LEVEL])
23 AT_KEYWORDS([VARIABLE ROLE])
24 AT_DATA([var-display.sps], [dnl
25 DATA LIST FREE /x y z.
26 VARIABLE ALIGNMENT x (LEFT)/y (RIGHT)/z (CENTER).
27 VARIABLE WIDTH x (10)/y (12)/z (14).
28 VARIABLE LEVEL x (SCALE)/y (ORDINAL)/z (NOMINAL).
29 VARIABLE ROLE /TARGET x /BOTH y /NONE z.
32 AT_CHECK([pspp -o pspp.csv var-display.sps])
33 AT_CHECK([cat pspp.csv], [0], [dnl
35 Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
36 x,1,Scale,Output,10,Left,F8.2,F8.2
37 y,2,Ordinal,Both,12,Right,F8.2,F8.2
38 z,3,Nominal,None,14,Center,F8.2,F8.2
42 AT_SETUP([variable display attribute syntax errors])
43 AT_KEYWORDS([VARIABLE ALIGNMENT])
44 AT_KEYWORDS([VARIABLE WIDTH])
45 AT_KEYWORDS([VARIABLE LEVEL])
46 AT_KEYWORDS([VARIABLE ROLE])
47 AT_DATA([var-display.sps], [dnl
48 DATA LIST LIST NOTABLE /x y z.
49 VARIABLE ALIGNMENT **.
50 VARIABLE ALIGNMENT x **.
51 VARIABLE ALIGNMENT x (**).
52 VARIABLE ALIGNMENT x (LEFT **).
55 VARIABLE WIDTH x (**).
56 VARIABLE WIDTH x (10 **).
59 VARIABLE LEVEL x (**).
60 VARIABLE LEVEL x (SCALE **).
63 VARIABLE ROLE /INPUT **.
64 VARIABLE ROLE /INPUT x **.
66 AT_CHECK([pspp -O format=csv var-display.sps], [1], [dnl
67 "var-display.sps:2.20-2.21: error: VARIABLE ALIGNMENT: Syntax error expecting variable name.
68 2 | VARIABLE ALIGNMENT **.
71 "var-display.sps:3.22-3.23: error: VARIABLE ALIGNMENT: Syntax error expecting `('.
72 3 | VARIABLE ALIGNMENT x **.
75 "var-display.sps:4.23-4.24: error: VARIABLE ALIGNMENT: Syntax error expecting LEFT, RIGHT, or CENTER.
76 4 | VARIABLE ALIGNMENT x (**).
79 "var-display.sps:5.28-5.29: error: VARIABLE ALIGNMENT: Syntax error expecting `)'.
80 5 | VARIABLE ALIGNMENT x (LEFT **).
83 "var-display.sps:6.16-6.17: error: VARIABLE WIDTH: Syntax error expecting variable name.
84 6 | VARIABLE WIDTH **.
87 "var-display.sps:7.18-7.19: error: VARIABLE WIDTH: Syntax error expecting `('.
88 7 | VARIABLE WIDTH x **.
91 "var-display.sps:8.19-8.20: error: VARIABLE WIDTH: Syntax error expecting positive integer.
92 8 | VARIABLE WIDTH x (**).
95 "var-display.sps:9.22-9.23: error: VARIABLE WIDTH: Syntax error expecting `)'.
96 9 | VARIABLE WIDTH x (10 **).
99 "var-display.sps:10.16-10.17: error: VARIABLE LEVEL: Syntax error expecting variable name.
100 10 | VARIABLE LEVEL **.
103 "var-display.sps:11.18-11.19: error: VARIABLE LEVEL: Syntax error expecting `('.
104 11 | VARIABLE LEVEL x **.
107 "var-display.sps:12.19-12.20: error: VARIABLE LEVEL: Syntax error expecting SCALE, ORDINAL, or NOMINAL.
108 12 | VARIABLE LEVEL x (**).
111 "var-display.sps:13.25-13.26: error: VARIABLE LEVEL: Syntax error expecting `)'.
112 13 | VARIABLE LEVEL x (SCALE **).
115 "var-display.sps:14.15-14.16: error: VARIABLE ROLE: Syntax error expecting `/'.
116 14 | VARIABLE ROLE **.
119 "var-display.sps:15.17-15.18: error: VARIABLE ROLE: Syntax error expecting INPUT, TARGET, BOTH, NONE, PARTITION, or SPLIT.
120 15 | VARIABLE ROLE / **.
123 "var-display.sps:16.22-16.23: error: VARIABLE ROLE: Syntax error expecting variable name.
124 16 | VARIABLE ROLE /INPUT **.
127 "var-display.sps:17.24-17.25: error: VARIABLE ROLE: Syntax error expecting `/'.
128 17 | VARIABLE ROLE /INPUT x **.
133 AT_SETUP([variable level inference and SCALEMIN])
134 AT_DATA([var-level.sps], [dnl
135 DATA LIST LIST NOTABLE /n1 to n3 s1 to s5.
137 * Nominal formats (copied from data that will default to scale).
140 FORMATS n4(WKDAY5) n5(MONTH5).
142 * Scale formats (copied from data that will default to nominal).
146 FORMATS s6(DOLLAR6.2) s7(CCA8.2) s8(DATETIME17).
152 * n1 has 10 unique small values -> nominal.
153 * n2 has 23 unique small values -> nominal.
154 * n3 is all missing -> nominal.
155 * s1 has 24 unique small values -> scale.
156 * s2 has one negative value -> scale.
157 * s3 has one non-integer value -> scale.
158 * s4 has no valid values less than 10 -> scale.
159 * s5 has no valid values less than 10,000 -> scale.
170 10 10 . 10 10 10.5 19 110000
171 1 11 . 11 -1 1 11 10001
172 2 12 . 12 2 2 12 10002
173 3 13 . 13 3 3 13 10003
174 4 14 . 14 4 4 14 10004
175 5 15 . 15 5 5 15 10005
176 6 16 . 16 6 6 16 10006
177 7 17 . 17 7 7 17 10007
178 8 18 . 18 8 8 18 10008
179 9 19 . 19 9 9 19 10009
180 1 20 . 20 1 1 20 10001
181 2 21 . 21 2 2 21 10002
182 3 22 . 22 3 3 22 10003
183 4 23 . 23 4 4 23 10004
184 5 23 . 24 5 5 24 10005
185 6 23 . 24 6 6 25 10006
189 AT_CHECK([pspp -o pspp.csv var-level.sps])
190 AT_CHECK([cat pspp.csv], [0], [dnl
192 Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
193 n1,1,Unknown,Input,8,Right,F8.2,F8.2
194 n2,2,Unknown,Input,8,Right,F8.2,F8.2
195 n3,3,Unknown,Input,8,Right,F8.2,F8.2
196 s1,4,Unknown,Input,8,Right,F8.2,F8.2
197 s2,5,Unknown,Input,8,Right,F8.2,F8.2
198 s3,6,Unknown,Input,8,Right,F8.2,F8.2
199 s4,7,Unknown,Input,8,Right,F8.2,F8.2
200 s5,8,Unknown,Input,8,Right,F8.2,F8.2
201 n4,9,Unknown,Input,8,Right,WKDAY5,WKDAY5
202 n5,10,Unknown,Input,8,Right,MONTH5,MONTH5
203 s6,11,Unknown,Input,8,Right,DOLLAR6.2,DOLLAR6.2
204 s7,12,Unknown,Input,8,Right,CCA8.2,CCA8.2
205 s8,13,Unknown,Input,8,Right,DATETIME17.0,DATETIME17.0
206 string,14,Nominal,Input,8,Left,A8,A8
209 Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
210 n1,1,Nominal,Input,8,Right,F8.2,F8.2
211 n2,2,Nominal,Input,8,Right,F8.2,F8.2
212 n3,3,Nominal,Input,8,Right,F8.2,F8.2
213 s1,4,Scale,Input,8,Right,F8.2,F8.2
214 s2,5,Scale,Input,8,Right,F8.2,F8.2
215 s3,6,Scale,Input,8,Right,F8.2,F8.2
216 s4,7,Scale,Input,8,Right,F8.2,F8.2
217 s5,8,Scale,Input,8,Right,F8.2,F8.2
218 n4,9,Nominal,Input,8,Right,WKDAY5,WKDAY5
219 n5,10,Nominal,Input,8,Right,MONTH5,MONTH5
220 s6,11,Scale,Input,8,Right,DOLLAR6.2,DOLLAR6.2
221 s7,12,Scale,Input,8,Right,CCA8.2,CCA8.2
222 s8,13,Scale,Input,8,Right,DATETIME17.0,DATETIME17.0
223 string,14,Nominal,Input,8,Left,A8,A8
227 AT_BANNER([VARIABLE LABELS])
229 AT_SETUP([variable labels])
231 dnl The following test is to make sure the TVARS command works and that
232 dnl variables are displayed accordingly.
233 AT_DATA([var-labels.sps], [dnl
234 DATA LIST LIST NOTABLE /x * y *.
242 * While no labels have been set, the TVARS is irrelevant.
252 VARIABLE LABEL x 'foo' y 'bar'.
254 * Now, the TVARS setting should have effect
266 AT_CHECK([pspp -o pspp.csv -o pspp.txt var-labels.sps])
267 AT_CHECK([cat pspp.csv], [0],[dnl
268 Table: Descriptive Statistics
269 ,N,Mean,Std Dev,Minimum,Maximum
270 x,4,2.50,1.29,1.00,4.00
271 y,4,250.00,129.10,100.00,400.00
272 Valid N (listwise),4,,,,
273 Missing N (listwise),0,,,,
275 Table: Descriptive Statistics
276 ,N,Mean,Std Dev,Minimum,Maximum
277 x,4,2.50,1.29,1.00,4.00
278 y,4,250.00,129.10,100.00,400.00
279 Valid N (listwise),4,,,,
280 Missing N (listwise),0,,,,
282 Table: Descriptive Statistics
283 ,N,Mean,Std Dev,Minimum,Maximum
284 x,4,2.50,1.29,1.00,4.00
285 y,4,250.00,129.10,100.00,400.00
286 Valid N (listwise),4,,,,
287 Missing N (listwise),0,,,,
289 Table: Descriptive Statistics
290 ,N,Mean,Std Dev,Minimum,Maximum
291 x,4,2.50,1.29,1.00,4.00
292 y,4,250.00,129.10,100.00,400.00
293 Valid N (listwise),4,,,,
294 Missing N (listwise),0,,,,
296 Table: Descriptive Statistics
297 ,N,Mean,Std Dev,Minimum,Maximum
298 foo,4,2.50,1.29,1.00,4.00
299 bar,4,250.00,129.10,100.00,400.00
300 Valid N (listwise),4,,,,
301 Missing N (listwise),0,,,,
303 Table: Descriptive Statistics
304 ,N,Mean,Std Dev,Minimum,Maximum
305 x foo,4,2.50,1.29,1.00,4.00
306 y bar,4,250.00,129.10,100.00,400.00
307 Valid N (listwise),4,,,,
308 Missing N (listwise),0,,,,