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/>.
16 dnl AT_BANNER([MRSETS])
18 m4_define([DEFINE_MRSETS_DATA],
19 [DATA LIST NOTABLE /w x y z 1-4 a b c d 5-8 (a).
25 m4_define([DEFINE_MRSETS],
29 w 'duplicate variable label'
31 z 'Duplicate variable label'.
34 /y 1 'duplicate Value label'
35 /z 1 'duplicate value Label'
36 /a b c d 'a' 'burger' 'b' 'fries' 'c' 'shake' 'd' 'taco'.
42 LABEL='First multiple dichotomy group'
43 CATEGORYLABELS=VARLABELS
47 CATEGORYLABELS=COUNTEDVALUES
52 CATEGORYLABELS=COUNTEDVALUES
60 LABEL='First multiple category group'
66 m4_define([DEFINE_MRSETS_OUTPUT],
67 [mrsets.sps:25: warning: MRSETS: Variables w and z specified as part of multiple dichotomy group $a have the same variable label. Categories represented by these variables will not be distinguishable in output.
69 mrsets.sps:29: warning: MRSETS: Variable z specified as part of multiple dichotomy group $b (which has CATEGORYLABELS=COUNTEDVALUES) has no value label for its counted value. This category will not be distinguishable in output.
71 mrsets.sps:29: warning: MRSETS: Variable y specified as part of multiple dichotomy group $b (which has CATEGORYLABELS=COUNTEDVALUES) has no value label for its counted value. This category will not be distinguishable in output.
73 mrsets.sps:34: warning: MRSETS: Variable x specified as part of multiple dichotomy group $c (which has CATEGORYLABELS=COUNTEDVALUES) has no value label for its counted value. This category will not be distinguishable in output.
75 mrsets.sps:34: warning: MRSETS: Variables y and z specified as part of multiple dichotomy group $c (which has CATEGORYLABELS=COUNTEDVALUES) have the same value label for the group's counted value. These categories will not be distinguishable in output.
77 mrsets.sps:38: warning: MRSETS: MDGROUP subcommand for group $d specifies LABELSOURCE=VARLABEL but not CATEGORYLABELS=COUNTEDVALUES. Ignoring LABELSOURCE.
79 "mrsets.sps:41: warning: MRSETS: Variables specified on MCGROUP should have the same categories, but w and y (and possibly others) in multiple category group $e have different value labels for value 1."
81 "mrsets.sps:42: warning: MRSETS: Variables specified on MCGROUP should have the same categories, but a and c (and possibly others) in multiple category group $f have different value labels for value b."
84 m4_define([MRSETS_DISPLAY_OUTPUT],
85 [Table: Multiple Response Sets
86 Name,Variables,Details
91 ","Multiple dichotomy set
92 Label: First multiple dichotomy group
93 Label source: Provided by user
95 Category label source: Variable labels
99 ","Multiple dichotomy set
101 Category label source: Value labels of counted value
107 ","Multiple dichotomy set
108 Label: duplicate variable label
109 Label source: First variable label among variables
111 Category label source: Value labels of counted value
117 ","Multiple dichotomy set
119 Category label source: Variable labels
125 ","Multiple category set
126 Label: First multiple category group
132 ","Multiple category set
136 AT_SETUP([MRSETS add, display, delete])
137 AT_DATA([mrsets.sps],
147 AT_CHECK([pspp -O format=csv mrsets.sps], [0],
148 [DEFINE_MRSETS_OUTPUT
149 Table: Multiple Response Sets
150 Name,Variables,Details
155 ","Multiple dichotomy set
156 Label: First multiple dichotomy group
157 Label source: Provided by user
159 Category label source: Variable labels
162 MRSETS_DISPLAY_OUTPUT
163 Table: Multiple Response Sets
164 Name,Variables,Details
169 ","Multiple dichotomy set
170 Label: First multiple dichotomy group
171 Label source: Provided by user
173 Category label source: Variable labels
177 ","Multiple dichotomy set
179 Category label source: Value labels of counted value
185 ","Multiple dichotomy set
187 Category label source: Variable labels
193 ","Multiple category set
194 Label: First multiple category group
200 ","Multiple category set
203 mrsets.sps:50: note: MRSETS: The active dataset dictionary does not contain any multiple response sets.
207 AT_SETUP([MRSETS read and write])
208 AT_DATA([mrsets.sps],
210 SAVE OUTFILE='mrsets.sav'.
212 AT_CHECK([pspp -O format=csv mrsets.sps], [0], [DEFINE_MRSETS_OUTPUT])
213 AT_DATA([mrsets2.sps],
214 [GET FILE='mrsets.sav'.
215 MRSETS /DISPLAY NAME=ALL.
217 AT_CHECK([pspp -O format=csv mrsets2.sps], [0], [MRSETS_DISPLAY_OUTPUT],
221 AT_SETUP([MRSETS names must begin with $])
222 AT_DATA([mrsets.sps],
224 MRSETS /MCGROUP NAME=x.
226 AT_CHECK([pspp -O format=csv mrsets.sps], [1],
227 [mrsets.sps:6: error: MRSETS: x is not a valid name for a multiple response set. Multiple response set names must begin with `$'.
231 AT_SETUP([MRSETS must have at least 2 variables])
232 AT_DATA([mrsets.sps],
234 MRSETS /MCGROUP NAME=$x VARIABLES=a.
236 AT_CHECK([pspp -O format=csv mrsets.sps], [1],
237 ["mrsets.sps:6: error: MRSETS: VARIABLES specified only variable a on MCGROUP, but at least two variables are required."
241 AT_SETUP([MRSETS does not allow noninteger VALUE])
242 AT_DATA([mrsets.sps],
244 MRSETS /MDGROUP VALUE=1.5.
246 AT_CHECK([pspp -O format=csv mrsets.sps], [1],
247 [mrsets.sps:6: error: MRSETS: Numeric VALUE must be an integer.
251 AT_SETUP([MRSETS requires NAME to define a group])
252 AT_DATA([mrsets.sps],
254 MRSETS /MCGROUP VARIABLES=a b c.
256 AT_CHECK([pspp -O format=csv mrsets.sps], [1],
257 [mrsets.sps:6.32: error: MRSETS: Syntax error at end of command: Required MCGROUP specification missing from NAME subcommand.
261 AT_SETUP([MRSETS requires VARIABLES to define a group])
262 AT_DATA([mrsets.sps],
264 MRSETS /MCGROUP NAME=$Mcgroup.
266 AT_CHECK([pspp -O format=csv mrsets.sps], [1],
267 [mrsets.sps:6.30: error: MRSETS: Syntax error at end of command: Required MCGROUP specification missing from VARIABLES subcommand.
271 AT_SETUP([MRSETS variables must be same type])
272 AT_DATA([mrsets.sps],
274 MRSETS /MCGROUP NAME=$mygroup VARIABLES=a b x y.
276 AT_CHECK([pspp -O format=csv mrsets.sps], [1],
277 [mrsets.sps:6: error: MRSETS: a and x are not the same type. All variables in this variable list must be of the same type. x will be omitted from the list.
279 mrsets.sps:6: error: MRSETS: a and y are not the same type. All variables in this variable list must be of the same type. y will be omitted from the list.
283 AT_SETUP([MRSETS variables and VALUE must be same type])
284 AT_DATA([mrsets.sps],
286 MRSETS /MDGROUP NAME=$group1 VARIABLES=a b VALUE=1.
287 MRSETS /MDGROUP NAME=$group2 VARIABLES=x y VALUE='abc'.
289 AT_CHECK([pspp -O format=csv mrsets.sps], [1],
290 ["mrsets.sps:6: error: MRSETS: MDGROUP subcommand for group $group1 specifies a string VALUE, but the variables specified for this group are numeric."
292 "mrsets.sps:7: error: MRSETS: MDGROUP subcommand for group $group2 specifies a string VALUE, but the variables specified for this group are numeric."
296 AT_SETUP([MRSETS VALUE must not be too wide])
297 AT_DATA([mrsets.sps],
299 MRSETS /MDGROUP NAME=$group1 VARIABLES=a b VALUE='abc'.
301 AT_CHECK([pspp -O format=csv mrsets.sps], [1],
302 ["mrsets.sps:6: error: MRSETS: VALUE string on MDGROUP subcommand for group $group1 is 3 bytes long, but it must be no longer than the narrowest variable in the group, which is a with a width of 1 bytes."
306 AT_SETUP([MRSETS LABEL and LABELSOURCE are exclusive])
307 AT_DATA([mrsets.sps],
309 MRSETS /MDGROUP NAME=$group1 VARIABLES=a b VALUE='a'
310 LABEL='label' LABELSOURCE=VARLABEL.
312 AT_CHECK([pspp -O format=csv mrsets.sps], [0],
313 [mrsets.sps:7: warning: MRSETS: MDGROUP subcommand for group $group1 specifies LABELSOURCE=VARLABEL but not CATEGORYLABELS=COUNTEDVALUES. Ignoring LABELSOURCE.
317 AT_SETUP([MRSETS DISPLAY or DELETE unknown group])
318 AT_DATA([mrsets.sps],
320 [MRSETS /DISPLAY NAME=[$x].
321 MRSETS /DELETE NAME=[$y].
323 AT_CHECK([pspp -O format=csv mrsets.sps], [1],
324 [mrsets.sps:6: error: MRSETS: No multiple response set named $x.
326 mrsets.sps:7: error: MRSETS: No multiple response set named $y.