af8d8aecf03d1745beba2a0851dd48d8dd9de49c
[pspp-builds.git] / 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])
212 AT_DATA([loop.sps], [dnl
213 LOOP_DATA
214 set mxloops = 2.
215 compute #p = x.
216 loop.
217 print /#p.
218 compute #p = #p + z.
219 do if #p >= y.
220 break.
221 end if.
222 end loop.
223 print/'--------'.
224 execute.
225 ])
226 AT_CHECK([pspp -o pspp.csv loop.sps])
227 AT_CHECK([cat pspp.csv], [0], [dnl
228 1.00 @&t@
229
230 --------
231
232 2.00 @&t@
233
234 4.00 @&t@
235
236 --------
237
238 3.00 @&t@
239
240 6.00 @&t@
241
242 --------
243
244 4.00 @&t@
245
246 --------
247 ])
248 AT_CLEANUP