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 AT_BANNER([expressions])
18 AT_SETUP([expressions - numeric syntax])
19 AT_KEYWORDS([expression expressions evaluate])
20 AT_DATA([evaluate-base.sps], [dnl
22 DEBUG EVALUATE SET opt.
26 DEBUG EVALUATE /1e-99.
29 for opt in OPT NOOPT; do
31 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
32 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
44 AT_SETUP([expressions - coercion to and from Boolean])
45 AT_KEYWORDS([expression expressions evaluate])
46 AT_DATA([evaluate-base.sps], [dnl
48 DEBUG EVALUATE SET opt.
49 DEBUG EVALUATE/0 AND 1.
50 DEBUG EVALUATE/$true AND 1.
51 DEBUG EVALUATE/1 OR $false.
52 DEBUG EVALUATE/1 OR $sysmis.
53 DEBUG EVALUATE/2 OR $sysmis.
54 DEBUG EVALUATE/1 AND 3.
57 for opt in OPT NOOPT; do
59 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
60 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
69 evaluate.sps:7.16-7.27: error: DEBUG EVALUATE: The operands of OR must have
71 7 | DEBUG EVALUATE/2 OR $sysmis.
74 evaluate.sps:7.16: note: DEBUG EVALUATE: This operand with unexpected value 2
76 7 | DEBUG EVALUATE/2 OR $sysmis.
79 2 OR $sysmis => sysmis
81 evaluate.sps:8.16-8.22: error: DEBUG EVALUATE: The operands of AND must have
83 8 | DEBUG EVALUATE/1 AND 3.
86 evaluate.sps:8.22: note: DEBUG EVALUATE: This operand with unexpected value 3
88 8 | DEBUG EVALUATE/1 AND 3.
96 AT_SETUP([expressions - addition and subtraction])
97 AT_KEYWORDS([expression expressions evaluate])
98 AT_DATA([evaluate-base.sps], [dnl
100 DEBUG EVALUATE SET opt.
101 DEBUG EVALUATE /1 + $true.
102 DEBUG EVALUATE /$sysmis + 1.
103 DEBUG EVALUATE /7676 + $sysmis.
104 DEBUG EVALUATE /1 +3 - 2 +4 - 5.
105 DEBUG EVALUATE /$true - 4/3.
106 DEBUG EVALUATE /1 - 2.
107 DEBUG EVALUATE /52 -23.
109 DEBUG EVALUATE /('foo') + 5.
110 DEBUG EVALUATE /('foo') + ('bar'). /* Concatenation requires CONCAT.
111 DEBUG EVALUATE /'foo' + 'bar'. /* Lexical concatenation succeeds.
113 DEBUG EVALUATE /'string' - 1e10.
114 DEBUG EVALUATE /9.5 - ''.
116 DEBUG EVALUATE /F2.0 + 3.
119 DEBUG EVALUATE (y=3)(x=2) /(1 - y) + (1 - x).
120 DEBUG EVALUATE (y=3)(x=2) /((1 - y) + (1 - x)).
121 DEBUG EVALUATE (y=3)(x=2) /(1-y) + (1-x).
122 DEBUG EVALUATE (y=3)(x=2) /( (1-y) + (1-x) ).
125 for opt in OPT NOOPT; do
127 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
128 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
131 $sysmis + 1 => sysmis
133 7676 + $sysmis => sysmis
135 1 +3 - 2 +4 - 5 => 1.00
143 evaluate.sps:11.18-11.27: error: DEBUG EVALUATE: Both operands of + must be
145 11 | DEBUG EVALUATE /('foo') + 5.
148 evaluate.sps:11.18-11.22: note: DEBUG EVALUATE: This operand has type 'string'.
149 11 | DEBUG EVALUATE /('foo') + 5.
152 evaluate.sps:11.27: note: DEBUG EVALUATE: This operand has type 'number'.
153 11 | DEBUG EVALUATE /('foo') + 5.
158 evaluate.sps:12.18-12.32: error: DEBUG EVALUATE: Both operands of + must be
160 12 | DEBUG EVALUATE /('foo') + ('bar'). /* Concatenation requires CONCAT.
163 evaluate.sps:12.18-12.22: note: DEBUG EVALUATE: This operand has type 'string'.
164 12 | DEBUG EVALUATE /('foo') + ('bar'). /* Concatenation requires CONCAT.
167 evaluate.sps:12.28-12.32: note: DEBUG EVALUATE: This operand has type 'string'.
168 12 | DEBUG EVALUATE /('foo') + ('bar'). /* Concatenation requires CONCAT.
171 ('foo') + ('bar') => error
173 'foo' + 'bar' => "foobar"
175 evaluate.sps:15.17-15.31: error: DEBUG EVALUATE: Both operands of - must be
177 15 | DEBUG EVALUATE /'string' - 1e10.
180 evaluate.sps:15.17-15.24: note: DEBUG EVALUATE: This operand has type 'string'.
181 15 | DEBUG EVALUATE /'string' - 1e10.
184 evaluate.sps:15.26-15.31: note: DEBUG EVALUATE: This operand has type 'number'.
185 15 | DEBUG EVALUATE /'string' - 1e10.
188 'string' - 1e10 => error
190 evaluate.sps:16.17-16.24: error: DEBUG EVALUATE: Both operands of - must be
192 16 | DEBUG EVALUATE /9.5 - ''.
195 evaluate.sps:16.17-16.19: note: DEBUG EVALUATE: This operand has type 'number'.
196 16 | DEBUG EVALUATE /9.5 - ''.
199 evaluate.sps:16.23-16.24: note: DEBUG EVALUATE: This operand has type 'string'.
200 16 | DEBUG EVALUATE /9.5 - ''.
205 evaluate.sps:18.17-18.24: error: DEBUG EVALUATE: Both operands of + must be
207 18 | DEBUG EVALUATE /F2.0 + 3.
210 evaluate.sps:18.17-18.20: note: DEBUG EVALUATE: This operand has type 'format'.
211 18 | DEBUG EVALUATE /F2.0 + 3.
214 evaluate.sps:18.24: note: DEBUG EVALUATE: This operand has type 'number'.
215 18 | DEBUG EVALUATE /F2.0 + 3.
220 (1 - y) + (1 - x) => -3.00
222 ((1 - y) + (1 - x)) => -3.00
224 (1-y) + (1-x) => -3.00
226 ( (1-y) + (1-x) ) => -3.00
231 AT_SETUP([expressions - multiplication and division])
232 AT_KEYWORDS([expression expressions evaluate])
233 AT_DATA([evaluate-base.sps], [dnl
235 DEBUG EVALUATE SET opt.
236 DEBUG EVALUATE /5 * 10.
237 DEBUG EVALUATE /10 * $true.
238 DEBUG EVALUATE /$true * 5.
239 DEBUG EVALUATE /1.5 * $true.
240 DEBUG EVALUATE /$sysmis * 15.
241 DEBUG EVALUATE /8.5 / $sysmis.
242 DEBUG EVALUATE /2 * 5 / 10.
243 DEBUG EVALUATE /1 / 2.
244 DEBUG EVALUATE /2 / 5.
245 DEBUG EVALUATE /12 / 3 / 2.
247 DEBUG EVALUATE /'x' * 1.
248 DEBUG EVALUATE /2 / 'x'.
251 for opt in OPT NOOPT; do
253 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
254 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
263 $sysmis * 15 => sysmis
265 8.5 / $sysmis => sysmis
275 evaluate.sps:14.17-14.23: error: DEBUG EVALUATE: Both operands of * must be
277 14 | DEBUG EVALUATE /'x' * 1.
280 evaluate.sps:14.17-14.19: note: DEBUG EVALUATE: This operand has type 'string'.
281 14 | DEBUG EVALUATE /'x' * 1.
284 evaluate.sps:14.23: note: DEBUG EVALUATE: This operand has type 'number'.
285 14 | DEBUG EVALUATE /'x' * 1.
290 evaluate.sps:15.17-15.23: error: DEBUG EVALUATE: Both operands of / must be
292 15 | DEBUG EVALUATE /2 / 'x'.
295 evaluate.sps:15.17: note: DEBUG EVALUATE: This operand has type 'number'.
296 15 | DEBUG EVALUATE /2 / 'x'.
299 evaluate.sps:15.21-15.23: note: DEBUG EVALUATE: This operand has type 'string'.
300 15 | DEBUG EVALUATE /2 / 'x'.
308 AT_SETUP([expressions - exponentiation])
309 AT_KEYWORDS([expression expressions evaluate])
310 AT_DATA([evaluate-base.sps], [dnl
312 DEBUG EVALUATE SET opt.
313 DEBUG EVALUATE /2**8.
314 DEBUG EVALUATE /(2**3)**4.
315 DEBUG EVALUATE /2**3**4.
316 DEBUG EVALUATE /-2**2.
317 DEBUG EVALUATE /-2**-3**-4.
318 DEBUG EVALUATE /-((2**-3)**-4).
321 for opt in OPT NOOPT; do
323 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
324 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
329 evaluate.sps:5.17-5.23: warning: DEBUG EVALUATE: The exponentiation operator
330 (`**') is left-associative: `a**b**c' equals `(a**b)**c', not `a**(b**c)'. To
331 disable this warning, insert parentheses.
332 5 | DEBUG EVALUATE /2**3**4.
339 evaluate.sps:7.17-7.26: warning: DEBUG EVALUATE: The exponentiation operator
340 (`**') is left-associative: `a**b**c' equals `(a**b)**c', not `a**(b**c)'. To
341 disable this warning, insert parentheses.
342 7 | DEBUG EVALUATE /-2**-3**-4.
345 -2**-3**-4 => -4096.00
347 -((2**-3)**-4) => -4096.00
352 AT_SETUP([expressions - unary minus])
353 AT_KEYWORDS([expression expressions evaluate])
354 AT_DATA([evaluate-base.sps], [dnl
356 DEBUG EVALUATE SET opt.
357 DEBUG EVALUATE /2+-3.
358 DEBUG EVALUATE /2*-3.
359 DEBUG EVALUATE /-3**2.
360 DEBUG EVALUATE /(-3)**2.
361 DEBUG EVALUATE /-(3**2).
362 DEBUG EVALUATE /2**-1.
363 DEBUG EVALUATE /0**0.
364 DEBUG EVALUATE /0**-1.
365 DEBUG EVALUATE /(-3)**1.5.
368 for opt in OPT NOOPT; do
369 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
370 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
392 AT_SETUP([expressions - AND truth table])
393 AT_KEYWORDS([expression expressions evaluate])
394 AT_DATA([evaluate-base.sps], [dnl
396 DEBUG EVALUATE SET opt.
397 DEBUG EVALUATE /$false AND $false.
398 DEBUG EVALUATE /$false AND $true.
399 DEBUG EVALUATE /$false AND $sysmis.
400 DEBUG EVALUATE /$true AND $false.
401 DEBUG EVALUATE /$true AND $true.
402 DEBUG EVALUATE /$true AND $sysmis.
403 DEBUG EVALUATE /$sysmis AND $false.
404 DEBUG EVALUATE /$sysmis AND $true.
405 DEBUG EVALUATE /$sysmis AND $sysmis.
406 DEBUG EVALUATE /$false & $false.
407 DEBUG EVALUATE /$false & $true.
408 DEBUG EVALUATE /$false & $sysmis.
409 DEBUG EVALUATE /$true & $false.
410 DEBUG EVALUATE /$true & $true.
411 DEBUG EVALUATE /$true & $sysmis.
412 DEBUG EVALUATE /$sysmis & $false.
413 DEBUG EVALUATE /$sysmis & $true.
414 DEBUG EVALUATE /$sysmis & $sysmis.
417 for opt in OPT NOOPT; do
419 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
420 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
421 $false AND $false => false
423 $false AND $true => false
425 $false AND $sysmis => false
427 $true AND $false => false
429 $true AND $true => true
431 $true AND $sysmis => sysmis
433 $sysmis AND $false => false
435 $sysmis AND $true => sysmis
437 $sysmis AND $sysmis => sysmis
439 $false & $false => false
441 $false & $true => false
443 $false & $sysmis => false
445 $true & $false => false
447 $true & $true => true
449 $true & $sysmis => sysmis
451 $sysmis & $false => false
453 $sysmis & $true => sysmis
455 $sysmis & $sysmis => sysmis
460 AT_SETUP([expressions - OR truth table])
461 AT_KEYWORDS([expression expressions evaluate])
462 AT_DATA([evaluate-base.sps], [dnl
464 DEBUG EVALUATE SET opt.
465 DEBUG EVALUATE /$false OR $false.
466 DEBUG EVALUATE /$false OR $true.
467 DEBUG EVALUATE /$false OR $sysmis.
468 DEBUG EVALUATE /$true OR $false.
469 DEBUG EVALUATE /$true OR $true.
470 DEBUG EVALUATE /$true OR $sysmis.
471 DEBUG EVALUATE /$sysmis OR $false.
472 DEBUG EVALUATE /$sysmis OR $true.
473 DEBUG EVALUATE /$sysmis OR $sysmis.
474 DEBUG EVALUATE /$false | $false.
475 DEBUG EVALUATE /$false | $true.
476 DEBUG EVALUATE /$false | $sysmis.
477 DEBUG EVALUATE /$true | $false.
478 DEBUG EVALUATE /$true | $true.
479 DEBUG EVALUATE /$true | $sysmis.
480 DEBUG EVALUATE /$sysmis | $false.
481 DEBUG EVALUATE /$sysmis | $true.
482 DEBUG EVALUATE /$sysmis | $sysmis.
485 for opt in OPT NOOPT; do
487 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
488 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
489 $false OR $false => false
491 $false OR $true => true
493 $false OR $sysmis => sysmis
495 $true OR $false => true
497 $true OR $true => true
499 $true OR $sysmis => true
501 $sysmis OR $false => sysmis
503 $sysmis OR $true => true
505 $sysmis OR $sysmis => sysmis
507 $false | $false => false
509 $false | $true => true
511 $false | $sysmis => sysmis
513 $true | $false => true
515 $true | $true => true
517 $true | $sysmis => true
519 $sysmis | $false => sysmis
521 $sysmis | $true => true
523 $sysmis | $sysmis => sysmis
528 AT_SETUP([expressions - NOT truth table])
529 AT_KEYWORDS([expression expressions evaluate])
530 AT_DATA([evaluate-base.sps], [dnl
532 DEBUG EVALUATE SET opt.
533 DEBUG EVALUATE /not $false.
534 DEBUG EVALUATE /not 0.
535 DEBUG EVALUATE /not 2.5.
536 DEBUG EVALUATE /not $true.
537 DEBUG EVALUATE /not 1.
538 DEBUG EVALUATE /not $sysmis.
539 DEBUG EVALUATE /~ $false.
541 DEBUG EVALUATE /~ 2.5.
542 DEBUG EVALUATE /~ $true.
544 DEBUG EVALUATE /~ $sysmis.
547 for opt in OPT NOOPT; do
549 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
550 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
555 evaluate.sps:5.17-5.23: error: DEBUG EVALUATE: The operand of NOT must have
557 5 | DEBUG EVALUATE /not 2.5.
560 evaluate.sps:5.21-5.23: note: DEBUG EVALUATE: This operand with unexpected
561 value 2.5 will be treated as 0.
562 5 | DEBUG EVALUATE /not 2.5.
571 not $sysmis => sysmis
577 evaluate.sps:11.17-11.21: error: DEBUG EVALUATE: The operand of NOT must have
579 11 | DEBUG EVALUATE /~ 2.5.
582 evaluate.sps:11.19-11.21: note: DEBUG EVALUATE: This operand with unexpected
583 value 2.5 will be treated as 0.
584 11 | DEBUG EVALUATE /~ 2.5.
598 AT_SETUP([expressions - = <= <])
599 AT_KEYWORDS([expression expressions evaluate eq le lt])
600 AT_DATA([evaluate-base.sps], [dnl
602 DEBUG EVALUATE SET opt.
603 DEBUG EVALUATE /1 eq 1.
604 DEBUG EVALUATE /1 = 1.
605 DEBUG EVALUATE /1 eq 2.
606 DEBUG EVALUATE /2 = 3.
607 DEBUG EVALUATE /1 eq 'foobar'.
608 DEBUG EVALUATE /'baz' = 10.
609 DEBUG EVALUATE /'baz' = f8.2.
610 DEBUG EVALUATE /'baz' = 'baz'.
611 DEBUG EVALUATE /'quux' = 'bar'.
612 DEBUG EVALUATE /'bar ' = 'bar'.
613 DEBUG EVALUATE /'asdf ' = 'asdf '.
614 DEBUG EVALUATE /'asdfj ' = 'asdf'.
615 DEBUG EVALUATE /1 + 2 = 3.
616 DEBUG EVALUATE /1 >= 2 = 2 ge 3.
617 DEBUG EVALUATE /3 ne 2 != 1.
618 DEBUG EVALUATE /3 > 2 > 1.
620 DEBUG EVALUATE /1 <= 2.
621 DEBUG EVALUATE /2.5 <= 1.5.
622 DEBUG EVALUATE /1 le 2.
623 DEBUG EVALUATE /2 <= 2.
624 DEBUG EVALUATE /2 le 2.
625 DEBUG EVALUATE /2 < = 2.
626 DEBUG EVALUATE /1 <= 'foobar'.
627 DEBUG EVALUATE /'baz' <= 10.
628 DEBUG EVALUATE /'quux' <= 5.55.
629 DEBUG EVALUATE /'0123' <= '0123'.
630 DEBUG EVALUATE /'0123' <= '0124'.
631 DEBUG EVALUATE /'0124' le '0123'.
632 DEBUG EVALUATE /'0123 ' <= '0123'.
633 DEBUG EVALUATE /'0123' le '0123 '.
635 DEBUG EVALUATE /1 < 2.
636 DEBUG EVALUATE /2.5 < 1.5.
637 DEBUG EVALUATE /3.5 lt 4.
638 DEBUG EVALUATE /4 lt 3.5
639 DEBUG EVALUATE /1 lt 'foobar'.
640 DEBUG EVALUATE /5 lt 'foobar'.
641 DEBUG EVALUATE /'baz' < 10.
642 DEBUG EVALUATE /'quux' < 5.55.
643 DEBUG EVALUATE /'0123' lt '0123'.
644 DEBUG EVALUATE /'0123' < '0124'.
645 DEBUG EVALUATE /'0124' lt '0123'.
646 DEBUG EVALUATE /'0123 ' < '0123'.
647 DEBUG EVALUATE /'0123' lt '0123 '.
650 for opt in OPT NOOPT; do
652 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
653 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
662 evaluate.sps:7.17-7.29: error: DEBUG EVALUATE: Both operands of EQ must have
664 7 | DEBUG EVALUATE /1 eq 'foobar'.
667 evaluate.sps:7.17: note: DEBUG EVALUATE: This operand has type 'number'.
668 7 | DEBUG EVALUATE /1 eq 'foobar'.
671 evaluate.sps:7.22-7.29: note: DEBUG EVALUATE: This operand has type 'string'.
672 7 | DEBUG EVALUATE /1 eq 'foobar'.
675 1 eq 'foobar' => error
677 evaluate.sps:8.17-8.26: error: DEBUG EVALUATE: Both operands of = must have the
679 8 | DEBUG EVALUATE /'baz' = 10.
682 evaluate.sps:8.17-8.21: note: DEBUG EVALUATE: This operand has type 'string'.
683 8 | DEBUG EVALUATE /'baz' = 10.
686 evaluate.sps:8.25-8.26: note: DEBUG EVALUATE: This operand has type 'number'.
687 8 | DEBUG EVALUATE /'baz' = 10.
692 evaluate.sps:9.17-9.28: error: DEBUG EVALUATE: Both operands of = must have the
694 9 | DEBUG EVALUATE /'baz' = f8.2.
697 evaluate.sps:9.17-9.21: note: DEBUG EVALUATE: This operand has type 'string'.
698 9 | DEBUG EVALUATE /'baz' = f8.2.
701 evaluate.sps:9.25-9.28: note: DEBUG EVALUATE: This operand has type 'format'.
702 9 | DEBUG EVALUATE /'baz' = f8.2.
705 'baz' = f8.2 => error
707 'baz' = 'baz' => true
709 'quux' = 'bar' => false
711 'bar ' = 'bar' => true
713 'asdf ' = 'asdf ' => true
715 'asdfj ' = 'asdf' => false
719 evaluate.sps:16.17-16.31: warning: DEBUG EVALUATE: Chaining relational
720 operators (e.g. `a < b < c') will not produce the mathematically expected
721 result. Use the AND logical operator to fix the problem (e.g. `a < b AND b <
722 c'). To disable this warning, insert parentheses.
723 16 | DEBUG EVALUATE /1 >= 2 = 2 ge 3.
726 1 >= 2 = 2 ge 3 => false
728 evaluate.sps:17.24: error: DEBUG EVALUATE: Syntax error expecting end of
730 17 | DEBUG EVALUATE /3 ne 2 != 1.
735 evaluate.sps:18.17-18.25: warning: DEBUG EVALUATE: Chaining relational
736 operators (e.g. `a < b < c') will not produce the mathematically expected
737 result. Use the AND logical operator to fix the problem (e.g. `a < b AND b <
738 c'). To disable this warning, insert parentheses.
739 18 | DEBUG EVALUATE /3 > 2 > 1.
754 evaluate.sps:25.21: error: DEBUG EVALUATE: Syntax error parsing expression.
755 25 | DEBUG EVALUATE /2 < = 2.
760 evaluate.sps:26.17-26.29: error: DEBUG EVALUATE: Both operands of <= must have
762 26 | DEBUG EVALUATE /1 <= 'foobar'.
765 evaluate.sps:26.17: note: DEBUG EVALUATE: This operand has type 'number'.
766 26 | DEBUG EVALUATE /1 <= 'foobar'.
769 evaluate.sps:26.22-26.29: note: DEBUG EVALUATE: This operand has type 'string'.
770 26 | DEBUG EVALUATE /1 <= 'foobar'.
773 1 <= 'foobar' => error
775 evaluate.sps:27.17-27.27: error: DEBUG EVALUATE: Both operands of <= must have
777 27 | DEBUG EVALUATE /'baz' <= 10.
780 evaluate.sps:27.17-27.21: note: DEBUG EVALUATE: This operand has type 'string'.
781 27 | DEBUG EVALUATE /'baz' <= 10.
784 evaluate.sps:27.26-27.27: note: DEBUG EVALUATE: This operand has type 'number'.
785 27 | DEBUG EVALUATE /'baz' <= 10.
790 evaluate.sps:28.17-28.30: error: DEBUG EVALUATE: Both operands of <= must have
792 28 | DEBUG EVALUATE /'quux' <= 5.55.
795 evaluate.sps:28.17-28.22: note: DEBUG EVALUATE: This operand has type 'string'.
796 28 | DEBUG EVALUATE /'quux' <= 5.55.
799 evaluate.sps:28.27-28.30: note: DEBUG EVALUATE: This operand has type 'number'.
800 28 | DEBUG EVALUATE /'quux' <= 5.55.
803 'quux' <= 5.55 => error
805 '0123' <= '0123' => true
807 '0123' <= '0124' => true
809 '0124' le '0123' => false
811 '0123 ' <= '0123' => true
813 '0123' le '0123 ' => true
823 evaluate.sps:39.17-39.29: error: DEBUG EVALUATE: Both operands of < must have
825 39 | DEBUG EVALUATE /1 lt 'foobar'.
828 evaluate.sps:39.17: note: DEBUG EVALUATE: This operand has type 'number'.
829 39 | DEBUG EVALUATE /1 lt 'foobar'.
832 evaluate.sps:39.22-39.29: note: DEBUG EVALUATE: This operand has type 'string'.
833 39 | DEBUG EVALUATE /1 lt 'foobar'.
836 1 lt 'foobar' => error
838 evaluate.sps:40.17-40.29: error: DEBUG EVALUATE: Both operands of < must have
840 40 | DEBUG EVALUATE /5 lt 'foobar'.
843 evaluate.sps:40.17: note: DEBUG EVALUATE: This operand has type 'number'.
844 40 | DEBUG EVALUATE /5 lt 'foobar'.
847 evaluate.sps:40.22-40.29: note: DEBUG EVALUATE: This operand has type 'string'.
848 40 | DEBUG EVALUATE /5 lt 'foobar'.
851 5 lt 'foobar' => error
853 evaluate.sps:41.17-41.26: error: DEBUG EVALUATE: Both operands of < must have
855 41 | DEBUG EVALUATE /'baz' < 10.
858 evaluate.sps:41.17-41.21: note: DEBUG EVALUATE: This operand has type 'string'.
859 41 | DEBUG EVALUATE /'baz' < 10.
862 evaluate.sps:41.25-41.26: note: DEBUG EVALUATE: This operand has type 'number'.
863 41 | DEBUG EVALUATE /'baz' < 10.
868 evaluate.sps:42.17-42.29: error: DEBUG EVALUATE: Both operands of < must have
870 42 | DEBUG EVALUATE /'quux' < 5.55.
873 evaluate.sps:42.17-42.22: note: DEBUG EVALUATE: This operand has type 'string'.
874 42 | DEBUG EVALUATE /'quux' < 5.55.
877 evaluate.sps:42.26-42.29: note: DEBUG EVALUATE: This operand has type 'number'.
878 42 | DEBUG EVALUATE /'quux' < 5.55.
881 'quux' < 5.55 => error
883 '0123' lt '0123' => false
885 '0123' < '0124' => true
887 '0124' lt '0123' => false
889 '0123 ' < '0123' => false
891 '0123' lt '0123 ' => false
896 AT_SETUP([expressions - >= > <>])
897 AT_KEYWORDS([expression expressions evaluate ge gt ne])
898 AT_DATA([evaluate-base.sps], [dnl
900 DEBUG EVALUATE SET opt.
901 DEBUG EVALUATE /1 >= 2.
902 DEBUG EVALUATE /2.5 >= 1.5
903 DEBUG EVALUATE /1 ge 2.
904 DEBUG EVALUATE /2 >= 2.
905 DEBUG EVALUATE /2 ge 2.
906 DEBUG EVALUATE /2 > = 2.
907 DEBUG EVALUATE /1 >= 'foobar'.
908 DEBUG EVALUATE /5 ge 'foobar'.
909 DEBUG EVALUATE /'baz' ge 10.
910 DEBUG EVALUATE /'0123' ge '0123'.
911 DEBUG EVALUATE /'0123' >= '0124'.
912 DEBUG EVALUATE /'0124' >= '0123'.
913 DEBUG EVALUATE /'0123 ' ge '0123'.
914 DEBUG EVALUATE /'0123' >= '0123 '.
916 DEBUG EVALUATE /1 > 2.
917 DEBUG EVALUATE /2.5 > 1.5
918 DEBUG EVALUATE /3.5 gt 4.
919 DEBUG EVALUATE /4 gt 3.5
920 DEBUG EVALUATE /1 gt 'foobar'.
921 DEBUG EVALUATE /'baz' > 10.
922 DEBUG EVALUATE /'0123' > '0123'.
923 DEBUG EVALUATE /'0123' > '0124'.
924 DEBUG EVALUATE /'0124' > '0123'.
925 DEBUG EVALUATE /'0123 ' > '0123'.
926 DEBUG EVALUATE /'0123 ' > '0123 '.
928 DEBUG EVALUATE /1 ne 1.
929 DEBUG EVALUATE /1 ~= 1.
930 DEBUG EVALUATE /1 <> 2.
931 DEBUG EVALUATE /2 ne 3.
932 DEBUG EVALUATE /1 ~= 'foobar'.
933 DEBUG EVALUATE /'baz' ne 10.
934 DEBUG EVALUATE /'quux' ~= 5.55.
935 DEBUG EVALUATE /'foobar' <> 'foobar'.
936 DEBUG EVALUATE /'quux' ne 'bar'.
937 DEBUG EVALUATE /'bar ' <> 'bar'.
938 DEBUG EVALUATE /'asdf ' ~= "asdf ".
939 DEBUG EVALUATE /1 < > 1.
940 DEBUG EVALUATE /1 ~ = 1.
943 for opt in OPT NOOPT; do
945 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
946 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
957 evaluate.sps:8.21: error: DEBUG EVALUATE: Syntax error parsing expression.
958 8 | DEBUG EVALUATE /2 > = 2.
963 evaluate.sps:9.17-9.29: error: DEBUG EVALUATE: Both operands of >= must have
965 9 | DEBUG EVALUATE /1 >= 'foobar'.
968 evaluate.sps:9.17: note: DEBUG EVALUATE: This operand has type 'number'.
969 9 | DEBUG EVALUATE /1 >= 'foobar'.
972 evaluate.sps:9.22-9.29: note: DEBUG EVALUATE: This operand has type 'string'.
973 9 | DEBUG EVALUATE /1 >= 'foobar'.
976 1 >= 'foobar' => error
978 evaluate.sps:10.17-10.29: error: DEBUG EVALUATE: Both operands of >= must have
980 10 | DEBUG EVALUATE /5 ge 'foobar'.
983 evaluate.sps:10.17: note: DEBUG EVALUATE: This operand has type 'number'.
984 10 | DEBUG EVALUATE /5 ge 'foobar'.
987 evaluate.sps:10.22-10.29: note: DEBUG EVALUATE: This operand has type 'string'.
988 10 | DEBUG EVALUATE /5 ge 'foobar'.
991 5 ge 'foobar' => error
993 evaluate.sps:11.17-11.27: error: DEBUG EVALUATE: Both operands of >= must have
995 11 | DEBUG EVALUATE /'baz' ge 10.
998 evaluate.sps:11.17-11.21: note: DEBUG EVALUATE: This operand has type 'string'.
999 11 | DEBUG EVALUATE /'baz' ge 10.
1002 evaluate.sps:11.26-11.27: note: DEBUG EVALUATE: This operand has type 'number'.
1003 11 | DEBUG EVALUATE /'baz' ge 10.
1006 'baz' ge 10 => error
1008 '0123' ge '0123' => true
1010 '0123' >= '0124' => false
1012 '0124' >= '0123' => true
1014 '0123 ' ge '0123' => true
1016 '0123' >= '0123 ' => true
1026 evaluate.sps:22.17-22.29: error: DEBUG EVALUATE: Both operands of > must have
1028 22 | DEBUG EVALUATE /1 gt 'foobar'.
1031 evaluate.sps:22.17: note: DEBUG EVALUATE: This operand has type 'number'.
1032 22 | DEBUG EVALUATE /1 gt 'foobar'.
1035 evaluate.sps:22.22-22.29: note: DEBUG EVALUATE: This operand has type 'string'.
1036 22 | DEBUG EVALUATE /1 gt 'foobar'.
1039 1 gt 'foobar' => error
1041 evaluate.sps:23.17-23.26: error: DEBUG EVALUATE: Both operands of > must have
1043 23 | DEBUG EVALUATE /'baz' > 10.
1046 evaluate.sps:23.17-23.21: note: DEBUG EVALUATE: This operand has type 'string'.
1047 23 | DEBUG EVALUATE /'baz' > 10.
1050 evaluate.sps:23.25-23.26: note: DEBUG EVALUATE: This operand has type 'number'.
1051 23 | DEBUG EVALUATE /'baz' > 10.
1056 '0123' > '0123' => false
1058 '0123' > '0124' => false
1060 '0124' > '0123' => true
1062 '0123 ' > '0123' => false
1064 '0123 ' > '0123 ' => false
1074 evaluate.sps:34.17-34.29: error: DEBUG EVALUATE: Both operands of ~= must have
1076 34 | DEBUG EVALUATE /1 ~= 'foobar'.
1079 evaluate.sps:34.17: note: DEBUG EVALUATE: This operand has type 'number'.
1080 34 | DEBUG EVALUATE /1 ~= 'foobar'.
1083 evaluate.sps:34.22-34.29: note: DEBUG EVALUATE: This operand has type 'string'.
1084 34 | DEBUG EVALUATE /1 ~= 'foobar'.
1087 1 ~= 'foobar' => error
1089 evaluate.sps:35.17-35.27: error: DEBUG EVALUATE: Both operands of ~= must have
1091 35 | DEBUG EVALUATE /'baz' ne 10.
1094 evaluate.sps:35.17-35.21: note: DEBUG EVALUATE: This operand has type 'string'.
1095 35 | DEBUG EVALUATE /'baz' ne 10.
1098 evaluate.sps:35.26-35.27: note: DEBUG EVALUATE: This operand has type 'number'.
1099 35 | DEBUG EVALUATE /'baz' ne 10.
1102 'baz' ne 10 => error
1104 evaluate.sps:36.17-36.30: error: DEBUG EVALUATE: Both operands of ~= must have
1106 36 | DEBUG EVALUATE /'quux' ~= 5.55.
1109 evaluate.sps:36.17-36.22: note: DEBUG EVALUATE: This operand has type 'string'.
1110 36 | DEBUG EVALUATE /'quux' ~= 5.55.
1113 evaluate.sps:36.27-36.30: note: DEBUG EVALUATE: This operand has type 'number'.
1114 36 | DEBUG EVALUATE /'quux' ~= 5.55.
1117 'quux' ~= 5.55 => error
1119 'foobar' <> 'foobar' => false
1121 'quux' ne 'bar' => true
1123 'bar ' <> 'bar' => false
1125 'asdf ' ~= "asdf " => false
1127 evaluate.sps:41.21: error: DEBUG EVALUATE: Syntax error parsing expression.
1128 41 | DEBUG EVALUATE /1 < > 1.
1133 evaluate.sps:42.19: error: DEBUG EVALUATE: Syntax error expecting end of
1135 42 | DEBUG EVALUATE /1 ~ = 1.
1143 AT_SETUP([expressions - EXP LG10 LN SQRT ABS MOD MOD10 RND TRUNC])
1144 AT_KEYWORDS([expression expressions evaluate])
1145 AT_DATA([evaluate-base.sps], [dnl
1147 DEBUG EVALUATE SET opt.
1148 DEBUG EVALUATE /EXP(10).
1149 DEBUG EVALUATE /EXP('x').
1151 DEBUG EVALUATE /LG10(500).
1152 DEBUG EVALUATE /LG10('x').
1154 DEBUG EVALUATE /SQRT(500).
1155 DEBUG EVALUATE /SQRT(-1).
1157 DEBUG EVALUATE /ABS(-10.5).
1158 DEBUG EVALUATE /ABS(55.79).
1159 DEBUG EVALUATE /ABS(0).
1160 DEBUG EVALUATE /ABS(-0).
1162 DEBUG EVALUATE /MOD(55.5, 2).
1163 DEBUG EVALUATE /MOD(-55.5, 2).
1164 DEBUG EVALUATE /MOD(55.5, -2).
1165 DEBUG EVALUATE /MOD(-55.5, -2).
1166 DEBUG EVALUATE /MOD('a', 2).
1167 DEBUG EVALUATE /MOD(2, 'a').
1168 DEBUG EVALUATE /MOD('a', 'b').
1170 DEBUG EVALUATE /MOD10(55.5).
1171 DEBUG EVALUATE /MOD10(-55.5).
1173 DEBUG EVALUATE /RND(5.4).
1174 DEBUG EVALUATE /RND(5.6).
1175 DEBUG EVALUATE /RND(-5.4).
1176 DEBUG EVALUATE /RND(-5.6).
1177 DEBUG EVALUATE /RND(5.56, .1).
1178 DEBUG EVALUATE /RND(-5.56, .1)
1179 DEBUG EVALUATE /RND(.5).
1180 DEBUG EVALUATE /RND(.5 - 2**-53).
1181 DEBUG EVALUATE /RND(.5 - 2**-52).
1182 DEBUG EVALUATE /RND(.5 - 2**-51).
1183 DEBUG EVALUATE /RND(.5 - 2**-45).
1184 DEBUG EVALUATE /RND(.5 - 2**-45, 1, 10).
1185 DEBUG EVALUATE /RND('x').
1187 DEBUG EVALUATE /TRUNC(1.2).
1188 DEBUG EVALUATE /TRUNC(1.9).
1189 DEBUG EVALUATE /TRUNC(-1.2).
1190 DEBUG EVALUATE /TRUNC(-1.9).
1191 DEBUG EVALUATE /TRUNC(5.06, .1).
1192 DEBUG EVALUATE /TRUNC(-5.06, .1).
1193 DEBUG EVALUATE /TRUNC(1).
1194 DEBUG EVALUATE /TRUNC(1 - 2**-53).
1195 DEBUG EVALUATE /TRUNC(1 - 2**-52).
1196 DEBUG EVALUATE /TRUNC(1 - 2**-51).
1197 DEBUG EVALUATE /TRUNC(1 - 2**-45).
1198 DEBUG EVALUATE /TRUNC(1 - 2**-45, 1, 10).
1199 DEBUG EVALUATE /TRUNC('x').
1202 for opt in OPT NOOPT; do
1204 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
1205 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
1208 evaluate.sps:4.17-4.24: error: DEBUG EVALUATE: Type mismatch invoking
1209 EXP(number) as EXP(string).
1210 4 | DEBUG EVALUATE /EXP('x').
1213 evaluate.sps:4.21-4.23: note: DEBUG EVALUATE: This argument has type 'string'
1214 but 'number' is required.
1215 4 | DEBUG EVALUATE /EXP('x').
1222 evaluate.sps:7.17-7.25: error: DEBUG EVALUATE: Type mismatch invoking
1223 LG10(number) as LG10(string).
1224 7 | DEBUG EVALUATE /LG10('x').
1227 evaluate.sps:7.22-7.24: note: DEBUG EVALUATE: This argument has type 'string'
1228 but 'number' is required.
1229 7 | DEBUG EVALUATE /LG10('x').
1246 MOD(55.5, 2) => 1.50
1248 MOD(-55.5, 2) => -1.50
1250 MOD(55.5, -2) => 1.50
1252 MOD(-55.5, -2) => -1.50
1254 evaluate.sps:21.17-21.27: error: DEBUG EVALUATE: Type mismatch invoking
1255 MOD(number, number) as MOD(string, number).
1256 21 | DEBUG EVALUATE /MOD('a', 2).
1259 evaluate.sps:21.21-21.23: note: DEBUG EVALUATE: This argument has type 'string'
1260 but 'number' is required.
1261 21 | DEBUG EVALUATE /MOD('a', 2).
1264 MOD('a', 2) => error
1266 evaluate.sps:22.17-22.27: error: DEBUG EVALUATE: Type mismatch invoking
1267 MOD(number, number) as MOD(number, string).
1268 22 | DEBUG EVALUATE /MOD(2, 'a').
1271 evaluate.sps:22.24-22.26: note: DEBUG EVALUATE: This argument has type 'string'
1272 but 'number' is required.
1273 22 | DEBUG EVALUATE /MOD(2, 'a').
1276 MOD(2, 'a') => error
1278 evaluate.sps:23.17-23.29: error: DEBUG EVALUATE: Type mismatch invoking
1279 MOD(number, number) as MOD(string, string).
1280 23 | DEBUG EVALUATE /MOD('a', 'b').
1283 evaluate.sps:23.21-23.23: note: DEBUG EVALUATE: This argument has type 'string'
1284 but 'number' is required.
1285 23 | DEBUG EVALUATE /MOD('a', 'b').
1288 evaluate.sps:23.26-23.28: note: DEBUG EVALUATE: This argument has type 'string'
1289 but 'number' is required.
1290 23 | DEBUG EVALUATE /MOD('a', 'b').
1293 MOD('a', 'b') => error
1297 MOD10(-55.5) => -5.50
1307 RND(5.56, .1) => 5.60
1309 RND(-5.56, .1) => -5.60
1313 RND(.5 - 2**-53) => 1.00
1315 RND(.5 - 2**-52) => 1.00
1317 RND(.5 - 2**-51) => 1.00
1319 RND(.5 - 2**-45) => 0.00
1321 RND(.5 - 2**-45, 1, 10) => 1.00
1323 evaluate.sps:40.17-40.24: error: DEBUG EVALUATE: Function invocation
1324 RND(string) does not match any known function. Candidates are:
1327 RND(number, number, number).
1328 40 | DEBUG EVALUATE /RND('x').
1337 TRUNC(-1.2) => -1.00
1339 TRUNC(-1.9) => -1.00
1341 TRUNC(5.06, .1) => 5.00
1343 TRUNC(-5.06, .1) => -5.00
1347 TRUNC(1 - 2**-53) => 1.00
1349 TRUNC(1 - 2**-52) => 1.00
1351 TRUNC(1 - 2**-51) => 1.00
1353 TRUNC(1 - 2**-45) => 0.00
1355 TRUNC(1 - 2**-45, 1, 10) => 1.00
1357 evaluate.sps:54.17-54.26: error: DEBUG EVALUATE: Function invocation
1358 TRUNC(string) does not match any known function. Candidates are:
1360 TRUNC(number, number)
1361 TRUNC(number, number, number).
1362 54 | DEBUG EVALUATE /TRUNC('x').
1370 AT_SETUP([expressions - ACOS ARSIN ARTAN COS SIN TAN])
1371 AT_KEYWORDS([expression expressions evaluate])
1372 AT_DATA([evaluate-base.sps], [dnl
1374 DEBUG EVALUATE SET opt.
1375 DEBUG EVALUATE /ACOS(.5) / 3.14159 * 180.
1376 DEBUG EVALUATE /ARCOS(.75) / 3.14159 * 180.
1377 DEBUG EVALUATE /ARCOS(-.5) / 3.14159 * 180.
1378 DEBUG EVALUATE /ACOS(-.75) / 3.14159 * 180.
1379 DEBUG EVALUATE /ACOS(-1) / 3.14159 * 180.
1380 DEBUG EVALUATE /ARCOS(1) / 3.14159 * 180.
1381 DEBUG EVALUATE /ACOS(-1.01) / 3.14159 * 180.
1382 DEBUG EVALUATE /ARCOS(1.01) / 3.14159 * 180.
1383 DEBUG EVALUATE /ACOS('x') / 3.14159 * 180.
1385 DEBUG EVALUATE /ASIN(.5) / 3.14159 * 180.
1386 DEBUG EVALUATE /ARSIN(.25) / 3.14159 * 180.
1387 DEBUG EVALUATE /ARSIN(-.5) / 3.14159 * 180.
1388 DEBUG EVALUATE /ASIN(-.25) / 3.14159 * 180.
1389 DEBUG EVALUATE /ASIN(-1.01) / 3.14159 * 180.
1390 DEBUG EVALUATE /ARSIN(1.01) / 3.14159 * 180.
1391 DEBUG EVALUATE /ASIN('x') / 3.14159 * 180.
1393 DEBUG EVALUATE /ATAN(1) / 3.14159 * 180.
1394 DEBUG EVALUATE /ARTAN(10) / 3.14159 * 180.
1395 DEBUG EVALUATE /ARTAN(-1) / 3.14159 * 180.
1396 DEBUG EVALUATE /ATAN(-10) / 3.14159 * 180.
1397 DEBUG EVALUATE /ATAN('x') / 3.14159 * 180.
1399 DEBUG EVALUATE /COS(60 / 180 * 3.14159).
1400 DEBUG EVALUATE /COS(45 / 180 * 3.14159).
1401 DEBUG EVALUATE /COS(30 / 180 * 3.14159).
1402 DEBUG EVALUATE /COS(15 / 180 * 3.14159).
1403 DEBUG EVALUATE /COS(-60 / 180 * 3.14159).
1404 DEBUG EVALUATE /COS(-45 / 180 * 3.14159).
1405 DEBUG EVALUATE /COS(-30 / 180 * 3.14159).
1406 DEBUG EVALUATE /COS(-15 / 180 * 3.14159).
1407 DEBUG EVALUATE /COS(123 / 180 * 3.14159).
1408 DEBUG EVALUATE /COS(321 / 180 * 3.14159).
1409 DEBUG EVALUATE /COS('x').
1411 DEBUG EVALUATE /SIN(60 / 180 * 3.14159).
1412 DEBUG EVALUATE /SIN(45 / 180 * 3.14159).
1413 DEBUG EVALUATE /SIN(30 / 180 * 3.14159).
1414 DEBUG EVALUATE /SIN(15 / 180 * 3.14159).
1415 DEBUG EVALUATE /SIN(-60 / 180 * 3.14159).
1416 DEBUG EVALUATE /SIN(-45 / 180 * 3.14159).
1417 DEBUG EVALUATE /SIN(-30 / 180 * 3.14159).
1418 DEBUG EVALUATE /SIN(-15 / 180 * 3.14159).
1419 DEBUG EVALUATE /SIN(123 / 180 * 3.14159).
1420 DEBUG EVALUATE /SIN(321 / 180 * 3.14159).
1421 DEBUG EVALUATE /SIN('x').
1423 DEBUG EVALUATE /TAN(60 / 180 * 3.14159).
1424 DEBUG EVALUATE /TAN(45 / 180 * 3.14159).
1425 DEBUG EVALUATE /TAN(30 / 180 * 3.14159).
1426 DEBUG EVALUATE /TAN(15 / 180 * 3.14159).
1427 DEBUG EVALUATE /TAN(-60 / 180 * 3.14159).
1428 DEBUG EVALUATE /TAN(-45 / 180 * 3.14159).
1429 DEBUG EVALUATE /TAN(-30 / 180 * 3.14159).
1430 DEBUG EVALUATE /TAN(-15 / 180 * 3.14159).
1431 DEBUG EVALUATE /TAN(123 / 180 * 3.14159).
1432 DEBUG EVALUATE /TAN(321 / 180 * 3.14159).
1433 DEBUG EVALUATE /TAN('x').
1436 for opt in OPT NOOPT; do
1438 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
1439 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
1440 ACOS(.5) / 3.14159 * 180 => 60.00
1442 ARCOS(.75) / 3.14159 * 180 => 41.41
1444 ARCOS(-.5) / 3.14159 * 180 => 120.00
1446 ACOS(-.75) / 3.14159 * 180 => 138.59
1448 ACOS(-1) / 3.14159 * 180 => 180.00
1450 ARCOS(1) / 3.14159 * 180 => 0.00
1452 ACOS(-1.01) / 3.14159 * 180 => sysmis
1454 ARCOS(1.01) / 3.14159 * 180 => sysmis
1456 evaluate.sps:11.17-11.25: error: DEBUG EVALUATE: Type mismatch invoking
1457 ACOS(number) as ACOS(string).
1458 11 | DEBUG EVALUATE /ACOS('x') / 3.14159 * 180.
1461 evaluate.sps:11.22-11.24: note: DEBUG EVALUATE: This argument has type 'string'
1462 but 'number' is required.
1463 11 | DEBUG EVALUATE /ACOS('x') / 3.14159 * 180.
1466 ACOS('x') / 3.14159 * 180 => error
1468 ASIN(.5) / 3.14159 * 180 => 30.00
1470 ARSIN(.25) / 3.14159 * 180 => 14.48
1472 ARSIN(-.5) / 3.14159 * 180 => -30.00
1474 ASIN(-.25) / 3.14159 * 180 => -14.48
1476 ASIN(-1.01) / 3.14159 * 180 => sysmis
1478 ARSIN(1.01) / 3.14159 * 180 => sysmis
1480 evaluate.sps:19.17-19.25: error: DEBUG EVALUATE: Type mismatch invoking
1481 ASIN(number) as ASIN(string).
1482 19 | DEBUG EVALUATE /ASIN('x') / 3.14159 * 180.
1485 evaluate.sps:19.22-19.24: note: DEBUG EVALUATE: This argument has type 'string'
1486 but 'number' is required.
1487 19 | DEBUG EVALUATE /ASIN('x') / 3.14159 * 180.
1490 ASIN('x') / 3.14159 * 180 => error
1492 ATAN(1) / 3.14159 * 180 => 45.00
1494 ARTAN(10) / 3.14159 * 180 => 84.29
1496 ARTAN(-1) / 3.14159 * 180 => -45.00
1498 ATAN(-10) / 3.14159 * 180 => -84.29
1500 evaluate.sps:25.17-25.25: error: DEBUG EVALUATE: Type mismatch invoking
1501 ATAN(number) as ATAN(string).
1502 25 | DEBUG EVALUATE /ATAN('x') / 3.14159 * 180.
1505 evaluate.sps:25.22-25.24: note: DEBUG EVALUATE: This argument has type 'string'
1506 but 'number' is required.
1507 25 | DEBUG EVALUATE /ATAN('x') / 3.14159 * 180.
1510 ATAN('x') / 3.14159 * 180 => error
1512 COS(60 / 180 * 3.14159) => 0.50
1514 COS(45 / 180 * 3.14159) => 0.71
1516 COS(30 / 180 * 3.14159) => 0.87
1518 COS(15 / 180 * 3.14159) => 0.97
1520 COS(-60 / 180 * 3.14159) => 0.50
1522 COS(-45 / 180 * 3.14159) => 0.71
1524 COS(-30 / 180 * 3.14159) => 0.87
1526 COS(-15 / 180 * 3.14159) => 0.97
1528 COS(123 / 180 * 3.14159) => -0.54
1530 COS(321 / 180 * 3.14159) => 0.78
1532 evaluate.sps:37.17-37.24: error: DEBUG EVALUATE: Type mismatch invoking
1533 COS(number) as COS(string).
1534 37 | DEBUG EVALUATE /COS('x').
1537 evaluate.sps:37.21-37.23: note: DEBUG EVALUATE: This argument has type 'string'
1538 but 'number' is required.
1539 37 | DEBUG EVALUATE /COS('x').
1544 SIN(60 / 180 * 3.14159) => 0.87
1546 SIN(45 / 180 * 3.14159) => 0.71
1548 SIN(30 / 180 * 3.14159) => 0.50
1550 SIN(15 / 180 * 3.14159) => 0.26
1552 SIN(-60 / 180 * 3.14159) => -0.87
1554 SIN(-45 / 180 * 3.14159) => -0.71
1556 SIN(-30 / 180 * 3.14159) => -0.50
1558 SIN(-15 / 180 * 3.14159) => -0.26
1560 SIN(123 / 180 * 3.14159) => 0.84
1562 SIN(321 / 180 * 3.14159) => -0.63
1564 evaluate.sps:49.17-49.24: error: DEBUG EVALUATE: Type mismatch invoking
1565 SIN(number) as SIN(string).
1566 49 | DEBUG EVALUATE /SIN('x').
1569 evaluate.sps:49.21-49.23: note: DEBUG EVALUATE: This argument has type 'string'
1570 but 'number' is required.
1571 49 | DEBUG EVALUATE /SIN('x').
1576 TAN(60 / 180 * 3.14159) => 1.73
1578 TAN(45 / 180 * 3.14159) => 1.00
1580 TAN(30 / 180 * 3.14159) => 0.58
1582 TAN(15 / 180 * 3.14159) => 0.27
1584 TAN(-60 / 180 * 3.14159) => -1.73
1586 TAN(-45 / 180 * 3.14159) => -1.00
1588 TAN(-30 / 180 * 3.14159) => -0.58
1590 TAN(-15 / 180 * 3.14159) => -0.27
1592 TAN(123 / 180 * 3.14159) => -1.54
1594 TAN(321 / 180 * 3.14159) => -0.81
1596 evaluate.sps:61.17-61.24: error: DEBUG EVALUATE: Type mismatch invoking
1597 TAN(number) as TAN(string).
1598 61 | DEBUG EVALUATE /TAN('x').
1601 evaluate.sps:61.21-61.23: note: DEBUG EVALUATE: This argument has type 'string'
1602 but 'number' is required.
1603 61 | DEBUG EVALUATE /TAN('x').
1611 AT_SETUP([expressions - vector indexing])
1612 AT_KEYWORDS([expression expressions evaluate])
1613 AT_DATA([evaluate-base.sps], [dnl
1615 DEBUG EVALUATE SET opt.
1617 DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(1).
1618 DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(2).
1619 DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(3).
1620 DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v($sysmis).
1621 DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(0).
1622 DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(4).
1624 DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(1).
1625 DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(2).
1626 DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(3).
1627 DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v($sysmis).
1628 DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(0).
1629 DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(4).
1633 for opt in OPT NOOPT; do
1635 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
1636 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
1643 evaluate.sps:7.42-7.51: error: DEBUG EVALUATE: Index outside valid range 1 to
1644 3, inclusive, for vector V. The value will be treated as system-missing.
1645 7 | DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v($sysmis).
1648 evaluate.sps:7.44-7.50: note: DEBUG EVALUATE: The index is system-missing.
1649 7 | DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v($sysmis).
1652 v($sysmis) => sysmis
1654 evaluate.sps:8.42-8.45: error: DEBUG EVALUATE: Index outside valid range 1 to
1655 3, inclusive, for vector V. The value will be treated as system-missing.
1656 8 | DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(0).
1659 evaluate.sps:8.44: note: DEBUG EVALUATE: The index has value 0.
1660 8 | DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(0).
1665 evaluate.sps:9.42-9.45: error: DEBUG EVALUATE: Index outside valid range 1 to
1666 3, inclusive, for vector V. The value will be treated as system-missing.
1667 9 | DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(4).
1670 evaluate.sps:9.44: note: DEBUG EVALUATE: The index has value 4.
1671 9 | DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(4).
1682 evaluate.sps:14.51-14.60: error: DEBUG EVALUATE: Index outside valid range 1 to
1683 3, inclusive, for vector V. The value will be treated as system-missing.
1684 14 | DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v($sysmis).
1687 evaluate.sps:14.53-14.59: note: DEBUG EVALUATE: The index is system-missing.
1688 14 | DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v($sysmis).
1693 evaluate.sps:15.51-15.54: error: DEBUG EVALUATE: Index outside valid range 1 to
1694 3, inclusive, for vector V. The value will be treated as system-missing.
1695 15 | DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(0).
1698 evaluate.sps:15.53: note: DEBUG EVALUATE: The index has value 0.
1699 15 | DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(0).
1704 evaluate.sps:16.51-16.54: error: DEBUG EVALUATE: Index outside valid range 1 to
1705 3, inclusive, for vector V. The value will be treated as system-missing.
1706 16 | DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(4).
1709 evaluate.sps:16.53: note: DEBUG EVALUATE: The index has value 4.
1710 16 | DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(4).
1718 AT_SETUP([expressions - MISSING NMISS NVALID SYSMIS])
1719 AT_KEYWORDS([expression expressions evaluate])
1720 AT_DATA([evaluate-base.sps], [dnl
1722 DEBUG EVALUATE SET opt.
1723 DEBUG EVALUATE /MISSING(10).
1724 DEBUG EVALUATE /MISSING($SYSMIS).
1725 DEBUG EVALUATE /MISSING(ASIN(1.01)).
1726 DEBUG EVALUATE /MISSING(ASIN(.5)).
1727 DEBUG EVALUATE /MISSING(' ').
1729 DEBUG EVALUATE (x=5)/x.
1730 DEBUG EVALUATE (x=5 MISSING)/x.
1731 DEBUG EVALUATE (x=5 MISSING)/x + 1.
1732 DEBUG EVALUATE (x=SYSMIS)/x.
1734 DEBUG EVALUATE (x=5) VECTOR/v(1).
1735 DEBUG EVALUATE (x=5 MISSING) VECTOR/v(1).
1736 DEBUG EVALUATE (x=5 MISSING) VECTOR/v(1) + 1.
1737 DEBUG EVALUATE (x=SYSMIS) VECTOR/v(1).
1739 DEBUG EVALUATE (x=5)/VALUE(x).
1740 DEBUG EVALUATE (x=5 MISSING)/VALUE(x).
1741 DEBUG EVALUATE (x=SYSMIS)/VALUE(x).
1743 DEBUG EVALUATE (x=5) VECTOR/VALUE(v(1)).
1744 DEBUG EVALUATE (x=5 MISSING) VECTOR/VALUE(v(1)).
1745 DEBUG EVALUATE (x=SYSMIS) VECTOR/VALUE(v(1)).
1747 DEBUG EVALUATE (x=5)/MISSING(x).
1748 DEBUG EVALUATE (x=5 MISSING)/MISSING(x).
1749 DEBUG EVALUATE (x=SYSMIS)/MISSING(x).
1751 DEBUG EVALUATE (x=5)/SYSMIS(x).
1752 DEBUG EVALUATE (x=5 MISSING)/SYSMIS(x).
1753 DEBUG EVALUATE (x=SYSMIS)/SYSMIS(x).
1755 DEBUG EVALUATE /NMISS($sysmis).
1756 DEBUG EVALUATE /NMISS(0).
1757 DEBUG EVALUATE /NMISS($sysmis, $sysmis, $sysmis).
1758 DEBUG EVALUATE /NMISS(1, 2, 3, 4).
1759 DEBUG EVALUATE /NMISS(1, $sysmis, $sysmis, 2, 2, $sysmis, $sysmis, 3, 4).
1760 DEBUG EVALUATE (a=1 MISSING) (b=2) (c=3 MISSING) (d=4)/NMISS(a, b, c, d).
1762 DEBUG EVALUATE /NVALID($sysmis).
1763 DEBUG EVALUATE /NVALID(0).
1764 DEBUG EVALUATE /NVALID($sysmis, $sysmis, $sysmis).
1765 DEBUG EVALUATE /NVALID(1, 2, 3, 4).
1766 DEBUG EVALUATE /NVALID(1, $sysmis, $sysmis, 2, 2, $sysmis, $sysmis, 3, 4).
1767 DEBUG EVALUATE (a=1 MISSING) (b=2) (c=3 MISSING) (d=4)/NVALID(a, b, c, d).
1769 DEBUG EVALUATE /SYSMIS(1).
1770 DEBUG EVALUATE /SYSMIS($SYSMIS).
1771 DEBUG EVALUATE /SYSMIS(1 + $SYSMIS).
1774 for opt in OPT NOOPT; do
1776 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
1777 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
1778 MISSING(10) => false
1780 MISSING($SYSMIS) => true
1782 MISSING(ASIN(1.01)) => true
1784 MISSING(ASIN(.5)) => false
1786 evaluate.sps:7.17-7.31: error: DEBUG EVALUATE: Type mismatch invoking
1787 MISSING(number) as MISSING(string).
1788 7 | DEBUG EVALUATE /MISSING(' ').
1791 evaluate.sps:7.25-7.30: note: DEBUG EVALUATE: This argument has type 'string'
1792 but 'number' is required.
1793 7 | DEBUG EVALUATE /MISSING(' ').
1796 MISSING(' ') => error
1824 VALUE(v(1)) => sysmis
1838 NMISS($sysmis) => 1.00
1842 NMISS($sysmis, $sysmis, $sysmis) => 3.00
1844 NMISS(1, 2, 3, 4) => 0.00
1846 NMISS(1, $sysmis, $sysmis, 2, 2, $sysmis, $sysmis, 3, 4) => 4.00
1848 NMISS(a, b, c, d) => 2.00
1850 NVALID($sysmis) => 0.00
1854 NVALID($sysmis, $sysmis, $sysmis) => 0.00
1856 NVALID(1, 2, 3, 4) => 4.00
1858 NVALID(1, $sysmis, $sysmis, 2, 2, $sysmis, $sysmis, 3, 4) => 5.00
1860 NVALID(a, b, c, d) => 2.00
1864 SYSMIS($SYSMIS) => true
1866 SYSMIS(1 + $SYSMIS) => true
1871 AT_SETUP([expressions - ANY])
1872 AT_KEYWORDS([expression expressions evaluate])
1873 AT_DATA([evaluate-base.sps], [dnl
1875 DEBUG EVALUATE SET opt.
1877 DEBUG EVALUATE /any(1, 1, 2, 3).
1878 DEBUG EVALUATE /any(1, $true, 2, 3).
1879 DEBUG EVALUATE /any(1, $false, 2, 3).
1880 DEBUG EVALUATE /any(2, 1, 2, 3).
1881 DEBUG EVALUATE /any(3, 1, 2, 3).
1882 DEBUG EVALUATE /any(5, 1, 2, 3).
1883 DEBUG EVALUATE /any(1, 1, 1, 1).
1884 DEBUG EVALUATE /any($sysmis, 1, 1, 1).
1885 DEBUG EVALUATE /any($sysmis, 1, $sysmis, 3).
1886 DEBUG EVALUATE /any(1, 1, $sysmis, $sysmis).
1887 DEBUG EVALUATE /any(1, $sysmis, $sysmis, $sysmis).
1888 DEBUG EVALUATE /any($sysmis, $sysmis, $sysmis, $sysmis).
1890 DEBUG EVALUATE /any(1).
1891 DEBUG EVALUATE /any('1', 2, 3, 4).
1892 DEBUG EVALUATE /any(1, '2', 3, 4).
1893 DEBUG EVALUATE /any(1, 2, '3', 4).
1894 DEBUG EVALUATE /any(1, 2, 3, '4').
1896 DEBUG EVALUATE /any('', 'a', '', 'c').
1897 DEBUG EVALUATE /any('a', 'a', 'b', 'c').
1898 DEBUG EVALUATE /any('b', 'a', 'b', 'c').
1899 DEBUG EVALUATE /any('c', 'a', 'b', 'c').
1900 DEBUG EVALUATE /any('e', 'a', 'b', 'c').
1901 DEBUG EVALUATE /any('a', 'a', 'a', 'a').
1902 DEBUG EVALUATE /any('', 'a', 'a', 'a').
1903 DEBUG EVALUATE /any('a', '', '', '').
1904 DEBUG EVALUATE /any('a').
1906 DEBUG EVALUATE /any('a', 'a ', 'b', 'c').
1907 DEBUG EVALUATE /any('b ', 'a', 'b', 'c').
1908 DEBUG EVALUATE /any('c ', 'a', 'b', 'c ').
1909 DEBUG EVALUATE /any(a10, 'b', 'c', 'd').
1910 DEBUG EVALUATE /any('a', b, 'c', 'd').
1911 DEBUG EVALUATE /any('a', 'b', c, 'd').
1912 DEBUG EVALUATE /any('a', 'b', 'c', d).
1915 for opt in OPT NOOPT; do
1917 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
1918 AT_CHECK([pspp --testing-mode evaluate.sps], [1],
1919 [[any(1, 1, 2, 3) => true
1921 any(1, $true, 2, 3) => true
1923 any(1, $false, 2, 3) => false
1925 any(2, 1, 2, 3) => true
1927 any(3, 1, 2, 3) => true
1929 any(5, 1, 2, 3) => false
1931 any(1, 1, 1, 1) => true
1933 any($sysmis, 1, 1, 1) => sysmis
1935 any($sysmis, 1, $sysmis, 3) => sysmis
1937 any(1, 1, $sysmis, $sysmis) => true
1939 any(1, $sysmis, $sysmis, $sysmis) => sysmis
1941 any($sysmis, $sysmis, $sysmis, $sysmis) => sysmis
1943 evaluate.sps:17.17-17.22: error: DEBUG EVALUATE: Function invocation
1944 any(number) does not match any known function. Candidates are:
1945 ANY(number, number[, number]...)
1946 ANY(string, string[, string]...).
1947 17 | DEBUG EVALUATE /any(1).
1952 evaluate.sps:18.17-18.33: error: DEBUG EVALUATE: Function invocation
1953 any(string, number, number, number) does not match any known function.
1955 ANY(number, number[, number]...)
1956 ANY(string, string[, string]...).
1957 18 | DEBUG EVALUATE /any('1', 2, 3, 4).
1960 any('1', 2, 3, 4) => error
1962 evaluate.sps:19.17-19.33: error: DEBUG EVALUATE: Function invocation
1963 any(number, string, number, number) does not match any known function.
1965 ANY(number, number[, number]...)
1966 ANY(string, string[, string]...).
1967 19 | DEBUG EVALUATE /any(1, '2', 3, 4).
1970 any(1, '2', 3, 4) => error
1972 evaluate.sps:20.17-20.33: error: DEBUG EVALUATE: Function invocation
1973 any(number, number, string, number) does not match any known function.
1975 ANY(number, number[, number]...)
1976 ANY(string, string[, string]...).
1977 20 | DEBUG EVALUATE /any(1, 2, '3', 4).
1980 any(1, 2, '3', 4) => error
1982 evaluate.sps:21.17-21.33: error: DEBUG EVALUATE: Function invocation
1983 any(number, number, number, string) does not match any known function.
1985 ANY(number, number[, number]...)
1986 ANY(string, string[, string]...).
1987 21 | DEBUG EVALUATE /any(1, 2, 3, '4').
1990 any(1, 2, 3, '4') => error
1992 any('', 'a', '', 'c') => true
1994 any('a', 'a', 'b', 'c') => true
1996 any('b', 'a', 'b', 'c') => true
1998 any('c', 'a', 'b', 'c') => true
2000 any('e', 'a', 'b', 'c') => false
2002 any('a', 'a', 'a', 'a') => true
2004 any('', 'a', 'a', 'a') => false
2006 any('a', '', '', '') => false
2008 evaluate.sps:31.17-31.24: error: DEBUG EVALUATE: Function invocation
2009 any(string) does not match any known function. Candidates are:
2010 ANY(number, number[, number]...)
2011 ANY(string, string[, string]...).
2012 31 | DEBUG EVALUATE /any('a').
2017 any('a', 'a ', 'b', 'c') => true
2019 any('b ', 'a', 'b', 'c') => true
2021 any('c ', 'a', 'b', 'c ') => true
2023 evaluate.sps:36.17-36.39: error: DEBUG EVALUATE: Function invocation
2024 any(format, string, string, string) does not match any known function.
2026 ANY(number, number[, number]...)
2027 ANY(string, string[, string]...).
2028 36 | DEBUG EVALUATE /any(a10, 'b', 'c', 'd').
2029 | ^~~~~~~~~~~~~~~~~~~~~~~
2031 any(a10, 'b', 'c', 'd') => error
2033 evaluate.sps:37.26: error: DEBUG EVALUATE: Unknown identifier b.
2034 37 | DEBUG EVALUATE /any('a', b, 'c', 'd').
2037 any('a', b, 'c', 'd') => error
2039 evaluate.sps:38.31: error: DEBUG EVALUATE: Unknown identifier c.
2040 38 | DEBUG EVALUATE /any('a', 'b', c, 'd').
2043 any('a', 'b', c, 'd') => error
2045 evaluate.sps:39.36: error: DEBUG EVALUATE: Unknown identifier d.
2046 39 | DEBUG EVALUATE /any('a', 'b', 'c', d).
2049 any('a', 'b', 'c', d) => error
2054 AT_SETUP([expressions - RANGE])
2055 AT_KEYWORDS([expression expressions evaluate])
2056 AT_DATA([evaluate-base.sps], [dnl
2058 DEBUG EVALUATE SET opt.
2060 DEBUG EVALUATE /range(5, 1, 10).
2061 DEBUG EVALUATE /range(1, 1, 10).
2062 DEBUG EVALUATE /range(10, 1, 10).
2063 DEBUG EVALUATE /range(-1, 1, 10).
2064 DEBUG EVALUATE /range(12, 1, 10).
2066 DEBUG EVALUATE /range(5, $sysmis, 6, 1, 10).
2067 DEBUG EVALUATE /range(5, $sysmis, $sysmis, 1, 10).
2068 DEBUG EVALUATE /range(1, 1, 10, 6, $sysmis).
2069 DEBUG EVALUATE /range(1, 1, 10, $sysmis, $sysmis).
2071 DEBUG EVALUATE /range(5, 5, 10, 3, 7).
2072 DEBUG EVALUATE /range(5, 10, 5, 3, 7).
2073 DEBUG EVALUATE /range(5, 3, 7, 5, 10).
2074 DEBUG EVALUATE /range(5, 3, 7, 10, 5).
2076 DEBUG EVALUATE /range($sysmis, 1, 10).
2077 DEBUG EVALUATE /range(5, 1, $sysmis).
2078 DEBUG EVALUATE /range(5, $sysmis, 10).
2079 DEBUG EVALUATE /range(1, 1, $sysmis).
2080 DEBUG EVALUATE /range(10, $sysmis, 10).
2081 DEBUG EVALUATE /range(5, 10, 5).
2082 DEBUG EVALUATE /range($sysmis, $sysmis, 10).
2083 DEBUG EVALUATE /range($sysmis, 1, $sysmis).
2084 DEBUG EVALUATE /range($sysmis, $sysmis, $sysmis).
2086 DEBUG EVALUATE /range(0, 1, 8, 10, 18).
2087 DEBUG EVALUATE /range(1, 1, 8, 10, 18).
2088 DEBUG EVALUATE /range(6, 1, 8, 10, 18).
2089 DEBUG EVALUATE /range(8, 1, 8, 10, 18).
2090 DEBUG EVALUATE /range(9, 1, 8, 10, 18).
2091 DEBUG EVALUATE /range(10, 1, 8, 10, 18).
2092 DEBUG EVALUATE /range(13, 1, 8, 10, 18).
2093 DEBUG EVALUATE /range(16, 1, 8, 10, 18).
2094 DEBUG EVALUATE /range(18, 1, 8, 10, 18).
2095 DEBUG EVALUATE /range(20, 1, 8, 10, 18).
2096 DEBUG EVALUATE /range(1).
2097 DEBUG EVALUATE /range(1, 2).
2098 DEBUG EVALUATE /range(1, 2, 3, 4).
2099 DEBUG EVALUATE /range(1, 2, 3, 4, 5, 6).
2100 DEBUG EVALUATE /range('1', 2, 3).
2101 DEBUG EVALUATE /range(1, '2', 3).
2102 DEBUG EVALUATE /range(1, 2, '3').
2104 DEBUG EVALUATE /range('123', '111', '888').
2105 DEBUG EVALUATE /range('111', '111', '888').
2106 DEBUG EVALUATE /range('888', '111', '888').
2107 DEBUG EVALUATE /range('110', '111', '888').
2108 DEBUG EVALUATE /range('889', '111', '888').
2109 DEBUG EVALUATE /range('000', '111', '888').
2110 DEBUG EVALUATE /range('999', '111', '888').
2112 DEBUG EVALUATE /range('123 ', '111', '888').
2113 DEBUG EVALUATE /range('123', '111 ', '888').
2114 DEBUG EVALUATE /range('123', '111', '888 ').
2115 DEBUG EVALUATE /range('123', '111 ', '888 ').
2117 DEBUG EVALUATE /range('00', '01', '08', '10', '18').
2118 DEBUG EVALUATE /range('01', '01', '08', '10', '18').
2119 DEBUG EVALUATE /range('06', '01', '08', '10', '18').
2120 DEBUG EVALUATE /range('08', '01', '08', '10', '18').
2121 DEBUG EVALUATE /range('09', '01', '08', '10', '18').
2122 DEBUG EVALUATE /range('10', '01', '08', '10', '18').
2123 DEBUG EVALUATE /range('15', '01', '08', '10', '18').
2124 DEBUG EVALUATE /range('18', '01', '08', '10', '18').
2125 DEBUG EVALUATE /range('19', '01', '08', '10', '18').
2127 DEBUG EVALUATE /range('07', '01', '08', '18', '10').
2128 DEBUG EVALUATE /range('12', '08', '01', '10', '18').
2130 DEBUG EVALUATE /range('1').
2131 DEBUG EVALUATE /range('1', '2').
2132 DEBUG EVALUATE /range('1', '2', '3', '4').
2133 DEBUG EVALUATE /range('1', '2', '3', '4', '5', '6').
2134 DEBUG EVALUATE /range(1, '2', '3').
2135 DEBUG EVALUATE /range('1', 2, '3').
2136 DEBUG EVALUATE /range('1', '2', 3).
2139 for opt in OPT NOOPT; do
2141 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
2142 AT_CHECK([pspp --testing-mode evaluate.sps], [1],
2143 [[range(5, 1, 10) => true
2145 range(1, 1, 10) => true
2147 range(10, 1, 10) => true
2149 range(-1, 1, 10) => false
2151 range(12, 1, 10) => false
2153 range(5, $sysmis, 6, 1, 10) => true
2155 range(5, $sysmis, $sysmis, 1, 10) => true
2157 range(1, 1, 10, 6, $sysmis) => true
2159 range(1, 1, 10, $sysmis, $sysmis) => true
2161 range(5, 5, 10, 3, 7) => true
2163 range(5, 10, 5, 3, 7) => sysmis
2165 range(5, 3, 7, 5, 10) => true
2167 range(5, 3, 7, 10, 5) => sysmis
2169 range($sysmis, 1, 10) => sysmis
2171 range(5, 1, $sysmis) => sysmis
2173 range(5, $sysmis, 10) => sysmis
2175 range(1, 1, $sysmis) => sysmis
2177 range(10, $sysmis, 10) => sysmis
2179 range(5, 10, 5) => sysmis
2181 range($sysmis, $sysmis, 10) => sysmis
2183 range($sysmis, 1, $sysmis) => sysmis
2185 range($sysmis, $sysmis, $sysmis) => sysmis
2187 range(0, 1, 8, 10, 18) => false
2189 range(1, 1, 8, 10, 18) => true
2191 range(6, 1, 8, 10, 18) => true
2193 range(8, 1, 8, 10, 18) => true
2195 range(9, 1, 8, 10, 18) => false
2197 range(10, 1, 8, 10, 18) => true
2199 range(13, 1, 8, 10, 18) => true
2201 range(16, 1, 8, 10, 18) => true
2203 range(18, 1, 8, 10, 18) => true
2205 range(20, 1, 8, 10, 18) => false
2207 evaluate.sps:40.17-40.24: error: DEBUG EVALUATE: Function invocation
2208 range(number) does not match any known function. Candidates are:
2209 RANGE(number, number, number[, number, number]...)
2210 RANGE(string, string, string[, string, string]...).
2211 40 | DEBUG EVALUATE /range(1).
2216 evaluate.sps:41.17-41.27: error: DEBUG EVALUATE: RANGE(number, number, number[,
2217 number, number]...) must have an odd number of arguments.
2218 41 | DEBUG EVALUATE /range(1, 2).
2221 range(1, 2) => error
2223 evaluate.sps:42.17-42.33: error: DEBUG EVALUATE: RANGE(number, number, number[,
2224 number, number]...) must have an odd number of arguments.
2225 42 | DEBUG EVALUATE /range(1, 2, 3, 4).
2228 range(1, 2, 3, 4) => error
2230 evaluate.sps:43.17-43.39: error: DEBUG EVALUATE: RANGE(number, number, number[,
2231 number, number]...) must have an odd number of arguments.
2232 43 | DEBUG EVALUATE /range(1, 2, 3, 4, 5, 6).
2233 | ^~~~~~~~~~~~~~~~~~~~~~~
2235 range(1, 2, 3, 4, 5, 6) => error
2237 evaluate.sps:44.17-44.32: error: DEBUG EVALUATE: Function invocation
2238 range(string, number, number) does not match any known function. Candidates
2240 RANGE(number, number, number[, number, number]...)
2241 RANGE(string, string, string[, string, string]...).
2242 44 | DEBUG EVALUATE /range('1', 2, 3).
2245 range('1', 2, 3) => error
2247 evaluate.sps:45.17-45.32: error: DEBUG EVALUATE: Function invocation
2248 range(number, string, number) does not match any known function. Candidates
2250 RANGE(number, number, number[, number, number]...)
2251 RANGE(string, string, string[, string, string]...).
2252 45 | DEBUG EVALUATE /range(1, '2', 3).
2255 range(1, '2', 3) => error
2257 evaluate.sps:46.17-46.32: error: DEBUG EVALUATE: Function invocation
2258 range(number, number, string) does not match any known function. Candidates
2260 RANGE(number, number, number[, number, number]...)
2261 RANGE(string, string, string[, string, string]...).
2262 46 | DEBUG EVALUATE /range(1, 2, '3').
2265 range(1, 2, '3') => error
2267 range('123', '111', '888') => true
2269 range('111', '111', '888') => true
2271 range('888', '111', '888') => true
2273 range('110', '111', '888') => false
2275 range('889', '111', '888') => false
2277 range('000', '111', '888') => false
2279 range('999', '111', '888') => false
2281 range('123 ', '111', '888') => true
2283 range('123', '111 ', '888') => true
2285 range('123', '111', '888 ') => true
2287 range('123', '111 ', '888 ') => true
2289 range('00', '01', '08', '10', '18') => false
2291 range('01', '01', '08', '10', '18') => true
2293 range('06', '01', '08', '10', '18') => true
2295 range('08', '01', '08', '10', '18') => true
2297 range('09', '01', '08', '10', '18') => false
2299 range('10', '01', '08', '10', '18') => true
2301 range('15', '01', '08', '10', '18') => true
2303 range('18', '01', '08', '10', '18') => true
2305 range('19', '01', '08', '10', '18') => false
2307 range('07', '01', '08', '18', '10') => sysmis
2309 range('12', '08', '01', '10', '18') => sysmis
2311 evaluate.sps:74.17-74.26: error: DEBUG EVALUATE: Function invocation
2312 range(string) does not match any known function. Candidates are:
2313 RANGE(number, number, number[, number, number]...)
2314 RANGE(string, string, string[, string, string]...).
2315 74 | DEBUG EVALUATE /range('1').
2320 evaluate.sps:75.17-75.31: error: DEBUG EVALUATE: RANGE(string, string, string[,
2321 string, string]...) must have an odd number of arguments.
2322 75 | DEBUG EVALUATE /range('1', '2').
2325 range('1', '2') => error
2327 evaluate.sps:76.17-76.41: error: DEBUG EVALUATE: RANGE(string, string, string[,
2328 string, string]...) must have an odd number of arguments.
2329 76 | DEBUG EVALUATE /range('1', '2', '3', '4').
2330 | ^~~~~~~~~~~~~~~~~~~~~~~~~
2332 range('1', '2', '3', '4') => error
2334 evaluate.sps:77.17-77.51: error: DEBUG EVALUATE: RANGE(string, string, string[,
2335 string, string]...) must have an odd number of arguments.
2336 77 | DEBUG EVALUATE /range('1', '2', '3', '4', '5', '6').
2337 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2339 range('1', '2', '3', '4', '5', '6') => error
2341 evaluate.sps:78.17-78.34: error: DEBUG EVALUATE: Function invocation
2342 range(number, string, string) does not match any known function. Candidates
2344 RANGE(number, number, number[, number, number]...)
2345 RANGE(string, string, string[, string, string]...).
2346 78 | DEBUG EVALUATE /range(1, '2', '3').
2347 | ^~~~~~~~~~~~~~~~~~
2349 range(1, '2', '3') => error
2351 evaluate.sps:79.17-79.34: error: DEBUG EVALUATE: Function invocation
2352 range(string, number, string) does not match any known function. Candidates
2354 RANGE(number, number, number[, number, number]...)
2355 RANGE(string, string, string[, string, string]...).
2356 79 | DEBUG EVALUATE /range('1', 2, '3').
2357 | ^~~~~~~~~~~~~~~~~~
2359 range('1', 2, '3') => error
2361 evaluate.sps:80.17-80.34: error: DEBUG EVALUATE: Function invocation
2362 range(string, string, number) does not match any known function. Candidates
2364 RANGE(number, number, number[, number, number]...)
2365 RANGE(string, string, string[, string, string]...).
2366 80 | DEBUG EVALUATE /range('1', '2', 3).
2367 | ^~~~~~~~~~~~~~~~~~
2369 range('1', '2', 3) => error
2374 AT_SETUP([expressions - MAX MIN])
2375 AT_KEYWORDS([expression expressions evaluate])
2376 AT_DATA([evaluate-base.sps], [dnl
2378 DEBUG EVALUATE SET opt.
2379 DEBUG EVALUATE /max(1, 2, 3, 4, 5).
2380 DEBUG EVALUATE /max(1, $sysmis, 2, 3, $sysmis, 4, 5).
2381 DEBUG EVALUATE /max(1, 2).
2382 DEBUG EVALUATE /max().
2383 DEBUG EVALUATE /max(1).
2384 DEBUG EVALUATE /max(1, $sysmis).
2385 DEBUG EVALUATE /max(1, 2, 3, $sysmis).
2386 DEBUG EVALUATE /max.4(1, 2, 3, $sysmis).
2387 DEBUG EVALUATE /max.4(1, 2, 3).
2389 DEBUG EVALUATE /max("2", "3", "5", "1", "4").
2390 DEBUG EVALUATE /max("1", "2").
2391 DEBUG EVALUATE /max("1").
2393 DEBUG EVALUATE /min(1, 2, 3, 4, 5).
2394 DEBUG EVALUATE /min(1, $sysmis, 2, 3, $sysmis, 4, 5).
2395 DEBUG EVALUATE /min(1, 2).
2396 DEBUG EVALUATE /min().
2397 DEBUG EVALUATE /min(1).
2398 DEBUG EVALUATE /min(1, $sysmis).
2399 DEBUG EVALUATE /min(1, 2, 3, $sysmis).
2400 DEBUG EVALUATE /min.4(1, 2, 3, $sysmis).
2401 DEBUG EVALUATE /min.4(1, 2, 3).
2403 DEBUG EVALUATE /min("2", "3", "5", "1", "4").
2404 DEBUG EVALUATE /min("1", "2").
2405 DEBUG EVALUATE /min("1").
2408 for opt in OPT NOOPT; do
2410 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
2411 AT_CHECK([pspp --testing-mode evaluate.sps], [1],
2412 [[max(1, 2, 3, 4, 5) => 5.00
2414 max(1, $sysmis, 2, 3, $sysmis, 4, 5) => 5.00
2418 evaluate.sps:6.17-6.20: error: DEBUG EVALUATE: Function invocation max() does
2419 not match any known function. Candidates are:
2420 MAX(number[, number]...)
2421 MAX(string[, string]...).
2422 6 | DEBUG EVALUATE /max().
2429 max(1, $sysmis) => 1.00
2431 max(1, 2, 3, $sysmis) => 3.00
2433 max.4(1, 2, 3, $sysmis) => sysmis
2435 evaluate.sps:11.17-11.30: error: DEBUG EVALUATE: For MAX(number[, number]...)
2436 with 3 arguments, at most 3 (not 4) may be required to be valid.
2437 11 | DEBUG EVALUATE /max.4(1, 2, 3).
2440 max.4(1, 2, 3) => error
2442 max("2", "3", "5", "1", "4") => "5"
2444 max("1", "2") => "2"
2448 min(1, 2, 3, 4, 5) => 1.00
2450 min(1, $sysmis, 2, 3, $sysmis, 4, 5) => 1.00
2454 evaluate.sps:20.17-20.20: error: DEBUG EVALUATE: Function invocation min() does
2455 not match any known function. Candidates are:
2456 MIN(number[, number]...)
2457 MIN(string[, string]...).
2458 20 | DEBUG EVALUATE /min().
2465 min(1, $sysmis) => 1.00
2467 min(1, 2, 3, $sysmis) => 1.00
2469 min.4(1, 2, 3, $sysmis) => sysmis
2471 evaluate.sps:25.17-25.30: error: DEBUG EVALUATE: For MIN(number[, number]...)
2472 with 3 arguments, at most 3 (not 4) may be required to be valid.
2473 25 | DEBUG EVALUATE /min.4(1, 2, 3).
2476 min.4(1, 2, 3) => error
2478 min("2", "3", "5", "1", "4") => "1"
2480 min("1", "2") => "1"
2487 AT_SETUP([expressions - CFVAR MEAN MEDIAN])
2488 AT_KEYWORDS([expression expressions evaluate])
2489 AT_DATA([evaluate-base.sps], [dnl
2491 DEBUG EVALUATE SET opt.
2493 DEBUG EVALUATE /cfvar(1, 2, 3, 4, 5).
2494 DEBUG EVALUATE /cfvar(1, $sysmis, 2, 3, $sysmis, 4, 5).
2495 DEBUG EVALUATE /cfvar(1, 2).
2496 DEBUG EVALUATE /cfvar(1).
2497 DEBUG EVALUATE /cfvar(1, $sysmis).
2498 DEBUG EVALUATE /cfvar(1, 2, 3, $sysmis).
2499 DEBUG EVALUATE /cfvar.4(1, 2, 3, $sysmis).
2500 DEBUG EVALUATE /cfvar.4(1, 2, 3).
2501 DEBUG EVALUATE /cfvar('x').
2502 DEBUG EVALUATE /cfvar('x', 1, 2, 3).
2504 DEBUG EVALUATE /mean(1, 2, 3, 4, 5).
2505 DEBUG EVALUATE /mean(1, $sysmis, 2, 3, $sysmis, 4, 5).
2506 DEBUG EVALUATE /mean(1, 2).
2507 DEBUG EVALUATE /mean().
2508 DEBUG EVALUATE /mean(1).
2509 DEBUG EVALUATE /mean(1, $sysmis).
2510 DEBUG EVALUATE /mean(1, 2, 3, $sysmis).
2511 DEBUG EVALUATE /mean.4(1, 2, 3, $sysmis).
2512 DEBUG EVALUATE /mean.4(1, 2, 3).
2514 DEBUG EVALUATE /median(1, 2, 3, 4, 5).
2515 DEBUG EVALUATE /median(2, 3, 4, 5, 1).
2516 DEBUG EVALUATE /median(2, 3, 4, 1, 5).
2517 DEBUG EVALUATE /median(2, 1, 4, 5, 3).
2518 DEBUG EVALUATE /median(1, 2, 3, 4).
2519 DEBUG EVALUATE /median(2, 3, 1, 4).
2520 DEBUG EVALUATE /median(2, 3, 4, 1).
2521 DEBUG EVALUATE /median(2, 1, 4, 3).
2522 DEBUG EVALUATE /median(1, $sysmis, 3, 4, 5).
2523 DEBUG EVALUATE /median(2, 3, 4, 5, $sysmis, 1).
2524 DEBUG EVALUATE /median($sysmis, $sysmis, $sysmis, 2, 3, 4, 1, 5).
2525 DEBUG EVALUATE /median(1, 2, 3).
2526 DEBUG EVALUATE /median(1).
2527 DEBUG EVALUATE /median(1, 2).
2528 DEBUG EVALUATE /median(1, 2, $sysmis).
2529 DEBUG EVALUATE /median(1, $sysmis, $sysmis).
2530 DEBUG EVALUATE /median($sysmis, $sysmis, $sysmis).
2531 DEBUG EVALUATE /median.3(1, 2, $sysmis).
2532 DEBUG EVALUATE /median.2(1, $sysmis).
2535 for opt in OPT NOOPT; do
2537 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
2538 AT_CHECK([pspp --testing-mode evaluate.sps], [1],
2539 [[cfvar(1, 2, 3, 4, 5) => 0.53
2541 cfvar(1, $sysmis, 2, 3, $sysmis, 4, 5) => 0.53
2545 evaluate.sps:7.17-7.24: error: DEBUG EVALUATE: Type mismatch invoking
2546 CFVAR(number, number[, number]...) as cfvar(number).
2547 7 | DEBUG EVALUATE /cfvar(1).
2552 cfvar(1, $sysmis) => sysmis
2554 cfvar(1, 2, 3, $sysmis) => 0.50
2556 cfvar.4(1, 2, 3, $sysmis) => sysmis
2558 evaluate.sps:11.17-11.32: error: DEBUG EVALUATE: For CFVAR(number, number[,
2559 number]...) with 3 arguments, at most 3 (not 4) may be required to be valid.
2560 11 | DEBUG EVALUATE /cfvar.4(1, 2, 3).
2563 cfvar.4(1, 2, 3) => error
2565 evaluate.sps:12.17-12.26: error: DEBUG EVALUATE: Type mismatch invoking
2566 CFVAR(number, number[, number]...) as cfvar(string).
2567 12 | DEBUG EVALUATE /cfvar('x').
2570 evaluate.sps:12.23-12.25: note: DEBUG EVALUATE: This argument has type 'string'
2571 but 'number' is required.
2572 12 | DEBUG EVALUATE /cfvar('x').
2577 evaluate.sps:13.17-13.35: error: DEBUG EVALUATE: Type mismatch invoking
2578 CFVAR(number, number[, number]...) as cfvar(string, number, number, number).
2579 13 | DEBUG EVALUATE /cfvar('x', 1, 2, 3).
2580 | ^~~~~~~~~~~~~~~~~~~
2582 cfvar('x', 1, 2, 3) => error
2584 mean(1, 2, 3, 4, 5) => 3.00
2586 mean(1, $sysmis, 2, 3, $sysmis, 4, 5) => 3.00
2590 evaluate.sps:18.17-18.21: error: DEBUG EVALUATE: Type mismatch invoking
2591 MEAN(number[, number]...) as mean().
2592 18 | DEBUG EVALUATE /mean().
2599 mean(1, $sysmis) => 1.00
2601 mean(1, 2, 3, $sysmis) => 2.00
2603 mean.4(1, 2, 3, $sysmis) => sysmis
2605 evaluate.sps:23.17-23.31: error: DEBUG EVALUATE: For MEAN(number[, number]...)
2606 with 3 arguments, at most 3 (not 4) may be required to be valid.
2607 23 | DEBUG EVALUATE /mean.4(1, 2, 3).
2610 mean.4(1, 2, 3) => error
2612 median(1, 2, 3, 4, 5) => 3.00
2614 median(2, 3, 4, 5, 1) => 3.00
2616 median(2, 3, 4, 1, 5) => 3.00
2618 median(2, 1, 4, 5, 3) => 3.00
2620 median(1, 2, 3, 4) => 2.50
2622 median(2, 3, 1, 4) => 2.50
2624 median(2, 3, 4, 1) => 2.50
2626 median(2, 1, 4, 3) => 2.50
2628 median(1, $sysmis, 3, 4, 5) => 3.50
2630 median(2, 3, 4, 5, $sysmis, 1) => 3.00
2632 median($sysmis, $sysmis, $sysmis, 2, 3, 4, 1, 5) => 3.00
2634 median(1, 2, 3) => 2.00
2638 median(1, 2) => 1.50
2640 median(1, 2, $sysmis) => 1.50
2642 median(1, $sysmis, $sysmis) => 1.00
2644 median($sysmis, $sysmis, $sysmis) => sysmis
2646 median.3(1, 2, $sysmis) => sysmis
2648 median.2(1, $sysmis) => sysmis
2653 AT_SETUP([expressions - SD SUM VARIANCE])
2654 AT_KEYWORDS([expression expressions evaluate])
2655 AT_DATA([evaluate-base.sps], [dnl
2657 DEBUG EVALUATE SET opt.
2659 DEBUG EVALUATE /sd(1, 2, 3, 4, 5).
2660 DEBUG EVALUATE /sd(1, $sysmis, 2, 3, $sysmis, 4, 5).
2661 DEBUG EVALUATE /sd(1, 2).
2662 DEBUG EVALUATE /sd(1).
2663 DEBUG EVALUATE /sd(1, $sysmis).
2664 DEBUG EVALUATE /sd(1, 2, 3, $sysmis).
2665 DEBUG EVALUATE /sd.4(1, 2, 3, $sysmis).
2666 DEBUG EVALUATE /sd.4(1, 2, 3).
2667 DEBUG EVALUATE /sd('x').
2668 DEBUG EVALUATE /sd('x', 1, 2, 3).
2669 DEBUG EVALUATE (a=1)(b=2)(c=3)(d=4)(e=5)(f=6)(g=7)/sd(a TO c).
2671 DEBUG EVALUATE /sum(1, 2, 3, 4, 5).
2672 DEBUG EVALUATE /sum(1, $sysmis, 2, 3, $sysmis, 4, 5).
2673 DEBUG EVALUATE /sum(1, 2).
2674 DEBUG EVALUATE /sum().
2675 DEBUG EVALUATE /sum(1).
2676 DEBUG EVALUATE /sum(1, $sysmis).
2677 DEBUG EVALUATE /sum(1, 2, 3, $sysmis).
2678 DEBUG EVALUATE /sum.4(1, 2, 3, $sysmis).
2679 DEBUG EVALUATE /sum.4(1, 2, 3).
2680 DEBUG EVALUATE (a=1)(b=2)(c=3)(d=4)(e=5)(f=6)(g=7)/sum(b TO F).
2682 DEBUG EVALUATE /variance(1, 2, 3, 4, 5).
2683 DEBUG EVALUATE /variance(1, $sysmis, 2, 3, $sysmis, 4, 5).
2684 DEBUG EVALUATE /variance(1, 2).
2685 DEBUG EVALUATE /variance(1).
2686 DEBUG EVALUATE /variance(1, $sysmis).
2687 DEBUG EVALUATE /variance(1, 2, 3, $sysmis).
2688 DEBUG EVALUATE /variance.4(1, 2, 3, $sysmis).
2689 DEBUG EVALUATE /variance.4(1, 2, 3).
2690 DEBUG EVALUATE /variance('x').
2691 DEBUG EVALUATE /variance('x', 1, 2, 3).
2692 DEBUG EVALUATE (a=1)(b=2)(c=3)(d=4)(e=5)(f=6)(g=7)/variance(a TO e).
2695 for opt in OPT NOOPT; do
2697 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
2698 AT_CHECK([pspp --testing-mode evaluate.sps], [1],
2699 [[sd(1, 2, 3, 4, 5) => 1.58
2701 sd(1, $sysmis, 2, 3, $sysmis, 4, 5) => 1.58
2705 evaluate.sps:7.17-7.21: error: DEBUG EVALUATE: Type mismatch invoking
2706 SD(number, number[, number]...) as sd(number).
2707 7 | DEBUG EVALUATE /sd(1).
2712 sd(1, $sysmis) => sysmis
2714 sd(1, 2, 3, $sysmis) => 1.00
2716 sd.4(1, 2, 3, $sysmis) => sysmis
2718 evaluate.sps:11.17-11.29: error: DEBUG EVALUATE: For SD(number, number[,
2719 number]...) with 3 arguments, at most 3 (not 4) may be required to be valid.
2720 11 | DEBUG EVALUATE /sd.4(1, 2, 3).
2723 sd.4(1, 2, 3) => error
2725 evaluate.sps:12.17-12.23: error: DEBUG EVALUATE: Type mismatch invoking
2726 SD(number, number[, number]...) as sd(string).
2727 12 | DEBUG EVALUATE /sd('x').
2730 evaluate.sps:12.20-12.22: note: DEBUG EVALUATE: This argument has type 'string'
2731 but 'number' is required.
2732 12 | DEBUG EVALUATE /sd('x').
2737 evaluate.sps:13.17-13.32: error: DEBUG EVALUATE: Type mismatch invoking
2738 SD(number, number[, number]...) as sd(string, number, number, number).
2739 13 | DEBUG EVALUATE /sd('x', 1, 2, 3).
2742 sd('x', 1, 2, 3) => error
2746 sum(1, 2, 3, 4, 5) => 15.00
2748 sum(1, $sysmis, 2, 3, $sysmis, 4, 5) => 15.00
2752 evaluate.sps:19.17-19.20: error: DEBUG EVALUATE: Type mismatch invoking
2753 SUM(number[, number]...) as sum().
2754 19 | DEBUG EVALUATE /sum().
2761 sum(1, $sysmis) => 1.00
2763 sum(1, 2, 3, $sysmis) => 6.00
2765 sum.4(1, 2, 3, $sysmis) => sysmis
2767 evaluate.sps:24.17-24.30: error: DEBUG EVALUATE: For SUM(number[, number]...)
2768 with 3 arguments, at most 3 (not 4) may be required to be valid.
2769 24 | DEBUG EVALUATE /sum.4(1, 2, 3).
2772 sum.4(1, 2, 3) => error
2774 sum(b TO F) => 20.00
2776 variance(1, 2, 3, 4, 5) => 2.50
2778 variance(1, $sysmis, 2, 3, $sysmis, 4, 5) => 2.50
2780 variance(1, 2) => 0.50
2782 evaluate.sps:30.17-30.27: error: DEBUG EVALUATE: Type mismatch invoking
2783 VARIANCE(number, number[, number]...) as variance(number).
2784 30 | DEBUG EVALUATE /variance(1).
2787 variance(1) => error
2789 variance(1, $sysmis) => sysmis
2791 variance(1, 2, 3, $sysmis) => 1.00
2793 variance.4(1, 2, 3, $sysmis) => sysmis
2795 evaluate.sps:34.17-34.35: error: DEBUG EVALUATE: For VARIANCE(number, number[,
2796 number]...) with 3 arguments, at most 3 (not 4) may be required to be valid.
2797 34 | DEBUG EVALUATE /variance.4(1, 2, 3).
2798 | ^~~~~~~~~~~~~~~~~~~
2800 variance.4(1, 2, 3) => error
2802 evaluate.sps:35.17-35.29: error: DEBUG EVALUATE: Type mismatch invoking
2803 VARIANCE(number, number[, number]...) as variance(string).
2804 35 | DEBUG EVALUATE /variance('x').
2807 evaluate.sps:35.26-35.28: note: DEBUG EVALUATE: This argument has type 'string'
2808 but 'number' is required.
2809 35 | DEBUG EVALUATE /variance('x').
2812 variance('x') => error
2814 evaluate.sps:36.17-36.38: error: DEBUG EVALUATE: Type mismatch invoking
2815 VARIANCE(number, number[, number]...) as variance(string, number, number,
2817 36 | DEBUG EVALUATE /variance('x', 1, 2, 3).
2818 | ^~~~~~~~~~~~~~~~~~~~~~
2820 variance('x', 1, 2, 3) => error
2822 variance(a TO e) => 2.50
2827 AT_SETUP([expressions - CONCAT])
2828 AT_KEYWORDS([expression expressions evaluate])
2829 AT_DATA([evaluate-base.sps], [dnl
2831 DEBUG EVALUATE SET opt.
2833 DEBUG EVALUATE /concat('').
2834 DEBUG EVALUATE /concat('a', 'b').
2835 DEBUG EVALUATE /concat('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h').
2836 DEBUG EVALUATE /concat('abcdefgh', 'ijklmnopq').
2837 DEBUG EVALUATE /concat('a', 1).
2838 DEBUG EVALUATE /concat(1, 2).
2841 for opt in OPT NOOPT; do
2843 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
2844 AT_CHECK([pspp --testing-mode evaluate.sps], [1],
2847 concat('a', 'b') => "ab"
2849 concat('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h') => "abcdefgh"
2851 concat('abcdefgh', 'ijklmnopq') => "abcdefghijklmnopq"
2853 evaluate.sps:8.17-8.30: error: DEBUG EVALUATE: Type mismatch invoking
2854 CONCAT(string[, string]...) as concat(string, number).
2855 8 | DEBUG EVALUATE /concat('a', 1).
2858 concat('a', 1) => error
2860 evaluate.sps:9.17-9.28: error: DEBUG EVALUATE: Type mismatch invoking
2861 CONCAT(string[, string]...) as concat(number, number).
2862 9 | DEBUG EVALUATE /concat(1, 2).
2865 concat(1, 2) => error
2870 AT_SETUP([expressions - INDEX])
2871 AT_KEYWORDS([expression expressions evaluate])
2872 AT_DATA([evaluate-base.sps], [dnl
2874 DEBUG EVALUATE SET opt.
2876 DEBUG EVALUATE /index('abcbcde', 'bc').
2877 DEBUG EVALUATE /index('abcbcde', 'bcd').
2878 DEBUG EVALUATE /index('abcbcde', 'bcbc').
2879 DEBUG EVALUATE /index('abcdefgh', 'abc').
2880 DEBUG EVALUATE /index('abcdefgh', 'bcd').
2881 DEBUG EVALUATE /index('abcdefgh', 'cde').
2882 DEBUG EVALUATE /index('abcdefgh', 'def').
2883 DEBUG EVALUATE /index('abcdefgh', 'efg').
2884 DEBUG EVALUATE /index('abcdefgh', 'fgh').
2885 DEBUG EVALUATE /index('abcdefgh', 'fghi').
2886 DEBUG EVALUATE /index('abcdefgh', 'x').
2887 DEBUG EVALUATE /index('abcdefgh', 'abch').
2888 DEBUG EVALUATE /index('banana', 'na').
2889 DEBUG EVALUATE /index('banana', 'ana').
2890 DEBUG EVALUATE /index('', 'x').
2891 DEBUG EVALUATE /index('x', '').
2892 DEBUG EVALUATE /index('', '').
2893 DEBUG EVALUATE /index('abcdefgh', '').
2894 DEBUG EVALUATE /index('abcdefgh', 'alkjsfdjlskalkjfa').
2896 DEBUG EVALUATE /index('abcbcde', 'bc', 1).
2897 DEBUG EVALUATE /index('abcbcde', 'dc', 1).
2898 DEBUG EVALUATE /index('abcbcde', 'abc', 1).
2899 DEBUG EVALUATE /index('abcbcde', 'bc', 2).
2900 DEBUG EVALUATE /index('abcbcde', 'dc', 2).
2901 DEBUG EVALUATE /index('abcbcde', 'abc', 1).
2902 DEBUG EVALUATE /index('abcbcde', 'bccb', 2).
2903 DEBUG EVALUATE /index('abcbcde', 'bcbc', 2).
2904 DEBUG EVALUATE /index('abcbcde', 'bcbc', $sysmis).
2905 DEBUG EVALUATE /index('abcbcde', 'bcbc', 3).
2906 DEBUG EVALUATE /index('abcbcde', '', 1).
2907 DEBUG EVALUATE /index('', '', 1).
2910 for opt in OPT NOOPT; do
2912 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
2913 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
2914 index('abcbcde', 'bc') => 2.00
2916 index('abcbcde', 'bcd') => 4.00
2918 index('abcbcde', 'bcbc') => 2.00
2920 index('abcdefgh', 'abc') => 1.00
2922 index('abcdefgh', 'bcd') => 2.00
2924 index('abcdefgh', 'cde') => 3.00
2926 index('abcdefgh', 'def') => 4.00
2928 index('abcdefgh', 'efg') => 5.00
2930 index('abcdefgh', 'fgh') => 6.00
2932 index('abcdefgh', 'fghi') => 0.00
2934 index('abcdefgh', 'x') => 0.00
2936 index('abcdefgh', 'abch') => 0.00
2938 index('banana', 'na') => 3.00
2940 index('banana', 'ana') => 2.00
2942 index('', 'x') => 0.00
2944 index('x', '') => 1.00
2946 index('', '') => 1.00
2948 index('abcdefgh', '') => 1.00
2950 index('abcdefgh', 'alkjsfdjlskalkjfa') => 0.00
2952 index('abcbcde', 'bc', 1) => 2.00
2954 index('abcbcde', 'dc', 1) => 3.00
2956 index('abcbcde', 'abc', 1) => 1.00
2958 index('abcbcde', 'bc', 2) => 2.00
2960 index('abcbcde', 'dc', 2) => 0.00
2962 index('abcbcde', 'abc', 1) => 1.00
2964 index('abcbcde', 'bccb', 2) => 2.00
2966 index('abcbcde', 'bcbc', 2) => 2.00
2968 index('abcbcde', 'bcbc', $sysmis) => sysmis
2970 evaluate.sps:33.17-33.43: error: DEBUG EVALUATE: INDEX needle length argument
2971 must evenly divide the length of the needles argument.
2972 33 | DEBUG EVALUATE /index('abcbcde', 'bcbc', 3).
2973 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
2975 evaluate.sps:33.34-33.39: note: DEBUG EVALUATE: The needles argument has length
2977 33 | DEBUG EVALUATE /index('abcbcde', 'bcbc', 3).
2980 evaluate.sps:33.42: note: DEBUG EVALUATE: The needle length argument has value
2982 33 | DEBUG EVALUATE /index('abcbcde', 'bcbc', 3).
2985 index('abcbcde', 'bcbc', 3) => sysmis
2987 index('abcbcde', '', 1) => 0.00
2989 index('', '', 1) => 0.00
2994 AT_SETUP([expressions - RINDEX])
2995 AT_KEYWORDS([expression expressions evaluate])
2996 AT_DATA([evaluate-base.sps], [dnl
2998 DEBUG EVALUATE SET opt.
3000 DEBUG EVALUATE /rindex('abcbcde', 'bc').
3001 DEBUG EVALUATE /rindex('abcbcde', 'bcd').
3002 DEBUG EVALUATE /rindex('abcbcde', 'bcbc').
3003 DEBUG EVALUATE /rindex('abcdefgh', 'abc').
3004 DEBUG EVALUATE /rindex('abcdefgh', 'bcd').
3005 DEBUG EVALUATE /rindex('abcdefgh', 'cde').
3006 DEBUG EVALUATE /rindex('abcdefgh', 'def').
3007 DEBUG EVALUATE /rindex('abcdefgh', 'efg').
3008 DEBUG EVALUATE /rindex('abcdefgh', 'fgh').
3009 DEBUG EVALUATE /rindex('abcdefgh', 'fghi').
3010 DEBUG EVALUATE /rindex('abcdefgh', 'x').
3011 DEBUG EVALUATE /rindex('abcdefgh', 'abch').
3012 DEBUG EVALUATE /rindex('banana', 'na').
3013 DEBUG EVALUATE /rindex('banana', 'ana').
3014 DEBUG EVALUATE /rindex('', 'x').
3015 DEBUG EVALUATE /rindex('x', '').
3016 DEBUG EVALUATE /rindex('', '').
3017 DEBUG EVALUATE /rindex('abcdefgh', '').
3018 DEBUG EVALUATE /rindex('abcdefgh', 'alkjsfdjlskalkjfa').
3020 DEBUG EVALUATE /rindex('abcbcde', 'bc', 1).
3021 DEBUG EVALUATE /rindex('abcbcde', 'dc', 1).
3022 DEBUG EVALUATE /rindex('abcbcde', 'abc', 1).
3023 DEBUG EVALUATE /rindex('abcbcde', 'bc', 2).
3024 DEBUG EVALUATE /rindex('abcbcde', 'dc', 2).
3025 DEBUG EVALUATE /rindex('abcbcde', 'abc', 1).
3026 DEBUG EVALUATE /rindex('abcbcde', 'bccb', 2).
3027 DEBUG EVALUATE /rindex('abcbcde', 'bcbc', 2).
3028 DEBUG EVALUATE /rindex('abcbcde', 'bcbc', 0).
3029 DEBUG EVALUATE /rindex('abcbcde', 'bcbc', $sysmis).
3030 DEBUG EVALUATE /rindex('abcbcde', 'bcbcg', 2).
3031 DEBUG EVALUATE /rindex('abcbcde', 'bcbcg', $sysmis).
3032 DEBUG EVALUATE /rindex('abcbcde', 'bcbcg', 'x').
3033 DEBUG EVALUATE /rindex(1, 'bcdfkjl', 2).
3034 DEBUG EVALUATE /rindex('aksj', 2, 2).
3035 DEBUG EVALUATE /rindex(1, 2, 3).
3036 DEBUG EVALUATE /rindex(1, 2, '3').
3037 DEBUG EVALUATE /rindex('abcbcde', '', 1).
3038 DEBUG EVALUATE /rindex('', '', 1).
3041 for opt in OPT NOOPT; do
3043 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3044 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3045 rindex('abcbcde', 'bc') => 4.00
3047 rindex('abcbcde', 'bcd') => 4.00
3049 rindex('abcbcde', 'bcbc') => 2.00
3051 rindex('abcdefgh', 'abc') => 1.00
3053 rindex('abcdefgh', 'bcd') => 2.00
3055 rindex('abcdefgh', 'cde') => 3.00
3057 rindex('abcdefgh', 'def') => 4.00
3059 rindex('abcdefgh', 'efg') => 5.00
3061 rindex('abcdefgh', 'fgh') => 6.00
3063 rindex('abcdefgh', 'fghi') => 0.00
3065 rindex('abcdefgh', 'x') => 0.00
3067 rindex('abcdefgh', 'abch') => 0.00
3069 rindex('banana', 'na') => 5.00
3071 rindex('banana', 'ana') => 4.00
3073 rindex('', 'x') => 0.00
3075 rindex('x', '') => 2.00
3077 rindex('', '') => 1.00
3079 rindex('abcdefgh', '') => 9.00
3081 rindex('abcdefgh', 'alkjsfdjlskalkjfa') => 0.00
3083 rindex('abcbcde', 'bc', 1) => 5.00
3085 rindex('abcbcde', 'dc', 1) => 6.00
3087 rindex('abcbcde', 'abc', 1) => 5.00
3089 rindex('abcbcde', 'bc', 2) => 4.00
3091 rindex('abcbcde', 'dc', 2) => 0.00
3093 rindex('abcbcde', 'abc', 1) => 5.00
3095 rindex('abcbcde', 'bccb', 2) => 4.00
3097 rindex('abcbcde', 'bcbc', 2) => 4.00
3099 evaluate.sps:32.17-32.44: error: DEBUG EVALUATE: RINDEX needle length argument
3100 must evenly divide the length of the needles argument.
3101 32 | DEBUG EVALUATE /rindex('abcbcde', 'bcbc', 0).
3102 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
3104 evaluate.sps:32.35-32.40: note: DEBUG EVALUATE: The needles argument has length
3106 32 | DEBUG EVALUATE /rindex('abcbcde', 'bcbc', 0).
3109 evaluate.sps:32.43: note: DEBUG EVALUATE: The needle length argument has value
3111 32 | DEBUG EVALUATE /rindex('abcbcde', 'bcbc', 0).
3114 rindex('abcbcde', 'bcbc', 0) => sysmis
3116 rindex('abcbcde', 'bcbc', $sysmis) => sysmis
3118 evaluate.sps:34.17-34.45: error: DEBUG EVALUATE: RINDEX needle length argument
3119 must evenly divide the length of the needles argument.
3120 34 | DEBUG EVALUATE /rindex('abcbcde', 'bcbcg', 2).
3121 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3123 evaluate.sps:34.35-34.41: note: DEBUG EVALUATE: The needles argument has length
3125 34 | DEBUG EVALUATE /rindex('abcbcde', 'bcbcg', 2).
3128 evaluate.sps:34.44: note: DEBUG EVALUATE: The needle length argument has value
3130 34 | DEBUG EVALUATE /rindex('abcbcde', 'bcbcg', 2).
3133 rindex('abcbcde', 'bcbcg', 2) => sysmis
3135 rindex('abcbcde', 'bcbcg', $sysmis) => sysmis
3137 evaluate.sps:36.17-36.47: error: DEBUG EVALUATE: Function invocation
3138 rindex(string, string, string) does not match any known function. Candidates
3140 RINDEX(string, string)
3141 RINDEX(string, string, integer).
3142 36 | DEBUG EVALUATE /rindex('abcbcde', 'bcbcg', 'x').
3143 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3145 rindex('abcbcde', 'bcbcg', 'x') => error
3147 evaluate.sps:37.17-37.39: error: DEBUG EVALUATE: Function invocation
3148 rindex(number, string, number) does not match any known function. Candidates
3150 RINDEX(string, string)
3151 RINDEX(string, string, integer).
3152 37 | DEBUG EVALUATE /rindex(1, 'bcdfkjl', 2).
3153 | ^~~~~~~~~~~~~~~~~~~~~~~
3155 rindex(1, 'bcdfkjl', 2) => error
3157 evaluate.sps:38.17-38.36: error: DEBUG EVALUATE: Function invocation
3158 rindex(string, number, number) does not match any known function. Candidates
3160 RINDEX(string, string)
3161 RINDEX(string, string, integer).
3162 38 | DEBUG EVALUATE /rindex('aksj', 2, 2).
3163 | ^~~~~~~~~~~~~~~~~~~~
3165 rindex('aksj', 2, 2) => error
3167 evaluate.sps:39.17-39.31: error: DEBUG EVALUATE: Function invocation
3168 rindex(number, number, number) does not match any known function. Candidates
3170 RINDEX(string, string)
3171 RINDEX(string, string, integer).
3172 39 | DEBUG EVALUATE /rindex(1, 2, 3).
3175 rindex(1, 2, 3) => error
3177 evaluate.sps:40.17-40.33: error: DEBUG EVALUATE: Function invocation
3178 rindex(number, number, string) does not match any known function. Candidates
3180 RINDEX(string, string)
3181 RINDEX(string, string, integer).
3182 40 | DEBUG EVALUATE /rindex(1, 2, '3').
3185 rindex(1, 2, '3') => error
3187 rindex('abcbcde', '', 1) => 0.00
3189 rindex('', '', 1) => 0.00
3194 AT_SETUP([expressions - LENGTH])
3195 AT_KEYWORDS([expression expressions evaluate])
3196 AT_DATA([evaluate-base.sps], [dnl
3198 DEBUG EVALUATE SET opt.
3200 DEBUG EVALUATE /length('').
3201 DEBUG EVALUATE /length('a').
3202 DEBUG EVALUATE /length('xy').
3203 DEBUG EVALUATE /length('adsf ').
3204 DEBUG EVALUATE /length('abcdefghijkl').
3205 DEBUG EVALUATE /length(0).
3206 DEBUG EVALUATE /length($sysmis).
3209 for opt in OPT NOOPT; do
3211 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3212 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3217 length('xy') => 2.00
3219 length('adsf ') => 8.00
3221 length('abcdefghijkl') => 12.00
3223 evaluate.sps:9.17-9.25: error: DEBUG EVALUATE: Type mismatch invoking
3224 LENGTH(string) as length(number).
3225 9 | DEBUG EVALUATE /length(0).
3228 evaluate.sps:9.24: note: DEBUG EVALUATE: This argument has type 'number' but
3229 'string' is required.
3230 9 | DEBUG EVALUATE /length(0).
3235 evaluate.sps:10.17-10.31: error: DEBUG EVALUATE: Type mismatch invoking
3236 LENGTH(string) as length(number).
3237 10 | DEBUG EVALUATE /length($sysmis).
3240 evaluate.sps:10.24-10.30: note: DEBUG EVALUATE: This argument has type 'number'
3241 but 'string' is required.
3242 10 | DEBUG EVALUATE /length($sysmis).
3245 length($sysmis) => error
3250 AT_SETUP([expressions - LOWER])
3251 AT_KEYWORDS([expression expressions evaluate])
3252 AT_DATA([evaluate-base.sps], [dnl
3254 DEBUG EVALUATE SET opt.
3256 DEBUG EVALUATE /lower('ABCDEFGHIJKLMNOPQRSTUVWXYZ!@%&*089').
3257 DEBUG EVALUATE /lower('').
3258 DEBUG EVALUATE /lower(1).
3261 for opt in OPT NOOPT; do
3263 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3264 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3265 lower('ABCDEFGHIJKLMNOPQRSTUVWXYZ!@%&*089') => "abcdefghijklmnopqrstuvwxyz!
3270 evaluate.sps:6.17-6.24: error: DEBUG EVALUATE: Type mismatch invoking
3271 LOWER(string) as lower(number).
3272 6 | DEBUG EVALUATE /lower(1).
3275 evaluate.sps:6.23: note: DEBUG EVALUATE: This argument has type 'number' but
3276 'string' is required.
3277 6 | DEBUG EVALUATE /lower(1).
3285 AT_SETUP([expressions - REPLACE])
3286 AT_KEYWORDS([expression expressions evaluate])
3287 AT_DATA([evaluate-base.sps], [dnl
3289 DEBUG EVALUATE SET opt.
3290 DEBUG EVALUATE /replace('banana', 'an', 'AN').
3291 DEBUG EVALUATE /replace('banana', 'an', 'a').
3292 DEBUG EVALUATE /replace('banana', 'an', '').
3293 DEBUG EVALUATE /replace('banana', 'na', '').
3294 DEBUG EVALUATE /replace('banana', 'ba', 'BA').
3295 DEBUG EVALUATE /replace('banana', 'na', 'xyzzy').
3296 DEBUG EVALUATE /replace('banana', 'an', 'xyzzy', 1).
3297 DEBUG EVALUATE /replace('banana', 'an', 'xyzzy', 1.5).
3298 DEBUG EVALUATE /replace('banana', 'bananana', 'xyzzy').
3299 DEBUG EVALUATE /replace('banana', '', 'xyzzy').
3300 DEBUG EVALUATE /replace('banana', 'ba', '', 0).
3301 DEBUG EVALUATE /replace('banana', 'ba', '', -1).
3302 DEBUG EVALUATE /replace('banana', 'ba', '', $sysmis).
3305 for opt in OPT NOOPT; do
3307 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3308 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3309 replace('banana', 'an', 'AN') => "bANANa"
3311 replace('banana', 'an', 'a') => "baaa"
3313 replace('banana', 'an', '') => "ba"
3315 replace('banana', 'na', '') => "ba"
3317 replace('banana', 'ba', 'BA') => "BAnana"
3319 replace('banana', 'na', 'xyzzy') => "baxyzzyxyzzy"
3321 replace('banana', 'an', 'xyzzy', 1) => "bxyzzyana"
3323 evaluate.sps:10.50-10.52: error: DEBUG EVALUATE: Treating unexpected non-
3324 integer value 1.5 as missing.
3325 10 | DEBUG EVALUATE /replace('banana', 'an', 'xyzzy', 1.5).
3328 replace('banana', 'an', 'xyzzy', 1.5) => "banana"
3330 replace('banana', 'bananana', 'xyzzy') => "banana"
3332 replace('banana', '', 'xyzzy') => "banana"
3334 replace('banana', 'ba', '', 0) => "banana"
3336 replace('banana', 'ba', '', -1) => "banana"
3338 replace('banana', 'ba', '', $sysmis) => "banana"
3343 AT_SETUP([expressions - LPAD])
3344 AT_KEYWORDS([expression expressions evaluate])
3345 AT_DATA([evaluate-base.sps], [dnl
3347 DEBUG EVALUATE SET opt.
3349 DEBUG EVALUATE /lpad('abc', 0).
3350 DEBUG EVALUATE /lpad('abc', 2).
3351 DEBUG EVALUATE /lpad('abc', 3).
3352 DEBUG EVALUATE /lpad('abc', 10).
3354 DEBUG EVALUATE /lpad('abc', -1).
3355 DEBUG EVALUATE /lpad('abc', 32768).
3356 DEBUG EVALUATE /lpad('abc', $sysmis).
3358 DEBUG EVALUATE /lpad('abc', -1, '*').
3359 DEBUG EVALUATE /lpad('abc', 0, '*').
3360 DEBUG EVALUATE /lpad('abc', 2, '*').
3361 DEBUG EVALUATE /lpad('abc', 3, '*').
3362 DEBUG EVALUATE /lpad('abc', 10, '*').
3364 DEBUG EVALUATE /lpad('abc', 5, 'de').
3365 DEBUG EVALUATE /lpad('abc', 6, 'de').
3366 DEBUG EVALUATE /lpad('abc', 7, 'de').
3367 DEBUG EVALUATE /lpad('abc', 8, 'de').
3368 DEBUG EVALUATE /lpad('abc', 9, 'de').
3370 DEBUG EVALUATE /lpad('abc', 32768, '*').
3371 DEBUG EVALUATE /lpad('abc', $sysmis, '*').
3372 DEBUG EVALUATE /lpad('abc', $sysmis, '').
3373 DEBUG EVALUATE /lpad('abc', $sysmis, 'xy').
3374 DEBUG EVALUATE /lpad(0, 10).
3375 DEBUG EVALUATE /lpad('abc', 'def').
3376 DEBUG EVALUATE /lpad(0, 10, ' ').
3377 DEBUG EVALUATE /lpad('abc', 'def', ' ').
3378 DEBUG EVALUATE /lpad('x', 5, 0).
3379 DEBUG EVALUATE /lpad('x', 5, 2).
3382 for opt in OPT NOOPT; do
3384 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3385 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3386 lpad('abc', 0) => "abc"
3388 lpad('abc', 2) => "abc"
3390 lpad('abc', 3) => "abc"
3392 lpad('abc', 10) => " abc"
3394 evaluate.sps:9.17-9.31: error: DEBUG EVALUATE: The length argument to LPAD must
3395 be between 0 and 32767.
3396 9 | DEBUG EVALUATE /lpad('abc', -1).
3399 evaluate.sps:9.29-9.30: note: DEBUG EVALUATE: The length argument is -1.
3400 9 | DEBUG EVALUATE /lpad('abc', -1).
3403 lpad('abc', -1) => "abc"
3405 evaluate.sps:10.17-10.34: error: DEBUG EVALUATE: The length argument to LPAD
3406 must be between 0 and 32767.
3407 10 | DEBUG EVALUATE /lpad('abc', 32768).
3408 | ^~~~~~~~~~~~~~~~~~
3410 evaluate.sps:10.29-10.33: note: DEBUG EVALUATE: The length argument is 32768.
3411 10 | DEBUG EVALUATE /lpad('abc', 32768).
3414 lpad('abc', 32768) => "abc"
3416 lpad('abc', $sysmis) => "abc"
3418 evaluate.sps:13.17-13.36: error: DEBUG EVALUATE: The length argument to LPAD
3419 must be between 0 and 32767.
3420 13 | DEBUG EVALUATE /lpad('abc', -1, '*').
3421 | ^~~~~~~~~~~~~~~~~~~~
3423 evaluate.sps:13.29-13.30: note: DEBUG EVALUATE: The length argument is -1.
3424 13 | DEBUG EVALUATE /lpad('abc', -1, '*').
3427 lpad('abc', -1, '*') => "abc"
3429 lpad('abc', 0, '*') => "abc"
3431 lpad('abc', 2, '*') => "abc"
3433 lpad('abc', 3, '*') => "abc"
3435 lpad('abc', 10, '*') => "*******abc"
3437 lpad('abc', 5, 'de') => "deabc"
3439 lpad('abc', 6, 'de') => "deabc"
3441 lpad('abc', 7, 'de') => "dedeabc"
3443 lpad('abc', 8, 'de') => "dedeabc"
3445 lpad('abc', 9, 'de') => "dededeabc"
3447 evaluate.sps:25.17-25.39: error: DEBUG EVALUATE: The length argument to LPAD
3448 must be between 0 and 32767.
3449 25 | DEBUG EVALUATE /lpad('abc', 32768, '*').
3450 | ^~~~~~~~~~~~~~~~~~~~~~~
3452 evaluate.sps:25.29-25.33: note: DEBUG EVALUATE: The length argument is 32768.
3453 25 | DEBUG EVALUATE /lpad('abc', 32768, '*').
3456 lpad('abc', 32768, '*') => "abc"
3458 lpad('abc', $sysmis, '*') => "abc"
3460 lpad('abc', $sysmis, '') => "abc"
3462 lpad('abc', $sysmis, 'xy') => "abc"
3464 evaluate.sps:29.17-29.27: error: DEBUG EVALUATE: Function invocation
3465 lpad(number, number) does not match any known function. Candidates are:
3466 LPAD(string, integer)
3467 LPAD(string, integer, string).
3468 29 | DEBUG EVALUATE /lpad(0, 10).
3471 lpad(0, 10) => error
3473 evaluate.sps:30.17-30.34: error: DEBUG EVALUATE: Function invocation
3474 lpad(string, string) does not match any known function. Candidates are:
3475 LPAD(string, integer)
3476 LPAD(string, integer, string).
3477 30 | DEBUG EVALUATE /lpad('abc', 'def').
3478 | ^~~~~~~~~~~~~~~~~~
3480 lpad('abc', 'def') => error
3482 evaluate.sps:31.17-31.32: error: DEBUG EVALUATE: Function invocation
3483 lpad(number, number, string) does not match any known function. Candidates
3485 LPAD(string, integer)
3486 LPAD(string, integer, string).
3487 31 | DEBUG EVALUATE /lpad(0, 10, ' ').
3490 lpad(0, 10, ' ') => error
3492 evaluate.sps:32.17-32.39: error: DEBUG EVALUATE: Function invocation
3493 lpad(string, string, string) does not match any known function. Candidates
3495 LPAD(string, integer)
3496 LPAD(string, integer, string).
3497 32 | DEBUG EVALUATE /lpad('abc', 'def', ' ').
3498 | ^~~~~~~~~~~~~~~~~~~~~~~
3500 lpad('abc', 'def', ' ') => error
3502 evaluate.sps:33.17-33.31: error: DEBUG EVALUATE: Function invocation
3503 lpad(string, number, number) does not match any known function. Candidates
3505 LPAD(string, integer)
3506 LPAD(string, integer, string).
3507 33 | DEBUG EVALUATE /lpad('x', 5, 0).
3510 lpad('x', 5, 0) => error
3512 evaluate.sps:34.17-34.31: error: DEBUG EVALUATE: Function invocation
3513 lpad(string, number, number) does not match any known function. Candidates
3515 LPAD(string, integer)
3516 LPAD(string, integer, string).
3517 34 | DEBUG EVALUATE /lpad('x', 5, 2).
3520 lpad('x', 5, 2) => error
3525 AT_SETUP([expressions - NUMBER])
3526 AT_KEYWORDS([expression expressions evaluate])
3527 AT_DATA([evaluate-base.sps], [dnl
3529 DEBUG EVALUATE SET opt.
3530 DEBUG EVALUATE /number("123", f3.0).
3531 DEBUG EVALUATE /number(" 123", f3.0).
3532 DEBUG EVALUATE /number("123", f3.1).
3533 DEBUG EVALUATE /number(" ", f3.1).
3534 DEBUG EVALUATE /number("123", a8).
3535 dnl CCA is not an input format:
3536 DEBUG EVALUATE /number("123", cca1.2).
3539 for opt in OPT NOOPT; do
3541 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3542 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3543 number("123", f3.0) => 123.00
3545 number(" 123", f3.0) => 12.00
3547 number("123", f3.1) => 12.30
3549 number(" ", f3.1) => sysmis
3551 evaluate.sps:7.17-7.33: error: DEBUG EVALUATE: Type mismatch invoking
3552 NUMBER(string, num_input_format) as number(string, format).
3553 7 | DEBUG EVALUATE /number("123", a8).
3556 evaluate.sps:7.31-7.32: note: DEBUG EVALUATE: Numeric variables are not
3557 compatible with string format A8.
3558 7 | DEBUG EVALUATE /number("123", a8).
3561 number("123", a8) => error
3563 evaluate.sps:8.17-8.37: error: DEBUG EVALUATE: Type mismatch invoking
3564 NUMBER(string, num_input_format) as number(string, format).
3565 8 | DEBUG EVALUATE /number("123", cca1.2).
3566 | ^~~~~~~~~~~~~~~~~~~~~
3568 evaluate.sps:8.31-8.36: note: DEBUG EVALUATE: Format CCA1.2 may not be used for
3570 8 | DEBUG EVALUATE /number("123", cca1.2).
3573 number("123", cca1.2) => error
3578 AT_SETUP([expressions - LTRIM])
3579 AT_KEYWORDS([expression expressions evaluate])
3580 AT_DATA([evaluate-base.sps], [dnl
3582 DEBUG EVALUATE SET opt.
3583 DEBUG EVALUATE /ltrim(' abc').
3584 DEBUG EVALUATE /rtrim(' abc ').
3585 DEBUG EVALUATE /ltrim('abc').
3586 * The following string contains a tab.
3587 DEBUG EVALUATE /ltrim(' abc').
3588 DEBUG EVALUATE /ltrim(' ').
3589 DEBUG EVALUATE /ltrim('').
3590 DEBUG EVALUATE /ltrim(8).
3592 DEBUG EVALUATE /ltrim('***abc', '*').
3593 DEBUG EVALUATE /ltrim('abc', '*').
3594 DEBUG EVALUATE /ltrim('*abc', '*').
3595 DEBUG EVALUATE /ltrim('', '*').
3597 DEBUG EVALUATE /ltrim('abc', 'xy').
3598 DEBUG EVALUATE /ltrim('xyabc', 'xy').
3599 DEBUG EVALUATE /ltrim('xyxyabc', 'xy').
3601 DEBUG EVALUATE /ltrim(8, '*').
3602 DEBUG EVALUATE /ltrim(' x', 8).
3603 DEBUG EVALUATE /ltrim(8, 9).
3606 for opt in OPT NOOPT; do
3608 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3609 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3610 ltrim(' abc') => "abc"
3612 rtrim(' abc ') => " abc"
3614 ltrim('abc') => "abc"
3616 ltrim(' abc') => " abc"
3622 evaluate.sps:10.17-10.24: error: DEBUG EVALUATE: Function invocation
3623 ltrim(number) does not match any known function. Candidates are:
3625 LTRIM(string, string).
3626 10 | DEBUG EVALUATE /ltrim(8).
3631 ltrim('***abc', '*') => "abc"
3633 ltrim('abc', '*') => "abc"
3635 ltrim('*abc', '*') => "abc"
3637 ltrim('', '*') => ""
3639 ltrim('abc', 'xy') => "abc"
3641 ltrim('xyabc', 'xy') => "abc"
3643 ltrim('xyxyabc', 'xy') => "abc"
3645 evaluate.sps:21.17-21.29: error: DEBUG EVALUATE: Function invocation
3646 ltrim(number, string) does not match any known function. Candidates are:
3648 LTRIM(string, string).
3649 21 | DEBUG EVALUATE /ltrim(8, '*').
3652 ltrim(8, '*') => error
3654 evaluate.sps:22.17-22.30: error: DEBUG EVALUATE: Function invocation
3655 ltrim(string, number) does not match any known function. Candidates are:
3657 LTRIM(string, string).
3658 22 | DEBUG EVALUATE /ltrim(' x', 8).
3661 ltrim(' x', 8) => error
3663 evaluate.sps:23.17-23.27: error: DEBUG EVALUATE: Function invocation
3664 ltrim(number, number) does not match any known function. Candidates are:
3666 LTRIM(string, string).
3667 23 | DEBUG EVALUATE /ltrim(8, 9).
3670 ltrim(8, 9) => error
3675 AT_SETUP([expressions - RPAD])
3676 AT_KEYWORDS([expression expressions evaluate])
3677 AT_DATA([evaluate-base.sps], [dnl
3679 DEBUG EVALUATE SET opt.
3681 DEBUG EVALUATE /rpad('abc', 0).
3682 DEBUG EVALUATE /rpad('abc', 2).
3683 DEBUG EVALUATE /rpad('abc', 3).
3684 DEBUG EVALUATE /rpad('abc', 10).
3686 DEBUG EVALUATE /rpad('abc', -1).
3687 DEBUG EVALUATE /rpad('abc', 32768).
3688 DEBUG EVALUATE /rpad('abc', $sysmis).
3690 DEBUG EVALUATE /rpad('abc', -1, '*').
3691 DEBUG EVALUATE /rpad('abc', 0, '*').
3692 DEBUG EVALUATE /rpad('abc', 2, '*').
3693 DEBUG EVALUATE /rpad('abc', 3, '*').
3694 DEBUG EVALUATE /rpad('abc', 10, '*').
3696 DEBUG EVALUATE /rpad('abc', 5, 'de').
3697 DEBUG EVALUATE /rpad('abc', 6, 'de').
3698 DEBUG EVALUATE /rpad('abc', 7, 'de').
3699 DEBUG EVALUATE /rpad('abc', 8, 'de').
3700 DEBUG EVALUATE /rpad('abc', 9, 'de').
3702 DEBUG EVALUATE /rpad('abc', 32768, '*').
3703 DEBUG EVALUATE /rpad('abc', $sysmis, '*').
3704 DEBUG EVALUATE /rpad('abc', $sysmis, '').
3705 DEBUG EVALUATE /rpad('abc', $sysmis, 'xy').
3706 DEBUG EVALUATE /rpad(0, 10).
3707 DEBUG EVALUATE /rpad('abc', 'def').
3708 DEBUG EVALUATE /rpad(0, 10, ' ').
3709 DEBUG EVALUATE /rpad('abc', 'def', ' ').
3710 DEBUG EVALUATE /rpad('x', 5, 0).
3711 DEBUG EVALUATE /rpad('x', 5, 2).
3714 for opt in OPT NOOPT; do
3716 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3717 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3718 rpad('abc', 0) => "abc"
3720 rpad('abc', 2) => "abc"
3722 rpad('abc', 3) => "abc"
3724 rpad('abc', 10) => "abc "
3726 evaluate.sps:9.17-9.31: error: DEBUG EVALUATE: The length argument to RPAD must
3727 be between 0 and 32767.
3728 9 | DEBUG EVALUATE /rpad('abc', -1).
3731 evaluate.sps:9.29-9.30: note: DEBUG EVALUATE: The length argument is -1.
3732 9 | DEBUG EVALUATE /rpad('abc', -1).
3735 rpad('abc', -1) => "abc"
3737 evaluate.sps:10.17-10.34: error: DEBUG EVALUATE: The length argument to RPAD
3738 must be between 0 and 32767.
3739 10 | DEBUG EVALUATE /rpad('abc', 32768).
3740 | ^~~~~~~~~~~~~~~~~~
3742 evaluate.sps:10.29-10.33: note: DEBUG EVALUATE: The length argument is 32768.
3743 10 | DEBUG EVALUATE /rpad('abc', 32768).
3746 rpad('abc', 32768) => "abc"
3748 rpad('abc', $sysmis) => "abc"
3750 evaluate.sps:13.17-13.36: error: DEBUG EVALUATE: The length argument to RPAD
3751 must be between 0 and 32767.
3752 13 | DEBUG EVALUATE /rpad('abc', -1, '*').
3753 | ^~~~~~~~~~~~~~~~~~~~
3755 evaluate.sps:13.29-13.30: note: DEBUG EVALUATE: The length argument is -1.
3756 13 | DEBUG EVALUATE /rpad('abc', -1, '*').
3759 rpad('abc', -1, '*') => "abc"
3761 rpad('abc', 0, '*') => "abc"
3763 rpad('abc', 2, '*') => "abc"
3765 rpad('abc', 3, '*') => "abc"
3767 rpad('abc', 10, '*') => "abc*******"
3769 rpad('abc', 5, 'de') => "abcde"
3771 rpad('abc', 6, 'de') => "abcde"
3773 rpad('abc', 7, 'de') => "abcdede"
3775 rpad('abc', 8, 'de') => "abcdede"
3777 rpad('abc', 9, 'de') => "abcdedede"
3779 evaluate.sps:25.17-25.39: error: DEBUG EVALUATE: The length argument to RPAD
3780 must be between 0 and 32767.
3781 25 | DEBUG EVALUATE /rpad('abc', 32768, '*').
3782 | ^~~~~~~~~~~~~~~~~~~~~~~
3784 evaluate.sps:25.29-25.33: note: DEBUG EVALUATE: The length argument is 32768.
3785 25 | DEBUG EVALUATE /rpad('abc', 32768, '*').
3788 rpad('abc', 32768, '*') => "abc"
3790 rpad('abc', $sysmis, '*') => "abc"
3792 rpad('abc', $sysmis, '') => "abc"
3794 rpad('abc', $sysmis, 'xy') => "abc"
3796 evaluate.sps:29.17-29.27: error: DEBUG EVALUATE: Function invocation
3797 rpad(number, number) does not match any known function. Candidates are:
3798 RPAD(string, integer)
3799 RPAD(string, integer, string).
3800 29 | DEBUG EVALUATE /rpad(0, 10).
3803 rpad(0, 10) => error
3805 evaluate.sps:30.17-30.34: error: DEBUG EVALUATE: Function invocation
3806 rpad(string, string) does not match any known function. Candidates are:
3807 RPAD(string, integer)
3808 RPAD(string, integer, string).
3809 30 | DEBUG EVALUATE /rpad('abc', 'def').
3810 | ^~~~~~~~~~~~~~~~~~
3812 rpad('abc', 'def') => error
3814 evaluate.sps:31.17-31.32: error: DEBUG EVALUATE: Function invocation
3815 rpad(number, number, string) does not match any known function. Candidates
3817 RPAD(string, integer)
3818 RPAD(string, integer, string).
3819 31 | DEBUG EVALUATE /rpad(0, 10, ' ').
3822 rpad(0, 10, ' ') => error
3824 evaluate.sps:32.17-32.39: error: DEBUG EVALUATE: Function invocation
3825 rpad(string, string, string) does not match any known function. Candidates
3827 RPAD(string, integer)
3828 RPAD(string, integer, string).
3829 32 | DEBUG EVALUATE /rpad('abc', 'def', ' ').
3830 | ^~~~~~~~~~~~~~~~~~~~~~~
3832 rpad('abc', 'def', ' ') => error
3834 evaluate.sps:33.17-33.31: error: DEBUG EVALUATE: Function invocation
3835 rpad(string, number, number) does not match any known function. Candidates
3837 RPAD(string, integer)
3838 RPAD(string, integer, string).
3839 33 | DEBUG EVALUATE /rpad('x', 5, 0).
3842 rpad('x', 5, 0) => error
3844 evaluate.sps:34.17-34.31: error: DEBUG EVALUATE: Function invocation
3845 rpad(string, number, number) does not match any known function. Candidates
3847 RPAD(string, integer)
3848 RPAD(string, integer, string).
3849 34 | DEBUG EVALUATE /rpad('x', 5, 2).
3852 rpad('x', 5, 2) => error
3857 AT_SETUP([expressions - RTRIM])
3858 AT_KEYWORDS([expression expressions evaluate])
3859 AT_DATA([evaluate-base.sps], [dnl
3861 DEBUG EVALUATE SET opt.
3862 DEBUG EVALUATE /rtrim('abc ').
3863 DEBUG EVALUATE /rtrim(' abc ').
3864 DEBUG EVALUATE /rtrim('abc').
3865 * The following string contains a tab.
3866 DEBUG EVALUATE /rtrim('abc ').
3867 DEBUG EVALUATE /rtrim(' ').
3868 DEBUG EVALUATE /rtrim('').
3869 DEBUG EVALUATE /rtrim(8).
3871 DEBUG EVALUATE /rtrim('abc***', '*').
3872 DEBUG EVALUATE /rtrim('abc', '*').
3873 DEBUG EVALUATE /rtrim('abc*', '*').
3874 DEBUG EVALUATE /rtrim('', '*').
3876 DEBUG EVALUATE /rtrim('abc', 'xy').
3877 DEBUG EVALUATE /rtrim('abcxy', 'xy').
3878 DEBUG EVALUATE /rtrim('abcxyxy', 'xy').
3880 DEBUG EVALUATE /rtrim(8, '*').
3881 DEBUG EVALUATE /rtrim('x ', 8).
3882 DEBUG EVALUATE /rtrim(8, 9).
3885 for opt in OPT NOOPT; do
3887 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3888 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3889 rtrim('abc ') => "abc"
3891 rtrim(' abc ') => " abc"
3893 rtrim('abc') => "abc"
3895 rtrim('abc ') => "abc "
3901 evaluate.sps:10.17-10.24: error: DEBUG EVALUATE: Function invocation
3902 rtrim(number) does not match any known function. Candidates are:
3904 RTRIM(string, string).
3905 10 | DEBUG EVALUATE /rtrim(8).
3910 rtrim('abc***', '*') => "abc"
3912 rtrim('abc', '*') => "abc"
3914 rtrim('abc*', '*') => "abc"
3916 rtrim('', '*') => ""
3918 rtrim('abc', 'xy') => "abc"
3920 rtrim('abcxy', 'xy') => "abc"
3922 rtrim('abcxyxy', 'xy') => "abc"
3924 evaluate.sps:21.17-21.29: error: DEBUG EVALUATE: Function invocation
3925 rtrim(number, string) does not match any known function. Candidates are:
3927 RTRIM(string, string).
3928 21 | DEBUG EVALUATE /rtrim(8, '*').
3931 rtrim(8, '*') => error
3933 evaluate.sps:22.17-22.30: error: DEBUG EVALUATE: Function invocation
3934 rtrim(string, number) does not match any known function. Candidates are:
3936 RTRIM(string, string).
3937 22 | DEBUG EVALUATE /rtrim('x ', 8).
3940 rtrim('x ', 8) => error
3942 evaluate.sps:23.17-23.27: error: DEBUG EVALUATE: Function invocation
3943 rtrim(number, number) does not match any known function. Candidates are:
3945 RTRIM(string, string).
3946 23 | DEBUG EVALUATE /rtrim(8, 9).
3949 rtrim(8, 9) => error
3954 AT_SETUP([expressions - STRING])
3955 AT_KEYWORDS([expression expressions evaluate])
3956 AT_DATA([evaluate-base.sps], [dnl
3958 DEBUG EVALUATE SET opt.
3959 DEBUG EVALUATE /string(123.56, f5.1).
3960 DEBUG EVALUATE /string($sysmis, f5.1).
3961 DEBUG EVALUATE /string("abc", A5).
3962 dnl E has a minimum width of 6 on output:
3963 DEBUG EVALUATE /string(123, e1).
3964 DEBUG EVALUATE /string(123, e6.0).
3967 for opt in OPT NOOPT; do
3969 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3970 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3971 string(123.56, f5.1) => "123.6"
3973 string($sysmis, f5.1) => " . "
3975 evaluate.sps:5.17-5.33: error: DEBUG EVALUATE: Type mismatch invoking
3976 STRING(number, num_output_format) as string(string, format).
3977 5 | DEBUG EVALUATE /string("abc", A5).
3980 evaluate.sps:5.24-5.28: note: DEBUG EVALUATE: This argument has type 'string'
3981 but 'number' is required.
3982 5 | DEBUG EVALUATE /string("abc", A5).
3985 evaluate.sps:5.31-5.32: note: DEBUG EVALUATE: Numeric variables are not
3986 compatible with string format A5.
3987 5 | DEBUG EVALUATE /string("abc", A5).
3990 string("abc", A5) => error
3992 evaluate.sps:6.17-6.31: error: DEBUG EVALUATE: Type mismatch invoking
3993 STRING(number, num_output_format) as string(number, format).
3994 6 | DEBUG EVALUATE /string(123, e1).
3997 evaluate.sps:6.29-6.30: note: DEBUG EVALUATE: Output format E1.0 specifies
3998 width 1, but E requires a width between 6 and 40.
3999 6 | DEBUG EVALUATE /string(123, e1).
4002 string(123, e1) => error
4004 string(123, e6.0) => "1E+002"
4009 AT_SETUP([expressions - STRUNC])
4010 AT_KEYWORDS([expression expressions evaluate])
4011 AT_DATA([evaluate-base.sps], [dnl
4013 DEBUG EVALUATE SET opt.
4014 DEBUG EVALUATE /strunc('a c ', 9).
4015 DEBUG EVALUATE /strunc('a c ', 7).
4016 DEBUG EVALUATE /strunc('a c ', 6).
4017 DEBUG EVALUATE /strunc('a c ', 5).
4018 DEBUG EVALUATE /strunc('a c ', 4).
4019 DEBUG EVALUATE /strunc('a c ', 3).
4020 DEBUG EVALUATE /strunc('a c ', 2).
4021 DEBUG EVALUATE /strunc('a c ', 1).
4022 DEBUG EVALUATE /strunc('a c ', 0).
4024 DEBUG EVALUATE /strunc('a c ', 0.75).
4025 DEBUG EVALUATE /strunc('a c ', -1).
4026 DEBUG EVALUATE /strunc('a c ', $sysmis).
4028 DEBUG EVALUATE /strunc(' abc ', 9).
4029 DEBUG EVALUATE /strunc(' abc ', 8).
4030 DEBUG EVALUATE /strunc(' abc ', 7).
4031 DEBUG EVALUATE /strunc(' abc ', 6).
4032 DEBUG EVALUATE /strunc(' abc ', 5).
4033 DEBUG EVALUATE /strunc(' abc ', 4).
4034 DEBUG EVALUATE /strunc(' abc ', 3).
4035 DEBUG EVALUATE /strunc(' abc ', 2).
4036 DEBUG EVALUATE /strunc(' abc ', 1).
4038 DEBUG EVALUATE /strunc(' abc ', 1.5).
4039 DEBUG EVALUATE /strunc(' abc ', -1).
4040 DEBUG EVALUATE /strunc(' abc ', $sysmis).
4043 for opt in OPT NOOPT; do
4045 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
4046 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
4047 strunc('a c ', 9) => "a c"
4049 strunc('a c ', 7) => "a c"
4051 strunc('a c ', 6) => "a c"
4053 strunc('a c ', 5) => "a c"
4055 strunc('a c ', 4) => "a c"
4057 strunc('a c ', 3) => "a c"
4059 strunc('a c ', 2) => "a"
4061 strunc('a c ', 1) => "a"
4063 strunc('a c ', 0) => ""
4065 evaluate.sps:13.34-13.37: error: DEBUG EVALUATE: Treating unexpected non-
4066 integer value 0.75 as missing.
4067 13 | DEBUG EVALUATE /strunc('a c ', 0.75).
4070 strunc('a c ', 0.75) => "a c "
4072 strunc('a c ', -1) => ""
4074 strunc('a c ', $sysmis) => "a c "
4076 strunc(' abc ', 9) => " abc"
4078 strunc(' abc ', 8) => " abc"
4080 strunc(' abc ', 7) => " abc"
4082 strunc(' abc ', 6) => " abc"
4084 strunc(' abc ', 5) => " abc"
4086 strunc(' abc ', 4) => " ab"
4088 strunc(' abc ', 3) => " a"
4090 strunc(' abc ', 2) => ""
4092 strunc(' abc ', 1) => ""
4094 evaluate.sps:27.35-27.37: error: DEBUG EVALUATE: Treating unexpected non-
4095 integer value 1.5 as missing.
4096 27 | DEBUG EVALUATE /strunc(' abc ', 1.5).
4099 strunc(' abc ', 1.5) => " abc "
4101 strunc(' abc ', -1) => ""
4103 strunc(' abc ', $sysmis) => " abc "
4108 AT_SETUP([expressions - SUBSTR])
4109 AT_KEYWORDS([expression expressions evaluate])
4110 AT_DATA([evaluate-base.sps], [dnl
4111 DEBUG EVALUATE SET opt.
4112 DEBUG EVALUATE /substr('abcdefgh', 1).
4113 DEBUG EVALUATE /substr('abcdefgh', 3).
4114 DEBUG EVALUATE /substr('abcdefgh', 5).
4115 DEBUG EVALUATE /substr('abcdefgh', 6).
4116 DEBUG EVALUATE /substr('abcdefgh', 7).
4117 DEBUG EVALUATE /substr('abcdefgh', 8).
4118 DEBUG EVALUATE /substr('abcdefgh', 9).
4119 DEBUG EVALUATE /substr('abcdefgh', 10).
4120 DEBUG EVALUATE /substr('abcdefgh', 20).
4121 DEBUG EVALUATE /substr('abcdefgh', $sysmis).
4122 DEBUG EVALUATE /substr('abcdefgh', -5).
4123 DEBUG EVALUATE /substr('abcdefgh', 0).
4124 DEBUG EVALUATE /substr(0, 10).
4125 DEBUG EVALUATE /substr('abcd', 'abc').
4126 DEBUG EVALUATE /substr(0, 'abc').
4128 DEBUG EVALUATE /substr('abcdefgh', 0, 0).
4129 DEBUG EVALUATE /substr('abcdefgh', 3, 0).
4130 DEBUG EVALUATE /substr('abcdefgh', 5, 0).
4131 DEBUG EVALUATE /substr('abcdefgh', 9, 0).
4132 DEBUG EVALUATE /substr('abcdefgh', 0, 1).
4133 DEBUG EVALUATE /substr('abcdefgh', 0, 5).
4134 DEBUG EVALUATE /substr('abcdefgh', 1, 8).
4135 DEBUG EVALUATE /substr('abcdefgh', 1, 10).
4136 DEBUG EVALUATE /substr('abcdefgh', 1, 20).
4137 DEBUG EVALUATE /substr('abcdefgh', 3, 4).
4138 DEBUG EVALUATE /substr('abcdefgh', 5, 2).
4139 DEBUG EVALUATE /substr('abcdefgh', 6, 1).
4140 DEBUG EVALUATE /substr('abcdefgh', 7, 10).
4141 DEBUG EVALUATE /substr('abcdefgh', 8, 1).
4142 DEBUG EVALUATE /substr('abcdefgh', 8, 2).
4143 DEBUG EVALUATE /substr('abcdefgh', 9, 11).
4144 DEBUG EVALUATE /substr('abcdefgh', 10, 52).
4145 DEBUG EVALUATE /substr('abcdefgh', 20, 1).
4146 DEBUG EVALUATE /substr('abcdefgh', $sysmis, 2).
4147 DEBUG EVALUATE /substr('abcdefgh', 9, $sysmis).
4148 DEBUG EVALUATE /substr('abcdefgh', $sysmis, $sysmis).
4149 DEBUG EVALUATE /substr('abc', 1, 'x').
4150 DEBUG EVALUATE /substr(0, 10, 1).
4151 DEBUG EVALUATE /substr(0, 10, 'x').
4152 DEBUG EVALUATE /substr('abcd', 'abc', 0).
4153 DEBUG EVALUATE /substr('abcd', 'abc', 'j').
4154 DEBUG EVALUATE /substr(0, 'abc', 4).
4155 DEBUG EVALUATE /substr(0, 'abc', 'k').
4158 for opt in OPT NOOPT; do
4160 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
4161 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
4162 substr('abcdefgh', 1) => "abcdefgh"
4164 substr('abcdefgh', 3) => "cdefgh"
4166 substr('abcdefgh', 5) => "efgh"
4168 substr('abcdefgh', 6) => "fgh"
4170 substr('abcdefgh', 7) => "gh"
4172 substr('abcdefgh', 8) => "h"
4174 substr('abcdefgh', 9) => ""
4176 substr('abcdefgh', 10) => ""
4178 substr('abcdefgh', 20) => ""
4180 substr('abcdefgh', $sysmis) => ""
4182 substr('abcdefgh', -5) => ""
4184 substr('abcdefgh', 0) => ""
4186 evaluate.sps:14.17-14.29: error: DEBUG EVALUATE: Function invocation
4187 substr(number, number) does not match any known function. Candidates are:
4188 SUBSTR(string, integer)
4189 SUBSTR(string, integer, integer).
4190 14 | DEBUG EVALUATE /substr(0, 10).
4193 substr(0, 10) => error
4195 evaluate.sps:15.17-15.37: error: DEBUG EVALUATE: Function invocation
4196 substr(string, string) does not match any known function. Candidates are:
4197 SUBSTR(string, integer)
4198 SUBSTR(string, integer, integer).
4199 15 | DEBUG EVALUATE /substr('abcd', 'abc').
4200 | ^~~~~~~~~~~~~~~~~~~~~
4202 substr('abcd', 'abc') => error
4204 evaluate.sps:16.17-16.32: error: DEBUG EVALUATE: Function invocation
4205 substr(number, string) does not match any known function. Candidates are:
4206 SUBSTR(string, integer)
4207 SUBSTR(string, integer, integer).
4208 16 | DEBUG EVALUATE /substr(0, 'abc').
4211 substr(0, 'abc') => error
4213 substr('abcdefgh', 0, 0) => ""
4215 substr('abcdefgh', 3, 0) => ""
4217 substr('abcdefgh', 5, 0) => ""
4219 substr('abcdefgh', 9, 0) => ""
4221 substr('abcdefgh', 0, 1) => ""
4223 substr('abcdefgh', 0, 5) => ""
4225 substr('abcdefgh', 1, 8) => "abcdefgh"
4227 substr('abcdefgh', 1, 10) => "abcdefgh"
4229 substr('abcdefgh', 1, 20) => "abcdefgh"
4231 substr('abcdefgh', 3, 4) => "cdef"
4233 substr('abcdefgh', 5, 2) => "ef"
4235 substr('abcdefgh', 6, 1) => "f"
4237 substr('abcdefgh', 7, 10) => "gh"
4239 substr('abcdefgh', 8, 1) => "h"
4241 substr('abcdefgh', 8, 2) => "h"
4243 substr('abcdefgh', 9, 11) => ""
4245 substr('abcdefgh', 10, 52) => ""
4247 substr('abcdefgh', 20, 1) => ""
4249 substr('abcdefgh', $sysmis, 2) => ""
4251 substr('abcdefgh', 9, $sysmis) => ""
4253 substr('abcdefgh', $sysmis, $sysmis) => ""
4255 evaluate.sps:39.17-39.37: error: DEBUG EVALUATE: Function invocation
4256 substr(string, number, string) does not match any known function. Candidates
4258 SUBSTR(string, integer)
4259 SUBSTR(string, integer, integer).
4260 39 | DEBUG EVALUATE /substr('abc', 1, 'x').
4261 | ^~~~~~~~~~~~~~~~~~~~~
4263 substr('abc', 1, 'x') => error
4265 evaluate.sps:40.17-40.32: error: DEBUG EVALUATE: Function invocation
4266 substr(number, number, number) does not match any known function. Candidates
4268 SUBSTR(string, integer)
4269 SUBSTR(string, integer, integer).
4270 40 | DEBUG EVALUATE /substr(0, 10, 1).
4273 substr(0, 10, 1) => error
4275 evaluate.sps:41.17-41.34: error: DEBUG EVALUATE: Function invocation
4276 substr(number, number, string) does not match any known function. Candidates
4278 SUBSTR(string, integer)
4279 SUBSTR(string, integer, integer).
4280 41 | DEBUG EVALUATE /substr(0, 10, 'x').
4281 | ^~~~~~~~~~~~~~~~~~
4283 substr(0, 10, 'x') => error
4285 evaluate.sps:42.17-42.40: error: DEBUG EVALUATE: Function invocation
4286 substr(string, string, number) does not match any known function. Candidates
4288 SUBSTR(string, integer)
4289 SUBSTR(string, integer, integer).
4290 42 | DEBUG EVALUATE /substr('abcd', 'abc', 0).
4291 | ^~~~~~~~~~~~~~~~~~~~~~~~
4293 substr('abcd', 'abc', 0) => error
4295 evaluate.sps:43.17-43.42: error: DEBUG EVALUATE: Function invocation
4296 substr(string, string, string) does not match any known function. Candidates
4298 SUBSTR(string, integer)
4299 SUBSTR(string, integer, integer).
4300 43 | DEBUG EVALUATE /substr('abcd', 'abc', 'j').
4301 | ^~~~~~~~~~~~~~~~~~~~~~~~~~
4303 substr('abcd', 'abc', 'j') => error
4305 evaluate.sps:44.17-44.35: error: DEBUG EVALUATE: Function invocation
4306 substr(number, string, number) does not match any known function. Candidates
4308 SUBSTR(string, integer)
4309 SUBSTR(string, integer, integer).
4310 44 | DEBUG EVALUATE /substr(0, 'abc', 4).
4311 | ^~~~~~~~~~~~~~~~~~~
4313 substr(0, 'abc', 4) => error
4315 evaluate.sps:45.17-45.37: error: DEBUG EVALUATE: Function invocation
4316 substr(number, string, string) does not match any known function. Candidates
4318 SUBSTR(string, integer)
4319 SUBSTR(string, integer, integer).
4320 45 | DEBUG EVALUATE /substr(0, 'abc', 'k').
4321 | ^~~~~~~~~~~~~~~~~~~~~
4323 substr(0, 'abc', 'k') => error
4328 AT_SETUP([expressions - UPCASE])
4329 AT_KEYWORDS([expression expressions evaluate])
4330 AT_DATA([evaluate-base.sps], [dnl
4331 DEBUG EVALUATE SET opt.
4332 DEBUG EVALUATE /upcase('abcdefghijklmnopqrstuvwxyz!@%&*089').
4333 DEBUG EVALUATE /upcase('').
4334 DEBUG EVALUATE /upcase(1).
4337 for opt in OPT NOOPT; do
4339 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
4340 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
4341 upcase('abcdefghijklmnopqrstuvwxyz!@%&*089') => "ABCDEFGHIJKLMNOPQRSTUVWXYZ!
4346 evaluate.sps:4.17-4.25: error: DEBUG EVALUATE: Type mismatch invoking
4347 UPCASE(string) as upcase(number).
4348 4 | DEBUG EVALUATE /upcase(1).
4351 evaluate.sps:4.24: note: DEBUG EVALUATE: This argument has type 'number' but
4352 'string' is required.
4353 4 | DEBUG EVALUATE /upcase(1).
4361 AT_SETUP([expressions - TIME.DAYS])
4362 AT_KEYWORDS([expression expressions evaluate])
4363 AT_DATA([evaluate-base.sps], [dnl
4365 DEBUG EVALUATE SET opt.
4366 DEBUG EVALUATE /time.days(1).
4367 DEBUG EVALUATE /time.days(-1).
4368 DEBUG EVALUATE /time.days(0.5).
4369 DEBUG EVALUATE /time.days('x').
4370 DEBUG EVALUATE /time.days($sysmis).
4373 for opt in OPT NOOPT; do
4375 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
4376 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
4377 time.days(1) => 86400.00
4379 time.days(-1) => -86400.00
4381 time.days(0.5) => 43200.00
4383 evaluate.sps:6.17-6.30: error: DEBUG EVALUATE: Type mismatch invoking TIME.
4384 DAYS(number) as time.days(string).
4385 6 | DEBUG EVALUATE /time.days('x').
4388 evaluate.sps:6.27-6.29: note: DEBUG EVALUATE: This argument has type 'string'
4389 but 'number' is required.
4390 6 | DEBUG EVALUATE /time.days('x').
4393 time.days('x') => error
4395 time.days($sysmis) => sysmis
4400 AT_SETUP([expressions - TIME.HMS])
4401 AT_KEYWORDS([expression expressions evaluate])
4402 AT_DATA([evaluate-base.sps], [dnl
4404 DEBUG EVALUATE SET opt.
4405 DEBUG EVALUATE /time.hms(4,50,38).
4406 DEBUG EVALUATE /time.hms(12,31,35).
4407 DEBUG EVALUATE /time.hms(12,47,53).
4408 DEBUG EVALUATE /time.hms(1,26,0).
4409 DEBUG EVALUATE /time.hms(20,58,11).
4410 DEBUG EVALUATE /time.hms(7,36,5).
4411 DEBUG EVALUATE /time.hms(15,43,49).
4412 DEBUG EVALUATE /time.hms(4,25,9).
4413 DEBUG EVALUATE /time.hms(6,49,27).
4414 DEBUG EVALUATE /time.hms(2,57,52).
4415 DEBUG EVALUATE /time.hms(16,45,44).
4416 DEBUG EVALUATE /time.hms(21,30,57).
4417 DEBUG EVALUATE /time.hms(22,30,4).
4418 DEBUG EVALUATE /time.hms(1,56,51).
4419 DEBUG EVALUATE /time.hms(5, 6, 7).
4420 DEBUG EVALUATE /time.hms(5, 6, 0).
4421 DEBUG EVALUATE /time.hms(5, 0, 7).
4422 DEBUG EVALUATE /time.hms(0, 6, 7).
4423 DEBUG EVALUATE /time.hms(-5, 6, -7).
4424 DEBUG EVALUATE /time.hms(-5, 5, -7).
4425 DEBUG EVALUATE /time.hms($sysmis, 6, 7).
4426 DEBUG EVALUATE /time.hms(5, $sysmis, 7).
4427 DEBUG EVALUATE /time.hms(5, $sysmis, 7).
4428 DEBUG EVALUATE /time.hms($sysmis, $sysmis, 7).
4429 DEBUG EVALUATE /time.hms(5, $sysmis, $sysmis).
4430 DEBUG EVALUATE /time.hms($sysmis, $sysmis, 7).
4431 DEBUG EVALUATE /time.hms($sysmis, $sysmis, $sysmis).
4434 for opt in OPT NOOPT; do
4436 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
4437 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
4438 time.hms(4,50,38) => 17438.00
4440 time.hms(12,31,35) => 45095.00
4442 time.hms(12,47,53) => 46073.00
4444 time.hms(1,26,0) => 5160.00
4446 time.hms(20,58,11) => 75491.00
4448 time.hms(7,36,5) => 27365.00
4450 time.hms(15,43,49) => 56629.00
4452 time.hms(4,25,9) => 15909.00
4454 time.hms(6,49,27) => 24567.00
4456 time.hms(2,57,52) => 10672.00
4458 time.hms(16,45,44) => 60344.00
4460 time.hms(21,30,57) => 77457.00
4462 time.hms(22,30,4) => 81004.00
4464 time.hms(1,56,51) => 7011.00
4466 time.hms(5, 6, 7) => 18367.00
4468 time.hms(5, 6, 0) => 18360.00
4470 time.hms(5, 0, 7) => 18007.00
4472 time.hms(0, 6, 7) => 367.00
4474 evaluate.sps:21.17-21.35: warning: DEBUG EVALUATE: TIME.HMS cannot accept a mix
4475 of positive and negative arguments.
4476 21 | DEBUG EVALUATE /time.hms(-5, 6, -7).
4477 | ^~~~~~~~~~~~~~~~~~~
4479 evaluate.sps:21.26-21.27: note: DEBUG EVALUATE: This argument has negative
4481 21 | DEBUG EVALUATE /time.hms(-5, 6, -7).
4484 evaluate.sps:21.30: note: DEBUG EVALUATE: This argument has positive value 6.
4485 21 | DEBUG EVALUATE /time.hms(-5, 6, -7).
4488 evaluate.sps:21.33-21.34: note: DEBUG EVALUATE: This argument has negative
4490 21 | DEBUG EVALUATE /time.hms(-5, 6, -7).
4493 time.hms(-5, 6, -7) => sysmis
4495 evaluate.sps:22.17-22.35: warning: DEBUG EVALUATE: TIME.HMS cannot accept a mix
4496 of positive and negative arguments.
4497 22 | DEBUG EVALUATE /time.hms(-5, 5, -7).
4498 | ^~~~~~~~~~~~~~~~~~~
4500 evaluate.sps:22.26-22.27: note: DEBUG EVALUATE: This argument has negative
4502 22 | DEBUG EVALUATE /time.hms(-5, 5, -7).
4505 evaluate.sps:22.30: note: DEBUG EVALUATE: This argument has positive value 5.
4506 22 | DEBUG EVALUATE /time.hms(-5, 5, -7).
4509 evaluate.sps:22.33-22.34: note: DEBUG EVALUATE: This argument has negative
4511 22 | DEBUG EVALUATE /time.hms(-5, 5, -7).
4514 time.hms(-5, 5, -7) => sysmis
4516 time.hms($sysmis, 6, 7) => sysmis
4518 time.hms(5, $sysmis, 7) => sysmis
4520 time.hms(5, $sysmis, 7) => sysmis
4522 time.hms($sysmis, $sysmis, 7) => sysmis
4524 time.hms(5, $sysmis, $sysmis) => sysmis
4526 time.hms($sysmis, $sysmis, 7) => sysmis
4528 time.hms($sysmis, $sysmis, $sysmis) => sysmis
4533 AT_SETUP([expressions - CTIME.*])
4534 AT_KEYWORDS([expression expressions evaluate ctime])
4535 AT_DATA([evaluate-base.sps], [dnl
4537 DEBUG EVALUATE SET opt.
4538 DEBUG EVALUATE /ctime.days(106272).
4539 DEBUG EVALUATE /ctime.hours(106272).
4540 DEBUG EVALUATE /ctime.minutes(106272).
4541 DEBUG EVALUATE /ctime.seconds(106272).
4542 DEBUG EVALUATE /ctime.days(-106272).
4543 DEBUG EVALUATE /ctime.hours(-106272).
4544 DEBUG EVALUATE /ctime.minutes(-106272).
4545 DEBUG EVALUATE /ctime.seconds(-106272).
4546 DEBUG EVALUATE /ctime.days($sysmis).
4547 DEBUG EVALUATE /ctime.hours($sysmis).
4548 DEBUG EVALUATE /ctime.minutes($sysmis).
4549 DEBUG EVALUATE /ctime.seconds($sysmis).
4550 DEBUG EVALUATE /ctime.days('a').
4551 DEBUG EVALUATE /ctime.hours('b').
4552 DEBUG EVALUATE /ctime.minutes('c').
4553 DEBUG EVALUATE /ctime.seconds('d').
4555 DEBUG EVALUATE /ctime.days(date.dmy(15,10,1582)).
4556 DEBUG EVALUATE /ctime.days(date.dmy(6,9,1719)).
4557 DEBUG EVALUATE /ctime.days(date.dmy(24,1,1583)).
4558 DEBUG EVALUATE /ctime.days(date.dmy(14,12,1585)).
4559 DEBUG EVALUATE /ctime.days(date.dmy(26,11,1621)).
4560 DEBUG EVALUATE /ctime.days(date.dmy(25,12,1821)).
4561 DEBUG EVALUATE /ctime.days(date.dmy(3,12,1882)).
4562 DEBUG EVALUATE /ctime.days(date.dmy(6,4,2002)).
4563 DEBUG EVALUATE /ctime.days(date.dmy(19,12,1999)).
4564 DEBUG EVALUATE /ctime.days(date.dmy(1,10,1978)).
4565 DEBUG EVALUATE /ctime.days(date.dmy(0,10,1978)).
4566 DEBUG EVALUATE /ctime.days(date.dmy(32,10,1978)).
4567 DEBUG EVALUATE /ctime.days(date.dmy(31,0,1978)).
4568 DEBUG EVALUATE /ctime.days(date.dmy(31,13,1978)).
4569 DEBUG EVALUATE /ctime.days(date.dmy($sysmis,10,1978)).
4570 DEBUG EVALUATE /ctime.days(date.dmy(31,$sysmis,1978)).
4571 DEBUG EVALUATE /ctime.days(date.dmy(31,10,$sysmis)).
4572 DEBUG EVALUATE /ctime.days(date.dmy($sysmis,$sysmis,1978)).
4573 DEBUG EVALUATE /ctime.days(date.dmy(31,$sysmis,$sysmis)).
4574 DEBUG EVALUATE /ctime.days(date.dmy($sysmis,10,$sysmis)).
4575 DEBUG EVALUATE /ctime.days(date.dmy($sysmis,$sysmis,$sysmis)).
4578 for opt in OPT NOOPT; do
4580 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
4581 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
4582 ctime.days(106272) => 1.23
4584 ctime.hours(106272) => 29.52
4586 ctime.minutes(106272) => 1771.20
4588 ctime.seconds(106272) => 106272.00
4590 ctime.days(-106272) => -1.23
4592 ctime.hours(-106272) => -29.52
4594 ctime.minutes(-106272) => -1771.20
4596 ctime.seconds(-106272) => -106272.00
4598 ctime.days($sysmis) => sysmis
4600 ctime.hours($sysmis) => sysmis
4602 ctime.minutes($sysmis) => sysmis
4604 ctime.seconds($sysmis) => sysmis
4606 evaluate.sps:15.17-15.31: error: DEBUG EVALUATE: Type mismatch invoking CTIME.
4607 DAYS(number) as ctime.days(string).
4608 15 | DEBUG EVALUATE /ctime.days('a').
4611 evaluate.sps:15.28-15.30: note: DEBUG EVALUATE: This argument has type 'string'
4612 but 'number' is required.
4613 15 | DEBUG EVALUATE /ctime.days('a').
4616 ctime.days('a') => error
4618 evaluate.sps:16.17-16.32: error: DEBUG EVALUATE: Type mismatch invoking CTIME.
4619 HOURS(number) as ctime.hours(string).
4620 16 | DEBUG EVALUATE /ctime.hours('b').
4623 evaluate.sps:16.29-16.31: note: DEBUG EVALUATE: This argument has type 'string'
4624 but 'number' is required.
4625 16 | DEBUG EVALUATE /ctime.hours('b').
4628 ctime.hours('b') => error
4630 evaluate.sps:17.17-17.34: error: DEBUG EVALUATE: Type mismatch invoking CTIME.
4631 MINUTES(number) as ctime.minutes(string).
4632 17 | DEBUG EVALUATE /ctime.minutes('c').
4633 | ^~~~~~~~~~~~~~~~~~
4635 evaluate.sps:17.31-17.33: note: DEBUG EVALUATE: This argument has type 'string'
4636 but 'number' is required.
4637 17 | DEBUG EVALUATE /ctime.minutes('c').
4640 ctime.minutes('c') => error
4642 evaluate.sps:18.17-18.34: error: DEBUG EVALUATE: Type mismatch invoking CTIME.
4643 SECONDS(number) as ctime.seconds(string).
4644 18 | DEBUG EVALUATE /ctime.seconds('d').
4645 | ^~~~~~~~~~~~~~~~~~
4647 evaluate.sps:18.31-18.33: note: DEBUG EVALUATE: This argument has type 'string'
4648 but 'number' is required.
4649 18 | DEBUG EVALUATE /ctime.seconds('d').
4652 ctime.seconds('d') => error
4654 ctime.days(date.dmy(15,10,1582)) => 1.00
4656 ctime.days(date.dmy(6,9,1719)) => 50000.00
4658 ctime.days(date.dmy(24,1,1583)) => 102.00
4660 ctime.days(date.dmy(14,12,1585)) => 1157.00
4662 ctime.days(date.dmy(26,11,1621)) => 14288.00
4664 ctime.days(date.dmy(25,12,1821)) => 87365.00
4666 ctime.days(date.dmy(3,12,1882)) => 109623.00
4668 ctime.days(date.dmy(6,4,2002)) => 153211.00
4670 ctime.days(date.dmy(19,12,1999)) => 152372.00
4672 ctime.days(date.dmy(1,10,1978)) => 144623.00
4674 ctime.days(date.dmy(0,10,1978)) => 144622.00
4676 evaluate.sps:31.28-31.47: error: DEBUG EVALUATE: Invalid arguments to DATE.DMY
4678 31 | DEBUG EVALUATE /ctime.days(date.dmy(32,10,1978)).
4679 | ^~~~~~~~~~~~~~~~~~~~
4681 evaluate.sps:31.37-31.38: note: DEBUG EVALUATE: Day 32 is not in the acceptable
4683 31 | DEBUG EVALUATE /ctime.days(date.dmy(32,10,1978)).
4686 ctime.days(date.dmy(32,10,1978)) => sysmis
4688 ctime.days(date.dmy(31,0,1978)) => 144349.00
4690 ctime.days(date.dmy(31,13,1978)) => 144745.00
4692 ctime.days(date.dmy($sysmis,10,1978)) => sysmis
4694 ctime.days(date.dmy(31,$sysmis,1978)) => sysmis
4696 ctime.days(date.dmy(31,10,$sysmis)) => sysmis
4698 ctime.days(date.dmy($sysmis,$sysmis,1978)) => sysmis
4700 ctime.days(date.dmy(31,$sysmis,$sysmis)) => sysmis
4702 ctime.days(date.dmy($sysmis,10,$sysmis)) => sysmis
4704 ctime.days(date.dmy($sysmis,$sysmis,$sysmis)) => sysmis
4709 AT_SETUP([expressions - DATE.DMY])
4710 AT_KEYWORDS([expression expressions evaluate])
4711 AT_DATA([evaluate-base.sps], [dnl
4713 DEBUG EVALUATE SET opt.
4714 DEBUG EVALUATE /date.dmy('a',1,2).
4715 DEBUG EVALUATE /date.dmy(1,'a',2).
4716 DEBUG EVALUATE /date.dmy(1,2,'a').
4719 for opt in OPT NOOPT; do
4721 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
4722 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
4723 evaluate.sps:3.17-3.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
4724 DMY(integer, integer, integer) as date.dmy(string, number, number).
4725 3 | DEBUG EVALUATE /date.dmy('a',1,2).
4728 evaluate.sps:3.26-3.28: note: DEBUG EVALUATE: This argument has type 'string'
4729 but 'integer' is required.
4730 3 | DEBUG EVALUATE /date.dmy('a',1,2).
4733 date.dmy('a',1,2) => error
4735 evaluate.sps:4.17-4.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
4736 DMY(integer, integer, integer) as date.dmy(number, string, number).
4737 4 | DEBUG EVALUATE /date.dmy(1,'a',2).
4740 evaluate.sps:4.28-4.30: note: DEBUG EVALUATE: This argument has type 'string'
4741 but 'integer' is required.
4742 4 | DEBUG EVALUATE /date.dmy(1,'a',2).
4745 date.dmy(1,'a',2) => error
4747 evaluate.sps:5.17-5.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
4748 DMY(integer, integer, integer) as date.dmy(number, number, string).
4749 5 | DEBUG EVALUATE /date.dmy(1,2,'a').
4752 evaluate.sps:5.30-5.32: note: DEBUG EVALUATE: This argument has type 'string'
4753 but 'integer' is required.
4754 5 | DEBUG EVALUATE /date.dmy(1,2,'a').
4757 date.dmy(1,2,'a') => error
4762 AT_SETUP([expressions - YRMODA])
4763 AT_KEYWORDS([expression expressions evaluate])
4764 AT_DATA([evaluate-base.sps], [dnl
4766 DEBUG EVALUATE SET opt.
4767 dnl FIXME: check out-of-range and nearly out-of-range values
4768 DEBUG EVALUATE /yrmoda(1582,10,15).
4769 DEBUG EVALUATE /yrmoda(1719,9,6).
4770 DEBUG EVALUATE /yrmoda(1583,1,24).
4771 DEBUG EVALUATE /yrmoda(1585,12,14).
4772 DEBUG EVALUATE /yrmoda(1621,11,26).
4773 DEBUG EVALUATE /yrmoda(1821,12,25).
4774 DEBUG EVALUATE /yrmoda(1882,12,3).
4775 DEBUG EVALUATE /yrmoda(2002,4,6).
4776 DEBUG EVALUATE /yrmoda(1999,12,19).
4777 DEBUG EVALUATE /yrmoda(1978,10,1).
4778 DEBUG EVALUATE /yrmoda(1978,10,0).
4779 DEBUG EVALUATE /yrmoda(1978,10,32).
4780 DEBUG EVALUATE /yrmoda(1978,0,31).
4781 DEBUG EVALUATE /yrmoda(1978,13,31).
4782 DEBUG EVALUATE /yrmoda(1978,10,$sysmis).
4783 DEBUG EVALUATE /yrmoda(1978,$sysmis,31).
4784 DEBUG EVALUATE /yrmoda($sysmis,10,31).
4785 DEBUG EVALUATE /yrmoda(1978,$sysmis,$sysmis).
4786 DEBUG EVALUATE /yrmoda($sysmis,$sysmis,31).
4787 DEBUG EVALUATE /yrmoda($sysmis,10,$sysmis).
4788 DEBUG EVALUATE /yrmoda($sysmis,$sysmis,$sysmis).
4789 DEBUG EVALUATE /yrmoda('a',1,2).
4790 DEBUG EVALUATE /yrmoda(1,'a',2).
4791 DEBUG EVALUATE /yrmoda(1,2,'a').
4794 for opt in OPT NOOPT; do
4796 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
4797 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
4798 yrmoda(1582,10,15) => 1.00
4800 yrmoda(1719,9,6) => 50000.00
4802 yrmoda(1583,1,24) => 102.00
4804 yrmoda(1585,12,14) => 1157.00
4806 yrmoda(1621,11,26) => 14288.00
4808 yrmoda(1821,12,25) => 87365.00
4810 yrmoda(1882,12,3) => 109623.00
4812 yrmoda(2002,4,6) => 153211.00
4814 yrmoda(1999,12,19) => 152372.00
4816 yrmoda(1978,10,1) => 144623.00
4818 yrmoda(1978,10,0) => 144622.00
4820 evaluate.sps:14.17-14.34: error: DEBUG EVALUATE: Invalid arguments to YRMODA
4822 14 | DEBUG EVALUATE /yrmoda(1978,10,32).
4823 | ^~~~~~~~~~~~~~~~~~
4825 evaluate.sps:14.32-14.33: note: DEBUG EVALUATE: Day 32 is not in the acceptable
4827 14 | DEBUG EVALUATE /yrmoda(1978,10,32).
4830 yrmoda(1978,10,32) => sysmis
4832 yrmoda(1978,0,31) => 144349.00
4834 yrmoda(1978,13,31) => 144745.00
4836 yrmoda(1978,10,$sysmis) => sysmis
4838 yrmoda(1978,$sysmis,31) => sysmis
4840 yrmoda($sysmis,10,31) => sysmis
4842 yrmoda(1978,$sysmis,$sysmis) => sysmis
4844 yrmoda($sysmis,$sysmis,31) => sysmis
4846 yrmoda($sysmis,10,$sysmis) => sysmis
4848 yrmoda($sysmis,$sysmis,$sysmis) => sysmis
4850 evaluate.sps:24.17-24.31: error: DEBUG EVALUATE: Type mismatch invoking
4851 YRMODA(integer, integer, integer) as yrmoda(string, number, number).
4852 24 | DEBUG EVALUATE /yrmoda('a',1,2).
4855 evaluate.sps:24.24-24.26: note: DEBUG EVALUATE: This argument has type 'string'
4856 but 'integer' is required.
4857 24 | DEBUG EVALUATE /yrmoda('a',1,2).
4860 yrmoda('a',1,2) => error
4862 evaluate.sps:25.17-25.31: error: DEBUG EVALUATE: Type mismatch invoking
4863 YRMODA(integer, integer, integer) as yrmoda(number, string, number).
4864 25 | DEBUG EVALUATE /yrmoda(1,'a',2).
4867 evaluate.sps:25.26-25.28: note: DEBUG EVALUATE: This argument has type 'string'
4868 but 'integer' is required.
4869 25 | DEBUG EVALUATE /yrmoda(1,'a',2).
4872 yrmoda(1,'a',2) => error
4874 evaluate.sps:26.17-26.31: error: DEBUG EVALUATE: Type mismatch invoking
4875 YRMODA(integer, integer, integer) as yrmoda(number, number, string).
4876 26 | DEBUG EVALUATE /yrmoda(1,2,'a').
4879 evaluate.sps:26.28-26.30: note: DEBUG EVALUATE: This argument has type 'string'
4880 but 'integer' is required.
4881 26 | DEBUG EVALUATE /yrmoda(1,2,'a').
4884 yrmoda(1,2,'a') => error
4889 AT_SETUP([expressions - DATE.MDY])
4890 AT_KEYWORDS([expression expressions evaluate])
4891 AT_DATA([evaluate-base.sps], [dnl
4893 DEBUG EVALUATE SET opt.
4895 dnl FIXME: check out-of-range and nearly out-of-range values
4896 DEBUG EVALUATE /ctime.days(date.mdy(6,10,1648)) + 577735.
4897 DEBUG EVALUATE /ctime.days(date.mdy(6,30,1680)) + 577735.
4898 DEBUG EVALUATE /ctime.days(date.mdy(7,24,1716)) + 577735.
4899 DEBUG EVALUATE /ctime.days(date.mdy(6,19,1768)) + 577735.
4900 DEBUG EVALUATE /ctime.days(date.mdy(8,2,1819)) + 577735.
4901 DEBUG EVALUATE /ctime.days(date.mdy(3,27,1839)) + 577735.
4902 DEBUG EVALUATE /ctime.days(date.mdy(4,19,1903)) + 577735.
4903 DEBUG EVALUATE /ctime.days(date.mdy(8,25,1929)) + 577735.
4904 DEBUG EVALUATE /ctime.days(date.mdy(9,29,1941)) + 577735.
4905 DEBUG EVALUATE /ctime.days(date.mdy(4,19,1943)) + 577735.
4906 DEBUG EVALUATE /ctime.days(date.mdy(10,7,1943)) + 577735.
4907 DEBUG EVALUATE /ctime.days(date.mdy(3,17,1992)) + 577735.
4908 DEBUG EVALUATE /ctime.days(date.mdy(2,25,1996)) + 577735.
4909 DEBUG EVALUATE /ctime.days(date.mdy(11,10,2038)) + 577735.
4910 DEBUG EVALUATE /ctime.days(date.mdy(7,18,2094)) + 577735.
4912 dnl FIXME: check out-of-range and nearly out-of-range values
4913 DEBUG EVALUATE /ctime.days(date.mdy(10,15,1582)).
4914 DEBUG EVALUATE /ctime.days(date.mdy(9,6,1719)).
4915 DEBUG EVALUATE /ctime.days(date.mdy(1,24,1583)).
4916 DEBUG EVALUATE /ctime.days(date.mdy(12,14,1585)).
4917 DEBUG EVALUATE /ctime.days(date.mdy(11,26,1621)).
4918 DEBUG EVALUATE /ctime.days(date.mdy(12,25,1821)).
4919 DEBUG EVALUATE /ctime.days(date.mdy(12,3,1882)).
4920 DEBUG EVALUATE /ctime.days(date.mdy(4,6,2002)).
4921 DEBUG EVALUATE /ctime.days(date.mdy(12,19,1999)).
4922 DEBUG EVALUATE /ctime.days(date.mdy(10,1,1978)).
4923 DEBUG EVALUATE /ctime.days(date.mdy(10,0,1978)).
4924 DEBUG EVALUATE /ctime.days(date.mdy(10,32,1978)).
4925 DEBUG EVALUATE /ctime.days(date.mdy(0,31,1978)).
4926 DEBUG EVALUATE /ctime.days(date.mdy(13,31,1978)).
4927 DEBUG EVALUATE /ctime.days(date.mdy(10,$sysmis,1978)).
4928 DEBUG EVALUATE /ctime.days(date.mdy($sysmis,31,1978)).
4929 DEBUG EVALUATE /ctime.days(date.mdy(10,31,$sysmis)).
4930 DEBUG EVALUATE /ctime.days(date.mdy($sysmis,$sysmis,1978)).
4931 DEBUG EVALUATE /ctime.days(date.mdy($sysmis,31,$sysmis)).
4932 DEBUG EVALUATE /ctime.days(date.mdy(10,$sysmis,$sysmis)).
4933 DEBUG EVALUATE /ctime.days(date.mdy($sysmis,$sysmis,$sysmis)).
4934 DEBUG EVALUATE /date.mdy('a',1,2).
4935 DEBUG EVALUATE /date.mdy(1,'a',2).
4936 DEBUG EVALUATE /date.mdy(1,2,'a').
4937 DEBUG EVALUATE /ctime.days(date.mdy(0,0,0)).
4938 DEBUG EVALUATE /ctime.days(date.mdy(0,0,999)).
4939 DEBUG EVALUATE /date.mdy(1,1,1582).
4940 DEBUG EVALUATE /date.mdy(10,14,1582).
4941 DEBUG EVALUATE /date.mdy(10,15,1582).
4944 for opt in OPT NOOPT; do
4946 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
4947 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
4948 ctime.days(date.mdy(6,10,1648)) + 577735 => 601716.00
4950 ctime.days(date.mdy(6,30,1680)) + 577735 => 613424.00
4952 ctime.days(date.mdy(7,24,1716)) + 577735 => 626596.00
4954 ctime.days(date.mdy(6,19,1768)) + 577735 => 645554.00
4956 ctime.days(date.mdy(8,2,1819)) + 577735 => 664224.00
4958 ctime.days(date.mdy(3,27,1839)) + 577735 => 671401.00
4960 ctime.days(date.mdy(4,19,1903)) + 577735 => 694799.00
4962 ctime.days(date.mdy(8,25,1929)) + 577735 => 704424.00
4964 ctime.days(date.mdy(9,29,1941)) + 577735 => 708842.00
4966 ctime.days(date.mdy(4,19,1943)) + 577735 => 709409.00
4968 ctime.days(date.mdy(10,7,1943)) + 577735 => 709580.00
4970 ctime.days(date.mdy(3,17,1992)) + 577735 => 727274.00
4972 ctime.days(date.mdy(2,25,1996)) + 577735 => 728714.00
4974 ctime.days(date.mdy(11,10,2038)) + 577735 => 744313.00
4976 ctime.days(date.mdy(7,18,2094)) + 577735 => 764652.00
4978 ctime.days(date.mdy(10,15,1582)) => 1.00
4980 ctime.days(date.mdy(9,6,1719)) => 50000.00
4982 ctime.days(date.mdy(1,24,1583)) => 102.00
4984 ctime.days(date.mdy(12,14,1585)) => 1157.00
4986 ctime.days(date.mdy(11,26,1621)) => 14288.00
4988 ctime.days(date.mdy(12,25,1821)) => 87365.00
4990 ctime.days(date.mdy(12,3,1882)) => 109623.00
4992 ctime.days(date.mdy(4,6,2002)) => 153211.00
4994 ctime.days(date.mdy(12,19,1999)) => 152372.00
4996 ctime.days(date.mdy(10,1,1978)) => 144623.00
4998 ctime.days(date.mdy(10,0,1978)) => 144622.00
5000 evaluate.sps:31.28-31.47: error: DEBUG EVALUATE: Invalid arguments to DATE.MDY
5002 31 | DEBUG EVALUATE /ctime.days(date.mdy(10,32,1978)).
5003 | ^~~~~~~~~~~~~~~~~~~~
5005 evaluate.sps:31.40-31.41: note: DEBUG EVALUATE: Day 32 is not in the acceptable
5007 31 | DEBUG EVALUATE /ctime.days(date.mdy(10,32,1978)).
5010 ctime.days(date.mdy(10,32,1978)) => sysmis
5012 ctime.days(date.mdy(0,31,1978)) => 144349.00
5014 ctime.days(date.mdy(13,31,1978)) => 144745.00
5016 ctime.days(date.mdy(10,$sysmis,1978)) => sysmis
5018 ctime.days(date.mdy($sysmis,31,1978)) => sysmis
5020 ctime.days(date.mdy(10,31,$sysmis)) => sysmis
5022 ctime.days(date.mdy($sysmis,$sysmis,1978)) => sysmis
5024 ctime.days(date.mdy($sysmis,31,$sysmis)) => sysmis
5026 ctime.days(date.mdy(10,$sysmis,$sysmis)) => sysmis
5028 ctime.days(date.mdy($sysmis,$sysmis,$sysmis)) => sysmis
5030 evaluate.sps:41.17-41.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5031 MDY(integer, integer, integer) as date.mdy(string, number, number).
5032 41 | DEBUG EVALUATE /date.mdy('a',1,2).
5035 evaluate.sps:41.26-41.28: note: DEBUG EVALUATE: This argument has type 'string'
5036 but 'integer' is required.
5037 41 | DEBUG EVALUATE /date.mdy('a',1,2).
5040 date.mdy('a',1,2) => error
5042 evaluate.sps:42.17-42.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5043 MDY(integer, integer, integer) as date.mdy(number, string, number).
5044 42 | DEBUG EVALUATE /date.mdy(1,'a',2).
5047 evaluate.sps:42.28-42.30: note: DEBUG EVALUATE: This argument has type 'string'
5048 but 'integer' is required.
5049 42 | DEBUG EVALUATE /date.mdy(1,'a',2).
5052 date.mdy(1,'a',2) => error
5054 evaluate.sps:43.17-43.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5055 MDY(integer, integer, integer) as date.mdy(number, number, string).
5056 43 | DEBUG EVALUATE /date.mdy(1,2,'a').
5059 evaluate.sps:43.30-43.32: note: DEBUG EVALUATE: This argument has type 'string'
5060 but 'integer' is required.
5061 43 | DEBUG EVALUATE /date.mdy(1,2,'a').
5064 date.mdy(1,2,'a') => error
5066 ctime.days(date.mdy(0,0,0)) => 152353.00
5068 evaluate.sps:45.28-45.44: error: DEBUG EVALUATE: Invalid arguments to DATE.MDY
5070 45 | DEBUG EVALUATE /ctime.days(date.mdy(0,0,999)).
5073 evaluate.sps:45.41-45.43: note: DEBUG EVALUATE: Date 0998-12-0 is before the
5074 earliest supported date 1582-10-15.
5075 45 | DEBUG EVALUATE /ctime.days(date.mdy(0,0,999)).
5078 ctime.days(date.mdy(0,0,999)) => sysmis
5080 evaluate.sps:46.17-46.34: error: DEBUG EVALUATE: Invalid arguments to DATE.MDY
5082 46 | DEBUG EVALUATE /date.mdy(1,1,1582).
5083 | ^~~~~~~~~~~~~~~~~~
5085 evaluate.sps:46.17-46.34: note: DEBUG EVALUATE: Date 1582-1-1 is before the
5086 earliest supported date 1582-10-15.
5087 46 | DEBUG EVALUATE /date.mdy(1,1,1582).
5088 | ^~~~~~~~~~~~~~~~~~
5090 date.mdy(1,1,1582) => sysmis
5092 evaluate.sps:47.17-47.36: error: DEBUG EVALUATE: Invalid arguments to DATE.MDY
5094 47 | DEBUG EVALUATE /date.mdy(10,14,1582).
5095 | ^~~~~~~~~~~~~~~~~~~~
5097 evaluate.sps:47.17-47.36: note: DEBUG EVALUATE: Date 1582-10-14 is before the
5098 earliest supported date 1582-10-15.
5099 47 | DEBUG EVALUATE /date.mdy(10,14,1582).
5100 | ^~~~~~~~~~~~~~~~~~~~
5102 date.mdy(10,14,1582) => sysmis
5104 date.mdy(10,15,1582) => 86400.00
5109 AT_SETUP([expressions - DATE.MOYR])
5110 AT_KEYWORDS([expression expressions evaluate])
5111 AT_DATA([evaluate-base.sps], [dnl
5113 DEBUG EVALUATE SET opt.
5114 DEBUG EVALUATE /ctime.days(date.moyr(1,2000)).
5115 DEBUG EVALUATE /ctime.days(date.moyr(2,2000)).
5116 DEBUG EVALUATE /ctime.days(date.moyr(3,2000)).
5117 DEBUG EVALUATE /ctime.days(date.moyr(4,2000)).
5118 DEBUG EVALUATE /ctime.days(date.moyr(5,2000)).
5119 DEBUG EVALUATE /ctime.days(date.moyr(13,2000)).
5120 DEBUG EVALUATE /ctime.days(date.moyr(14,2000)).
5121 DEBUG EVALUATE /ctime.days(date.moyr($sysmis,2000)).
5122 DEBUG EVALUATE /ctime.days(date.moyr(1,$sysmis)).
5123 DEBUG EVALUATE /ctime.days(date.moyr($sysmis,$sysmis)).
5124 DEBUG EVALUATE /date.moyr('a',2000).
5125 DEBUG EVALUATE /date.moyr(5,'a').
5126 DEBUG EVALUATE /date.moyr('a','b').
5129 for opt in OPT NOOPT; do
5131 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5132 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
5133 ctime.days(date.moyr(1,2000)) => 152385.00
5135 ctime.days(date.moyr(2,2000)) => 152416.00
5137 ctime.days(date.moyr(3,2000)) => 152445.00
5139 ctime.days(date.moyr(4,2000)) => 152476.00
5141 ctime.days(date.moyr(5,2000)) => 152506.00
5143 ctime.days(date.moyr(13,2000)) => 152751.00
5145 evaluate.sps:9.28-9.45: error: DEBUG EVALUATE: Invalid arguments to DATE.MOYR
5147 9 | DEBUG EVALUATE /ctime.days(date.moyr(14,2000)).
5148 | ^~~~~~~~~~~~~~~~~~
5150 evaluate.sps:9.38-9.39: note: DEBUG EVALUATE: Month 14 is not in the acceptable
5152 9 | DEBUG EVALUATE /ctime.days(date.moyr(14,2000)).
5155 ctime.days(date.moyr(14,2000)) => sysmis
5157 ctime.days(date.moyr($sysmis,2000)) => sysmis
5159 ctime.days(date.moyr(1,$sysmis)) => sysmis
5161 ctime.days(date.moyr($sysmis,$sysmis)) => sysmis
5163 evaluate.sps:13.17-13.35: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5164 MOYR(integer, integer) as date.moyr(string, number).
5165 13 | DEBUG EVALUATE /date.moyr('a',2000).
5166 | ^~~~~~~~~~~~~~~~~~~
5168 evaluate.sps:13.27-13.29: note: DEBUG EVALUATE: This argument has type 'string'
5169 but 'integer' is required.
5170 13 | DEBUG EVALUATE /date.moyr('a',2000).
5173 date.moyr('a',2000) => error
5175 evaluate.sps:14.17-14.32: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5176 MOYR(integer, integer) as date.moyr(number, string).
5177 14 | DEBUG EVALUATE /date.moyr(5,'a').
5180 evaluate.sps:14.29-14.31: note: DEBUG EVALUATE: This argument has type 'string'
5181 but 'integer' is required.
5182 14 | DEBUG EVALUATE /date.moyr(5,'a').
5185 date.moyr(5,'a') => error
5187 evaluate.sps:15.17-15.34: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5188 MOYR(integer, integer) as date.moyr(string, string).
5189 15 | DEBUG EVALUATE /date.moyr('a','b').
5190 | ^~~~~~~~~~~~~~~~~~
5192 evaluate.sps:15.27-15.29: note: DEBUG EVALUATE: This argument has type 'string'
5193 but 'integer' is required.
5194 15 | DEBUG EVALUATE /date.moyr('a','b').
5197 evaluate.sps:15.31-15.33: note: DEBUG EVALUATE: This argument has type 'string'
5198 but 'integer' is required.
5199 15 | DEBUG EVALUATE /date.moyr('a','b').
5202 date.moyr('a','b') => error
5207 AT_SETUP([expressions - DATE.QYR])
5208 AT_KEYWORDS([expression expressions evaluate])
5209 AT_DATA([evaluate-base.sps], [dnl
5211 DEBUG EVALUATE SET opt.
5212 DEBUG EVALUATE /ctime.days(date.qyr(1,2000)).
5213 DEBUG EVALUATE /ctime.days(date.qyr(2,2000)).
5214 DEBUG EVALUATE /ctime.days(date.qyr(5,2000)).
5215 DEBUG EVALUATE /ctime.days(date.qyr(6,2000)).
5216 DEBUG EVALUATE /ctime.days(date.qyr($sysmis,2000)).
5217 DEBUG EVALUATE /ctime.days(date.qyr(1,$sysmis)).
5218 DEBUG EVALUATE /ctime.days(date.qyr($sysmis,$sysmis)).
5219 DEBUG EVALUATE /date.qyr('a',2000).
5220 DEBUG EVALUATE /date.qyr(5,'a').
5221 DEBUG EVALUATE /date.qyr('a','b').
5224 for opt in OPT NOOPT; do
5226 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5227 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
5228 ctime.days(date.qyr(1,2000)) => 152385.00
5230 ctime.days(date.qyr(2,2000)) => 152476.00
5232 evaluate.sps:5.37: warning: DEBUG EVALUATE: Argument 1 to DATE.QYR must be 1,
5234 5 | DEBUG EVALUATE /ctime.days(date.qyr(5,2000)).
5237 ctime.days(date.qyr(5,2000)) => sysmis
5239 evaluate.sps:6.37: warning: DEBUG EVALUATE: Argument 1 to DATE.QYR must be 1,
5241 6 | DEBUG EVALUATE /ctime.days(date.qyr(6,2000)).
5244 ctime.days(date.qyr(6,2000)) => sysmis
5246 ctime.days(date.qyr($sysmis,2000)) => sysmis
5248 ctime.days(date.qyr(1,$sysmis)) => sysmis
5250 ctime.days(date.qyr($sysmis,$sysmis)) => sysmis
5252 evaluate.sps:10.17-10.34: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5253 QYR(integer, integer) as date.qyr(string, number).
5254 10 | DEBUG EVALUATE /date.qyr('a',2000).
5255 | ^~~~~~~~~~~~~~~~~~
5257 evaluate.sps:10.26-10.28: note: DEBUG EVALUATE: This argument has type 'string'
5258 but 'integer' is required.
5259 10 | DEBUG EVALUATE /date.qyr('a',2000).
5262 date.qyr('a',2000) => error
5264 evaluate.sps:11.17-11.31: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5265 QYR(integer, integer) as date.qyr(number, string).
5266 11 | DEBUG EVALUATE /date.qyr(5,'a').
5269 evaluate.sps:11.28-11.30: note: DEBUG EVALUATE: This argument has type 'string'
5270 but 'integer' is required.
5271 11 | DEBUG EVALUATE /date.qyr(5,'a').
5274 date.qyr(5,'a') => error
5276 evaluate.sps:12.17-12.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5277 QYR(integer, integer) as date.qyr(string, string).
5278 12 | DEBUG EVALUATE /date.qyr('a','b').
5281 evaluate.sps:12.26-12.28: note: DEBUG EVALUATE: This argument has type 'string'
5282 but 'integer' is required.
5283 12 | DEBUG EVALUATE /date.qyr('a','b').
5286 evaluate.sps:12.30-12.32: note: DEBUG EVALUATE: This argument has type 'string'
5287 but 'integer' is required.
5288 12 | DEBUG EVALUATE /date.qyr('a','b').
5291 date.qyr('a','b') => error
5296 AT_SETUP([expressions - DATE.WKYR])
5297 AT_KEYWORDS([expression expressions evaluate])
5298 AT_DATA([evaluate-base.sps], [dnl
5300 DEBUG EVALUATE SET opt.
5301 DEBUG EVALUATE /ctime.days(date.wkyr(1,2000)).
5302 DEBUG EVALUATE /ctime.days(date.wkyr(15,1999)).
5303 DEBUG EVALUATE /ctime.days(date.wkyr(36,1999)).
5304 DEBUG EVALUATE /ctime.days(date.wkyr(54,1999)).
5305 DEBUG EVALUATE /ctime.days(date.wkyr($sysmis,1999)).
5306 DEBUG EVALUATE /ctime.days(date.wkyr(1,$sysmis)).
5307 DEBUG EVALUATE /ctime.days(date.wkyr($sysmis,$sysmis)).
5308 DEBUG EVALUATE /date.wkyr('a',1999).
5309 DEBUG EVALUATE /date.wkyr(5,'a').
5310 DEBUG EVALUATE /date.wkyr('a','b').
5313 for opt in OPT NOOPT; do
5315 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5316 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
5317 ctime.days(date.wkyr(1,2000)) => 152385.00
5319 ctime.days(date.wkyr(15,1999)) => 152118.00
5321 ctime.days(date.wkyr(36,1999)) => 152265.00
5323 evaluate.sps:6.38-6.39: error: DEBUG EVALUATE: The week argument to DATE.WKYR
5324 is outside the acceptable range of 1 to 53. The result will be system-missing.
5325 6 | DEBUG EVALUATE /ctime.days(date.wkyr(54,1999)).
5328 ctime.days(date.wkyr(54,1999)) => sysmis
5330 ctime.days(date.wkyr($sysmis,1999)) => sysmis
5332 ctime.days(date.wkyr(1,$sysmis)) => sysmis
5334 ctime.days(date.wkyr($sysmis,$sysmis)) => sysmis
5336 evaluate.sps:10.17-10.35: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5337 WKYR(integer, integer) as date.wkyr(string, number).
5338 10 | DEBUG EVALUATE /date.wkyr('a',1999).
5339 | ^~~~~~~~~~~~~~~~~~~
5341 evaluate.sps:10.27-10.29: note: DEBUG EVALUATE: This argument has type 'string'
5342 but 'integer' is required.
5343 10 | DEBUG EVALUATE /date.wkyr('a',1999).
5346 date.wkyr('a',1999) => error
5348 evaluate.sps:11.17-11.32: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5349 WKYR(integer, integer) as date.wkyr(number, string).
5350 11 | DEBUG EVALUATE /date.wkyr(5,'a').
5353 evaluate.sps:11.29-11.31: note: DEBUG EVALUATE: This argument has type 'string'
5354 but 'integer' is required.
5355 11 | DEBUG EVALUATE /date.wkyr(5,'a').
5358 date.wkyr(5,'a') => error
5360 evaluate.sps:12.17-12.34: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5361 WKYR(integer, integer) as date.wkyr(string, string).
5362 12 | DEBUG EVALUATE /date.wkyr('a','b').
5363 | ^~~~~~~~~~~~~~~~~~
5365 evaluate.sps:12.27-12.29: note: DEBUG EVALUATE: This argument has type 'string'
5366 but 'integer' is required.
5367 12 | DEBUG EVALUATE /date.wkyr('a','b').
5370 evaluate.sps:12.31-12.33: note: DEBUG EVALUATE: This argument has type 'string'
5371 but 'integer' is required.
5372 12 | DEBUG EVALUATE /date.wkyr('a','b').
5375 date.wkyr('a','b') => error
5380 AT_SETUP([expressions - DATE.YRDAY])
5381 AT_KEYWORDS([expression expressions evaluate])
5382 AT_DATA([evaluate-base.sps], [dnl
5384 DEBUG EVALUATE SET opt.
5385 DEBUG EVALUATE /ctime.days(date.yrday(2000,1)).
5386 DEBUG EVALUATE /ctime.days(date.yrday(2000,100)).
5387 DEBUG EVALUATE /ctime.days(date.yrday(2000,253)).
5388 DEBUG EVALUATE /ctime.days(date.yrday(2000,500)).
5389 DEBUG EVALUATE /ctime.days(date.yrday(2000,-100)).
5390 DEBUG EVALUATE /ctime.days(date.yrday(1999,$sysmis)).
5391 DEBUG EVALUATE /ctime.days(date.yrday($sysmis,1)).
5392 DEBUG EVALUATE /ctime.days(date.yrday($sysmis,$sysmis)).
5393 DEBUG EVALUATE /date.yrday(1999,'a').
5394 DEBUG EVALUATE /date.yrday('a',5).
5395 DEBUG EVALUATE /date.yrday('a','b').
5398 for opt in OPT NOOPT; do
5400 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5401 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
5402 ctime.days(date.yrday(2000,1)) => 152385.00
5404 ctime.days(date.yrday(2000,100)) => 152484.00
5406 ctime.days(date.yrday(2000,253)) => 152637.00
5408 evaluate.sps:6.44-6.46: error: DEBUG EVALUATE: The value 500 as day argument to
5409 DATE.YRDAY is outside the acceptable range of 1 to 366. The result will be
5411 6 | DEBUG EVALUATE /ctime.days(date.yrday(2000,500)).
5414 ctime.days(date.yrday(2000,500)) => sysmis
5416 evaluate.sps:7.44-7.47: error: DEBUG EVALUATE: The value -100 as day argument
5417 to DATE.YRDAY is outside the acceptable range of 1 to 366. The result will be
5419 7 | DEBUG EVALUATE /ctime.days(date.yrday(2000,-100)).
5422 ctime.days(date.yrday(2000,-100)) => sysmis
5424 ctime.days(date.yrday(1999,$sysmis)) => sysmis
5426 ctime.days(date.yrday($sysmis,1)) => sysmis
5428 ctime.days(date.yrday($sysmis,$sysmis)) => sysmis
5430 evaluate.sps:11.17-11.36: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5431 YRDAY(integer, integer) as date.yrday(number, string).
5432 11 | DEBUG EVALUATE /date.yrday(1999,'a').
5433 | ^~~~~~~~~~~~~~~~~~~~
5435 evaluate.sps:11.33-11.35: note: DEBUG EVALUATE: This argument has type 'string'
5436 but 'integer' is required.
5437 11 | DEBUG EVALUATE /date.yrday(1999,'a').
5440 date.yrday(1999,'a') => error
5442 evaluate.sps:12.17-12.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5443 YRDAY(integer, integer) as date.yrday(string, number).
5444 12 | DEBUG EVALUATE /date.yrday('a',5).
5447 evaluate.sps:12.28-12.30: note: DEBUG EVALUATE: This argument has type 'string'
5448 but 'integer' is required.
5449 12 | DEBUG EVALUATE /date.yrday('a',5).
5452 date.yrday('a',5) => error
5454 evaluate.sps:13.17-13.35: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5455 YRDAY(integer, integer) as date.yrday(string, string).
5456 13 | DEBUG EVALUATE /date.yrday('a','b').
5457 | ^~~~~~~~~~~~~~~~~~~
5459 evaluate.sps:13.28-13.30: note: DEBUG EVALUATE: This argument has type 'string'
5460 but 'integer' is required.
5461 13 | DEBUG EVALUATE /date.yrday('a','b').
5464 evaluate.sps:13.32-13.34: note: DEBUG EVALUATE: This argument has type 'string'
5465 but 'integer' is required.
5466 13 | DEBUG EVALUATE /date.yrday('a','b').
5469 date.yrday('a','b') => error
5474 AT_SETUP([expressions - XDATE.DATE])
5475 AT_KEYWORDS([expression expressions evaluate])
5476 AT_DATA([evaluate-base.sps], [dnl
5478 DEBUG EVALUATE SET opt.
5479 DEBUG EVALUATE /xdate.date(date.mdy(6,10,1648) + time.hms(0,0,0)) / 86400.
5480 DEBUG EVALUATE /xdate.date(date.mdy(6,30,1680) + time.hms(4,50,38)) / 86400.
5481 DEBUG EVALUATE /xdate.date(date.mdy(7,24,1716) + time.hms(12,31,35)) / 86400.
5482 DEBUG EVALUATE /xdate.date(date.mdy(6,19,1768) + time.hms(12,47,53)) / 86400.
5483 DEBUG EVALUATE /xdate.date(date.mdy(8,2,1819) + time.hms(1,26,0)) / 86400.
5484 DEBUG EVALUATE /xdate.date(date.mdy(3,27,1839) + time.hms(20,58,11)) / 86400.
5485 DEBUG EVALUATE /xdate.date(date.mdy(4,19,1903) + time.hms(7,36,5)) / 86400.
5486 DEBUG EVALUATE /xdate.date(date.mdy(8,25,1929) + time.hms(15,43,49)) / 86400.
5487 DEBUG EVALUATE /xdate.date(date.mdy(9,29,1941) + time.hms(4,25,9)) / 86400.
5488 DEBUG EVALUATE /xdate.date(date.mdy(4,19,1943) + time.hms(6,49,27)) / 86400.
5489 DEBUG EVALUATE /xdate.date(date.mdy(10,7,1943) + time.hms(2,57,52)) / 86400.
5490 DEBUG EVALUATE /xdate.date(date.mdy(3,17,1992) + time.hms(16,45,44)) / 86400.
5491 DEBUG EVALUATE /xdate.date(date.mdy(2,25,1996) + time.hms(21,30,57)) / 86400.
5492 DEBUG EVALUATE /xdate.date(date.mdy(9,29,1941) + time.hms(4,25,9)) / 86400.
5493 DEBUG EVALUATE /xdate.date(date.mdy(4,19,43) + time.hms(6,49,27)) / 86400.
5494 DEBUG EVALUATE /xdate.date(date.mdy(10,7,43) + time.hms(2,57,52)) / 86400.
5495 DEBUG EVALUATE /xdate.date(date.mdy(3,17,92) + time.hms(16,45,44)) / 86400.
5496 DEBUG EVALUATE /xdate.date(date.mdy(2,25,96) + time.hms(21,30,57)) / 86400.
5497 DEBUG EVALUATE /xdate.date(date.mdy(11,10,2038) + time.hms(22,30,4)) / 86400.
5498 DEBUG EVALUATE /xdate.date(date.mdy(7,18,2094) + time.hms(1,56,51)) / 86400.
5499 DEBUG EVALUATE /xdate.date(123.4).
5500 DEBUG EVALUATE /xdate.date('').
5503 for opt in OPT NOOPT; do
5505 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5506 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
5507 xdate.date(date.mdy(6,10,1648) + time.hms(0,0,0)) / 86400 => 23981.00
5509 xdate.date(date.mdy(6,30,1680) + time.hms(4,50,38)) / 86400 => 35689.00
5511 xdate.date(date.mdy(7,24,1716) + time.hms(12,31,35)) / 86400 => 48861.00
5513 xdate.date(date.mdy(6,19,1768) + time.hms(12,47,53)) / 86400 => 67819.00
5515 xdate.date(date.mdy(8,2,1819) + time.hms(1,26,0)) / 86400 => 86489.00
5517 xdate.date(date.mdy(3,27,1839) + time.hms(20,58,11)) / 86400 => 93666.00
5519 xdate.date(date.mdy(4,19,1903) + time.hms(7,36,5)) / 86400 => 117064.00
5521 xdate.date(date.mdy(8,25,1929) + time.hms(15,43,49)) / 86400 => 126689.00
5523 xdate.date(date.mdy(9,29,1941) + time.hms(4,25,9)) / 86400 => 131107.00
5525 xdate.date(date.mdy(4,19,1943) + time.hms(6,49,27)) / 86400 => 131674.00
5527 xdate.date(date.mdy(10,7,1943) + time.hms(2,57,52)) / 86400 => 131845.00
5529 xdate.date(date.mdy(3,17,1992) + time.hms(16,45,44)) / 86400 => 149539.00
5531 xdate.date(date.mdy(2,25,1996) + time.hms(21,30,57)) / 86400 => 150979.00
5533 xdate.date(date.mdy(9,29,1941) + time.hms(4,25,9)) / 86400 => 131107.00
5535 xdate.date(date.mdy(4,19,43) + time.hms(6,49,27)) / 86400 => 131674.00
5537 xdate.date(date.mdy(10,7,43) + time.hms(2,57,52)) / 86400 => 131845.00
5539 xdate.date(date.mdy(3,17,92) + time.hms(16,45,44)) / 86400 => 149539.00
5541 xdate.date(date.mdy(2,25,96) + time.hms(21,30,57)) / 86400 => 150979.00
5543 xdate.date(date.mdy(11,10,2038) + time.hms(22,30,4)) / 86400 => 166578.00
5545 xdate.date(date.mdy(7,18,2094) + time.hms(1,56,51)) / 86400 => 186917.00
5547 xdate.date(123.4) => 0.00
5549 evaluate.sps:24.17-24.30: error: DEBUG EVALUATE: Type mismatch invoking XDATE.
5550 DATE(number) as xdate.date(string).
5551 24 | DEBUG EVALUATE /xdate.date('').
5554 evaluate.sps:24.28-24.29: note: DEBUG EVALUATE: This argument has type 'string'
5555 but 'number' is required.
5556 24 | DEBUG EVALUATE /xdate.date('').
5559 xdate.date('') => error
5564 AT_SETUP([expressions - XDATE.HOUR])
5565 AT_KEYWORDS([expression expressions evaluate])
5566 AT_DATA([evaluate-base.sps], [dnl
5568 DEBUG EVALUATE SET opt.
5569 DEBUG EVALUATE /xdate.hour(date.mdy(6,10,1648) + time.hms(0,0,0)).
5570 DEBUG EVALUATE /xdate.hour(date.mdy(6,30,1680) + time.hms(4,50,38)).
5571 DEBUG EVALUATE /xdate.hour(date.mdy(7,24,1716) + time.hms(12,31,35)).
5572 DEBUG EVALUATE /xdate.hour(date.mdy(6,19,1768) + time.hms(12,47,53)).
5573 DEBUG EVALUATE /xdate.hour(date.mdy(8,2,1819) + time.hms(1,26,0)).
5574 DEBUG EVALUATE /xdate.hour(date.mdy(3,27,1839) + time.hms(20,58,11)).
5575 DEBUG EVALUATE /xdate.hour(date.mdy(4,19,1903) + time.hms(7,36,5)).
5576 DEBUG EVALUATE /xdate.hour(date.mdy(8,25,1929) + time.hms(15,43,49)).
5577 DEBUG EVALUATE /xdate.hour(date.mdy(9,29,1941) + time.hms(4,25,9)).
5578 DEBUG EVALUATE /xdate.hour(date.mdy(4,19,1943) + time.hms(6,49,27)).
5579 DEBUG EVALUATE /xdate.hour(date.mdy(10,7,1943) + time.hms(2,57,52)).
5580 DEBUG EVALUATE /xdate.hour(date.mdy(3,17,1992) + time.hms(16,45,44)).
5581 DEBUG EVALUATE /xdate.hour(date.mdy(2,25,1996) + time.hms(21,30,57)).
5582 DEBUG EVALUATE /xdate.hour(date.mdy(9,29,1941) + time.hms(4,25,9)).
5583 DEBUG EVALUATE /xdate.hour(date.mdy(4,19,43) + time.hms(6,49,27)).
5584 DEBUG EVALUATE /xdate.hour(date.mdy(10,7,43) + time.hms(2,57,52)).
5585 DEBUG EVALUATE /xdate.hour(date.mdy(3,17,92) + time.hms(16,45,44)).
5586 DEBUG EVALUATE /xdate.hour(date.mdy(2,25,96) + time.hms(21,30,57)).
5587 DEBUG EVALUATE /xdate.hour(date.mdy(11,10,2038) + time.hms(22,30,4)).
5588 DEBUG EVALUATE /xdate.hour(date.mdy(7,18,2094) + time.hms(1,56,51)).
5589 DEBUG EVALUATE /xdate.hour(-1).
5590 DEBUG EVALUATE /xdate.hour(1).
5591 DEBUG EVALUATE /xdate.hour($sysmis).
5592 DEBUG EVALUATE /xdate.hour('').
5595 for opt in OPT NOOPT; do
5597 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5598 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
5599 xdate.hour(date.mdy(6,10,1648) + time.hms(0,0,0)) => 0.00
5601 xdate.hour(date.mdy(6,30,1680) + time.hms(4,50,38)) => 4.00
5603 xdate.hour(date.mdy(7,24,1716) + time.hms(12,31,35)) => 12.00
5605 xdate.hour(date.mdy(6,19,1768) + time.hms(12,47,53)) => 12.00
5607 xdate.hour(date.mdy(8,2,1819) + time.hms(1,26,0)) => 1.00
5609 xdate.hour(date.mdy(3,27,1839) + time.hms(20,58,11)) => 20.00
5611 xdate.hour(date.mdy(4,19,1903) + time.hms(7,36,5)) => 7.00
5613 xdate.hour(date.mdy(8,25,1929) + time.hms(15,43,49)) => 15.00
5615 xdate.hour(date.mdy(9,29,1941) + time.hms(4,25,9)) => 4.00
5617 xdate.hour(date.mdy(4,19,1943) + time.hms(6,49,27)) => 6.00
5619 xdate.hour(date.mdy(10,7,1943) + time.hms(2,57,52)) => 2.00
5621 xdate.hour(date.mdy(3,17,1992) + time.hms(16,45,44)) => 16.00
5623 xdate.hour(date.mdy(2,25,1996) + time.hms(21,30,57)) => 21.00
5625 xdate.hour(date.mdy(9,29,1941) + time.hms(4,25,9)) => 4.00
5627 xdate.hour(date.mdy(4,19,43) + time.hms(6,49,27)) => 6.00
5629 xdate.hour(date.mdy(10,7,43) + time.hms(2,57,52)) => 2.00
5631 xdate.hour(date.mdy(3,17,92) + time.hms(16,45,44)) => 16.00
5633 xdate.hour(date.mdy(2,25,96) + time.hms(21,30,57)) => 21.00
5635 xdate.hour(date.mdy(11,10,2038) + time.hms(22,30,4)) => 22.00
5637 xdate.hour(date.mdy(7,18,2094) + time.hms(1,56,51)) => 1.00
5639 xdate.hour(-1) => -1.00
5641 xdate.hour(1) => 0.00
5643 xdate.hour($sysmis) => sysmis
5645 evaluate.sps:26.17-26.30: error: DEBUG EVALUATE: Type mismatch invoking XDATE.
5646 HOUR(number) as xdate.hour(string).
5647 26 | DEBUG EVALUATE /xdate.hour('').
5650 evaluate.sps:26.28-26.29: note: DEBUG EVALUATE: This argument has type 'string'
5651 but 'number' is required.
5652 26 | DEBUG EVALUATE /xdate.hour('').
5655 xdate.hour('') => error
5660 AT_SETUP([expressions - XDATE.JDAY])
5661 AT_KEYWORDS([expression expressions evaluate])
5662 AT_DATA([evaluate-base.sps], [dnl
5664 DEBUG EVALUATE SET opt.
5665 DEBUG EVALUATE /xdate.jday(date.mdy(6,10,1648) + time.hms(0,0,0)).
5666 DEBUG EVALUATE /xdate.jday(date.mdy(6,30,1680) + time.hms(4,50,38)).
5667 DEBUG EVALUATE /xdate.jday(date.mdy(7,24,1716) + time.hms(12,31,35)).
5668 DEBUG EVALUATE /xdate.jday(date.mdy(6,19,1768) + time.hms(12,47,53)).
5669 DEBUG EVALUATE /xdate.jday(date.mdy(8,2,1819) + time.hms(1,26,0)).
5670 DEBUG EVALUATE /xdate.jday(date.mdy(3,27,1839) + time.hms(20,58,11)).
5671 DEBUG EVALUATE /xdate.jday(date.mdy(4,19,1903) + time.hms(7,36,5)).
5672 DEBUG EVALUATE /xdate.jday(date.mdy(8,25,1929) + time.hms(15,43,49)).
5673 DEBUG EVALUATE /xdate.jday(date.mdy(9,29,1941) + time.hms(4,25,9)).
5674 DEBUG EVALUATE /xdate.jday(date.mdy(4,19,1943) + time.hms(6,49,27)).
5675 DEBUG EVALUATE /xdate.jday(date.mdy(10,7,1943) + time.hms(2,57,52)).
5676 DEBUG EVALUATE /xdate.jday(date.mdy(3,17,1992) + time.hms(16,45,44)).
5677 DEBUG EVALUATE /xdate.jday(date.mdy(2,25,1996) + time.hms(21,30,57)).
5678 DEBUG EVALUATE /xdate.jday(date.mdy(9,29,1941) + time.hms(4,25,9)).
5679 DEBUG EVALUATE /xdate.jday(date.mdy(4,19,43) + time.hms(6,49,27)).
5680 DEBUG EVALUATE /xdate.jday(date.mdy(10,7,43) + time.hms(2,57,52)).
5681 DEBUG EVALUATE /xdate.jday(date.mdy(3,17,92) + time.hms(16,45,44)).
5682 DEBUG EVALUATE /xdate.jday(date.mdy(2,25,96) + time.hms(21,30,57)).
5683 DEBUG EVALUATE /xdate.jday(date.mdy(11,10,2038) + time.hms(22,30,4)).
5684 DEBUG EVALUATE /xdate.jday(date.mdy(7,18,2094) + time.hms(1,56,51)).
5685 DEBUG EVALUATE /xdate.jday(0).
5686 DEBUG EVALUATE /xdate.jday(1).
5687 DEBUG EVALUATE /xdate.jday(86400).
5690 for opt in OPT NOOPT; do
5692 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5693 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
5694 xdate.jday(date.mdy(6,10,1648) + time.hms(0,0,0)) => 162.00
5696 xdate.jday(date.mdy(6,30,1680) + time.hms(4,50,38)) => 182.00
5698 xdate.jday(date.mdy(7,24,1716) + time.hms(12,31,35)) => 206.00
5700 xdate.jday(date.mdy(6,19,1768) + time.hms(12,47,53)) => 171.00
5702 xdate.jday(date.mdy(8,2,1819) + time.hms(1,26,0)) => 214.00
5704 xdate.jday(date.mdy(3,27,1839) + time.hms(20,58,11)) => 86.00
5706 xdate.jday(date.mdy(4,19,1903) + time.hms(7,36,5)) => 109.00
5708 xdate.jday(date.mdy(8,25,1929) + time.hms(15,43,49)) => 237.00
5710 xdate.jday(date.mdy(9,29,1941) + time.hms(4,25,9)) => 272.00
5712 xdate.jday(date.mdy(4,19,1943) + time.hms(6,49,27)) => 109.00
5714 xdate.jday(date.mdy(10,7,1943) + time.hms(2,57,52)) => 280.00
5716 xdate.jday(date.mdy(3,17,1992) + time.hms(16,45,44)) => 77.00
5718 xdate.jday(date.mdy(2,25,1996) + time.hms(21,30,57)) => 56.00
5720 xdate.jday(date.mdy(9,29,1941) + time.hms(4,25,9)) => 272.00
5722 xdate.jday(date.mdy(4,19,43) + time.hms(6,49,27)) => 109.00
5724 xdate.jday(date.mdy(10,7,43) + time.hms(2,57,52)) => 280.00
5726 xdate.jday(date.mdy(3,17,92) + time.hms(16,45,44)) => 77.00
5728 xdate.jday(date.mdy(2,25,96) + time.hms(21,30,57)) => 56.00
5730 xdate.jday(date.mdy(11,10,2038) + time.hms(22,30,4)) => 314.00
5732 xdate.jday(date.mdy(7,18,2094) + time.hms(1,56,51)) => 199.00
5734 xdate.jday(0) => sysmis
5736 xdate.jday(1) => sysmis
5738 xdate.jday(86400) => 288.00
5743 AT_SETUP([expressions - XDATE.MDAY])
5744 AT_KEYWORDS([expression expressions evaluate])
5745 AT_DATA([evaluate-base.sps], [dnl
5747 DEBUG EVALUATE SET opt.
5748 DEBUG EVALUATE /xdate.mday(date.mdy(6,10,1648) + time.hms(0,0,0)).
5749 DEBUG EVALUATE /xdate.mday(date.mdy(6,30,1680) + time.hms(4,50,38)).
5750 DEBUG EVALUATE /xdate.mday(date.mdy(7,24,1716) + time.hms(12,31,35)).
5751 DEBUG EVALUATE /xdate.mday(date.mdy(6,19,1768) + time.hms(12,47,53)).
5752 DEBUG EVALUATE /xdate.mday(date.mdy(8,2,1819) + time.hms(1,26,0)).
5753 DEBUG EVALUATE /xdate.mday(date.mdy(3,27,1839) + time.hms(20,58,11)).
5754 DEBUG EVALUATE /xdate.mday(date.mdy(4,19,1903) + time.hms(7,36,5)).
5755 DEBUG EVALUATE /xdate.mday(date.mdy(8,25,1929) + time.hms(15,43,49)).
5756 DEBUG EVALUATE /xdate.mday(date.mdy(9,29,1941) + time.hms(4,25,9)).
5757 DEBUG EVALUATE /xdate.mday(date.mdy(4,19,1943) + time.hms(6,49,27)).
5758 DEBUG EVALUATE /xdate.mday(date.mdy(10,7,1943) + time.hms(2,57,52)).
5759 DEBUG EVALUATE /xdate.mday(date.mdy(3,17,1992) + time.hms(16,45,44)).
5760 DEBUG EVALUATE /xdate.mday(date.mdy(2,25,1996) + time.hms(21,30,57)).
5761 DEBUG EVALUATE /xdate.mday(date.mdy(9,29,1941) + time.hms(4,25,9)).
5762 DEBUG EVALUATE /xdate.mday(date.mdy(4,19,43) + time.hms(6,49,27)).
5763 DEBUG EVALUATE /xdate.mday(date.mdy(10,7,43) + time.hms(2,57,52)).
5764 DEBUG EVALUATE /xdate.mday(date.mdy(3,17,92) + time.hms(16,45,44)).
5765 DEBUG EVALUATE /xdate.mday(date.mdy(2,25,96) + time.hms(21,30,57)).
5766 DEBUG EVALUATE /xdate.mday(date.mdy(11,10,2038) + time.hms(22,30,4)).
5767 DEBUG EVALUATE /xdate.mday(date.mdy(7,18,2094) + time.hms(1,56,51)).
5770 for opt in OPT NOOPT; do
5772 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5773 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
5774 xdate.mday(date.mdy(6,10,1648) + time.hms(0,0,0)) => 10.00
5776 xdate.mday(date.mdy(6,30,1680) + time.hms(4,50,38)) => 30.00
5778 xdate.mday(date.mdy(7,24,1716) + time.hms(12,31,35)) => 24.00
5780 xdate.mday(date.mdy(6,19,1768) + time.hms(12,47,53)) => 19.00
5782 xdate.mday(date.mdy(8,2,1819) + time.hms(1,26,0)) => 2.00
5784 xdate.mday(date.mdy(3,27,1839) + time.hms(20,58,11)) => 27.00
5786 xdate.mday(date.mdy(4,19,1903) + time.hms(7,36,5)) => 19.00
5788 xdate.mday(date.mdy(8,25,1929) + time.hms(15,43,49)) => 25.00
5790 xdate.mday(date.mdy(9,29,1941) + time.hms(4,25,9)) => 29.00
5792 xdate.mday(date.mdy(4,19,1943) + time.hms(6,49,27)) => 19.00
5794 xdate.mday(date.mdy(10,7,1943) + time.hms(2,57,52)) => 7.00
5796 xdate.mday(date.mdy(3,17,1992) + time.hms(16,45,44)) => 17.00
5798 xdate.mday(date.mdy(2,25,1996) + time.hms(21,30,57)) => 25.00
5800 xdate.mday(date.mdy(9,29,1941) + time.hms(4,25,9)) => 29.00
5802 xdate.mday(date.mdy(4,19,43) + time.hms(6,49,27)) => 19.00
5804 xdate.mday(date.mdy(10,7,43) + time.hms(2,57,52)) => 7.00
5806 xdate.mday(date.mdy(3,17,92) + time.hms(16,45,44)) => 17.00
5808 xdate.mday(date.mdy(2,25,96) + time.hms(21,30,57)) => 25.00
5810 xdate.mday(date.mdy(11,10,2038) + time.hms(22,30,4)) => 10.00
5812 xdate.mday(date.mdy(7,18,2094) + time.hms(1,56,51)) => 18.00
5817 AT_SETUP([expressions - XDATE.MINUTE])
5818 AT_KEYWORDS([expression expressions evaluate])
5819 AT_DATA([evaluate-base.sps], [dnl
5821 DEBUG EVALUATE SET opt.
5822 DEBUG EVALUATE /xdate.minute(date.mdy(6,10,1648) + time.hms(0,0,0)).
5823 DEBUG EVALUATE /xdate.minute(date.mdy(6,30,1680) + time.hms(4,50,38)).
5824 DEBUG EVALUATE /xdate.minute(date.mdy(7,24,1716) + time.hms(12,31,35)).
5825 DEBUG EVALUATE /xdate.minute(date.mdy(6,19,1768) + time.hms(12,47,53)).
5826 DEBUG EVALUATE /xdate.minute(date.mdy(8,2,1819) + time.hms(1,26,0)).
5827 DEBUG EVALUATE /xdate.minute(date.mdy(3,27,1839) + time.hms(20,58,11)).
5828 DEBUG EVALUATE /xdate.minute(date.mdy(4,19,1903) + time.hms(7,36,5)).
5829 DEBUG EVALUATE /xdate.minute(date.mdy(8,25,1929) + time.hms(15,43,49)).
5830 DEBUG EVALUATE /xdate.minute(date.mdy(9,29,1941) + time.hms(4,25,9)).
5831 DEBUG EVALUATE /xdate.minute(date.mdy(4,19,1943) + time.hms(6,49,27)).
5832 DEBUG EVALUATE /xdate.minute(date.mdy(10,7,1943) + time.hms(2,57,52)).
5833 DEBUG EVALUATE /xdate.minute(date.mdy(3,17,1992) + time.hms(16,45,44)).
5834 DEBUG EVALUATE /xdate.minute(date.mdy(2,25,1996) + time.hms(21,30,57)).
5835 DEBUG EVALUATE /xdate.minute(date.mdy(9,29,1941) + time.hms(4,25,9)).
5836 DEBUG EVALUATE /xdate.minute(date.mdy(4,19,43) + time.hms(6,49,27)).
5837 DEBUG EVALUATE /xdate.minute(date.mdy(10,7,43) + time.hms(2,57,52)).
5838 DEBUG EVALUATE /xdate.minute(date.mdy(3,17,92) + time.hms(16,45,44)).
5839 DEBUG EVALUATE /xdate.minute(date.mdy(2,25,96) + time.hms(21,30,57)).
5840 DEBUG EVALUATE /xdate.minute(date.mdy(11,10,2038) + time.hms(22,30,4)).
5841 DEBUG EVALUATE /xdate.minute(date.mdy(7,18,2094) + time.hms(1,56,51)).
5844 for opt in OPT NOOPT; do
5846 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5847 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
5848 xdate.minute(date.mdy(6,10,1648) + time.hms(0,0,0)) => 0.00
5850 xdate.minute(date.mdy(6,30,1680) + time.hms(4,50,38)) => 50.00
5852 xdate.minute(date.mdy(7,24,1716) + time.hms(12,31,35)) => 31.00
5854 xdate.minute(date.mdy(6,19,1768) + time.hms(12,47,53)) => 47.00
5856 xdate.minute(date.mdy(8,2,1819) + time.hms(1,26,0)) => 26.00
5858 xdate.minute(date.mdy(3,27,1839) + time.hms(20,58,11)) => 58.00
5860 xdate.minute(date.mdy(4,19,1903) + time.hms(7,36,5)) => 36.00
5862 xdate.minute(date.mdy(8,25,1929) + time.hms(15,43,49)) => 43.00
5864 xdate.minute(date.mdy(9,29,1941) + time.hms(4,25,9)) => 25.00
5866 xdate.minute(date.mdy(4,19,1943) + time.hms(6,49,27)) => 49.00
5868 xdate.minute(date.mdy(10,7,1943) + time.hms(2,57,52)) => 57.00
5870 xdate.minute(date.mdy(3,17,1992) + time.hms(16,45,44)) => 45.00
5872 xdate.minute(date.mdy(2,25,1996) + time.hms(21,30,57)) => 30.00
5874 xdate.minute(date.mdy(9,29,1941) + time.hms(4,25,9)) => 25.00
5876 xdate.minute(date.mdy(4,19,43) + time.hms(6,49,27)) => 49.00
5878 xdate.minute(date.mdy(10,7,43) + time.hms(2,57,52)) => 57.00
5880 xdate.minute(date.mdy(3,17,92) + time.hms(16,45,44)) => 45.00
5882 xdate.minute(date.mdy(2,25,96) + time.hms(21,30,57)) => 30.00
5884 xdate.minute(date.mdy(11,10,2038) + time.hms(22,30,4)) => 30.00
5886 xdate.minute(date.mdy(7,18,2094) + time.hms(1,56,51)) => 56.00
5891 AT_SETUP([expressions - XDATE.MONTH])
5892 AT_KEYWORDS([expression expressions evaluate])
5893 AT_DATA([evaluate-base.sps], [dnl
5895 DEBUG EVALUATE SET opt.
5896 DEBUG EVALUATE /xdate.month(date.mdy(6,10,1648) + time.hms(0,0,0)).
5897 DEBUG EVALUATE /xdate.month(date.mdy(6,30,1680) + time.hms(4,50,38)).
5898 DEBUG EVALUATE /xdate.month(date.mdy(7,24,1716) + time.hms(12,31,35)).
5899 DEBUG EVALUATE /xdate.month(date.mdy(6,19,1768) + time.hms(12,47,53)).
5900 DEBUG EVALUATE /xdate.month(date.mdy(8,2,1819) + time.hms(1,26,0)).
5901 DEBUG EVALUATE /xdate.month(date.mdy(3,27,1839) + time.hms(20,58,11)).
5902 DEBUG EVALUATE /xdate.month(date.mdy(4,19,1903) + time.hms(7,36,5)).
5903 DEBUG EVALUATE /xdate.month(date.mdy(8,25,1929) + time.hms(15,43,49)).
5904 DEBUG EVALUATE /xdate.month(date.mdy(9,29,1941) + time.hms(4,25,9)).
5905 DEBUG EVALUATE /xdate.month(date.mdy(4,19,1943) + time.hms(6,49,27)).
5906 DEBUG EVALUATE /xdate.month(date.mdy(10,7,1943) + time.hms(2,57,52)).
5907 DEBUG EVALUATE /xdate.month(date.mdy(3,17,1992) + time.hms(16,45,44)).
5908 DEBUG EVALUATE /xdate.month(date.mdy(2,25,1996) + time.hms(21,30,57)).
5909 DEBUG EVALUATE /xdate.month(date.mdy(9,29,1941) + time.hms(4,25,9)).
5910 DEBUG EVALUATE /xdate.month(date.mdy(4,19,43) + time.hms(6,49,27)).
5911 DEBUG EVALUATE /xdate.month(date.mdy(10,7,43) + time.hms(2,57,52)).
5912 DEBUG EVALUATE /xdate.month(date.mdy(3,17,92) + time.hms(16,45,44)).
5913 DEBUG EVALUATE /xdate.month(date.mdy(2,25,96) + time.hms(21,30,57)).
5914 DEBUG EVALUATE /xdate.month(date.mdy(11,10,2038) + time.hms(22,30,4)).
5915 DEBUG EVALUATE /xdate.month(date.mdy(7,18,2094) + time.hms(1,56,51)).
5918 for opt in OPT NOOPT; do
5920 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5921 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
5922 xdate.month(date.mdy(6,10,1648) + time.hms(0,0,0)) => 6.00
5924 xdate.month(date.mdy(6,30,1680) + time.hms(4,50,38)) => 6.00
5926 xdate.month(date.mdy(7,24,1716) + time.hms(12,31,35)) => 7.00
5928 xdate.month(date.mdy(6,19,1768) + time.hms(12,47,53)) => 6.00
5930 xdate.month(date.mdy(8,2,1819) + time.hms(1,26,0)) => 8.00
5932 xdate.month(date.mdy(3,27,1839) + time.hms(20,58,11)) => 3.00
5934 xdate.month(date.mdy(4,19,1903) + time.hms(7,36,5)) => 4.00
5936 xdate.month(date.mdy(8,25,1929) + time.hms(15,43,49)) => 8.00
5938 xdate.month(date.mdy(9,29,1941) + time.hms(4,25,9)) => 9.00
5940 xdate.month(date.mdy(4,19,1943) + time.hms(6,49,27)) => 4.00
5942 xdate.month(date.mdy(10,7,1943) + time.hms(2,57,52)) => 10.00
5944 xdate.month(date.mdy(3,17,1992) + time.hms(16,45,44)) => 3.00
5946 xdate.month(date.mdy(2,25,1996) + time.hms(21,30,57)) => 2.00
5948 xdate.month(date.mdy(9,29,1941) + time.hms(4,25,9)) => 9.00
5950 xdate.month(date.mdy(4,19,43) + time.hms(6,49,27)) => 4.00
5952 xdate.month(date.mdy(10,7,43) + time.hms(2,57,52)) => 10.00
5954 xdate.month(date.mdy(3,17,92) + time.hms(16,45,44)) => 3.00
5956 xdate.month(date.mdy(2,25,96) + time.hms(21,30,57)) => 2.00
5958 xdate.month(date.mdy(11,10,2038) + time.hms(22,30,4)) => 11.00
5960 xdate.month(date.mdy(7,18,2094) + time.hms(1,56,51)) => 7.00
5965 AT_SETUP([expressions - XDATE.QUARTER])
5966 AT_KEYWORDS([expression expressions evaluate])
5967 AT_DATA([evaluate-base.sps], [dnl
5969 DEBUG EVALUATE SET opt.
5970 DEBUG EVALUATE /xdate.quarter(date.mdy(6,10,1648) + time.hms(0,0,0)).
5971 DEBUG EVALUATE /xdate.quarter(date.mdy(6,30,1680) + time.hms(4,50,38)).
5972 DEBUG EVALUATE /xdate.quarter(date.mdy(7,24,1716) + time.hms(12,31,35)).
5973 DEBUG EVALUATE /xdate.quarter(date.mdy(6,19,1768) + time.hms(12,47,53)).
5974 DEBUG EVALUATE /xdate.quarter(date.mdy(8,2,1819) + time.hms(1,26,0)).
5975 DEBUG EVALUATE /xdate.quarter(date.mdy(3,27,1839) + time.hms(20,58,11)).
5976 DEBUG EVALUATE /xdate.quarter(date.mdy(4,19,1903) + time.hms(7,36,5)).
5977 DEBUG EVALUATE /xdate.quarter(date.mdy(8,25,1929) + time.hms(15,43,49)).
5978 DEBUG EVALUATE /xdate.quarter(date.mdy(9,29,1941) + time.hms(4,25,9)).
5979 DEBUG EVALUATE /xdate.quarter(date.mdy(4,19,1943) + time.hms(6,49,27)).
5980 DEBUG EVALUATE /xdate.quarter(date.mdy(10,7,1943) + time.hms(2,57,52)).
5981 DEBUG EVALUATE /xdate.quarter(date.mdy(3,17,1992) + time.hms(16,45,44)).
5982 DEBUG EVALUATE /xdate.quarter(date.mdy(2,25,1996) + time.hms(21,30,57)).
5983 DEBUG EVALUATE /xdate.quarter(date.mdy(9,29,1941) + time.hms(4,25,9)).
5984 DEBUG EVALUATE /xdate.quarter(date.mdy(4,19,43) + time.hms(6,49,27)).
5985 DEBUG EVALUATE /xdate.quarter(date.mdy(10,7,43) + time.hms(2,57,52)).
5986 DEBUG EVALUATE /xdate.quarter(date.mdy(3,17,92) + time.hms(16,45,44)).
5987 DEBUG EVALUATE /xdate.quarter(date.mdy(2,25,96) + time.hms(21,30,57)).
5988 DEBUG EVALUATE /xdate.quarter(date.mdy(11,10,2038) + time.hms(22,30,4)).
5989 DEBUG EVALUATE /xdate.quarter(date.mdy(7,18,2094) + time.hms(1,56,51)).
5992 for opt in OPT NOOPT; do
5994 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5995 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
5996 xdate.quarter(date.mdy(6,10,1648) + time.hms(0,0,0)) => 2.00
5998 xdate.quarter(date.mdy(6,30,1680) + time.hms(4,50,38)) => 2.00
6000 xdate.quarter(date.mdy(7,24,1716) + time.hms(12,31,35)) => 3.00
6002 xdate.quarter(date.mdy(6,19,1768) + time.hms(12,47,53)) => 2.00
6004 xdate.quarter(date.mdy(8,2,1819) + time.hms(1,26,0)) => 3.00
6006 xdate.quarter(date.mdy(3,27,1839) + time.hms(20,58,11)) => 1.00
6008 xdate.quarter(date.mdy(4,19,1903) + time.hms(7,36,5)) => 2.00
6010 xdate.quarter(date.mdy(8,25,1929) + time.hms(15,43,49)) => 3.00
6012 xdate.quarter(date.mdy(9,29,1941) + time.hms(4,25,9)) => 3.00
6014 xdate.quarter(date.mdy(4,19,1943) + time.hms(6,49,27)) => 2.00
6016 xdate.quarter(date.mdy(10,7,1943) + time.hms(2,57,52)) => 4.00
6018 xdate.quarter(date.mdy(3,17,1992) + time.hms(16,45,44)) => 1.00
6020 xdate.quarter(date.mdy(2,25,1996) + time.hms(21,30,57)) => 1.00
6022 xdate.quarter(date.mdy(9,29,1941) + time.hms(4,25,9)) => 3.00
6024 xdate.quarter(date.mdy(4,19,43) + time.hms(6,49,27)) => 2.00
6026 xdate.quarter(date.mdy(10,7,43) + time.hms(2,57,52)) => 4.00
6028 xdate.quarter(date.mdy(3,17,92) + time.hms(16,45,44)) => 1.00
6030 xdate.quarter(date.mdy(2,25,96) + time.hms(21,30,57)) => 1.00
6032 xdate.quarter(date.mdy(11,10,2038) + time.hms(22,30,4)) => 4.00
6034 xdate.quarter(date.mdy(7,18,2094) + time.hms(1,56,51)) => 3.00
6039 AT_SETUP([expressions - XDATE.SECOND])
6040 AT_KEYWORDS([expression expressions evaluate])
6041 AT_DATA([evaluate-base.sps], [dnl
6043 DEBUG EVALUATE SET opt.
6044 DEBUG EVALUATE /xdate.second(date.mdy(6,10,1648) + time.hms(0,0,0)).
6045 DEBUG EVALUATE /xdate.second(date.mdy(6,30,1680) + time.hms(4,50,38)).
6046 DEBUG EVALUATE /xdate.second(date.mdy(7,24,1716) + time.hms(12,31,35)).
6047 DEBUG EVALUATE /xdate.second(date.mdy(6,19,1768) + time.hms(12,47,53)).
6048 DEBUG EVALUATE /xdate.second(date.mdy(8,2,1819) + time.hms(1,26,0)).
6049 DEBUG EVALUATE /xdate.second(date.mdy(3,27,1839) + time.hms(20,58,11)).
6050 DEBUG EVALUATE /xdate.second(date.mdy(4,19,1903) + time.hms(7,36,5)).
6051 DEBUG EVALUATE /xdate.second(date.mdy(8,25,1929) + time.hms(15,43,49)).
6052 DEBUG EVALUATE /xdate.second(date.mdy(9,29,1941) + time.hms(4,25,9)).
6053 DEBUG EVALUATE /xdate.second(date.mdy(4,19,1943) + time.hms(6,49,27)).
6054 DEBUG EVALUATE /xdate.second(date.mdy(10,7,1943) + time.hms(2,57,52)).
6055 DEBUG EVALUATE /xdate.second(date.mdy(3,17,1992) + time.hms(16,45,44)).
6056 DEBUG EVALUATE /xdate.second(date.mdy(2,25,1996) + time.hms(21,30,57)).
6057 DEBUG EVALUATE /xdate.second(date.mdy(9,29,1941) + time.hms(4,25,9)).
6058 DEBUG EVALUATE /xdate.second(date.mdy(4,19,43) + time.hms(6,49,27)).
6059 DEBUG EVALUATE /xdate.second(date.mdy(10,7,43) + time.hms(2,57,52)).
6060 DEBUG EVALUATE /xdate.second(date.mdy(3,17,92) + time.hms(16,45,44)).
6061 DEBUG EVALUATE /xdate.second(date.mdy(2,25,96) + time.hms(21,30,57)).
6062 DEBUG EVALUATE /xdate.second(date.mdy(11,10,2038) + time.hms(22,30,4)).
6063 DEBUG EVALUATE /xdate.second(date.mdy(7,18,2094) + time.hms(1,56,51)).
6066 for opt in OPT NOOPT; do
6068 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6069 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6070 xdate.second(date.mdy(6,10,1648) + time.hms(0,0,0)) => 0.00
6072 xdate.second(date.mdy(6,30,1680) + time.hms(4,50,38)) => 38.00
6074 xdate.second(date.mdy(7,24,1716) + time.hms(12,31,35)) => 35.00
6076 xdate.second(date.mdy(6,19,1768) + time.hms(12,47,53)) => 53.00
6078 xdate.second(date.mdy(8,2,1819) + time.hms(1,26,0)) => 0.00
6080 xdate.second(date.mdy(3,27,1839) + time.hms(20,58,11)) => 11.00
6082 xdate.second(date.mdy(4,19,1903) + time.hms(7,36,5)) => 5.00
6084 xdate.second(date.mdy(8,25,1929) + time.hms(15,43,49)) => 49.00
6086 xdate.second(date.mdy(9,29,1941) + time.hms(4,25,9)) => 9.00
6088 xdate.second(date.mdy(4,19,1943) + time.hms(6,49,27)) => 27.00
6090 xdate.second(date.mdy(10,7,1943) + time.hms(2,57,52)) => 52.00
6092 xdate.second(date.mdy(3,17,1992) + time.hms(16,45,44)) => 44.00
6094 xdate.second(date.mdy(2,25,1996) + time.hms(21,30,57)) => 57.00
6096 xdate.second(date.mdy(9,29,1941) + time.hms(4,25,9)) => 9.00
6098 xdate.second(date.mdy(4,19,43) + time.hms(6,49,27)) => 27.00
6100 xdate.second(date.mdy(10,7,43) + time.hms(2,57,52)) => 52.00
6102 xdate.second(date.mdy(3,17,92) + time.hms(16,45,44)) => 44.00
6104 xdate.second(date.mdy(2,25,96) + time.hms(21,30,57)) => 57.00
6106 xdate.second(date.mdy(11,10,2038) + time.hms(22,30,4)) => 4.00
6108 xdate.second(date.mdy(7,18,2094) + time.hms(1,56,51)) => 51.00
6113 AT_SETUP([expressions - XDATE.TDAY])
6114 AT_KEYWORDS([expression expressions evaluate])
6115 AT_DATA([evaluate-base.sps], [dnl
6117 DEBUG EVALUATE SET opt.
6118 DEBUG EVALUATE /xdate.tday(date.mdy(6,10,1648) + time.hms(0,0,0)).
6119 DEBUG EVALUATE /xdate.tday(date.mdy(6,30,1680) + time.hms(4,50,38)).
6120 DEBUG EVALUATE /xdate.tday(date.mdy(7,24,1716) + time.hms(12,31,35)).
6121 DEBUG EVALUATE /xdate.tday(date.mdy(6,19,1768) + time.hms(12,47,53)).
6122 DEBUG EVALUATE /xdate.tday(date.mdy(8,2,1819) + time.hms(1,26,0)).
6123 DEBUG EVALUATE /xdate.tday(date.mdy(3,27,1839) + time.hms(20,58,11)).
6124 DEBUG EVALUATE /xdate.tday(date.mdy(4,19,1903) + time.hms(7,36,5)).
6125 DEBUG EVALUATE /xdate.tday(date.mdy(8,25,1929) + time.hms(15,43,49)).
6126 DEBUG EVALUATE /xdate.tday(date.mdy(9,29,1941) + time.hms(4,25,9)).
6127 DEBUG EVALUATE /xdate.tday(date.mdy(4,19,1943) + time.hms(6,49,27)).
6128 DEBUG EVALUATE /xdate.tday(date.mdy(10,7,1943) + time.hms(2,57,52)).
6129 DEBUG EVALUATE /xdate.tday(date.mdy(3,17,1992) + time.hms(16,45,44)).
6130 DEBUG EVALUATE /xdate.tday(date.mdy(2,25,1996) + time.hms(21,30,57)).
6131 DEBUG EVALUATE /xdate.tday(date.mdy(9,29,1941) + time.hms(4,25,9)).
6132 DEBUG EVALUATE /xdate.tday(date.mdy(4,19,43) + time.hms(6,49,27)).
6133 DEBUG EVALUATE /xdate.tday(date.mdy(10,7,43) + time.hms(2,57,52)).
6134 DEBUG EVALUATE /xdate.tday(date.mdy(3,17,92) + time.hms(16,45,44)).
6135 DEBUG EVALUATE /xdate.tday(date.mdy(2,25,96) + time.hms(21,30,57)).
6136 DEBUG EVALUATE /xdate.tday(date.mdy(11,10,2038) + time.hms(22,30,4)).
6137 DEBUG EVALUATE /xdate.tday(date.mdy(7,18,2094) + time.hms(1,56,51)).
6140 for opt in OPT NOOPT; do
6142 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6143 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6144 xdate.tday(date.mdy(6,10,1648) + time.hms(0,0,0)) => 23981.00
6146 xdate.tday(date.mdy(6,30,1680) + time.hms(4,50,38)) => 35689.00
6148 xdate.tday(date.mdy(7,24,1716) + time.hms(12,31,35)) => 48861.00
6150 xdate.tday(date.mdy(6,19,1768) + time.hms(12,47,53)) => 67819.00
6152 xdate.tday(date.mdy(8,2,1819) + time.hms(1,26,0)) => 86489.00
6154 xdate.tday(date.mdy(3,27,1839) + time.hms(20,58,11)) => 93666.00
6156 xdate.tday(date.mdy(4,19,1903) + time.hms(7,36,5)) => 117064.00
6158 xdate.tday(date.mdy(8,25,1929) + time.hms(15,43,49)) => 126689.00
6160 xdate.tday(date.mdy(9,29,1941) + time.hms(4,25,9)) => 131107.00
6162 xdate.tday(date.mdy(4,19,1943) + time.hms(6,49,27)) => 131674.00
6164 xdate.tday(date.mdy(10,7,1943) + time.hms(2,57,52)) => 131845.00
6166 xdate.tday(date.mdy(3,17,1992) + time.hms(16,45,44)) => 149539.00
6168 xdate.tday(date.mdy(2,25,1996) + time.hms(21,30,57)) => 150979.00
6170 xdate.tday(date.mdy(9,29,1941) + time.hms(4,25,9)) => 131107.00
6172 xdate.tday(date.mdy(4,19,43) + time.hms(6,49,27)) => 131674.00
6174 xdate.tday(date.mdy(10,7,43) + time.hms(2,57,52)) => 131845.00
6176 xdate.tday(date.mdy(3,17,92) + time.hms(16,45,44)) => 149539.00
6178 xdate.tday(date.mdy(2,25,96) + time.hms(21,30,57)) => 150979.00
6180 xdate.tday(date.mdy(11,10,2038) + time.hms(22,30,4)) => 166578.00
6182 xdate.tday(date.mdy(7,18,2094) + time.hms(1,56,51)) => 186917.00
6187 AT_SETUP([expressions - XDATE.TIME])
6188 AT_KEYWORDS([expression expressions evaluate])
6189 AT_DATA([evaluate-base.sps], [dnl
6191 DEBUG EVALUATE SET opt.
6192 DEBUG EVALUATE /xdate.time(date.mdy(6,10,1648) + time.hms(0,0,0)).
6193 DEBUG EVALUATE /xdate.time(date.mdy(6,30,1680) + time.hms(4,50,38)).
6194 DEBUG EVALUATE /xdate.time(date.mdy(7,24,1716) + time.hms(12,31,35)).
6195 DEBUG EVALUATE /xdate.time(date.mdy(6,19,1768) + time.hms(12,47,53)).
6196 DEBUG EVALUATE /xdate.time(date.mdy(8,2,1819) + time.hms(1,26,0)).
6197 DEBUG EVALUATE /xdate.time(date.mdy(3,27,1839) + time.hms(20,58,11)).
6198 DEBUG EVALUATE /xdate.time(date.mdy(4,19,1903) + time.hms(7,36,5)).
6199 DEBUG EVALUATE /xdate.time(date.mdy(8,25,1929) + time.hms(15,43,49)).
6200 DEBUG EVALUATE /xdate.time(date.mdy(9,29,1941) + time.hms(4,25,9)).
6201 DEBUG EVALUATE /xdate.time(date.mdy(4,19,1943) + time.hms(6,49,27)).
6202 DEBUG EVALUATE /xdate.time(date.mdy(10,7,1943) + time.hms(2,57,52)).
6203 DEBUG EVALUATE /xdate.time(date.mdy(3,17,1992) + time.hms(16,45,44)).
6204 DEBUG EVALUATE /xdate.time(date.mdy(2,25,1996) + time.hms(21,30,57)).
6205 DEBUG EVALUATE /xdate.time(date.mdy(9,29,1941) + time.hms(4,25,9)).
6206 DEBUG EVALUATE /xdate.time(date.mdy(4,19,43) + time.hms(6,49,27)).
6207 DEBUG EVALUATE /xdate.time(date.mdy(10,7,43) + time.hms(2,57,52)).
6208 DEBUG EVALUATE /xdate.time(date.mdy(3,17,92) + time.hms(16,45,44)).
6209 DEBUG EVALUATE /xdate.time(date.mdy(2,25,96) + time.hms(21,30,57)).
6210 DEBUG EVALUATE /xdate.time(date.mdy(11,10,2038) + time.hms(22,30,4)).
6211 DEBUG EVALUATE /xdate.time(date.mdy(7,18,2094) + time.hms(1,56,51)).
6214 for opt in OPT NOOPT; do
6216 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6217 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6218 xdate.time(date.mdy(6,10,1648) + time.hms(0,0,0)) => 0.00
6220 xdate.time(date.mdy(6,30,1680) + time.hms(4,50,38)) => 17438.00
6222 xdate.time(date.mdy(7,24,1716) + time.hms(12,31,35)) => 45095.00
6224 xdate.time(date.mdy(6,19,1768) + time.hms(12,47,53)) => 46073.00
6226 xdate.time(date.mdy(8,2,1819) + time.hms(1,26,0)) => 5160.00
6228 xdate.time(date.mdy(3,27,1839) + time.hms(20,58,11)) => 75491.00
6230 xdate.time(date.mdy(4,19,1903) + time.hms(7,36,5)) => 27365.00
6232 xdate.time(date.mdy(8,25,1929) + time.hms(15,43,49)) => 56629.00
6234 xdate.time(date.mdy(9,29,1941) + time.hms(4,25,9)) => 15909.00
6236 xdate.time(date.mdy(4,19,1943) + time.hms(6,49,27)) => 24567.00
6238 xdate.time(date.mdy(10,7,1943) + time.hms(2,57,52)) => 10672.00
6240 xdate.time(date.mdy(3,17,1992) + time.hms(16,45,44)) => 60344.00
6242 xdate.time(date.mdy(2,25,1996) + time.hms(21,30,57)) => 77457.00
6244 xdate.time(date.mdy(9,29,1941) + time.hms(4,25,9)) => 15909.00
6246 xdate.time(date.mdy(4,19,43) + time.hms(6,49,27)) => 24567.00
6248 xdate.time(date.mdy(10,7,43) + time.hms(2,57,52)) => 10672.00
6250 xdate.time(date.mdy(3,17,92) + time.hms(16,45,44)) => 60344.00
6252 xdate.time(date.mdy(2,25,96) + time.hms(21,30,57)) => 77457.00
6254 xdate.time(date.mdy(11,10,2038) + time.hms(22,30,4)) => 81004.00
6256 xdate.time(date.mdy(7,18,2094) + time.hms(1,56,51)) => 7011.00
6261 AT_SETUP([expressions - XDATE.WEEK])
6262 AT_KEYWORDS([expression expressions evaluate])
6263 AT_DATA([evaluate-base.sps], [dnl
6265 DEBUG EVALUATE SET opt.
6266 DEBUG EVALUATE /xdate.week(date.mdy(6,10,1648) + time.hms(0,0,0)).
6267 DEBUG EVALUATE /xdate.week(date.mdy(6,30,1680) + time.hms(4,50,38)).
6268 DEBUG EVALUATE /xdate.week(date.mdy(7,24,1716) + time.hms(12,31,35)).
6269 DEBUG EVALUATE /xdate.week(date.mdy(6,19,1768) + time.hms(12,47,53)).
6270 DEBUG EVALUATE /xdate.week(date.mdy(8,2,1819) + time.hms(1,26,0)).
6271 DEBUG EVALUATE /xdate.week(date.mdy(3,27,1839) + time.hms(20,58,11)).
6272 DEBUG EVALUATE /xdate.week(date.mdy(4,19,1903) + time.hms(7,36,5)).
6273 DEBUG EVALUATE /xdate.week(date.mdy(8,25,1929) + time.hms(15,43,49)).
6274 DEBUG EVALUATE /xdate.week(date.mdy(9,29,1941) + time.hms(4,25,9)).
6275 DEBUG EVALUATE /xdate.week(date.mdy(4,19,1943) + time.hms(6,49,27)).
6276 DEBUG EVALUATE /xdate.week(date.mdy(10,7,1943) + time.hms(2,57,52)).
6277 DEBUG EVALUATE /xdate.week(date.mdy(3,17,1992) + time.hms(16,45,44)).
6278 DEBUG EVALUATE /xdate.week(date.mdy(2,25,1996) + time.hms(21,30,57)).
6279 DEBUG EVALUATE /xdate.week(date.mdy(9,29,1941) + time.hms(4,25,9)).
6280 DEBUG EVALUATE /xdate.week(date.mdy(4,19,43) + time.hms(6,49,27)).
6281 DEBUG EVALUATE /xdate.week(date.mdy(10,7,43) + time.hms(2,57,52)).
6282 DEBUG EVALUATE /xdate.week(date.mdy(3,17,92) + time.hms(16,45,44)).
6283 DEBUG EVALUATE /xdate.week(date.mdy(2,25,96) + time.hms(21,30,57)).
6284 DEBUG EVALUATE /xdate.week(date.mdy(11,10,2038) + time.hms(22,30,4)).
6285 DEBUG EVALUATE /xdate.week(date.mdy(7,18,2094) + time.hms(1,56,51)).
6288 for opt in OPT NOOPT; do
6290 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6291 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6292 xdate.week(date.mdy(6,10,1648) + time.hms(0,0,0)) => 24.00
6294 xdate.week(date.mdy(6,30,1680) + time.hms(4,50,38)) => 26.00
6296 xdate.week(date.mdy(7,24,1716) + time.hms(12,31,35)) => 30.00
6298 xdate.week(date.mdy(6,19,1768) + time.hms(12,47,53)) => 25.00
6300 xdate.week(date.mdy(8,2,1819) + time.hms(1,26,0)) => 31.00
6302 xdate.week(date.mdy(3,27,1839) + time.hms(20,58,11)) => 13.00
6304 xdate.week(date.mdy(4,19,1903) + time.hms(7,36,5)) => 16.00
6306 xdate.week(date.mdy(8,25,1929) + time.hms(15,43,49)) => 34.00
6308 xdate.week(date.mdy(9,29,1941) + time.hms(4,25,9)) => 39.00
6310 xdate.week(date.mdy(4,19,1943) + time.hms(6,49,27)) => 16.00
6312 xdate.week(date.mdy(10,7,1943) + time.hms(2,57,52)) => 40.00
6314 xdate.week(date.mdy(3,17,1992) + time.hms(16,45,44)) => 11.00
6316 xdate.week(date.mdy(2,25,1996) + time.hms(21,30,57)) => 8.00
6318 xdate.week(date.mdy(9,29,1941) + time.hms(4,25,9)) => 39.00
6320 xdate.week(date.mdy(4,19,43) + time.hms(6,49,27)) => 16.00
6322 xdate.week(date.mdy(10,7,43) + time.hms(2,57,52)) => 40.00
6324 xdate.week(date.mdy(3,17,92) + time.hms(16,45,44)) => 11.00
6326 xdate.week(date.mdy(2,25,96) + time.hms(21,30,57)) => 8.00
6328 xdate.week(date.mdy(11,10,2038) + time.hms(22,30,4)) => 45.00
6330 xdate.week(date.mdy(7,18,2094) + time.hms(1,56,51)) => 29.00
6335 AT_SETUP([expressions - XDATE.WKDAY])
6336 AT_KEYWORDS([expression expressions evaluate])
6337 AT_DATA([evaluate-base.sps], [dnl
6339 DEBUG EVALUATE SET opt.
6340 DEBUG EVALUATE /xdate.wkday(date.mdy(6,10,1648)).
6341 DEBUG EVALUATE /xdate.wkday(date.mdy(6,30,1680)).
6342 DEBUG EVALUATE /xdate.wkday(date.mdy(7,24,1716)).
6343 DEBUG EVALUATE /xdate.wkday(date.mdy(6,19,1768)).
6344 DEBUG EVALUATE /xdate.wkday(date.mdy(8,2,1819)).
6345 DEBUG EVALUATE /xdate.wkday(date.mdy(3,27,1839)).
6346 DEBUG EVALUATE /xdate.wkday(date.mdy(4,19,1903)).
6347 DEBUG EVALUATE /xdate.wkday(date.mdy(8,25,1929)).
6348 DEBUG EVALUATE /xdate.wkday(date.mdy(9,29,1941)).
6349 DEBUG EVALUATE /xdate.wkday(date.mdy(4,19,1943)).
6350 DEBUG EVALUATE /xdate.wkday(date.mdy(10,7,1943)).
6351 DEBUG EVALUATE /xdate.wkday(date.mdy(3,17,1992)).
6352 DEBUG EVALUATE /xdate.wkday(date.mdy(2,25,1996)).
6353 DEBUG EVALUATE /xdate.wkday(date.mdy(9,29,1941)).
6354 DEBUG EVALUATE /xdate.wkday(date.mdy(4,19,43)).
6355 DEBUG EVALUATE /xdate.wkday(date.mdy(10,7,43)).
6356 DEBUG EVALUATE /xdate.wkday(date.mdy(3,17,92)).
6357 DEBUG EVALUATE /xdate.wkday(date.mdy(2,25,96)).
6358 DEBUG EVALUATE /xdate.wkday(date.mdy(11,10,2038)).
6359 DEBUG EVALUATE /xdate.wkday(date.mdy(7,18,2094)).
6362 for opt in OPT NOOPT; do
6364 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6365 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6366 xdate.wkday(date.mdy(6,10,1648)) => 4.00
6368 xdate.wkday(date.mdy(6,30,1680)) => 1.00
6370 xdate.wkday(date.mdy(7,24,1716)) => 6.00
6372 xdate.wkday(date.mdy(6,19,1768)) => 1.00
6374 xdate.wkday(date.mdy(8,2,1819)) => 2.00
6376 xdate.wkday(date.mdy(3,27,1839)) => 4.00
6378 xdate.wkday(date.mdy(4,19,1903)) => 1.00
6380 xdate.wkday(date.mdy(8,25,1929)) => 1.00
6382 xdate.wkday(date.mdy(9,29,1941)) => 2.00
6384 xdate.wkday(date.mdy(4,19,1943)) => 2.00
6386 xdate.wkday(date.mdy(10,7,1943)) => 5.00
6388 xdate.wkday(date.mdy(3,17,1992)) => 3.00
6390 xdate.wkday(date.mdy(2,25,1996)) => 1.00
6392 xdate.wkday(date.mdy(9,29,1941)) => 2.00
6394 xdate.wkday(date.mdy(4,19,43)) => 2.00
6396 xdate.wkday(date.mdy(10,7,43)) => 5.00
6398 xdate.wkday(date.mdy(3,17,92)) => 3.00
6400 xdate.wkday(date.mdy(2,25,96)) => 1.00
6402 xdate.wkday(date.mdy(11,10,2038)) => 4.00
6404 xdate.wkday(date.mdy(7,18,2094)) => 1.00
6409 AT_SETUP([expressions - XDATE.YEAR])
6410 AT_KEYWORDS([expression expressions evaluate])
6411 AT_DATA([evaluate-base.sps], [dnl
6413 DEBUG EVALUATE SET opt.
6414 DEBUG EVALUATE /xdate.year(date.mdy(6,10,1648) + time.hms(0,0,0)).
6415 DEBUG EVALUATE /xdate.year(date.mdy(6,30,1680) + time.hms(4,50,38)).
6416 DEBUG EVALUATE /xdate.year(date.mdy(7,24,1716) + time.hms(12,31,35)).
6417 DEBUG EVALUATE /xdate.year(date.mdy(6,19,1768) + time.hms(12,47,53)).
6418 DEBUG EVALUATE /xdate.year(date.mdy(8,2,1819) + time.hms(1,26,0)).
6419 DEBUG EVALUATE /xdate.year(date.mdy(3,27,1839) + time.hms(20,58,11)).
6420 DEBUG EVALUATE /xdate.year(date.mdy(4,19,1903) + time.hms(7,36,5)).
6421 DEBUG EVALUATE /xdate.year(date.mdy(8,25,1929) + time.hms(15,43,49)).
6422 DEBUG EVALUATE /xdate.year(date.mdy(9,29,1941) + time.hms(4,25,9)).
6423 DEBUG EVALUATE /xdate.year(date.mdy(4,19,1943) + time.hms(6,49,27)).
6424 DEBUG EVALUATE /xdate.year(date.mdy(10,7,1943) + time.hms(2,57,52)).
6425 DEBUG EVALUATE /xdate.year(date.mdy(3,17,1992) + time.hms(16,45,44)).
6426 DEBUG EVALUATE /xdate.year(date.mdy(2,25,1996) + time.hms(21,30,57)).
6427 DEBUG EVALUATE /xdate.year(date.mdy(9,29,1941) + time.hms(4,25,9)).
6428 DEBUG EVALUATE /xdate.year(date.mdy(4,19,43) + time.hms(6,49,27)).
6429 DEBUG EVALUATE /xdate.year(date.mdy(10,7,43) + time.hms(2,57,52)).
6430 DEBUG EVALUATE /xdate.year(date.mdy(3,17,92) + time.hms(16,45,44)).
6431 DEBUG EVALUATE /xdate.year(date.mdy(2,25,96) + time.hms(21,30,57)).
6432 DEBUG EVALUATE /xdate.year(date.mdy(11,10,2038) + time.hms(22,30,4)).
6433 DEBUG EVALUATE /xdate.year(date.mdy(7,18,2094) + time.hms(1,56,51)).
6436 for opt in OPT NOOPT; do
6438 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6439 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6440 xdate.year(date.mdy(6,10,1648) + time.hms(0,0,0)) => 1648.00
6442 xdate.year(date.mdy(6,30,1680) + time.hms(4,50,38)) => 1680.00
6444 xdate.year(date.mdy(7,24,1716) + time.hms(12,31,35)) => 1716.00
6446 xdate.year(date.mdy(6,19,1768) + time.hms(12,47,53)) => 1768.00
6448 xdate.year(date.mdy(8,2,1819) + time.hms(1,26,0)) => 1819.00
6450 xdate.year(date.mdy(3,27,1839) + time.hms(20,58,11)) => 1839.00
6452 xdate.year(date.mdy(4,19,1903) + time.hms(7,36,5)) => 1903.00
6454 xdate.year(date.mdy(8,25,1929) + time.hms(15,43,49)) => 1929.00
6456 xdate.year(date.mdy(9,29,1941) + time.hms(4,25,9)) => 1941.00
6458 xdate.year(date.mdy(4,19,1943) + time.hms(6,49,27)) => 1943.00
6460 xdate.year(date.mdy(10,7,1943) + time.hms(2,57,52)) => 1943.00
6462 xdate.year(date.mdy(3,17,1992) + time.hms(16,45,44)) => 1992.00
6464 xdate.year(date.mdy(2,25,1996) + time.hms(21,30,57)) => 1996.00
6466 xdate.year(date.mdy(9,29,1941) + time.hms(4,25,9)) => 1941.00
6468 xdate.year(date.mdy(4,19,43) + time.hms(6,49,27)) => 1943.00
6470 xdate.year(date.mdy(10,7,43) + time.hms(2,57,52)) => 1943.00
6472 xdate.year(date.mdy(3,17,92) + time.hms(16,45,44)) => 1992.00
6474 xdate.year(date.mdy(2,25,96) + time.hms(21,30,57)) => 1996.00
6476 xdate.year(date.mdy(11,10,2038) + time.hms(22,30,4)) => 2038.00
6478 xdate.year(date.mdy(7,18,2094) + time.hms(1,56,51)) => 2094.00
6483 AT_SETUP([expressions - DATEDIFF years])
6484 AT_KEYWORDS([expression expressions evaluate])
6485 AT_DATA([evaluate-base.sps], [dnl
6487 DEBUG EVALUATE SET opt.
6489 DEBUG EVALUATE /datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'years').
6490 DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'years').
6491 DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'years').
6492 DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'years').
6493 DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'years').
6494 DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'years').
6495 DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'years').
6496 DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'years').
6497 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'years').
6498 DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'years').
6499 DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'years').
6500 DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'years').
6501 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'years').
6502 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'years').
6503 DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'years').
6504 DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'years').
6505 DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'years').
6506 DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'years').
6507 DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'years').
6508 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'years').
6509 DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'years').
6510 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'years').
6512 DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'years').
6513 DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'years').
6514 DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'years').
6515 DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'years').
6516 DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'years').
6517 DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'years').
6518 DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'years').
6519 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'years').
6520 DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'years').
6521 DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'years').
6522 DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'years').
6523 DEBUG EVALUATE /datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'years').
6524 DEBUG EVALUATE /datediff(date.mdy(2,25,1996), date.mdy(9,29,1941), 'years').
6525 DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(9,29,1941), 'years').
6526 DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'years').
6527 DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'years').
6528 DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'years').
6529 DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(2,25,96), 'years').
6530 DEBUG EVALUATE /datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'years').
6531 DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'years').
6532 DEBUG EVALUATE /datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'years').
6533 DEBUG EVALUATE /datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'years').
6536 for opt in OPT NOOPT; do
6538 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6539 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6540 datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'years') => -32.00
6542 datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'years') => -36.00
6544 datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'years') => -51.00
6546 datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'years') => -51.00
6548 datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'years') => -19.00
6550 datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'years') => -64.00
6552 datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'years') => -26.00
6554 datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'years') => -12.00
6556 datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'years') => -1.00
6558 datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'years') => 0.00
6560 datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'years') => -48.00
6562 datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'years') => -3.00
6564 datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'years') => -54.00
6566 datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'years') => -1.00
6568 datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'years') => 0.00
6570 datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'years') => -48.00
6572 datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'years') => -3.00
6574 datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'years') => -42.00
6576 datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'years') => -55.00
6578 datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'years') => -3.00
6580 datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'years') => -4.00
6582 datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'years') => -2.00
6584 datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'years') => 32.00
6586 datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'years') => 36.00
6588 datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'years') => 51.00
6590 datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'years') => 51.00
6592 datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'years') => 19.00
6594 datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'years') => 64.00
6596 datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'years') => 26.00
6598 datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'years') => 12.00
6600 datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'years') => 1.00
6602 datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'years') => 0.00
6604 datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'years') => 48.00
6606 datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'years') => 3.00
6608 datediff(date.mdy(2,25,1996), date.mdy(9,29,1941), 'years') => 54.00
6610 datediff(date.mdy(4,19,43), date.mdy(9,29,1941), 'years') => 1.00
6612 datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'years') => 0.00
6614 datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'years') => 48.00
6616 datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'years') => 3.00
6618 datediff(date.mdy(11,10,2038), date.mdy(2,25,96), 'years') => 42.00
6620 datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'years') => 55.00
6622 datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'years') => 3.00
6624 datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'years') => 4.00
6626 datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'years') => 2.00
6631 AT_SETUP([expressions - DATEDIFF quarters])
6632 AT_KEYWORDS([expression expressions evaluate])
6633 AT_DATA([evaluate-base.sps], [dnl
6635 DEBUG EVALUATE SET opt.
6636 DEBUG EVALUATE /datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'quarters').
6637 DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'quarters').
6638 DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'quarters').
6639 DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'quarters').
6640 DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'quarters').
6641 DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'quarters').
6642 DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'quarters').
6643 DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'quarters').
6644 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'quarters').
6645 DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'quarters').
6646 DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'quarters').
6647 DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'quarters').
6648 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'quarters').
6649 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'quarters').
6650 DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'quarters').
6651 DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'quarters').
6652 DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'quarters').
6653 DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'quarters').
6654 DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'quarters').
6655 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'quarters').
6656 DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'quarters').
6657 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'quarters').
6659 DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'quarters').
6660 DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'quarters').
6661 DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'quarters').
6662 DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'quarters').
6663 DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'quarters').
6664 DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'quarters').
6665 DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'quarters').
6666 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'quarters').
6667 DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'quarters').
6668 DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'quarters').
6669 DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'quarters').
6670 DEBUG EVALUATE /datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'quarters').
6671 DEBUG EVALUATE /datediff(date.mdy(2,25,1996), date.mdy(9,29,1941), 'quarters').
6672 DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(9,29,1941), 'quarters').
6673 DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'quarters').
6674 DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'quarters').
6675 DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'quarters').
6676 DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(2,25,96), 'quarters').
6677 DEBUG EVALUATE /datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'quarters').
6678 DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'quarters').
6679 DEBUG EVALUATE /datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'quarters').
6680 DEBUG EVALUATE /datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'quarters').
6683 for opt in OPT NOOPT; do
6685 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6686 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6687 datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'quarters') => -128.00
6689 datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'quarters') => -144.00
6691 datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'quarters') => -207.00
6693 datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'quarters') => -204.00
6695 datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'quarters') => -78.00
6697 datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'quarters') => -256.00
6699 datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'quarters') => -105.00
6701 datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'quarters') => -48.00
6703 datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'quarters') => -6.00
6705 datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'quarters') => -1.00
6707 datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'quarters') => -193.00
6709 datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'quarters') => -15.00
6711 datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'quarters') => -217.00
6713 datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'quarters') => -6.00
6715 datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'quarters') => -1.00
6717 datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'quarters') => -193.00
6719 datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'quarters') => -15.00
6721 datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'quarters') => -170.00
6723 datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'quarters') => -222.00
6725 datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'quarters') => -15.00
6727 datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'quarters') => -16.00
6729 datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'quarters') => -11.00
6731 datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'quarters') => 128.00
6733 datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'quarters') => 144.00
6735 datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'quarters') => 207.00
6737 datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'quarters') => 204.00
6739 datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'quarters') => 78.00
6741 datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'quarters') => 256.00
6743 datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'quarters') => 105.00
6745 datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'quarters') => 48.00
6747 datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'quarters') => 6.00
6749 datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'quarters') => 1.00
6751 datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'quarters') => 193.00
6753 datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'quarters') => 15.00
6755 datediff(date.mdy(2,25,1996), date.mdy(9,29,1941), 'quarters') => 217.00
6757 datediff(date.mdy(4,19,43), date.mdy(9,29,1941), 'quarters') => 6.00
6759 datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'quarters') => 1.00
6761 datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'quarters') => 193.00
6763 datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'quarters') => 15.00
6765 datediff(date.mdy(11,10,2038), date.mdy(2,25,96), 'quarters') => 170.00
6767 datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'quarters') => 222.00
6769 datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'quarters') => 15.00
6771 datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'quarters') => 16.00
6773 datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'quarters') => 11.00
6778 AT_SETUP([expressions - DATEDIFF months])
6779 AT_KEYWORDS([expression expressions evaluate])
6780 AT_DATA([evaluate-base.sps], [dnl
6782 DEBUG EVALUATE SET opt.
6783 DEBUG EVALUATE /datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'months').
6784 DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'months').
6785 DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'months').
6786 DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'months').
6787 DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'months').
6788 DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'months').
6789 DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'months').
6790 DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'months').
6791 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'months').
6792 DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'months').
6793 DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'months').
6794 DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'months').
6795 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'months').
6796 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'months').
6797 DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'months').
6798 DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'months').
6799 DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'months').
6800 DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'months').
6801 DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'months').
6802 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'months').
6803 DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'months').
6804 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'months').
6806 DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'months').
6807 DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'months').
6808 DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'months').
6809 DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'months').
6810 DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'months').
6811 DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'months').
6812 DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'months').
6813 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'months').
6814 DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'months').
6815 DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'months').
6816 DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'months').
6817 DEBUG EVALUATE /datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'months').
6818 DEBUG EVALUATE /datediff(date.mdy(2,25,1996), date.mdy(9,29,1941), 'months').
6819 DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(9,29,1941), 'months').
6820 DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'months').
6821 DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'months').
6822 DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'months').
6823 DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(2,25,96), 'months').
6824 DEBUG EVALUATE /datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'months').
6825 DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'months').
6826 DEBUG EVALUATE /datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'months').
6827 DEBUG EVALUATE /datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'months').
6830 for opt in OPT NOOPT; do
6832 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6833 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6834 datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'months') => -384.00
6836 datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'months') => -432.00
6838 datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'months') => -622.00
6840 datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'months') => -613.00
6842 datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'months') => -235.00
6844 datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'months') => -768.00
6846 datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'months') => -316.00
6848 datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'months') => -145.00
6850 datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'months') => -18.00
6852 datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'months') => -5.00
6854 datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'months') => -581.00
6856 datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'months') => -47.00
6858 datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'months') => -652.00
6860 datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'months') => -18.00
6862 datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'months') => -5.00
6864 datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'months') => -581.00
6866 datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'months') => -47.00
6868 datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'months') => -512.00
6870 datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'months') => -668.00
6872 datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'months') => -47.00
6874 datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'months') => -48.00
6876 datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'months') => -35.00
6878 datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'months') => 384.00
6880 datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'months') => 432.00
6882 datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'months') => 622.00
6884 datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'months') => 613.00
6886 datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'months') => 235.00
6888 datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'months') => 768.00
6890 datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'months') => 316.00
6892 datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'months') => 145.00
6894 datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'months') => 18.00
6896 datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'months') => 5.00
6898 datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'months') => 581.00
6900 datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'months') => 47.00
6902 datediff(date.mdy(2,25,1996), date.mdy(9,29,1941), 'months') => 652.00
6904 datediff(date.mdy(4,19,43), date.mdy(9,29,1941), 'months') => 18.00
6906 datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'months') => 5.00
6908 datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'months') => 581.00
6910 datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'months') => 47.00
6912 datediff(date.mdy(11,10,2038), date.mdy(2,25,96), 'months') => 512.00
6914 datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'months') => 668.00
6916 datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'months') => 47.00
6918 datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'months') => 48.00
6920 datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'months') => 35.00
6925 AT_SETUP([expressions - DATEDIFF weeks])
6926 AT_KEYWORDS([expression expressions evaluate])
6927 AT_DATA([evaluate-base.sps], [dnl
6929 DEBUG EVALUATE SET opt.
6930 DEBUG EVALUATE /datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'weeks').
6931 DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'weeks').
6932 DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'weeks').
6933 DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'weeks').
6934 DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'weeks').
6935 DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'weeks').
6936 DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'weeks').
6937 DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'weeks').
6938 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'weeks').
6939 DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'weeks').
6940 DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'weeks').
6941 DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'weeks').
6942 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'weeks').
6943 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'weeks').
6944 DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'weeks').
6945 DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'weeks').
6946 DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'weeks').
6947 DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'weeks').
6948 DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'weeks').
6949 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'weeks').
6950 DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'weeks').
6951 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'weeks').
6954 for opt in OPT NOOPT; do
6956 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6957 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6958 datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'weeks') => -1672.00
6960 datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'weeks') => -1881.00
6962 datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'weeks') => -2708.00
6964 datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'weeks') => -2667.00
6966 datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'weeks') => -1025.00
6968 datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'weeks') => -3342.00
6970 datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'weeks') => -1375.00
6972 datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'weeks') => -631.00
6974 datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'weeks') => -81.00
6976 datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'weeks') => -24.00
6978 datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'weeks') => -2527.00
6980 datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'weeks') => -205.00
6982 datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'weeks') => -2838.00
6984 datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'weeks') => -81.00
6986 datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'weeks') => -24.00
6988 datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'weeks') => -2527.00
6990 datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'weeks') => -205.00
6992 datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'weeks') => -2228.00
6994 datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'weeks') => -2905.00
6996 datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'weeks') => -208.00
6998 datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'weeks') => -208.00
7000 datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'weeks') => -156.00
7005 AT_SETUP([expressions - DATEDIFF days])
7006 AT_KEYWORDS([expression expressions evaluate])
7007 AT_DATA([evaluate-base.sps], [dnl
7009 DEBUG EVALUATE SET opt.
7010 DEBUG EVALUATE /datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'days').
7011 DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'days').
7012 DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'days').
7013 DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'days').
7014 DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'days').
7015 DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'days').
7016 DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'days').
7017 DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'days').
7018 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'days').
7019 DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'days').
7020 DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'days').
7021 DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'days').
7022 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'days').
7023 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'days').
7024 DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'days').
7025 DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'days').
7026 DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'days').
7027 DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'days').
7028 DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'days').
7029 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'days').
7030 DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'days').
7031 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'days').
7034 for opt in OPT NOOPT; do
7036 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
7037 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
7038 datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'days') => -11708.00
7040 datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'days') => -13172.00
7042 datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'days') => -18958.00
7044 datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'days') => -18670.00
7046 datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'days') => -7177.00
7048 datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'days') => -23398.00
7050 datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'days') => -9625.00
7052 datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'days') => -4418.00
7054 datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'days') => -567.00
7056 datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'days') => -171.00
7058 datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'days') => -17694.00
7060 datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'days') => -1440.00
7062 datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'days') => -19872.00
7064 datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'days') => -567.00
7066 datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'days') => -171.00
7068 datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'days') => -17694.00
7070 datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'days') => -1440.00
7072 datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'days') => -15599.00
7074 datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'days') => -20339.00
7076 datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'days') => -1460.00
7078 datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'days') => -1461.00
7080 datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'days') => -1094.00
7085 dnl time of day is significant for DATEDIFF
7086 AT_SETUP([expressions - DATEDIFF time of day])
7087 AT_KEYWORDS([expression expressions evaluate])
7088 AT_DATA([evaluate-base.sps], [dnl
7090 DEBUG EVALUATE SET opt.
7091 DEBUG EVALUATE /datediff(date.mdy(10,15,1910) + 234, date.mdy(10,10,1910) + 123, 'days').
7092 DEBUG EVALUATE /datediff(date.mdy(10,15,1910) + 123, date.mdy(10,10,1910) + 234, 'days').
7093 DEBUG EVALUATE /datediff(date.mdy(10,24,1910) + 234, date.mdy(10,10,1910) + 123, 'weeks').
7094 DEBUG EVALUATE /datediff(date.mdy(10,24,1910) + 123, date.mdy(10,10,1910) + 234, 'weeks').
7095 DEBUG EVALUATE /datediff(date.mdy(10,10,1910) + 234, date.mdy(5,10,1910) + 123, 'months').
7096 DEBUG EVALUATE /datediff(date.mdy(10,10,1910) + 123, date.mdy(5,10,1910) + 234, 'months').
7097 DEBUG EVALUATE /datediff(date.mdy(5,10,1919) + 234, date.mdy(5,10,1910) + 123, 'years').
7098 DEBUG EVALUATE /datediff(date.mdy(5,10,1919) + 123, date.mdy(5,10,1910) + 234, 'years').
7100 DEBUG EVALUATE /datediff(date.mdy(10,10,1910) + 123, date.mdy(10,15,1910) + 234, 'days').
7101 DEBUG EVALUATE /datediff(date.mdy(10,10,1910) + 234, date.mdy(10,15,1910) + 123, 'days').
7102 DEBUG EVALUATE /datediff(date.mdy(10,10,1910) + 123, date.mdy(10,24,1910) + 234, 'weeks').
7103 DEBUG EVALUATE /datediff(date.mdy(10,10,1910) + 234, date.mdy(10,24,1910) + 123, 'weeks').
7104 DEBUG EVALUATE /datediff(date.mdy(5,10,1910) + 123, date.mdy(10,10,1910) + 234, 'months').
7105 DEBUG EVALUATE /datediff(date.mdy(5,10,1910) + 234, date.mdy(10,10,1910) + 123, 'months').
7106 DEBUG EVALUATE /datediff(date.mdy(5,10,1910) + 123, date.mdy(5,10,1919) + 234, 'years').
7107 DEBUG EVALUATE /datediff(date.mdy(5,10,1910) + 234, date.mdy(5,10,1919) + 123, 'years').
7110 for opt in OPT NOOPT; do
7112 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
7113 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
7114 datediff(date.mdy(10,15,1910) + 234, date.mdy(10,10,1910) + 123, 'days') =>
7117 datediff(date.mdy(10,15,1910) + 123, date.mdy(10,10,1910) + 234, 'days') =>
7120 datediff(date.mdy(10,24,1910) + 234, date.mdy(10,10,1910) + 123, 'weeks') =>
7123 datediff(date.mdy(10,24,1910) + 123, date.mdy(10,10,1910) + 234, 'weeks') =>
7126 datediff(date.mdy(10,10,1910) + 234, date.mdy(5,10,1910) + 123, 'months') =>
7129 datediff(date.mdy(10,10,1910) + 123, date.mdy(5,10,1910) + 234, 'months') =>
7132 datediff(date.mdy(5,10,1919) + 234, date.mdy(5,10,1910) + 123, 'years') => 9.00
7134 datediff(date.mdy(5,10,1919) + 123, date.mdy(5,10,1910) + 234, 'years') => 8.00
7136 datediff(date.mdy(10,10,1910) + 123, date.mdy(10,15,1910) + 234, 'days') =>
7139 datediff(date.mdy(10,10,1910) + 234, date.mdy(10,15,1910) + 123, 'days') =>
7142 datediff(date.mdy(10,10,1910) + 123, date.mdy(10,24,1910) + 234, 'weeks') =>
7145 datediff(date.mdy(10,10,1910) + 234, date.mdy(10,24,1910) + 123, 'weeks') =>
7148 datediff(date.mdy(5,10,1910) + 123, date.mdy(10,10,1910) + 234, 'months') =>
7151 datediff(date.mdy(5,10,1910) + 234, date.mdy(10,10,1910) + 123, 'months') =>
7154 datediff(date.mdy(5,10,1910) + 123, date.mdy(5,10,1919) + 234, 'years') =>
7157 datediff(date.mdy(5,10,1910) + 234, date.mdy(5,10,1919) + 123, 'years') =>
7163 AT_SETUP([expressions - DATESUM with non-leap year])
7164 AT_KEYWORDS([expression expressions evaluate])
7165 AT_DATA([evaluate-base.sps], [dnl
7167 DEBUG EVALUATE SET opt.
7168 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 1, 'months') - date.mdy(1,1,1900)).
7169 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 2, 'months') - date.mdy(1,1,1900)).
7170 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 3, 'months') - date.mdy(1,1,1900)).
7171 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 4, 'months') - date.mdy(1,1,1900)).
7172 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 5.4, 'months') - date.mdy(1,1,1900)).
7173 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 6, 'months') - date.mdy(1,1,1900)).
7174 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 7, 'months') - date.mdy(1,1,1900)).
7175 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 8, 'months') - date.mdy(1,1,1900)).
7176 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 9, 'months') - date.mdy(1,1,1900)).
7177 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 10, 'months') - date.mdy(1,1,1900)).
7178 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 11, 'months') - date.mdy(1,1,1900)).
7179 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 12, 'months') - date.mdy(1,1,1900)).
7180 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 13.9, 'months') - date.mdy(1,1,1900)).
7181 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 1, 'months', 'rollover') - date.mdy(1,1,1900)).
7182 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 2, 'months', 'rollover') - date.mdy(1,1,1900)).
7183 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 3.2, 'months', 'rollover') - date.mdy(1,1,1900)).
7184 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 4, 'months', 'rollover') - date.mdy(1,1,1900)).
7185 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 5, 'months', 'rollover') - date.mdy(1,1,1900)).
7186 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 6, 'months', 'rollover') - date.mdy(1,1,1900)).
7187 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 7, 'months', 'rollover') - date.mdy(1,1,1900)).
7188 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 8, 'months', 'rollover') - date.mdy(1,1,1900)).
7189 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 9, 'months', 'rollover') - date.mdy(1,1,1900)).
7190 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 10, 'months', 'rollover') - date.mdy(1,1,1900)).
7191 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 11, 'months', 'rollover') - date.mdy(1,1,1900)).
7192 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 12, 'months', 'rollover') - date.mdy(1,1,1900)).
7193 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 13, 'months', 'rollover') - date.mdy(1,1,1900)).
7196 for opt in OPT NOOPT; do
7198 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
7199 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
7200 ctime.days(datesum(date.mdy(1,31,1900), 1, 'months') - date.mdy(1,1,1900)) =>
7203 ctime.days(datesum(date.mdy(1,31,1900), 2, 'months') - date.mdy(1,1,1900)) =>
7206 ctime.days(datesum(date.mdy(1,31,1900), 3, 'months') - date.mdy(1,1,1900)) =>
7209 ctime.days(datesum(date.mdy(1,31,1900), 4, 'months') - date.mdy(1,1,1900)) =>
7212 ctime.days(datesum(date.mdy(1,31,1900), 5.4, 'months') - date.mdy(1,1,1900)) =>
7215 ctime.days(datesum(date.mdy(1,31,1900), 6, 'months') - date.mdy(1,1,1900)) =>
7218 ctime.days(datesum(date.mdy(1,31,1900), 7, 'months') - date.mdy(1,1,1900)) =>
7221 ctime.days(datesum(date.mdy(1,31,1900), 8, 'months') - date.mdy(1,1,1900)) =>
7224 ctime.days(datesum(date.mdy(1,31,1900), 9, 'months') - date.mdy(1,1,1900)) =>
7227 ctime.days(datesum(date.mdy(1,31,1900), 10, 'months') - date.mdy(1,1,1900)) =>
7230 ctime.days(datesum(date.mdy(1,31,1900), 11, 'months') - date.mdy(1,1,1900)) =>
7233 ctime.days(datesum(date.mdy(1,31,1900), 12, 'months') - date.mdy(1,1,1900)) =>
7236 ctime.days(datesum(date.mdy(1,31,1900), 13.9, 'months') - date.mdy(1,1,1900))
7239 ctime.days(datesum(date.mdy(1,31,1900), 1, 'months', 'rollover') - date.
7240 mdy(1,1,1900)) => 61.00
7242 ctime.days(datesum(date.mdy(1,31,1900), 2, 'months', 'rollover') - date.
7243 mdy(1,1,1900)) => 89.00
7245 ctime.days(datesum(date.mdy(1,31,1900), 3.2, 'months', 'rollover') - date.
7246 mdy(1,1,1900)) => 120.00
7248 ctime.days(datesum(date.mdy(1,31,1900), 4, 'months', 'rollover') - date.
7249 mdy(1,1,1900)) => 150.00
7251 ctime.days(datesum(date.mdy(1,31,1900), 5, 'months', 'rollover') - date.
7252 mdy(1,1,1900)) => 181.00
7254 ctime.days(datesum(date.mdy(1,31,1900), 6, 'months', 'rollover') - date.
7255 mdy(1,1,1900)) => 211.00
7257 ctime.days(datesum(date.mdy(1,31,1900), 7, 'months', 'rollover') - date.
7258 mdy(1,1,1900)) => 242.00
7260 ctime.days(datesum(date.mdy(1,31,1900), 8, 'months', 'rollover') - date.
7261 mdy(1,1,1900)) => 273.00
7263 ctime.days(datesum(date.mdy(1,31,1900), 9, 'months', 'rollover') - date.
7264 mdy(1,1,1900)) => 303.00
7266 ctime.days(datesum(date.mdy(1,31,1900), 10, 'months', 'rollover') - date.
7267 mdy(1,1,1900)) => 334.00
7269 ctime.days(datesum(date.mdy(1,31,1900), 11, 'months', 'rollover') - date.
7270 mdy(1,1,1900)) => 364.00
7272 ctime.days(datesum(date.mdy(1,31,1900), 12, 'months', 'rollover') - date.
7273 mdy(1,1,1900)) => 395.00
7275 ctime.days(datesum(date.mdy(1,31,1900), 13, 'months', 'rollover') - date.
7276 mdy(1,1,1900)) => 426.00
7281 AT_SETUP([expressions - DATESUM with leap year])
7282 AT_KEYWORDS([expression expressions evaluate])
7283 AT_DATA([evaluate-base.sps], [dnl
7285 DEBUG EVALUATE SET opt.
7286 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 1, 'months') - date.mdy(1,1,1904)).
7287 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 2.5, 'months') - date.mdy(1,1,1904)).
7288 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 3, 'months') - date.mdy(1,1,1904)).
7289 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 4.9, 'months') - date.mdy(1,1,1904)).
7290 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 5.1, 'months') - date.mdy(1,1,1904)).
7291 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 6, 'months') - date.mdy(1,1,1904)).
7292 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 7, 'months') - date.mdy(1,1,1904)).
7293 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 8, 'months') - date.mdy(1,1,1904)).
7294 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 9, 'months') - date.mdy(1,1,1904)).
7295 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 10, 'months') - date.mdy(1,1,1904)).
7296 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 11, 'months') - date.mdy(1,1,1904)).
7297 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 12, 'months') - date.mdy(1,1,1904)).
7298 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 13, 'months') - date.mdy(1,1,1904)).
7299 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 1, 'months', 'rollover') - date.mdy(1,1,1904)).
7300 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 2, 'months', 'rollover') - date.mdy(1,1,1904)).
7301 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 3, 'months', 'rollover') - date.mdy(1,1,1904)).
7302 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 4, 'months', 'rollover') - date.mdy(1,1,1904)).
7303 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 5, 'months', 'rollover') - date.mdy(1,1,1904)).
7304 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 6, 'months', 'rollover') - date.mdy(1,1,1904)).
7305 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 7, 'months', 'rollover') - date.mdy(1,1,1904)).
7306 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 8, 'months', 'rollover') - date.mdy(1,1,1904)).
7307 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 9, 'months', 'rollover') - date.mdy(1,1,1904)).
7308 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 10, 'months', 'rollover') - date.mdy(1,1,1904)).
7309 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 11, 'months', 'rollover') - date.mdy(1,1,1904)).
7310 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 12, 'months', 'rollover') - date.mdy(1,1,1904)).
7311 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 13, 'months', 'rollover') - date.mdy(1,1,1904)).
7314 for opt in OPT NOOPT; do
7316 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
7317 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
7318 ctime.days(datesum(date.mdy(1,31,1904), 1, 'months') - date.mdy(1,1,1904)) =>
7321 ctime.days(datesum(date.mdy(1,31,1904), 2.5, 'months') - date.mdy(1,1,1904)) =>
7324 ctime.days(datesum(date.mdy(1,31,1904), 3, 'months') - date.mdy(1,1,1904)) =>
7327 ctime.days(datesum(date.mdy(1,31,1904), 4.9, 'months') - date.mdy(1,1,1904)) =>
7330 ctime.days(datesum(date.mdy(1,31,1904), 5.1, 'months') - date.mdy(1,1,1904)) =>
7333 ctime.days(datesum(date.mdy(1,31,1904), 6, 'months') - date.mdy(1,1,1904)) =>
7336 ctime.days(datesum(date.mdy(1,31,1904), 7, 'months') - date.mdy(1,1,1904)) =>
7339 ctime.days(datesum(date.mdy(1,31,1904), 8, 'months') - date.mdy(1,1,1904)) =>
7342 ctime.days(datesum(date.mdy(1,31,1904), 9, 'months') - date.mdy(1,1,1904)) =>
7345 ctime.days(datesum(date.mdy(1,31,1904), 10, 'months') - date.mdy(1,1,1904)) =>
7348 ctime.days(datesum(date.mdy(1,31,1904), 11, 'months') - date.mdy(1,1,1904)) =>
7351 ctime.days(datesum(date.mdy(1,31,1904), 12, 'months') - date.mdy(1,1,1904)) =>
7354 ctime.days(datesum(date.mdy(1,31,1904), 13, 'months') - date.mdy(1,1,1904)) =>
7357 ctime.days(datesum(date.mdy(1,31,1904), 1, 'months', 'rollover') - date.
7358 mdy(1,1,1904)) => 61.00
7360 ctime.days(datesum(date.mdy(1,31,1904), 2, 'months', 'rollover') - date.
7361 mdy(1,1,1904)) => 90.00
7363 ctime.days(datesum(date.mdy(1,31,1904), 3, 'months', 'rollover') - date.
7364 mdy(1,1,1904)) => 121.00
7366 ctime.days(datesum(date.mdy(1,31,1904), 4, 'months', 'rollover') - date.
7367 mdy(1,1,1904)) => 151.00
7369 ctime.days(datesum(date.mdy(1,31,1904), 5, 'months', 'rollover') - date.
7370 mdy(1,1,1904)) => 182.00
7372 ctime.days(datesum(date.mdy(1,31,1904), 6, 'months', 'rollover') - date.
7373 mdy(1,1,1904)) => 212.00
7375 ctime.days(datesum(date.mdy(1,31,1904), 7, 'months', 'rollover') - date.
7376 mdy(1,1,1904)) => 243.00
7378 ctime.days(datesum(date.mdy(1,31,1904), 8, 'months', 'rollover') - date.
7379 mdy(1,1,1904)) => 274.00
7381 ctime.days(datesum(date.mdy(1,31,1904), 9, 'months', 'rollover') - date.
7382 mdy(1,1,1904)) => 304.00
7384 ctime.days(datesum(date.mdy(1,31,1904), 10, 'months', 'rollover') - date.
7385 mdy(1,1,1904)) => 335.00
7387 ctime.days(datesum(date.mdy(1,31,1904), 11, 'months', 'rollover') - date.
7388 mdy(1,1,1904)) => 365.00
7390 ctime.days(datesum(date.mdy(1,31,1904), 12, 'months', 'rollover') - date.
7391 mdy(1,1,1904)) => 396.00
7393 ctime.days(datesum(date.mdy(1,31,1904), 13, 'months', 'rollover') - date.
7394 mdy(1,1,1904)) => 427.00
7399 AT_SETUP([expressions - DATESUM])
7400 AT_KEYWORDS([expression expressions evaluate])
7401 AT_DATA([evaluate-base.sps], [dnl
7403 DEBUG EVALUATE SET opt.
7404 DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,10,1648), 1, 'weeks') - date.mdy(6,10,1648)).
7405 DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'weeks') - date.mdy(6,30,1680)).
7406 DEBUG EVALUATE /ctime.days(datesum(date.mdy(7,24,1716), -3, 'weeks') - date.mdy(7,24,1716)).
7407 DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,19,1768), 4, 'weeks') - date.mdy(6,19,1768)).
7408 DEBUG EVALUATE /ctime.days(datesum(date.mdy(8,2,1819), 5, 'weeks') - date.mdy(8,2,1819)).
7410 DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,10,1648), 1, 'days') - date.mdy(6,10,1648)).
7411 DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'days') - date.mdy(6,30,1680)).
7412 DEBUG EVALUATE /ctime.days(datesum(date.mdy(7,24,1716), -3, 'days') - date.mdy(7,24,1716)).
7413 DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,19,1768), 4, 'days') - date.mdy(6,19,1768)).
7414 DEBUG EVALUATE /ctime.days(datesum(date.mdy(8,2,1819), 5, 'days') - date.mdy(8,2,1819)).
7415 DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,10,1648), 1, 'hours') - date.mdy(6,10,1648)).
7416 DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'hours') - date.mdy(6,30,1680)).
7417 DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,19,1768), -4, 'hours') - date.mdy(6,19,1768)).
7418 DEBUG EVALUATE /ctime.days(datesum(date.mdy(8,2,1819), 5, 'hours') - date.mdy(8,2,1819)).
7421 for opt in OPT NOOPT; do
7423 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
7424 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
7425 ctime.days(datesum(date.mdy(6,10,1648), 1, 'weeks') - date.mdy(6,10,1648)) =>
7428 ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'weeks') - date.mdy(6,30,1680)) =>
7431 ctime.days(datesum(date.mdy(7,24,1716), -3, 'weeks') - date.mdy(7,24,1716)) =>
7434 ctime.days(datesum(date.mdy(6,19,1768), 4, 'weeks') - date.mdy(6,19,1768)) =>
7437 ctime.days(datesum(date.mdy(8,2,1819), 5, 'weeks') - date.mdy(8,2,1819)) =>
7440 ctime.days(datesum(date.mdy(6,10,1648), 1, 'days') - date.mdy(6,10,1648)) =>
7443 ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'days') - date.mdy(6,30,1680)) =>
7446 ctime.days(datesum(date.mdy(7,24,1716), -3, 'days') - date.mdy(7,24,1716)) =>
7449 ctime.days(datesum(date.mdy(6,19,1768), 4, 'days') - date.mdy(6,19,1768)) =>
7452 ctime.days(datesum(date.mdy(8,2,1819), 5, 'days') - date.mdy(8,2,1819)) => 5.00
7454 ctime.days(datesum(date.mdy(6,10,1648), 1, 'hours') - date.mdy(6,10,1648)) =>
7457 ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'hours') - date.mdy(6,30,1680)) =>
7460 ctime.days(datesum(date.mdy(6,19,1768), -4, 'hours') - date.mdy(6,19,1768)) =>
7463 ctime.days(datesum(date.mdy(8,2,1819), 5, 'hours') - date.mdy(8,2,1819)) =>
7469 AT_SETUP([expressions - DATESUM preserves time of day for units of days and longer])
7470 AT_KEYWORDS([expression expressions evaluate])
7471 AT_DATA([evaluate-base.sps], [dnl
7473 DEBUG EVALUATE SET opt.
7474 DEBUG EVALUATE /ctime.days(datesum(date.mdy(8,2,1819) + time.hms(1,2,3), 5, 'days') - (date.mdy(8,2,1819) + time.hms(1,2,3))).
7475 DEBUG EVALUATE /ctime.days(datesum(date.mdy(8,2,1819) + time.hms(1,2,3), 5, 'weeks') - (date.mdy(8,2,1819) + time.hms(1,2,3))).
7476 DEBUG EVALUATE /ctime.days(datesum(date.mdy(8,2,1819) + time.hms(1,2,3), 5, 'months') - (date.mdy(8,2,1819) + time.hms(1,2,3))).
7477 DEBUG EVALUATE /ctime.days(datesum(date.mdy(8,2,1819) + time.hms(1,2,3), 5, 'years') - (date.mdy(8,2,1819) + time.hms(1,2,3))).
7480 for opt in OPT NOOPT; do
7482 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
7483 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
7484 ctime.days(datesum(date.mdy(8,2,1819) + time.hms(1,2,3), 5, 'days') - (date.
7485 mdy(8,2,1819) + time.hms(1,2,3))) => 5.00
7487 ctime.days(datesum(date.mdy(8,2,1819) + time.hms(1,2,3), 5, 'weeks') - (date.
7488 mdy(8,2,1819) + time.hms(1,2,3))) => 35.00
7490 ctime.days(datesum(date.mdy(8,2,1819) + time.hms(1,2,3), 5, 'months') - (date.
7491 mdy(8,2,1819) + time.hms(1,2,3))) => 153.00
7493 ctime.days(datesum(date.mdy(8,2,1819) + time.hms(1,2,3), 5, 'years') - (date.
7494 mdy(8,2,1819) + time.hms(1,2,3))) => 1827.00
7499 dnl These test values are from Applied Statistics, Algorithm AS 310.
7500 AT_SETUP([expressions - NCDF.BETA])
7501 AT_KEYWORDS([expression expressions evaluate])
7502 AT_DATA([evaluate-base.sps], [dnl
7504 DEBUG EVALUATE SET opt.
7505 DEBUG EVALUATE /1000 * ncdf.beta(.868,10,20,150).
7506 DEBUG EVALUATE /1000 * ncdf.beta(.9,10,10,120).
7507 DEBUG EVALUATE /1000 * ncdf.beta(.88,15,5,80).
7508 DEBUG EVALUATE /1000 * ncdf.beta(.85,20,10,110).
7509 DEBUG EVALUATE /1000 * ncdf.beta(.66,20,30,65).
7510 DEBUG EVALUATE /1000 * ncdf.beta(.72,20,50,130).
7511 DEBUG EVALUATE /1000 * ncdf.beta(.72,30,20,80).
7512 DEBUG EVALUATE /1000 * ncdf.beta(.8,30,40,130).
7515 for opt in OPT NOOPT; do
7517 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
7518 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
7519 1000 * ncdf.beta(.868,10,20,150) => 937.66
7521 1000 * ncdf.beta(.9,10,10,120) => 730.68
7523 1000 * ncdf.beta(.88,15,5,80) => 160.43
7525 1000 * ncdf.beta(.85,20,10,110) => 186.75
7527 1000 * ncdf.beta(.66,20,30,65) => 655.94
7529 1000 * ncdf.beta(.72,20,50,130) => 979.69
7531 1000 * ncdf.beta(.72,30,20,80) => 116.24
7533 1000 * ncdf.beta(.8,30,40,130) => 993.04
7540 [[X], [1.00], [], [(X = 1.00)]],
7542 dnl FIXME: out-of-range and nearly out-of-range values on dates
7544 dnl Tests correctness of generic optimizations in optimize_tree().
7545 AT_SETUP([expressions - generic tree optimizations])
7546 AT_KEYWORDS([expression expressions evaluate])
7547 AT_DATA([evaluate-base.sps], [dnl
7549 DEBUG EVALUATE SET opt.
7550 DEBUG EVALUATE (x=10) /x + 0.
7551 DEBUG EVALUATE (x=-3) /x - 0.
7552 DEBUG EVALUATE (x=5) /0 + x.
7553 DEBUG EVALUATE (x=10) /x * 1.
7554 DEBUG EVALUATE (x=-3) /1 * x.
7555 DEBUG EVALUATE (x=5) /x / 1.
7556 DEBUG EVALUATE (x=10) /0 * x.
7557 DEBUG EVALUATE (x=-3) /x * 0.
7558 DEBUG EVALUATE (x=5) /0 / x.
7559 DEBUG EVALUATE (x=5) /mod(0, x).
7560 DEBUG EVALUATE (x=5) /x ** 1.
7561 DEBUG EVALUATE (x=5) /x ** 2.
7564 for opt in OPT NOOPT; do
7566 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
7567 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
7595 AT_SETUP([expressions - LAG])
7596 AT_DATA([lag.sps], [dnl
7611 AT_CHECK([pspp -o pspp.csv lag.sps])
7612 AT_CHECK([cat pspp.csv], [0], [dnl
7613 Table: Reading 1 record from INLINE.
7614 Variable,Record,Columns,Format
7627 AT_SETUP([expression - LAG crash])
7628 AT_DATA([lag.sps], [dnl
7635 DO IF (x <> LAG(x) ).
7641 AT_CHECK([pspp -o pspp.csv lag.sps])
7642 AT_CHECK([cat pspp.csv], [0], [dnl
7643 Table: Reading free-form data from INLINE.
7651 dnl Tests for a bug which caused UNIFORM(x) to always return zero.
7652 AT_SETUP([expressions - UNIFORM])
7653 AT_DATA([uniform.sps], [dnl
7656 + loop #i = 1 to 20.
7657 + do repeat response=R1.
7658 + compute response = uniform(10).
7667 AT_CHECK([pspp -o pspp.csv uniform.sps])
7668 AT_CHECK([cat pspp.csv], [0], [dnl
7694 AT_SETUP([expressions - VALUELABEL])
7695 AT_DATA([valuelabel.sps], [dnl
7696 DATA LIST notable /n 1 s 2(a).
7697 VALUE LABELS /n 0 'Very dissatisfied'
7699 1.5 'Slightly Peeved'
7703 VALUE LABELS /s 'a' 'Wouldn''t buy again'
7708 STRING nlabel slabel(a10).
7709 COMPUTE nlabel = VALUELABEL(n).
7710 COMPUTE slabel = VALUELABEL(s).
7723 AT_CHECK([pspp -o pspp.csv valuelabel.sps])
7724 AT_CHECK([cat pspp.csv], [0], [dnl
7728 0,a,Very dissa,Wouldn't b
7729 1,b,Dissatisfi,Unhappy
7731 3,d,Satisfied,Satiated
7732 4,e,Very satis,Elated
7738 AT_SETUP([expressions - variables])
7739 AT_DATA([variables.sps], [dnl
7740 DATA LIST NOTABLE/N1 TO N5 1-5.
7741 MISSING VALUES N1 TO N5 (3 THRU 5, 1).
7753 COMPUTE MC=NMISS(N1 TO N5).
7754 COMPUTE VC=NVALID(N1 TO N5).
7756 COMPUTE S1=SYSMIS(N1).
7757 COMPUTE S2=SYSMIS(N2).
7758 COMPUTE S3=SYSMIS(N3).
7759 COMPUTE S4=SYSMIS(N4).
7760 COMPUTE S5=SYSMIS(N5).
7762 COMPUTE M1=MISSING(N1).
7763 COMPUTE M2=MISSING(N2).
7764 COMPUTE M3=MISSING(N3).
7765 COMPUTE M4=MISSING(N4).
7766 COMPUTE M5=MISSING(N5).
7768 COMPUTE V1=VALUE(N1).
7769 COMPUTE V2=VALUE(N2).
7770 COMPUTE V3=VALUE(N3).
7771 COMPUTE V4=VALUE(N4).
7772 COMPUTE V5=VALUE(N5).
7778 AT_CHECK([pspp -o pspp.csv variables.sps])
7779 AT_CHECK([cat pspp.csv], [0], [dnl
7781 N1,N2,N3,N4,N5,P1,P2,P3,P4,P5,MC,VC,S1,S2,S3,S4,S5,M1,M2,M3,M4,M5,V1,V2,V3,V4,V5
7782 1,2,3,4,5,.,2,.,.,.,4,1,0,0,0,0,0,1,0,1,1,1,1,2,3,4,5
7783 6,7,8,9,.,6,7,8,9,.,1,4,0,0,0,0,1,0,0,0,0,1,6,7,8,9,.
7787 AT_SETUP([expressions - vectors])
7788 AT_DATA([vectors.sps], [dnl
7789 DATA LIST NOTABLE /N1 TO N5 1-5.
7790 MISSING VALUES N1 TO N5 (3 THRU 5, 1).
7799 COMPUTE X(I)=N(I) + 1.
7806 AT_CHECK([pspp -o pspp.csv vectors.sps])
7807 AT_CHECK([cat pspp.csv], [0], [dnl
7809 N1,N2,N3,N4,N5,X1,X2,X3,X4,X5,I
7810 1,2,3,4,5,.,3,.,.,.,5
7811 6,7,8,9,.,7,8,9,10,.,5