Enable the show value labels feature
[pspp] / tests / language / control / loop.at
1 AT_BANNER([LOOP])
2
3 m4_define([LOOP_DATA], [dnl
4 data list notable /x 1 y 2 z 3.
5 begin data.
6 121
7 252
8 393
9 404
10 end data.
11 ])
12
13 AT_SETUP([LOOP with index])
14 AT_DATA([loop.sps], [dnl
15 LOOP_DATA
16 loop #i=x to y by z.
17 print /#i.
18 end loop.
19 print/'--------'.
20 execute.
21 ])
22 AT_CHECK([pspp -o pspp.csv loop.sps])
23 AT_CHECK([cat pspp.csv], [0], [dnl
24 1.00 @&t@
25
26 2.00 @&t@
27
28 --------
29
30 2.00 @&t@
31
32 4.00 @&t@
33
34 --------
35
36 3.00 @&t@
37
38 6.00 @&t@
39
40 9.00 @&t@
41
42 --------
43
44 --------
45 ])
46 AT_CLEANUP
47
48 AT_SETUP([LOOP with IF condition])
49 AT_DATA([loop.sps], [dnl
50 LOOP_DATA
51 compute #j=x.
52 loop if #j <= y.
53 print /#j.
54 compute #j = #j + z.
55 end loop.
56 print/'--------'.
57 execute.
58 ])
59 AT_CHECK([pspp -o pspp.csv loop.sps])
60 AT_CHECK([cat pspp.csv], [0], [dnl
61 1.00 @&t@
62
63 2.00 @&t@
64
65 --------
66
67 2.00 @&t@
68
69 4.00 @&t@
70
71 --------
72
73 3.00 @&t@
74
75 6.00 @&t@
76
77 9.00 @&t@
78
79 --------
80
81 --------
82 ])
83 AT_CLEANUP
84
85 AT_SETUP([LOOP with END IF condition])
86 AT_DATA([loop.sps], [dnl
87 LOOP_DATA
88 compute #k=x.
89 loop.
90 print /#k.
91 compute #k = #k + z.
92 end loop if #k > y.
93 print/'--------'.
94 execute.
95 ])
96 AT_CHECK([pspp -o pspp.csv loop.sps])
97 AT_CHECK([cat pspp.csv], [0], [dnl
98 1.00 @&t@
99
100 2.00 @&t@
101
102 --------
103
104 2.00 @&t@
105
106 4.00 @&t@
107
108 --------
109
110 3.00 @&t@
111
112 6.00 @&t@
113
114 9.00 @&t@
115
116 --------
117
118 4.00 @&t@
119
120 --------
121 ])
122 AT_CLEANUP
123
124 AT_SETUP([LOOP with index and IF based on index])
125 AT_DATA([loop.sps], [dnl
126 LOOP_DATA
127 loop #m=x to y by z if #m < 4.
128 print /#m.
129 end loop.
130 print/'--------'.
131 execute.
132 ])
133 AT_CHECK([pspp -o pspp.csv loop.sps])
134 AT_CHECK([cat pspp.csv], [0], [dnl
135 1.00 @&t@
136
137 2.00 @&t@
138
139 --------
140
141 2.00 @&t@
142
143 --------
144
145 3.00 @&t@
146
147 --------
148
149 --------
150 ])
151 AT_CLEANUP
152
153 AT_SETUP([LOOP with index and END IF based on index])
154 AT_DATA([loop.sps], [dnl
155 LOOP_DATA
156 loop #n=x to y by z.
157 print /#n.
158 end loop if #n >= 4.
159 print/'--------'.
160 execute.
161 ])
162 AT_CHECK([pspp -o pspp.csv loop.sps])
163 AT_CHECK([cat pspp.csv], [0], [dnl
164 1.00 @&t@
165
166 2.00 @&t@
167
168 --------
169
170 2.00 @&t@
171
172 4.00 @&t@
173
174 --------
175
176 3.00 @&t@
177
178 6.00 @&t@
179
180 --------
181
182 --------
183 ])
184 AT_CLEANUP
185
186 AT_SETUP([LOOP with index and IF and END IF based on index])
187 AT_DATA([loop.sps], [dnl
188 LOOP_DATA
189 loop #o=x to y by z if mod(#o,2) = 0.
190 print /#o.
191 end loop if #o >= 4.
192 print/'--------'.
193 execute.
194 ])
195 AT_CHECK([pspp -o pspp.csv loop.sps])
196 AT_CHECK([cat pspp.csv], [0], [dnl
197 --------
198
199 2.00 @&t@
200
201 4.00 @&t@
202
203 --------
204
205 --------
206
207 --------
208 ])
209 AT_CLEANUP
210
211 AT_SETUP([LOOP with no conditions containing BREAK])
212 AT_DATA([loop.sps], [dnl
213 LOOP_DATA
214 compute #p = x.
215 loop.
216 print /#p.
217 compute #p = #p + z.
218 do if #p >= y.
219 break.
220 end if.
221 end loop.
222 print/'--------'.
223 execute.
224 ])
225 AT_CHECK([pspp -o pspp.csv loop.sps])
226 AT_CHECK([cat pspp.csv], [0], [dnl
227 1.00 @&t@
228
229 --------
230
231 2.00 @&t@
232
233 4.00 @&t@
234
235 --------
236
237 3.00 @&t@
238
239 6.00 @&t@
240
241 --------
242
243 4.00 @&t@
244
245 --------
246 ])
247 AT_CLEANUP
248
249 AT_SETUP([LOOP with no conditions that ends due to MXLOOPS])
250 AT_DATA([loop.sps], [dnl
251 LOOP_DATA
252 set mxloops=2.
253 loop.
254 compute #p = #p + 1.
255 print /x #p.
256 end loop.
257 print/'--------'.
258 execute.
259 ])
260 AT_CHECK([pspp -o pspp.csv loop.sps])
261 AT_CHECK([cat pspp.csv], [0], [dnl
262 1     1.00 @&t@
263
264 1     2.00 @&t@
265
266 --------
267
268 2     3.00 @&t@
269
270 2     4.00 @&t@
271
272 --------
273
274 3     5.00 @&t@
275
276 3     6.00 @&t@
277
278 --------
279
280 4     7.00 @&t@
281
282 4     8.00 @&t@
283
284 --------
285 ])
286 AT_CLEANUP
287