3c69db6cd4e3bc1d8369fa12a31c74dd32065601
[pspp] / tests / language / data-io / matrix-data.at
1 dnl PSPP - a program for statistical analysis.
2 dnl Copyright (C) 2017, 2020 Free Software Foundation, Inc.
3 dnl
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.
8 dnl
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.
13 dnl
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
17 AT_BANNER([MATRIX DATA])
18
19 dnl Keep this test in sync with Example 1 in doc/matrices.texi.
20 AT_SETUP([MATRIX DATA - LOWER DIAGONAL with ROWTYPE_])
21 AT_DATA([matrix-data.sps], [dnl
22 MATRIX DATA
23     VARIABLES=ROWTYPE_ var01 TO var08
24     /FILE='matrix-data.txt'.
25 FORMATS var01 TO var08(F5.2).
26 LIST.
27 ])
28 AT_DATA([matrix-data.txt], [dnl
29 MEAN  24.3   5.4  69.7  20.1  13.4   2.7  27.9   3.7
30 SD     5.7   1.5  23.5   5.8   2.8   4.5   5.4   1.5
31 N       92    92    92    92    92    92    92    92
32 'CORR'  1.00
33 CORR   .18  1.00
34 CORR  -.22  -.17  1.00
35 "CORR"   .36   .31  -.14  1.00
36 COR   .27   .16  -.12   .22  1.00
37 CORR   .33   .15  -.17   .24   .21  1.00
38 CORR   .50   .29  -.20   .32   .12   .38  1.00
39 CORR   .17   .29  -.05   .20   .27   .20   .04  1.00
40 ])
41
42 AT_CHECK([pspp -O format=csv matrix-data.sps], [0], [dnl
43 Table: Data List
44 ROWTYPE_,VARNAME_,var01,var02,var03,var04,var05,var06,var07,var08
45 MEAN,,24.30,5.40,69.70,20.10,13.40,2.70,27.90,3.70
46 STDDEV,,5.70,1.50,23.50,5.80,2.80,4.50,5.40,1.50
47 N,,92.00,92.00,92.00,92.00,92.00,92.00,92.00,92.00
48 CORR,var01,1.00,.18,-.22,.36,.27,.33,.50,.17
49 CORR,var02,.18,1.00,-.17,.31,.16,.15,.29,.29
50 CORR,var03,-.22,-.17,1.00,-.14,-.12,-.17,-.20,-.05
51 CORR,var04,.36,.31,-.14,1.00,.22,.24,.32,.20
52 CORR,var05,.27,.16,-.12,.22,1.00,.21,.12,.27
53 CORR,var06,.33,.15,-.17,.24,.21,1.00,.38,.20
54 CORR,var07,.50,.29,-.20,.32,.12,.38,1.00,.04
55 CORR,var08,.17,.29,-.05,.20,.27,.20,.04,1.00
56 ])
57 AT_CLEANUP
58
59 AT_SETUP([MATRIX DATA - UPPER DIAGONAL with ROWTYPE_])
60 AT_DATA([matrix-data.sps], [dnl
61 matrix data
62     variables = rowtype_  var01 var02 var03 var04
63     /format = upper diagonal.
64
65 begin data
66 mean        34 35 36 37
67 sd          22 11 55 66
68 n_ve    100 101 102 103
69 corr        1 9 8 7
70 corr        1 6 5
71 corr        1 4
72 corr        1
73 end data.
74
75 list.
76 ])
77
78 AT_CHECK([pspp -O format=csv matrix-data.sps], [0], [dnl
79 Table: Data List
80 ROWTYPE_,VARNAME_,var01,var02,var03,var04
81 MEAN,,34.0000,35.0000,36.0000,37.0000
82 STDDEV,,22.0000,11.0000,55.0000,66.0000
83 N,,100.0000,101.0000,102.0000,103.0000
84 CORR,var01,1.0000,9.0000,8.0000,7.0000
85 CORR,var02,9.0000,1.0000,6.0000,5.0000
86 CORR,var03,8.0000,6.0000,1.0000,4.0000
87 CORR,var04,7.0000,5.0000,4.0000,1.0000
88 ])
89 AT_CLEANUP
90
91 AT_SETUP([MATRIX DATA - FULL with ROWTYPE_])
92 dnl Just for fun, this one is in a different case.
93 AT_DATA([matrix-data.sps], [dnl
94 matrix data
95     variables = ROWTYPE_  var01 var02 var03 var04
96     /format = full diagonal.
97
98 begin data
99 MEAN 34 35 36 37
100 SD   22 11 55 66
101 N    100 101 102 103
102 CORR 1 9 8 7
103 CORR 9 1 6 5
104 CORR 8 6 1 4
105 CORR 7 5 4 1
106 end data.
107
108 list.
109 ])
110
111 AT_CHECK([pspp -O format=csv matrix-data.sps], [0], [dnl
112 Table: Data List
113 ROWTYPE_,VARNAME_,var01,var02,var03,var04
114 MEAN,,34.0000,35.0000,36.0000,37.0000
115 STDDEV,,22.0000,11.0000,55.0000,66.0000
116 N,,100.0000,101.0000,102.0000,103.0000
117 CORR,var01,1.0000,9.0000,8.0000,7.0000
118 CORR,var02,9.0000,1.0000,6.0000,5.0000
119 CORR,var03,8.0000,6.0000,1.0000,4.0000
120 CORR,var04,7.0000,5.0000,4.0000,1.0000
121 ])
122 AT_CLEANUP
123
124
125 AT_SETUP([MATRIX DATA - UPPER NODIAGONAL with ROWTYPE_])
126 AT_DATA([matrix-data.sps], [dnl
127 matrix data
128     variables = rowtype_  var01 var02 var03 var04
129     /format = upper nodiagonal.
130
131 begin data
132 mean 34 35 36 37
133 sd   22 11 55 66
134 n    100 101 102 103
135 corr  9 8 7
136 corr  6 5
137 corr  4
138 end data.
139
140 list.
141 ])
142
143 AT_CHECK([pspp -O format=csv matrix-data.sps], [0], [dnl
144 Table: Data List
145 ROWTYPE_,VARNAME_,var01,var02,var03,var04
146 MEAN,,34.0000,35.0000,36.0000,37.0000
147 STDDEV,,22.0000,11.0000,55.0000,66.0000
148 N,,100.0000,101.0000,102.0000,103.0000
149 CORR,var01,1.0000,9.0000,8.0000,7.0000
150 CORR,var02,9.0000,1.0000,6.0000,5.0000
151 CORR,var03,8.0000,6.0000,1.0000,4.0000
152 CORR,var04,7.0000,5.0000,4.0000,1.0000
153 ])
154 AT_CLEANUP
155
156 dnl Keep this test in sync with Example 2 in doc/matrices.texi.
157 AT_SETUP([MATRIX DATA - UPPER NODIAGONAL with ROWTYPE_ - 2])
158 AT_DATA([matrix-data.sps], [dnl
159 MATRIX DATA
160     VARIABLES=ROWTYPE_ var01 TO var08
161     /FORMAT=UPPER NODIAGONAL.
162 BEGIN DATA.
163 MEAN  24.3   5.4  69.7  20.1  13.4   2.7  27.9   3.7
164 SD     5.7   1.5  23.5   5.8   2.8   4.5   5.4   1.5
165 N       92    92    92    92    92    92    92    92
166 CORR         .17   .50  -.33   .27   .36  -.22   .18
167 CORR               .29   .29  -.20   .32   .12   .38
168 CORR                     .05   .20  -.15   .16   .21
169 CORR                           .20   .32  -.17   .12
170 CORR                                 .27   .12  -.24
171 CORR                                      -.20  -.38
172 CORR                                             .04
173 END DATA.
174 FORMATS var01 TO var08(F6.2).
175 LIST.
176 ])
177 AT_CHECK([pspp -O format=csv matrix-data.sps], [0], [dnl
178 Table: Data List
179 ROWTYPE_,VARNAME_,var01,var02,var03,var04,var05,var06,var07,var08
180 MEAN,,24.30,5.40,69.70,20.10,13.40,2.70,27.90,3.70
181 STDDEV,,5.70,1.50,23.50,5.80,2.80,4.50,5.40,1.50
182 N,,92.00,92.00,92.00,92.00,92.00,92.00,92.00,92.00
183 CORR,var01,1.00,.17,.50,-.33,.27,.36,-.22,.18
184 CORR,var02,.17,1.00,.29,.29,-.20,.32,.12,.38
185 CORR,var03,.50,.29,1.00,.05,.20,-.15,.16,.21
186 CORR,var04,-.33,.29,.05,1.00,.20,.32,-.17,.12
187 CORR,var05,.27,-.20,.20,.20,1.00,.27,.12,-.24
188 CORR,var06,.36,.32,-.15,.32,.27,1.00,-.20,-.38
189 CORR,var07,-.22,.12,.16,-.17,.12,-.20,1.00,.04
190 CORR,var08,.18,.38,.21,.12,-.24,-.38,.04,1.00
191 ])
192 AT_CLEANUP
193
194 AT_SETUP([MATRIX DATA - LOWER NODIAGONAL with ROWTYPE_])
195 AT_DATA([matrix-data.sps], [dnl
196 matrix data
197     variables = rowtype_  var01 var02 var03 var04
198     /format = lower nodiagonal
199     /cells = 2.
200
201 begin data
202 mean 34 35 36 37
203 sd   22 11 55 66
204 n    100 101 102 103
205 corr  9
206 corr  8 6
207 corr  7 5 4
208 end data.
209
210 list.
211 ])
212
213 AT_CHECK([pspp -O format=csv matrix-data.sps], [0], [dnl
214 matrix-data.sps:4: warning: MATRIX DATA: CELLS is ignored when VARIABLES includes ROWTYPE_
215
216 Table: Data List
217 ROWTYPE_,VARNAME_,var01,var02,var03,var04
218 MEAN,,34.0000,35.0000,36.0000,37.0000
219 STDDEV,,22.0000,11.0000,55.0000,66.0000
220 N,,100.0000,101.0000,102.0000,103.0000
221 CORR,var01,1.0000,9.0000,8.0000,7.0000
222 CORR,var02,9.0000,1.0000,6.0000,5.0000
223 CORR,var03,8.0000,6.0000,1.0000,4.0000
224 CORR,var04,7.0000,5.0000,4.0000,1.0000
225 ])
226 AT_CLEANUP
227
228 AT_SETUP([MATRIX DATA - split data])
229 AT_DATA([matrix-data.sps], [dnl
230 matrix data
231     variables = s1 s2 rowtype_  var01 var02 var03
232     /split=s1 s2.
233
234 begin data
235 8 0   mean     21.4  5.0  72.9
236 8 0   sd       6.5   1.6  22.8
237 8 0   n        106   106  106
238 8 0   corr     1
239 8 0   corr    .41  1
240 8 0   corr    -.16  -.22  1
241 8 1   mean     11.4  1.0  52.9
242 8 1   sd       9.5   8.6  12.8
243 8 1   n        10   11  12
244 8 1   corr     1
245 8 1   corr    .51  1
246 8 1   corr    .36  -.41  1
247 end data.
248
249 display dictionary.
250
251 list.
252 ])
253
254 AT_CHECK([pspp -O format=csv matrix-data.sps], [0], [dnl
255 Table: Variables
256 Name,Position,Measurement Level,Role,Width,Alignment,Print Format,Write Format
257 s1,1,Scale,Input,8,Right,F4.0,F4.0
258 s2,2,Scale,Input,8,Right,F4.0,F4.0
259 ROWTYPE_,3,Nominal,Input,8,Left,A8,A8
260 VARNAME_,4,Nominal,Input,8,Left,A8,A8
261 var01,5,Scale,Input,8,Right,F10.4,F10.4
262 var02,6,Scale,Input,8,Right,F10.4,F10.4
263 var03,7,Scale,Input,8,Right,F10.4,F10.4
264
265 Table: Split Values
266 Variable,Value
267 s1,8
268 s2,0
269
270 Table: Data List
271 s1,s2,ROWTYPE_,VARNAME_,var01,var02,var03
272 8,0,MEAN,,21.4000,5.0000,72.9000
273 8,0,STDDEV,,6.5000,1.6000,22.8000
274 8,0,N,,106.0000,106.0000,106.0000
275 8,0,CORR,var01,1.0000,.4100,-.1600
276 8,0,CORR,var02,.4100,1.0000,-.2200
277 8,0,CORR,var03,-.1600,-.2200,1.0000
278
279 Table: Split Values
280 Variable,Value
281 s1,8
282 s2,1
283
284 Table: Data List
285 s1,s2,ROWTYPE_,VARNAME_,var01,var02,var03
286 8,1,MEAN,,11.4000,1.0000,52.9000
287 8,1,STDDEV,,9.5000,8.6000,12.8000
288 8,1,N,,10.0000,11.0000,12.0000
289 8,1,CORR,var01,1.0000,.5100,.3600
290 8,1,CORR,var02,.5100,1.0000,-.4100
291 8,1,CORR,var03,.3600,-.4100,1.0000
292 ])
293
294 AT_CLEANUP
295
296 dnl Keep this test in sync with Example 4 in doc/matrices.texi.
297 AT_SETUP([MATRIX DATA - split data - 2])
298 AT_DATA([matrix-data.sps], [dnl
299 MATRIX DATA
300     VARIABLES=s1 ROWTYPE_  var01 TO var04
301     /SPLIT=s1
302     /FORMAT=FULL.
303 BEGIN DATA.
304 0 MEAN 34 35 36 37
305 0 SD   22 11 55 66
306 0 N    99 98 99 92
307 0 CORR  1 .9 .8 .7
308 0 CORR .9  1 .6 .5
309 0 CORR .8 .6  1 .4
310 0 CORR .7 .5 .4  1
311 1 MEAN 44 45 34 39
312 1 SD   23 15 51 46
313 1 N    98 34 87 23
314 1 CORR  1 .2 .3 .4
315 1 CORR .2  1 .5 .6
316 1 CORR .3 .5  1 .7
317 1 CORR .4 .6 .7  1
318 END DATA.
319 FORMATS var01 TO var04(F5.1).
320 LIST.
321 ])
322
323 AT_CHECK([pspp -O format=csv matrix-data.sps], [0], [dnl
324 Table: Split Values
325 Variable,Value
326 s1,0
327
328 Table: Data List
329 s1,ROWTYPE_,VARNAME_,var01,var02,var03,var04
330 0,MEAN,,34.0,35.0,36.0,37.0
331 0,STDDEV,,22.0,11.0,55.0,66.0
332 0,N,,99.0,98.0,99.0,92.0
333 0,CORR,var01,1.0,.9,.8,.7
334 0,CORR,var02,.9,1.0,.6,.5
335 0,CORR,var03,.8,.6,1.0,.4
336 0,CORR,var04,.7,.5,.4,1.0
337
338 Table: Split Values
339 Variable,Value
340 s1,1
341
342 Table: Data List
343 s1,ROWTYPE_,VARNAME_,var01,var02,var03,var04
344 1,MEAN,,44.0,45.0,34.0,39.0
345 1,STDDEV,,23.0,15.0,51.0,46.0
346 1,N,,98.0,34.0,87.0,23.0
347 1,CORR,var01,1.0,.2,.3,.4
348 1,CORR,var02,.2,1.0,.5,.6
349 1,CORR,var03,.3,.5,1.0,.7
350 1,CORR,var04,.4,.6,.7,1.0
351 ])
352 AT_CLEANUP
353
354 dnl Keep this test in sync with Example 5 in doc/matrices.texi.
355 AT_SETUP([MATRIX DATA - factor variables])
356 AT_DATA([matrix-data.sps], [dnl
357 MATRIX DATA
358     VARIABLES=ROWTYPE_ f1 var01 TO var04
359     /FACTOR=f1.
360 BEGIN DATA.
361 MEAN 0 34 35 36 37
362 SD   0 22 11 55 66
363 N    0 99 98 99 92
364 MEAN 1 44 45 34 39
365 SD   1 23 15 51 46
366 N    1 98 34 87 23
367 CORR .  1
368 CORR . .9  1
369 CORR . .8 .6  1
370 CORR . .7 .5 .4  1
371 END DATA.
372 FORMATS var01 TO var04(F5.1).
373 LIST.
374 ])
375
376 AT_CHECK([pspp -O format=csv matrix-data.sps], [0], [dnl
377 Table: Data List
378 ROWTYPE_,f1,VARNAME_,var01,var02,var03,var04
379 MEAN,0,,34.0,35.0,36.0,37.0
380 STDDEV,0,,22.0,11.0,55.0,66.0
381 N,0,,99.0,98.0,99.0,92.0
382 MEAN,1,,44.0,45.0,34.0,39.0
383 STDDEV,1,,23.0,15.0,51.0,46.0
384 N,1,,98.0,34.0,87.0,23.0
385 CORR,.,var01,1.0,.9,.8,.7
386 CORR,.,var02,.9,1.0,.6,.5
387 CORR,.,var03,.8,.6,1.0,.4
388 CORR,.,var04,.7,.5,.4,1.0
389 ])
390 AT_CLEANUP
391
392 AT_SETUP([MATRIX DATA - bad ROWTYPE_])
393 AT_DATA([matrix-data.sps], [dnl
394 matrix data
395     variables = rowtype_  var01 var02 var03 var04
396     /format = upper diagonal.
397
398 begin data
399 cork        1 9 8 7
400 corr        1 6 5
401 corr        1 4
402 corr        1
403 end data.
404
405 list.
406 ])
407
408 AT_CHECK([pspp -O format=csv matrix-data.sps], [1], [dnl
409 "matrix-data.sps:6.1-6.4: error: Unknown row type ""cork""."
410 ])
411 AT_CLEANUP
412
413 AT_SETUP([MATRIX DATA - unexpected ROWTYPE_])
414 AT_DATA([matrix-data.sps], [dnl
415 matrix data
416     variables = rowtype_ f1 var01 var02 var03 var04
417     /content = corr (sd)
418     /factor = f1
419     /format = upper diagonal.
420
421 begin data
422 corr . 1 9 8 7
423 corr . 1 6 5
424 corr . 1 4
425 corr . 1
426 sd   . 1 2 3 4
427
428 corr 0 1 9 8 7
429 corr 0 1 6 5
430 corr 0 1 4
431 corr 0 1
432 sd   0 1 2 3 4
433 end data.
434
435 list.
436 ])
437
438 AT_CHECK([pspp -O format=csv matrix-data.sps], [0], [dnl
439 matrix-data.sps:12: warning: Data contains pooled row type STDDEV not included in CONTENTS.
440
441 matrix-data.sps:14: warning: Data contains with-factors row type CORR not included in CONTENTS.
442
443 Table: Data List
444 ROWTYPE_,f1,VARNAME_,var01,var02,var03,var04
445 CORR,.,var01,1.0000,9.0000,8.0000,7.0000
446 CORR,.,var02,9.0000,1.0000,6.0000,5.0000
447 CORR,.,var03,8.0000,6.0000,1.0000,4.0000
448 CORR,.,var04,7.0000,5.0000,4.0000,1.0000
449 STDDEV,.,,1.0000,2.0000,3.0000,4.0000
450 CORR,0,var01,1.0000,9.0000,8.0000,7.0000
451 CORR,0,var02,9.0000,1.0000,6.0000,5.0000
452 CORR,0,var03,8.0000,6.0000,1.0000,4.0000
453 CORR,0,var04,7.0000,5.0000,4.0000,1.0000
454 STDDEV,0,,1.0000,2.0000,3.0000,4.0000
455 ])
456 AT_CLEANUP
457
458 AT_SETUP([MATRIX DATA - bad number])
459 AT_DATA([matrix-data.sps], [dnl
460 matrix data
461     variables = rowtype_  var01 var02 var03 var04
462     /format = upper diagonal.
463
464 begin data
465 corr        1 9 8 7
466 corr        1 x 5
467 corr        1 4
468 corr        1
469 end data.
470
471 list.
472 ])
473
474 AT_CHECK([pspp -O format=csv matrix-data.sps], [1], [dnl
475 matrix-data.sps:7.15: error: Field contents are not numeric.
476
477 Table: Data List
478 ROWTYPE_,VARNAME_,var01,var02,var03,var04
479 CORR,var01,1.0000,9.0000,8.0000,7.0000
480 CORR,var02,9.0000,1.0000,.    ,5.0000
481 CORR,var03,8.0000,.    ,1.0000,4.0000
482 CORR,var04,7.0000,5.0000,4.0000,1.0000
483 ])
484 AT_CLEANUP
485
486 AT_SETUP([MATRIX DATA - long variable names])
487 AT_DATA([matrix-data.sps], [dnl
488 matrix data
489     variables = rowtype_  var01 var_two variable_number_three variableFour
490     /format = upper diagonal.
491
492 begin data
493 mean         34  35  36  37
494 sd           22  11  55  66
495 n_vector    100 101 102 103
496 corr          1   9   8   7
497 corr              1   6   5
498 corr                  1   4
499 corr                      1
500 end data.
501
502 list.
503 ])
504
505 AT_CHECK([pspp -O format=csv matrix-data.sps], [0], [dnl
506 Table: Data List
507 ROWTYPE_,VARNAME_,var01,var_two,variable_number_three,variableFour
508 MEAN,,34.0000,35.0000,36.0000,37.0000
509 STDDEV,,22.0000,11.0000,55.0000,66.0000
510 N,,100.0000,101.0000,102.0000,103.0000
511 CORR,var01,1.0000,9.0000,8.0000,7.0000
512 CORR,var_two,9.0000,1.0000,6.0000,5.0000
513 CORR,variable_number_three,8.0000,6.0000,1.0000,4.0000
514 CORR,variableFour,7.0000,5.0000,4.0000,1.0000
515 ])
516 AT_CLEANUP
517
518 AT_SETUP([MATRIX DATA - read integrity])
519 dnl Check that matrices presented are read correctly.
520 dnl The example below is an unlikely one since all
521 dnl covariance/correlation matrices must be symmetrical
522 dnl but it serves a purpose for this test.
523 AT_DATA([matrix-reader.sps], [dnl
524 matrix data
525     variables = rowtype_  var01 to var9
526     /format = full.
527
528 begin data
529 n    1  2  3  4  5  6  7  8  9
530 sd   100 200 300 400 500 600 700 800 900
531 corr 11 12 13 14 15 16 17 18 19
532 corr 21 22 23 24 25 26 27 28 29
533 corr 31 32 33 34 35 36 37 38 39
534 corr 41 42 43 44 45 46 47 48 49
535 corr 51 52 53 54 55 56 57 58 59
536 corr 61 62 63 64 65 66 67 68 69
537 corr 71 72 73 74 75 76 77 78 79
538 corr 81 82 83 84 85 86 87 88 89
539 corr 91 92 93 94 95 96 97 98 99
540 end data.
541 DEBUG MATRIX READ.
542 FORMATS var01 to var09(F3.0).
543 list.
544 factor  /matrix = in (corr = *)
545         /analysis var02 var04 var06
546         /method = correlation
547         /rotation = norotate
548         /print correlation.
549 ])
550
551 AT_CHECK([pspp --testing-mode -O format=csv matrix-reader.sps], [0], [dnl
552 Table: Debug Matrix Reader
553 ,,,var01,var02,var03,var04,var05,var06,var07,var08,var09
554 1,Correlation,var01,11.000,12.000,13.000,14.000,15.000,16.000,17.000,18.000,19.000
555 ,,var02,21.000,22.000,23.000,24.000,25.000,26.000,27.000,28.000,29.000
556 ,,var03,31.000,32.000,33.000,34.000,35.000,36.000,37.000,38.000,39.000
557 ,,var04,41.000,42.000,43.000,44.000,45.000,46.000,47.000,48.000,49.000
558 ,,var05,51.000,52.000,53.000,54.000,55.000,56.000,57.000,58.000,59.000
559 ,,var06,61.000,62.000,63.000,64.000,65.000,66.000,67.000,68.000,69.000
560 ,,var07,71.000,72.000,73.000,74.000,75.000,76.000,77.000,78.000,79.000
561 ,,var08,81.000,82.000,83.000,84.000,85.000,86.000,87.000,88.000,89.000
562 ,,var09,91.000,92.000,93.000,94.000,95.000,96.000,97.000,98.000,99.000
563 ,N,Value,1.000,2.000,3.000,4.000,5.000,6.000,7.000,8.000,9.000
564 ,Standard Deviation,Value,100.000,200.000,300.000,400.000,500.000,600.000,700.000,800.000,900.000
565
566 Table: Data List
567 ROWTYPE_,VARNAME_,var01,var02,var03,var04,var05,var06,var07,var08,var09
568 N,,1,2,3,4,5,6,7,8,9
569 STDDEV,,100,200,300,400,500,600,700,800,900
570 CORR,var01,11,12,13,14,15,16,17,18,19
571 CORR,var02,21,22,23,24,25,26,27,28,29
572 CORR,var03,31,32,33,34,35,36,37,38,39
573 CORR,var04,41,42,43,44,45,46,47,48,49
574 CORR,var05,51,52,53,54,55,56,57,58,59
575 CORR,var06,61,62,63,64,65,66,67,68,69
576 CORR,var07,71,72,73,74,75,76,77,78,79
577 CORR,var08,81,82,83,84,85,86,87,88,89
578 CORR,var09,91,92,93,94,95,96,97,98,99
579
580 Table: Correlation Matrix
581 ,,var02,var04,var06
582 Correlation,var02,22.000,24.000,26.000
583 ,var04,42.000,44.000,46.000
584 ,var06,62.000,64.000,66.000
585
586 Table: Component Matrix
587 ,Component,
588 ,1,2
589 var02,6.73,-2.23
590 var04,6.95,2.15
591 var06,9.22,.01
592 ])
593 AT_CLEANUP
594
595 AT_SETUP([MATRIX DATA - too many rows])
596 dnl Test for a crash which occurred when the matrix had more rows declared
597 dnl than variables to hold them.
598 AT_DATA([matrix-data.sps], [dnl
599 matrix data
600     variables = rowtype_
601     var01 var02 var03 var04
602     / format = upper diagonal .
603 begin data
604     mean     21.4  5.0  72.9  17.4
605     sd       6.5  1.6  22.8  5.7
606     n       106  106  106  106
607     corr    1.00  .32  .48  .28
608     corr    1.00  .72  .54  .44
609     corr    1.00  .50  .59  .64
610     corr    1.00  .62  .49  -.30
611     corr    1.00  .56  -.38  .52
612     corr    1.00  -.73  .91  .80
613     corr    1.00  -.65  -.60
614     corr    1.00  .70
615     corr    1.00
616 end data .
617 FORMATS var01 TO var04 (F6.2).
618 LIST.
619 ])
620
621 AT_CHECK([pspp -O format=csv matrix-data.sps], [1], [dnl
622 matrix-data.sps:10.29-10.31: error: Extraneous data expecting end of line.
623
624 matrix-data.sps:11.24-11.31: error: Extraneous data expecting end of line.
625
626 matrix-data.sps:12.19-12.32: error: Extraneous data expecting end of line.
627
628 matrix-data.sps:18: error: Matrix CORR had 9 rows but 4 rows were expected.
629
630 Table: Data List
631 ROWTYPE_,VARNAME_,var01,var02,var03,var04
632 MEAN,,21.40,5.00,72.90,17.40
633 STDDEV,,6.50,1.60,22.80,5.70
634 N,,106.00,106.00,106.00,106.00
635 CORR,var01,1.00,.32,.48,.28
636 CORR,var02,.32,1.00,.72,.54
637 CORR,var03,.48,.72,1.00,.50
638 CORR,var04,.28,.54,.50,1.00
639 ])
640 AT_CLEANUP
641
642 AT_SETUP([MATRIX DATA - too few rows])
643 AT_DATA([matrix-data.sps], [dnl
644 matrix data
645     variables = rowtype_ s1 var01 var02 var03 var04
646     /split s1
647     /format = upper diagonal
648     /file='matrix-data.txt'.
649 FORMATS var01 TO var04 (F6.2).
650 LIST.
651 ])
652 AT_DATA([matrix-data.txt], [dnl
653 mean 1    21.4  5.0  72.9  17.4
654 sd   1    6.5  1.6  22.8  5.7
655 n    1   106  106  106  106
656 corr 1   1.00  .32  .48  .28
657 corr 2   1.00  .32  .48  .28
658 corr 2        2.00  .72  .54
659 ])
660
661 AT_CHECK([pspp -O format=csv matrix-data.sps], [1], [dnl
662 matrix-data.txt:5: error: Matrix CORR had 1 rows but 4 rows were expected.
663  
664 matrix-data.txt:6: error: Matrix CORR had 2 rows but 4 rows were expected.
665
666 Table: Split Values
667 Variable,Value
668 s1,1
669
670 Table: Data List
671 s1,ROWTYPE_,VARNAME_,var01,var02,var03,var04
672 1,MEAN,,21.40,5.00,72.90,17.40
673 1,STDDEV,,6.50,1.60,22.80,5.70
674 1,N,,106.00,106.00,106.00,106.00
675 1,CORR,var01,1.00,.32,.48,.28
676 1,CORR,var02,.32,1.00,.  ,.  @&t@
677 1,CORR,var03,.48,.  ,1.00,.  @&t@
678 1,CORR,var04,.28,.  ,.  ,1.00
679
680 Table: Split Values
681 Variable,Value
682 s1,2
683
684 Table: Data List
685 s1,ROWTYPE_,VARNAME_,var01,var02,var03,var04
686 2,CORR,var01,1.00,.32,.48,.28
687 2,CORR,var02,.32,2.00,.72,.54
688 2,CORR,var03,.48,.72,1.00,.  @&t@
689 2,CORR,var04,.28,.54,.  ,1.00
690 ])
691 AT_CLEANUP
692
693 AT_SETUP([MATRIX DATA - badly formed])
694 AT_DATA([data.sps], [dnl
695 data list list NOTABLE /ROWTYPE_ (a8) VARNAME_(a4) v1 v2 v3 v4xxxxxxxxxxxxxxxxxxxxxzzzzzzzzzzzzzxxxxxxxxx.
696 begin data
697 mean ""                          1 2 3 4
698 sd   ""                          5 6 7 8
699 n    ""                          2 3 4 5
700 corr v1                          11 22 33 44
701 corr v2                          55 66 77 88
702 corr v3                          111 222 333 444
703 corr v4                           4 3 21 1
704 end data.
705
706 DEBUG MATRIX READ.
707 ])
708
709 AT_CHECK([pspp --testing-mode -O format=csv data.sps], [0], [dnl
710 data.sps:12: warning: DEBUG MATRIX READ: CORR matrix has 4 columns but 3 rows named variables to be analyzed (and 1 rows named unknown variables).
711
712 Table: Debug Matrix Reader
713 ,,,v1,v2,v3,v4xxxxxxxxxxxxxxxxxxxxxzzzzzzzzzzzzzxxxxxxxxx
714 1,Correlation,v1,11.000,22.000,33.000,44.000
715 ,,v2,55.000,66.000,77.000,88.000
716 ,,v3,111.000,222.000,333.000,444.000
717 ,,v4xxxxxxxxxxxxxxxxxxxxxzzzzzzzzzzzzzxxxxxxxxx,.   ,.   ,.   ,.   @&t@
718 ,N,Value,2.000,3.000,4.000,5.000
719 ,Mean,Value,1.000,2.000,3.000,4.000
720 ])
721 AT_CLEANUP
722
723 AT_SETUP([MATRIX DATA - N subcommand])
724 AT_DATA([matrix-data.sps], [dnl
725 matrix data
726     variables = rowtype_  var01 var02 var03 var04
727     /n = 99
728     /format = upper nodiagonal.
729 begin data
730 mean 34 35 36 37
731 sd   22 11 55 66
732 n_vector 1 2 3 4
733 corr  9 8 7
734 corr  6 5
735 corr  4
736 end data.
737
738 list.
739 ])
740
741 AT_CHECK([pspp -O format=csv matrix-data.sps], [1], [dnl
742 matrix-data.sps:8: error: N record is not allowed with N subcommand.  Ignoring N record.
743
744 Table: Data List
745 ROWTYPE_,VARNAME_,var01,var02,var03,var04
746 N,,99.0000,99.0000,99.0000,99.0000
747 MEAN,,34.0000,35.0000,36.0000,37.0000
748 STDDEV,,22.0000,11.0000,55.0000,66.0000
749 CORR,var01,1.0000,9.0000,8.0000,7.0000
750 CORR,var02,9.0000,1.0000,6.0000,5.0000
751 CORR,var03,8.0000,6.0000,1.0000,4.0000
752 CORR,var04,7.0000,5.0000,4.0000,1.0000
753 ])
754 AT_CLEANUP
755
756 dnl Keep this test in sync with Example 3 in doc/matrices.texi.
757 AT_SETUP([MATRIX DATA - N subcommand - 2])
758 AT_DATA([matrix-data.sps], [dnl
759 MATRIX DATA
760     VARIABLES=ROWTYPE_ var01 TO var08
761     /FORMAT=UPPER NODIAGONAL
762     /N 92.
763 BEGIN DATA.
764 MEAN  24.3   5.4  69.7  20.1  13.4   2.7  27.9   3.7
765 SD     5.7   1.5  23.5   5.8   2.8   4.5   5.4   1.5
766 CORR         .17   .50  -.33   .27   .36  -.22   .18
767 CORR               .29   .29  -.20   .32   .12   .38
768 CORR                     .05   .20  -.15   .16   .21
769 CORR                           .20   .32  -.17   .12
770 CORR                                 .27   .12  -.24
771 CORR                                      -.20  -.38
772 CORR                                             .04
773 END DATA.
774 FORMATS var01 TO var08(F6.2).
775 LIST.
776 ])
777
778 AT_CHECK([pspp -O format=csv matrix-data.sps], [0], [dnl
779 Table: Data List
780 ROWTYPE_,VARNAME_,var01,var02,var03,var04,var05,var06,var07,var08
781 N,,92.00,92.00,92.00,92.00,92.00,92.00,92.00,92.00
782 MEAN,,24.30,5.40,69.70,20.10,13.40,2.70,27.90,3.70
783 STDDEV,,5.70,1.50,23.50,5.80,2.80,4.50,5.40,1.50
784 CORR,var01,1.00,.17,.50,-.33,.27,.36,-.22,.18
785 CORR,var02,.17,1.00,.29,.29,-.20,.32,.12,.38
786 CORR,var03,.50,.29,1.00,.05,.20,-.15,.16,.21
787 CORR,var04,-.33,.29,.05,1.00,.20,.32,-.17,.12
788 CORR,var05,.27,-.20,.20,.20,1.00,.27,.12,-.24
789 CORR,var06,.36,.32,-.15,.32,.27,1.00,-.20,-.38
790 CORR,var07,-.22,.12,.16,-.17,.12,-.20,1.00,.04
791 CORR,var08,.18,.38,.21,.12,-.24,-.38,.04,1.00
792 ])
793 AT_CLEANUP
794
795 dnl A "no-crash" test.  This was observed to cause problems.
796 dnl See bug #58596
797 AT_SETUP([MATRIX DATA - crash])
798
799 AT_DATA([matrix-data.sps], [dnl
800 begin data
801 corr 31
802
803 matrix data
804     var1
805 begin data
806     corr    1.00
807 end data .
808
809 matrix data
810     variables = roxtype_  var01
811    /format = upper nodiagonal.
812 begin data
813 ])
814
815 AT_CHECK([pspp -O format=csv matrix-data.sps], [1], [ignore])
816 AT_CLEANUP
817 \f
818 dnl Keep this test in sync with Example 6 in doc/matrices.texi.
819 AT_SETUP([MATRIX DATA - LOWER DIAGONAL without ROWTYPE_])
820 AT_DATA([matrix-data.sps], [dnl
821 MATRIX DATA
822     VARIABLES=var01 TO var08
823    /CONTENTS=MEAN SD N CORR.
824 BEGIN DATA.
825 24.3   5.4  69.7  20.1  13.4   2.7  27.9   3.7
826  5.7   1.5  23.5   5.8   2.8   4.5   5.4   1.5
827   92    92    92    92    92    92    92    92
828 1.00
829  .18  1.00
830 -.22  -.17  1.00
831  .36   .31  -.14  1.00
832  .27   .16  -.12   .22  1.00
833  .33   .15  -.17   .24   .21  1.00
834  .50   .29  -.20   .32   .12   .38  1.00
835  .17   .29  -.05   .20   .27   .20   .04  1.00
836 END DATA.
837 FORMATS var01 TO var08(F5.2).
838 LIST.
839 ])
840 AT_CHECK([pspp matrix-data.sps -O format=csv], [0], [dnl
841 Table: Data List
842 ROWTYPE_,VARNAME_,var01,var02,var03,var04,var05,var06,var07,var08
843 MEAN,,24.30,5.40,69.70,20.10,13.40,2.70,27.90,3.70
844 STDDEV,,5.70,1.50,23.50,5.80,2.80,4.50,5.40,1.50
845 N,,92.00,92.00,92.00,92.00,92.00,92.00,92.00,92.00
846 CORR,var01,1.00,.18,-.22,.36,.27,.33,.50,.17
847 CORR,var02,.18,1.00,-.17,.31,.16,.15,.29,.29
848 CORR,var03,-.22,-.17,1.00,-.14,-.12,-.17,-.20,-.05
849 CORR,var04,.36,.31,-.14,1.00,.22,.24,.32,.20
850 CORR,var05,.27,.16,-.12,.22,1.00,.21,.12,.27
851 CORR,var06,.33,.15,-.17,.24,.21,1.00,.38,.20
852 CORR,var07,.50,.29,-.20,.32,.12,.38,1.00,.04
853 CORR,var08,.17,.29,-.05,.20,.27,.20,.04,1.00
854 ])
855 AT_CLEANUP
856
857 AT_SETUP([MATRIX DATA - extraneous data without ROWTYPE_])
858 AT_DATA([matrix-data.sps], [dnl
859 MATRIX DATA
860     VARIABLES=var01 TO var08
861    /CONTENTS=MEAN SD N CORR.
862 BEGIN DATA.
863 24.3   5.4  69.7  20.1  13.4   2.7  27.9   3.7
864  5.7   1.5  23.5   5.8   2.8   4.5   5.4   1.5
865   92    92    92    92    92    92    92    92
866 1.00   .18
867  .18  1.00
868 -.22  -.17  1.00
869  .36   .31  -.14  1.00
870  .27   .16  -.12   .22  1.00
871  .33   .15  -.17   .24   .21  1.00
872  .50   .29  -.20   .32   .12   .38  1.00
873  .17   .29  -.05   .20   .27   .20   .04  1.00
874 END DATA.
875 FORMATS var01 TO var08(F5.2).
876 LIST.
877 ])
878 AT_CHECK([pspp matrix-data.sps -O format=csv], [1], [dnl
879 matrix-data.sps:8.8-8.10: error: Extraneous data expecting end of line.
880
881 Table: Data List
882 ROWTYPE_,VARNAME_,var01,var02,var03,var04,var05,var06,var07,var08
883 MEAN,,24.30,5.40,69.70,20.10,13.40,2.70,27.90,3.70
884 STDDEV,,5.70,1.50,23.50,5.80,2.80,4.50,5.40,1.50
885 N,,92.00,92.00,92.00,92.00,92.00,92.00,92.00,92.00
886 CORR,var01,1.00,.18,-.22,.36,.27,.33,.50,.17
887 CORR,var02,.18,1.00,-.17,.31,.16,.15,.29,.29
888 CORR,var03,-.22,-.17,1.00,-.14,-.12,-.17,-.20,-.05
889 CORR,var04,.36,.31,-.14,1.00,.22,.24,.32,.20
890 CORR,var05,.27,.16,-.12,.22,1.00,.21,.12,.27
891 CORR,var06,.33,.15,-.17,.24,.21,1.00,.38,.20
892 CORR,var07,.50,.29,-.20,.32,.12,.38,1.00,.04
893 CORR,var08,.17,.29,-.05,.20,.27,.20,.04,1.00
894 ])
895 AT_CLEANUP
896
897 dnl Keep this test in sync with Example 7 in doc/matrices.texi.
898 AT_SETUP([MATRIX DATA - Split variables with explicit values without ROWTYPE_])
899 AT_DATA([matrix-data.sps], [dnl
900 MATRIX DATA
901     VARIABLES=s1 var01 TO var04
902     /SPLIT=s1
903     /FORMAT=FULL
904     /CONTENTS=MEAN SD N CORR.
905 BEGIN DATA.
906 0 34 35 36 37
907 0 22 11 55 66
908 0 99 98 99 92
909 0  1 .9 .8 .7
910 0 .9  1 .6 .5
911 0 .8 .6  1 .4
912 0 .7 .5 .4  1
913 1 44 45 34 39
914 1 23 15 51 46
915 1 98 34 87 23
916 1  1 .2 .3 .4
917 1 .2  1 .5 .6
918 1 .3 .5  1 .7
919 1 .4 .6 .7  1
920 END DATA.
921 FORMATS var01 TO var04(F5.2).
922 LIST.
923 ])
924 AT_CHECK([pspp matrix-data.sps -O format=csv], [0], [dnl
925 Table: Split Values
926 Variable,Value
927 s1,0
928
929 Table: Data List
930 s1,ROWTYPE_,VARNAME_,var01,var02,var03,var04
931 0,MEAN,,34.00,35.00,36.00,37.00
932 0,STDDEV,,22.00,11.00,55.00,66.00
933 0,N,,99.00,98.00,99.00,92.00
934 0,CORR,var01,1.00,.90,.80,.70
935 0,CORR,var02,.90,1.00,.60,.50
936 0,CORR,var03,.80,.60,1.00,.40
937 0,CORR,var04,.70,.50,.40,1.00
938
939 Table: Split Values
940 Variable,Value
941 s1,1
942
943 Table: Data List
944 s1,ROWTYPE_,VARNAME_,var01,var02,var03,var04
945 1,MEAN,,44.00,45.00,34.00,39.00
946 1,STDDEV,,23.00,15.00,51.00,46.00
947 1,N,,98.00,34.00,87.00,23.00
948 1,CORR,var01,1.00,.20,.30,.40
949 1,CORR,var02,.20,1.00,.50,.60
950 1,CORR,var03,.30,.50,1.00,.70
951 1,CORR,var04,.40,.60,.70,1.00
952 ])
953 AT_CLEANUP
954
955 dnl Keep this test in sync with Example 8 in doc/matrices.texi.
956 AT_SETUP([MATRIX DATA - Split variable with sequential values without ROWTYPE_])
957 AT_DATA([matrix-data.sps], [dnl
958 MATRIX DATA
959     VARIABLES=var01 TO var04
960     /SPLIT=s1
961     /FORMAT=FULL
962     /CONTENTS=MEAN SD N CORR.
963 BEGIN DATA.
964 34 35 36 37
965 22 11 55 66
966 99 98 99 92
967  1 .9 .8 .7
968 .9  1 .6 .5
969 .8 .6  1 .4
970 .7 .5 .4  1
971 44 45 34 39
972 23 15 51 46
973 98 34 87 23
974  1 .2 .3 .4
975 .2  1 .5 .6
976 .3 .5  1 .7
977 .4 .6 .7  1
978 END DATA.
979 FORMATS var01 TO var04(F5.2).
980 LIST.
981 ])
982 AT_CHECK([pspp matrix-data.sps -O format=csv], [0], [dnl
983 Table: Split Values
984 Variable,Value
985 s1,1
986
987 Table: Data List
988 s1,ROWTYPE_,VARNAME_,var01,var02,var03,var04
989 1,MEAN,,34.00,35.00,36.00,37.00
990 1,STDDEV,,22.00,11.00,55.00,66.00
991 1,N,,99.00,98.00,99.00,92.00
992 1,CORR,var01,1.00,.90,.80,.70
993 1,CORR,var02,.90,1.00,.60,.50
994 1,CORR,var03,.80,.60,1.00,.40
995 1,CORR,var04,.70,.50,.40,1.00
996
997 Table: Split Values
998 Variable,Value
999 s1,2
1000
1001 Table: Data List
1002 s1,ROWTYPE_,VARNAME_,var01,var02,var03,var04
1003 2,MEAN,,44.00,45.00,34.00,39.00
1004 2,STDDEV,,23.00,15.00,51.00,46.00
1005 2,N,,98.00,34.00,87.00,23.00
1006 2,CORR,var01,1.00,.20,.30,.40
1007 2,CORR,var02,.20,1.00,.50,.60
1008 2,CORR,var03,.30,.50,1.00,.70
1009 2,CORR,var04,.40,.60,.70,1.00
1010 ])
1011 AT_CLEANUP
1012
1013 dnl Keep this test in sync with Example 9 in doc/matrices.texi.
1014 AT_SETUP([MATRIX DATA - Factor variables grouping within-cell records by factor without ROWTYPE_])
1015 AT_DATA([matrix-data.sps], [dnl
1016 MATRIX DATA
1017     VARIABLES=f1 var01 TO var04
1018     /FACTOR=f1
1019     /CELLS=2
1020     /CONTENTS=(MEAN SD N) CORR.
1021 BEGIN DATA.
1022 0 34 35 36 37
1023 0 22 11 55 66
1024 0 99 98 99 92
1025 1 44 45 34 39
1026 1 23 15 51 46
1027 1 98 34 87 23
1028    1
1029   .9  1
1030   .8 .6  1
1031   .7 .5 .4  1
1032 END DATA.
1033 FORMATS var01 TO var04(F5.1).
1034 LIST.
1035 ])
1036 AT_CHECK([pspp matrix-data.sps -O format=csv], [0], [dnl
1037 Table: Data List
1038 ROWTYPE_,f1,VARNAME_,var01,var02,var03,var04
1039 MEAN,0,,34.0,35.0,36.0,37.0
1040 STDDEV,0,,22.0,11.0,55.0,66.0
1041 N,0,,99.0,98.0,99.0,92.0
1042 MEAN,1,,44.0,45.0,34.0,39.0
1043 STDDEV,1,,23.0,15.0,51.0,46.0
1044 N,1,,98.0,34.0,87.0,23.0
1045 CORR,.,var01,1.0,.9,.8,.7
1046 CORR,.,var02,.9,1.0,.6,.5
1047 CORR,.,var03,.8,.6,1.0,.4
1048 CORR,.,var04,.7,.5,.4,1.0
1049 ])
1050 AT_CLEANUP
1051
1052 dnl Keep this test in sync with Example 10 in doc/matrices.texi.
1053 AT_SETUP([MATRIX DATA - Factor variables grouping within-cell records by row type without ROWTYPE_])
1054 AT_DATA([matrix-data.sps], [dnl
1055 MATRIX DATA
1056     VARIABLES=f1 var01 TO var04
1057     /FACTOR=f1
1058     /CELLS=2
1059     /CONTENTS=(MEAN) (SD) (N) CORR.
1060 BEGIN DATA.
1061 0 34 35 36 37
1062 1 44 45 34 39
1063 0 22 11 55 66
1064 1 23 15 51 46
1065 0 99 98 99 92
1066 1 98 34 87 23
1067    1
1068   .9  1
1069   .8 .6  1
1070   .7 .5 .4  1
1071 END DATA.
1072 FORMATS var01 TO var04(F5.1).
1073 LIST.
1074 ])
1075 AT_CHECK([pspp matrix-data.sps -O format=csv], [0], [dnl
1076 Table: Data List
1077 ROWTYPE_,f1,VARNAME_,var01,var02,var03,var04
1078 MEAN,0,,34.0,35.0,36.0,37.0
1079 MEAN,1,,44.0,45.0,34.0,39.0
1080 STDDEV,0,,22.0,11.0,55.0,66.0
1081 STDDEV,1,,23.0,15.0,51.0,46.0
1082 N,0,,99.0,98.0,99.0,92.0
1083 N,1,,98.0,34.0,87.0,23.0
1084 CORR,.,var01,1.0,.9,.8,.7
1085 CORR,.,var02,.9,1.0,.6,.5
1086 CORR,.,var03,.8,.6,1.0,.4
1087 CORR,.,var04,.7,.5,.4,1.0
1088 ])
1089 AT_CLEANUP
1090
1091 AT_SETUP([MATRIX DATA - syntax errors])
1092 AT_DATA([matrix-data.sps], [dnl
1093 MATRIX DATA VARIABLES=var01 varname_.
1094 MATRIX DATA VARIABLES=v v v.
1095 MATRIX DATA VARIABLES=rowtype_ v1 v2 v3/SPLIT=rowtype_.
1096 MATRIX DATA VARIABLES=rowtype_ v1 v2 v3/FACTORS=rowtype_.
1097 MATRIX DATA VARIABLES=rowtype_ s1 v1 v2 v3/SPLIT=v1/FACTORS=v1.
1098
1099 MATRIX DATA VARIABLES=v1 v2 v3/FORMAT=FULL NODIAGONAL.
1100 MATRIX DATA VARIABLES=v1 v2 v3/FACTORS=v1.
1101 MATRIX DATA VARIABLES=v1 v2 v3.
1102 BEGIN DATA.
1103 END DATA.
1104 MATRIX DATA VARIABLES=v1/FACTORS=v1.
1105 MATRIX DATA VARIABLES=v1 v2 v3 ROWTYPE_.
1106 MATRIX DATA VARIABLES=v1 v2 v3/CONTENTS=N/N=5.
1107 MATRIX DATA VARIABLES=v1/CONTENTS=XYZZY.
1108 MATRIX DATA VARIABLES=v1/CONTENTS=(.
1109 MATRIX DATA VARIABLES=v1/CONTENTS=(CORR.
1110 MATRIX DATA VARIABLES=v1/CONTENTS=).
1111 MATRIX DATA.
1112 MATRIX DATA VARIABLES=v*.
1113 MATRIX DATA VARIABLES=v/N=-1.
1114 MATRIX DATA VARIABLES=v/FORMAT=XYZZY.
1115 MATRIX DATA VARIABLES=v/FILE=123.
1116 MATRIX DATA VARIABLES=v/SPLIT=123.
1117 MATRIX DATA VARIABLES=v/CELLS=-1.
1118 MATRIX DATA VARIABLES=v/XYZZY.
1119 ])
1120 AT_CHECK([pspp matrix-data.sps -O format=csv], [1], [dnl
1121 matrix-data.sps:1: error: MATRIX DATA: VARIABLES may not include VARNAME_.
1122
1123 matrix-data.sps:2: error: MATRIX DATA: Variable v appears twice in variable list.
1124
1125 matrix-data.sps:3: error: MATRIX DATA: ROWTYPE_ is not allowed on SPLIT or FACTORS.
1126
1127 matrix-data.sps:4: error: MATRIX DATA: ROWTYPE_ is not allowed on SPLIT or FACTORS.
1128
1129 matrix-data.sps:5: error: MATRIX DATA: v1 may not appear on both SPLIT and FACTORS.
1130
1131 matrix-data.sps:7: error: MATRIX DATA: FORMAT=FULL and FORMAT=NODIAGONAL are mutually exclusive.
1132
1133 matrix-data.sps:8: error: MATRIX DATA: CELLS is required when factor variables are specified and VARIABLES does not include ROWTYPE_.
1134
1135 matrix-data.sps:9: warning: MATRIX DATA: CONTENTS was not specified and VARIABLES does not include ROWTYPE_.  Assuming CONTENTS=CORR.
1136
1137 matrix-data.sps:12: error: MATRIX DATA: CELLS is required when factor variables are specified and VARIABLES does not include ROWTYPE_.
1138
1139 matrix-data.sps:13: error: MATRIX DATA: VARIABLES includes ROWTYPE_ but the continuous variables are not the last ones on VARIABLES.
1140
1141 matrix-data.sps:14: error: MATRIX DATA: Cannot specify N on CONTENTS along with the N subcommand.
1142
1143 matrix-data.sps:15.35-15.39: error: MATRIX DATA: Syntax error at `XYZZY': Row type keyword expected.
1144
1145 matrix-data.sps:16.36: error: MATRIX DATA: Syntax error at end of command: Row type keyword expected.
1146
1147 matrix-data.sps:17.40: error: MATRIX DATA: Syntax error at end of command: Row type keyword expected.
1148
1149 matrix-data.sps:18.35: error: MATRIX DATA: Syntax error at `)': Row type keyword expected.
1150
1151 matrix-data.sps:19.12: error: MATRIX DATA: Syntax error at end of command: expecting VARIABLES.
1152
1153 matrix-data.sps:20.24: error: MATRIX DATA: Syntax error at `*': expecting `/'.
1154
1155 matrix-data.sps:21.27-21.28: error: MATRIX DATA: Syntax error at `-1': Expected non-negative integer for N.
1156
1157 matrix-data.sps:22.32-22.36: error: MATRIX DATA: Syntax error at `XYZZY'.
1158
1159 matrix-data.sps:23.30-23.32: error: MATRIX DATA: Syntax error at `123': expecting a file name or handle name.
1160
1161 matrix-data.sps:24.31-24.33: error: MATRIX DATA: Syntax error at `123': expecting variable name.
1162
1163 matrix-data.sps:25.31-25.32: error: MATRIX DATA: Syntax error at `-1': Expected non-negative integer for CELLS.
1164
1165 matrix-data.sps:26.25-26.29: error: MATRIX DATA: Syntax error at `XYZZY'.
1166 ])
1167 AT_CLEANUP
1168
1169 dnl I don't know what lunatic thought this was OK, but we strive to be
1170 dnl compatible.
1171 AT_SETUP([MATRIX DATA - plus and minus as delimiters])
1172 AT_DATA([matrix-data.sps], [dnl
1173 MATRIX DATA
1174     VARIABLES=ROWTYPE_ var01 TO var08.
1175 BEGIN DATA.
1176 MEAN+24.3+5.4+69.7+20.1+13.4+2.7+27.9+3.7
1177 SD +5.7+1.5+23.5+5.8+2.8+4.5+5.4+1.5
1178 N+92+92+92+92+92+92+92+92
1179 CORR+1.00
1180 CORR+.18+1.00
1181 CORR-.22e+0-.17+1.00
1182 CORR+.36d-0+.31-.14+1.00
1183 CORR+.27+.16-.12+.22+1.00
1184 CORR+.33+.15-.17+.24+.21+1.00
1185 CORR+.50+.29-.20+.32+.12+.38+1.00
1186 CORR+.17+.29-.05+.20+.27+.20+.04+1.00
1187 END DATA.
1188 FORMATS var01 TO var08(F5.2).
1189 LIST.
1190 ])
1191
1192 AT_CHECK([pspp -O format=csv matrix-data.sps], [0], [dnl
1193 Table: Data List
1194 ROWTYPE_,VARNAME_,var01,var02,var03,var04,var05,var06,var07,var08
1195 MEAN,,24.30,5.40,69.70,20.10,13.40,2.70,27.90,3.70
1196 STDDEV,,5.70,1.50,23.50,5.80,2.80,4.50,5.40,1.50
1197 N,,92.00,92.00,92.00,92.00,92.00,92.00,92.00,92.00
1198 CORR,var01,1.00,.18,-.22,.36,.27,.33,.50,.17
1199 CORR,var02,.18,1.00,-.17,.31,.16,.15,.29,.29
1200 CORR,var03,-.22,-.17,1.00,-.14,-.12,-.17,-.20,-.05
1201 CORR,var04,.36,.31,-.14,1.00,.22,.24,.32,.20
1202 CORR,var05,.27,.16,-.12,.22,1.00,.21,.12,.27
1203 CORR,var06,.33,.15,-.17,.24,.21,1.00,.38,.20
1204 CORR,var07,.50,.29,-.20,.32,.12,.38,1.00,.04
1205 CORR,var08,.17,.29,-.05,.20,.27,.20,.04,1.00
1206 ])
1207 AT_CLEANUP