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 at `!': expecting end
733 evaluate.sps:18.17-18.25: warning: DEBUG EVALUATE: Chaining relational
734 operators (e.g. `a < b < c') will not produce the mathematically expected
735 result. Use the AND logical operator to fix the problem (e.g. `a < b AND b <
736 c'). To disable this warning, insert parentheses.
737 18 | DEBUG EVALUATE /3 > 2 > 1.
752 evaluate.sps:25.21: error: DEBUG EVALUATE: Syntax error at `='.
756 evaluate.sps:26.17-26.29: error: DEBUG EVALUATE: Both operands of <= must have
758 26 | DEBUG EVALUATE /1 <= 'foobar'.
761 evaluate.sps:26.17: note: DEBUG EVALUATE: This operand has type 'number'.
762 26 | DEBUG EVALUATE /1 <= 'foobar'.
765 evaluate.sps:26.22-26.29: note: DEBUG EVALUATE: This operand has type 'string'.
766 26 | DEBUG EVALUATE /1 <= 'foobar'.
769 1 <= 'foobar' => error
771 evaluate.sps:27.17-27.27: error: DEBUG EVALUATE: Both operands of <= must have
773 27 | DEBUG EVALUATE /'baz' <= 10.
776 evaluate.sps:27.17-27.21: note: DEBUG EVALUATE: This operand has type 'string'.
777 27 | DEBUG EVALUATE /'baz' <= 10.
780 evaluate.sps:27.26-27.27: note: DEBUG EVALUATE: This operand has type 'number'.
781 27 | DEBUG EVALUATE /'baz' <= 10.
786 evaluate.sps:28.17-28.30: error: DEBUG EVALUATE: Both operands of <= must have
788 28 | DEBUG EVALUATE /'quux' <= 5.55.
791 evaluate.sps:28.17-28.22: note: DEBUG EVALUATE: This operand has type 'string'.
792 28 | DEBUG EVALUATE /'quux' <= 5.55.
795 evaluate.sps:28.27-28.30: note: DEBUG EVALUATE: This operand has type 'number'.
796 28 | DEBUG EVALUATE /'quux' <= 5.55.
799 'quux' <= 5.55 => error
801 '0123' <= '0123' => true
803 '0123' <= '0124' => true
805 '0124' le '0123' => false
807 '0123 ' <= '0123' => true
809 '0123' le '0123 ' => true
819 evaluate.sps:39.17-39.29: error: DEBUG EVALUATE: Both operands of < must have
821 39 | DEBUG EVALUATE /1 lt 'foobar'.
824 evaluate.sps:39.17: note: DEBUG EVALUATE: This operand has type 'number'.
825 39 | DEBUG EVALUATE /1 lt 'foobar'.
828 evaluate.sps:39.22-39.29: note: DEBUG EVALUATE: This operand has type 'string'.
829 39 | DEBUG EVALUATE /1 lt 'foobar'.
832 1 lt 'foobar' => error
834 evaluate.sps:40.17-40.29: error: DEBUG EVALUATE: Both operands of < must have
836 40 | DEBUG EVALUATE /5 lt 'foobar'.
839 evaluate.sps:40.17: note: DEBUG EVALUATE: This operand has type 'number'.
840 40 | DEBUG EVALUATE /5 lt 'foobar'.
843 evaluate.sps:40.22-40.29: note: DEBUG EVALUATE: This operand has type 'string'.
844 40 | DEBUG EVALUATE /5 lt 'foobar'.
847 5 lt 'foobar' => error
849 evaluate.sps:41.17-41.26: error: DEBUG EVALUATE: Both operands of < must have
851 41 | DEBUG EVALUATE /'baz' < 10.
854 evaluate.sps:41.17-41.21: note: DEBUG EVALUATE: This operand has type 'string'.
855 41 | DEBUG EVALUATE /'baz' < 10.
858 evaluate.sps:41.25-41.26: note: DEBUG EVALUATE: This operand has type 'number'.
859 41 | DEBUG EVALUATE /'baz' < 10.
864 evaluate.sps:42.17-42.29: error: DEBUG EVALUATE: Both operands of < must have
866 42 | DEBUG EVALUATE /'quux' < 5.55.
869 evaluate.sps:42.17-42.22: note: DEBUG EVALUATE: This operand has type 'string'.
870 42 | DEBUG EVALUATE /'quux' < 5.55.
873 evaluate.sps:42.26-42.29: note: DEBUG EVALUATE: This operand has type 'number'.
874 42 | DEBUG EVALUATE /'quux' < 5.55.
877 'quux' < 5.55 => error
879 '0123' lt '0123' => false
881 '0123' < '0124' => true
883 '0124' lt '0123' => false
885 '0123 ' < '0123' => false
887 '0123' lt '0123 ' => false
892 AT_SETUP([expressions - >= > <>])
893 AT_KEYWORDS([expression expressions evaluate ge gt ne])
894 AT_DATA([evaluate-base.sps], [dnl
896 DEBUG EVALUATE SET opt.
897 DEBUG EVALUATE /1 >= 2.
898 DEBUG EVALUATE /2.5 >= 1.5
899 DEBUG EVALUATE /1 ge 2.
900 DEBUG EVALUATE /2 >= 2.
901 DEBUG EVALUATE /2 ge 2.
902 DEBUG EVALUATE /2 > = 2.
903 DEBUG EVALUATE /1 >= 'foobar'.
904 DEBUG EVALUATE /5 ge 'foobar'.
905 DEBUG EVALUATE /'baz' ge 10.
906 DEBUG EVALUATE /'0123' ge '0123'.
907 DEBUG EVALUATE /'0123' >= '0124'.
908 DEBUG EVALUATE /'0124' >= '0123'.
909 DEBUG EVALUATE /'0123 ' ge '0123'.
910 DEBUG EVALUATE /'0123' >= '0123 '.
912 DEBUG EVALUATE /1 > 2.
913 DEBUG EVALUATE /2.5 > 1.5
914 DEBUG EVALUATE /3.5 gt 4.
915 DEBUG EVALUATE /4 gt 3.5
916 DEBUG EVALUATE /1 gt 'foobar'.
917 DEBUG EVALUATE /'baz' > 10.
918 DEBUG EVALUATE /'0123' > '0123'.
919 DEBUG EVALUATE /'0123' > '0124'.
920 DEBUG EVALUATE /'0124' > '0123'.
921 DEBUG EVALUATE /'0123 ' > '0123'.
922 DEBUG EVALUATE /'0123 ' > '0123 '.
924 DEBUG EVALUATE /1 ne 1.
925 DEBUG EVALUATE /1 ~= 1.
926 DEBUG EVALUATE /1 <> 2.
927 DEBUG EVALUATE /2 ne 3.
928 DEBUG EVALUATE /1 ~= 'foobar'.
929 DEBUG EVALUATE /'baz' ne 10.
930 DEBUG EVALUATE /'quux' ~= 5.55.
931 DEBUG EVALUATE /'foobar' <> 'foobar'.
932 DEBUG EVALUATE /'quux' ne 'bar'.
933 DEBUG EVALUATE /'bar ' <> 'bar'.
934 DEBUG EVALUATE /'asdf ' ~= "asdf ".
935 DEBUG EVALUATE /1 < > 1.
936 DEBUG EVALUATE /1 ~ = 1.
939 for opt in OPT NOOPT; do
941 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
942 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
953 evaluate.sps:8.21: error: DEBUG EVALUATE: Syntax error at `='.
957 evaluate.sps:9.17-9.29: error: DEBUG EVALUATE: Both operands of >= must have
959 9 | DEBUG EVALUATE /1 >= 'foobar'.
962 evaluate.sps:9.17: note: DEBUG EVALUATE: This operand has type 'number'.
963 9 | DEBUG EVALUATE /1 >= 'foobar'.
966 evaluate.sps:9.22-9.29: note: DEBUG EVALUATE: This operand has type 'string'.
967 9 | DEBUG EVALUATE /1 >= 'foobar'.
970 1 >= 'foobar' => error
972 evaluate.sps:10.17-10.29: error: DEBUG EVALUATE: Both operands of >= must have
974 10 | DEBUG EVALUATE /5 ge 'foobar'.
977 evaluate.sps:10.17: note: DEBUG EVALUATE: This operand has type 'number'.
978 10 | DEBUG EVALUATE /5 ge 'foobar'.
981 evaluate.sps:10.22-10.29: note: DEBUG EVALUATE: This operand has type 'string'.
982 10 | DEBUG EVALUATE /5 ge 'foobar'.
985 5 ge 'foobar' => error
987 evaluate.sps:11.17-11.27: error: DEBUG EVALUATE: Both operands of >= must have
989 11 | DEBUG EVALUATE /'baz' ge 10.
992 evaluate.sps:11.17-11.21: note: DEBUG EVALUATE: This operand has type 'string'.
993 11 | DEBUG EVALUATE /'baz' ge 10.
996 evaluate.sps:11.26-11.27: note: DEBUG EVALUATE: This operand has type 'number'.
997 11 | DEBUG EVALUATE /'baz' ge 10.
1000 'baz' ge 10 => error
1002 '0123' ge '0123' => true
1004 '0123' >= '0124' => false
1006 '0124' >= '0123' => true
1008 '0123 ' ge '0123' => true
1010 '0123' >= '0123 ' => true
1020 evaluate.sps:22.17-22.29: error: DEBUG EVALUATE: Both operands of > must have
1022 22 | DEBUG EVALUATE /1 gt 'foobar'.
1025 evaluate.sps:22.17: note: DEBUG EVALUATE: This operand has type 'number'.
1026 22 | DEBUG EVALUATE /1 gt 'foobar'.
1029 evaluate.sps:22.22-22.29: note: DEBUG EVALUATE: This operand has type 'string'.
1030 22 | DEBUG EVALUATE /1 gt 'foobar'.
1033 1 gt 'foobar' => error
1035 evaluate.sps:23.17-23.26: error: DEBUG EVALUATE: Both operands of > must have
1037 23 | DEBUG EVALUATE /'baz' > 10.
1040 evaluate.sps:23.17-23.21: note: DEBUG EVALUATE: This operand has type 'string'.
1041 23 | DEBUG EVALUATE /'baz' > 10.
1044 evaluate.sps:23.25-23.26: note: DEBUG EVALUATE: This operand has type 'number'.
1045 23 | DEBUG EVALUATE /'baz' > 10.
1050 '0123' > '0123' => false
1052 '0123' > '0124' => false
1054 '0124' > '0123' => true
1056 '0123 ' > '0123' => false
1058 '0123 ' > '0123 ' => false
1068 evaluate.sps:34.17-34.29: error: DEBUG EVALUATE: Both operands of ~= must have
1070 34 | DEBUG EVALUATE /1 ~= 'foobar'.
1073 evaluate.sps:34.17: note: DEBUG EVALUATE: This operand has type 'number'.
1074 34 | DEBUG EVALUATE /1 ~= 'foobar'.
1077 evaluate.sps:34.22-34.29: note: DEBUG EVALUATE: This operand has type 'string'.
1078 34 | DEBUG EVALUATE /1 ~= 'foobar'.
1081 1 ~= 'foobar' => error
1083 evaluate.sps:35.17-35.27: error: DEBUG EVALUATE: Both operands of ~= must have
1085 35 | DEBUG EVALUATE /'baz' ne 10.
1088 evaluate.sps:35.17-35.21: note: DEBUG EVALUATE: This operand has type 'string'.
1089 35 | DEBUG EVALUATE /'baz' ne 10.
1092 evaluate.sps:35.26-35.27: note: DEBUG EVALUATE: This operand has type 'number'.
1093 35 | DEBUG EVALUATE /'baz' ne 10.
1096 'baz' ne 10 => error
1098 evaluate.sps:36.17-36.30: error: DEBUG EVALUATE: Both operands of ~= must have
1100 36 | DEBUG EVALUATE /'quux' ~= 5.55.
1103 evaluate.sps:36.17-36.22: note: DEBUG EVALUATE: This operand has type 'string'.
1104 36 | DEBUG EVALUATE /'quux' ~= 5.55.
1107 evaluate.sps:36.27-36.30: note: DEBUG EVALUATE: This operand has type 'number'.
1108 36 | DEBUG EVALUATE /'quux' ~= 5.55.
1111 'quux' ~= 5.55 => error
1113 'foobar' <> 'foobar' => false
1115 'quux' ne 'bar' => true
1117 'bar ' <> 'bar' => false
1119 'asdf ' ~= "asdf " => false
1121 evaluate.sps:41.21: error: DEBUG EVALUATE: Syntax error at `>'.
1125 evaluate.sps:42.19: error: DEBUG EVALUATE: Syntax error at `~': expecting end
1133 AT_SETUP([expressions - EXP LG10 LN SQRT ABS MOD MOD10 RND TRUNC])
1134 AT_KEYWORDS([expression expressions evaluate])
1135 AT_DATA([evaluate-base.sps], [dnl
1137 DEBUG EVALUATE SET opt.
1138 DEBUG EVALUATE /EXP(10).
1139 DEBUG EVALUATE /EXP('x').
1141 DEBUG EVALUATE /LG10(500).
1142 DEBUG EVALUATE /LG10('x').
1144 DEBUG EVALUATE /SQRT(500).
1145 DEBUG EVALUATE /SQRT(-1).
1147 DEBUG EVALUATE /ABS(-10.5).
1148 DEBUG EVALUATE /ABS(55.79).
1149 DEBUG EVALUATE /ABS(0).
1150 DEBUG EVALUATE /ABS(-0).
1152 DEBUG EVALUATE /MOD(55.5, 2).
1153 DEBUG EVALUATE /MOD(-55.5, 2).
1154 DEBUG EVALUATE /MOD(55.5, -2).
1155 DEBUG EVALUATE /MOD(-55.5, -2).
1156 DEBUG EVALUATE /MOD('a', 2).
1157 DEBUG EVALUATE /MOD(2, 'a').
1158 DEBUG EVALUATE /MOD('a', 'b').
1160 DEBUG EVALUATE /MOD10(55.5).
1161 DEBUG EVALUATE /MOD10(-55.5).
1163 DEBUG EVALUATE /RND(5.4).
1164 DEBUG EVALUATE /RND(5.6).
1165 DEBUG EVALUATE /RND(-5.4).
1166 DEBUG EVALUATE /RND(-5.6).
1167 DEBUG EVALUATE /RND(5.56, .1).
1168 DEBUG EVALUATE /RND(-5.56, .1)
1169 DEBUG EVALUATE /RND(.5).
1170 DEBUG EVALUATE /RND(.5 - 2**-53).
1171 DEBUG EVALUATE /RND(.5 - 2**-52).
1172 DEBUG EVALUATE /RND(.5 - 2**-51).
1173 DEBUG EVALUATE /RND(.5 - 2**-45).
1174 DEBUG EVALUATE /RND(.5 - 2**-45, 1, 10).
1175 DEBUG EVALUATE /RND('x').
1177 DEBUG EVALUATE /TRUNC(1.2).
1178 DEBUG EVALUATE /TRUNC(1.9).
1179 DEBUG EVALUATE /TRUNC(-1.2).
1180 DEBUG EVALUATE /TRUNC(-1.9).
1181 DEBUG EVALUATE /TRUNC(5.06, .1).
1182 DEBUG EVALUATE /TRUNC(-5.06, .1).
1183 DEBUG EVALUATE /TRUNC(1).
1184 DEBUG EVALUATE /TRUNC(1 - 2**-53).
1185 DEBUG EVALUATE /TRUNC(1 - 2**-52).
1186 DEBUG EVALUATE /TRUNC(1 - 2**-51).
1187 DEBUG EVALUATE /TRUNC(1 - 2**-45).
1188 DEBUG EVALUATE /TRUNC(1 - 2**-45, 1, 10).
1189 DEBUG EVALUATE /TRUNC('x').
1192 for opt in OPT NOOPT; do
1194 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
1195 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
1198 evaluate.sps:4.17-4.24: error: DEBUG EVALUATE: Type mismatch invoking
1199 EXP(number) as EXP(string).
1200 4 | DEBUG EVALUATE /EXP('x').
1203 evaluate.sps:4.21-4.23: note: DEBUG EVALUATE: This argument has type 'string'
1204 but 'number' is required.
1205 4 | DEBUG EVALUATE /EXP('x').
1212 evaluate.sps:7.17-7.25: error: DEBUG EVALUATE: Type mismatch invoking
1213 LG10(number) as LG10(string).
1214 7 | DEBUG EVALUATE /LG10('x').
1217 evaluate.sps:7.22-7.24: note: DEBUG EVALUATE: This argument has type 'string'
1218 but 'number' is required.
1219 7 | DEBUG EVALUATE /LG10('x').
1236 MOD(55.5, 2) => 1.50
1238 MOD(-55.5, 2) => -1.50
1240 MOD(55.5, -2) => 1.50
1242 MOD(-55.5, -2) => -1.50
1244 evaluate.sps:21.17-21.27: error: DEBUG EVALUATE: Type mismatch invoking
1245 MOD(number, number) as MOD(string, number).
1246 21 | DEBUG EVALUATE /MOD('a', 2).
1249 evaluate.sps:21.21-21.23: note: DEBUG EVALUATE: This argument has type 'string'
1250 but 'number' is required.
1251 21 | DEBUG EVALUATE /MOD('a', 2).
1254 MOD('a', 2) => error
1256 evaluate.sps:22.17-22.27: error: DEBUG EVALUATE: Type mismatch invoking
1257 MOD(number, number) as MOD(number, string).
1258 22 | DEBUG EVALUATE /MOD(2, 'a').
1261 evaluate.sps:22.24-22.26: note: DEBUG EVALUATE: This argument has type 'string'
1262 but 'number' is required.
1263 22 | DEBUG EVALUATE /MOD(2, 'a').
1266 MOD(2, 'a') => error
1268 evaluate.sps:23.17-23.29: error: DEBUG EVALUATE: Type mismatch invoking
1269 MOD(number, number) as MOD(string, string).
1270 23 | DEBUG EVALUATE /MOD('a', 'b').
1273 evaluate.sps:23.21-23.23: note: DEBUG EVALUATE: This argument has type 'string'
1274 but 'number' is required.
1275 23 | DEBUG EVALUATE /MOD('a', 'b').
1278 evaluate.sps:23.26-23.28: note: DEBUG EVALUATE: This argument has type 'string'
1279 but 'number' is required.
1280 23 | DEBUG EVALUATE /MOD('a', 'b').
1283 MOD('a', 'b') => error
1287 MOD10(-55.5) => -5.50
1297 RND(5.56, .1) => 5.60
1299 RND(-5.56, .1) => -5.60
1303 RND(.5 - 2**-53) => 1.00
1305 RND(.5 - 2**-52) => 1.00
1307 RND(.5 - 2**-51) => 1.00
1309 RND(.5 - 2**-45) => 0.00
1311 RND(.5 - 2**-45, 1, 10) => 1.00
1313 evaluate.sps:40.17-40.24: error: DEBUG EVALUATE: Function invocation
1314 RND(string) does not match any known function. Candidates are:
1317 RND(number, number, number).
1318 40 | DEBUG EVALUATE /RND('x').
1327 TRUNC(-1.2) => -1.00
1329 TRUNC(-1.9) => -1.00
1331 TRUNC(5.06, .1) => 5.00
1333 TRUNC(-5.06, .1) => -5.00
1337 TRUNC(1 - 2**-53) => 1.00
1339 TRUNC(1 - 2**-52) => 1.00
1341 TRUNC(1 - 2**-51) => 1.00
1343 TRUNC(1 - 2**-45) => 0.00
1345 TRUNC(1 - 2**-45, 1, 10) => 1.00
1347 evaluate.sps:54.17-54.26: error: DEBUG EVALUATE: Function invocation
1348 TRUNC(string) does not match any known function. Candidates are:
1350 TRUNC(number, number)
1351 TRUNC(number, number, number).
1352 54 | DEBUG EVALUATE /TRUNC('x').
1360 AT_SETUP([expressions - ACOS ARSIN ARTAN COS SIN TAN])
1361 AT_KEYWORDS([expression expressions evaluate])
1362 AT_DATA([evaluate-base.sps], [dnl
1364 DEBUG EVALUATE SET opt.
1365 DEBUG EVALUATE /ACOS(.5) / 3.14159 * 180.
1366 DEBUG EVALUATE /ARCOS(.75) / 3.14159 * 180.
1367 DEBUG EVALUATE /ARCOS(-.5) / 3.14159 * 180.
1368 DEBUG EVALUATE /ACOS(-.75) / 3.14159 * 180.
1369 DEBUG EVALUATE /ACOS(-1) / 3.14159 * 180.
1370 DEBUG EVALUATE /ARCOS(1) / 3.14159 * 180.
1371 DEBUG EVALUATE /ACOS(-1.01) / 3.14159 * 180.
1372 DEBUG EVALUATE /ARCOS(1.01) / 3.14159 * 180.
1373 DEBUG EVALUATE /ACOS('x') / 3.14159 * 180.
1375 DEBUG EVALUATE /ASIN(.5) / 3.14159 * 180.
1376 DEBUG EVALUATE /ARSIN(.25) / 3.14159 * 180.
1377 DEBUG EVALUATE /ARSIN(-.5) / 3.14159 * 180.
1378 DEBUG EVALUATE /ASIN(-.25) / 3.14159 * 180.
1379 DEBUG EVALUATE /ASIN(-1.01) / 3.14159 * 180.
1380 DEBUG EVALUATE /ARSIN(1.01) / 3.14159 * 180.
1381 DEBUG EVALUATE /ASIN('x') / 3.14159 * 180.
1383 DEBUG EVALUATE /ATAN(1) / 3.14159 * 180.
1384 DEBUG EVALUATE /ARTAN(10) / 3.14159 * 180.
1385 DEBUG EVALUATE /ARTAN(-1) / 3.14159 * 180.
1386 DEBUG EVALUATE /ATAN(-10) / 3.14159 * 180.
1387 DEBUG EVALUATE /ATAN('x') / 3.14159 * 180.
1389 DEBUG EVALUATE /COS(60 / 180 * 3.14159).
1390 DEBUG EVALUATE /COS(45 / 180 * 3.14159).
1391 DEBUG EVALUATE /COS(30 / 180 * 3.14159).
1392 DEBUG EVALUATE /COS(15 / 180 * 3.14159).
1393 DEBUG EVALUATE /COS(-60 / 180 * 3.14159).
1394 DEBUG EVALUATE /COS(-45 / 180 * 3.14159).
1395 DEBUG EVALUATE /COS(-30 / 180 * 3.14159).
1396 DEBUG EVALUATE /COS(-15 / 180 * 3.14159).
1397 DEBUG EVALUATE /COS(123 / 180 * 3.14159).
1398 DEBUG EVALUATE /COS(321 / 180 * 3.14159).
1399 DEBUG EVALUATE /COS('x').
1401 DEBUG EVALUATE /SIN(60 / 180 * 3.14159).
1402 DEBUG EVALUATE /SIN(45 / 180 * 3.14159).
1403 DEBUG EVALUATE /SIN(30 / 180 * 3.14159).
1404 DEBUG EVALUATE /SIN(15 / 180 * 3.14159).
1405 DEBUG EVALUATE /SIN(-60 / 180 * 3.14159).
1406 DEBUG EVALUATE /SIN(-45 / 180 * 3.14159).
1407 DEBUG EVALUATE /SIN(-30 / 180 * 3.14159).
1408 DEBUG EVALUATE /SIN(-15 / 180 * 3.14159).
1409 DEBUG EVALUATE /SIN(123 / 180 * 3.14159).
1410 DEBUG EVALUATE /SIN(321 / 180 * 3.14159).
1411 DEBUG EVALUATE /SIN('x').
1413 DEBUG EVALUATE /TAN(60 / 180 * 3.14159).
1414 DEBUG EVALUATE /TAN(45 / 180 * 3.14159).
1415 DEBUG EVALUATE /TAN(30 / 180 * 3.14159).
1416 DEBUG EVALUATE /TAN(15 / 180 * 3.14159).
1417 DEBUG EVALUATE /TAN(-60 / 180 * 3.14159).
1418 DEBUG EVALUATE /TAN(-45 / 180 * 3.14159).
1419 DEBUG EVALUATE /TAN(-30 / 180 * 3.14159).
1420 DEBUG EVALUATE /TAN(-15 / 180 * 3.14159).
1421 DEBUG EVALUATE /TAN(123 / 180 * 3.14159).
1422 DEBUG EVALUATE /TAN(321 / 180 * 3.14159).
1423 DEBUG EVALUATE /TAN('x').
1426 for opt in OPT NOOPT; do
1428 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
1429 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
1430 ACOS(.5) / 3.14159 * 180 => 60.00
1432 ARCOS(.75) / 3.14159 * 180 => 41.41
1434 ARCOS(-.5) / 3.14159 * 180 => 120.00
1436 ACOS(-.75) / 3.14159 * 180 => 138.59
1438 ACOS(-1) / 3.14159 * 180 => 180.00
1440 ARCOS(1) / 3.14159 * 180 => 0.00
1442 ACOS(-1.01) / 3.14159 * 180 => sysmis
1444 ARCOS(1.01) / 3.14159 * 180 => sysmis
1446 evaluate.sps:11.17-11.25: error: DEBUG EVALUATE: Type mismatch invoking
1447 ACOS(number) as ACOS(string).
1448 11 | DEBUG EVALUATE /ACOS('x') / 3.14159 * 180.
1451 evaluate.sps:11.22-11.24: note: DEBUG EVALUATE: This argument has type 'string'
1452 but 'number' is required.
1453 11 | DEBUG EVALUATE /ACOS('x') / 3.14159 * 180.
1456 ACOS('x') / 3.14159 * 180 => error
1458 ASIN(.5) / 3.14159 * 180 => 30.00
1460 ARSIN(.25) / 3.14159 * 180 => 14.48
1462 ARSIN(-.5) / 3.14159 * 180 => -30.00
1464 ASIN(-.25) / 3.14159 * 180 => -14.48
1466 ASIN(-1.01) / 3.14159 * 180 => sysmis
1468 ARSIN(1.01) / 3.14159 * 180 => sysmis
1470 evaluate.sps:19.17-19.25: error: DEBUG EVALUATE: Type mismatch invoking
1471 ASIN(number) as ASIN(string).
1472 19 | DEBUG EVALUATE /ASIN('x') / 3.14159 * 180.
1475 evaluate.sps:19.22-19.24: note: DEBUG EVALUATE: This argument has type 'string'
1476 but 'number' is required.
1477 19 | DEBUG EVALUATE /ASIN('x') / 3.14159 * 180.
1480 ASIN('x') / 3.14159 * 180 => error
1482 ATAN(1) / 3.14159 * 180 => 45.00
1484 ARTAN(10) / 3.14159 * 180 => 84.29
1486 ARTAN(-1) / 3.14159 * 180 => -45.00
1488 ATAN(-10) / 3.14159 * 180 => -84.29
1490 evaluate.sps:25.17-25.25: error: DEBUG EVALUATE: Type mismatch invoking
1491 ATAN(number) as ATAN(string).
1492 25 | DEBUG EVALUATE /ATAN('x') / 3.14159 * 180.
1495 evaluate.sps:25.22-25.24: note: DEBUG EVALUATE: This argument has type 'string'
1496 but 'number' is required.
1497 25 | DEBUG EVALUATE /ATAN('x') / 3.14159 * 180.
1500 ATAN('x') / 3.14159 * 180 => error
1502 COS(60 / 180 * 3.14159) => 0.50
1504 COS(45 / 180 * 3.14159) => 0.71
1506 COS(30 / 180 * 3.14159) => 0.87
1508 COS(15 / 180 * 3.14159) => 0.97
1510 COS(-60 / 180 * 3.14159) => 0.50
1512 COS(-45 / 180 * 3.14159) => 0.71
1514 COS(-30 / 180 * 3.14159) => 0.87
1516 COS(-15 / 180 * 3.14159) => 0.97
1518 COS(123 / 180 * 3.14159) => -0.54
1520 COS(321 / 180 * 3.14159) => 0.78
1522 evaluate.sps:37.17-37.24: error: DEBUG EVALUATE: Type mismatch invoking
1523 COS(number) as COS(string).
1524 37 | DEBUG EVALUATE /COS('x').
1527 evaluate.sps:37.21-37.23: note: DEBUG EVALUATE: This argument has type 'string'
1528 but 'number' is required.
1529 37 | DEBUG EVALUATE /COS('x').
1534 SIN(60 / 180 * 3.14159) => 0.87
1536 SIN(45 / 180 * 3.14159) => 0.71
1538 SIN(30 / 180 * 3.14159) => 0.50
1540 SIN(15 / 180 * 3.14159) => 0.26
1542 SIN(-60 / 180 * 3.14159) => -0.87
1544 SIN(-45 / 180 * 3.14159) => -0.71
1546 SIN(-30 / 180 * 3.14159) => -0.50
1548 SIN(-15 / 180 * 3.14159) => -0.26
1550 SIN(123 / 180 * 3.14159) => 0.84
1552 SIN(321 / 180 * 3.14159) => -0.63
1554 evaluate.sps:49.17-49.24: error: DEBUG EVALUATE: Type mismatch invoking
1555 SIN(number) as SIN(string).
1556 49 | DEBUG EVALUATE /SIN('x').
1559 evaluate.sps:49.21-49.23: note: DEBUG EVALUATE: This argument has type 'string'
1560 but 'number' is required.
1561 49 | DEBUG EVALUATE /SIN('x').
1566 TAN(60 / 180 * 3.14159) => 1.73
1568 TAN(45 / 180 * 3.14159) => 1.00
1570 TAN(30 / 180 * 3.14159) => 0.58
1572 TAN(15 / 180 * 3.14159) => 0.27
1574 TAN(-60 / 180 * 3.14159) => -1.73
1576 TAN(-45 / 180 * 3.14159) => -1.00
1578 TAN(-30 / 180 * 3.14159) => -0.58
1580 TAN(-15 / 180 * 3.14159) => -0.27
1582 TAN(123 / 180 * 3.14159) => -1.54
1584 TAN(321 / 180 * 3.14159) => -0.81
1586 evaluate.sps:61.17-61.24: error: DEBUG EVALUATE: Type mismatch invoking
1587 TAN(number) as TAN(string).
1588 61 | DEBUG EVALUATE /TAN('x').
1591 evaluate.sps:61.21-61.23: note: DEBUG EVALUATE: This argument has type 'string'
1592 but 'number' is required.
1593 61 | DEBUG EVALUATE /TAN('x').
1601 AT_SETUP([expressions - vector indexing])
1602 AT_KEYWORDS([expression expressions evaluate])
1603 AT_DATA([evaluate-base.sps], [dnl
1605 DEBUG EVALUATE SET opt.
1607 DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(1).
1608 DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(2).
1609 DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(3).
1610 DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v($sysmis).
1611 DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(0).
1612 DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(4).
1614 DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(1).
1615 DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(2).
1616 DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(3).
1617 DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v($sysmis).
1618 DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(0).
1619 DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(4).
1623 for opt in OPT NOOPT; do
1625 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
1626 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
1633 evaluate.sps:7.42-7.51: error: DEBUG EVALUATE: Index outside valid range 1 to
1634 3, inclusive, for vector V. The value will be treated as system-missing.
1635 7 | DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v($sysmis).
1638 evaluate.sps:7.44-7.50: note: DEBUG EVALUATE: The index is system-missing.
1639 7 | DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v($sysmis).
1642 v($sysmis) => sysmis
1644 evaluate.sps:8.42-8.45: error: DEBUG EVALUATE: Index outside valid range 1 to
1645 3, inclusive, for vector V. The value will be treated as system-missing.
1646 8 | DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(0).
1649 evaluate.sps:8.44: note: DEBUG EVALUATE: The index has value 0.
1650 8 | DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(0).
1655 evaluate.sps:9.42-9.45: error: DEBUG EVALUATE: Index outside valid range 1 to
1656 3, inclusive, for vector V. The value will be treated as system-missing.
1657 9 | DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(4).
1660 evaluate.sps:9.44: note: DEBUG EVALUATE: The index has value 4.
1661 9 | DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(4).
1672 evaluate.sps:14.51-14.60: error: DEBUG EVALUATE: Index outside valid range 1 to
1673 3, inclusive, for vector V. The value will be treated as system-missing.
1674 14 | DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v($sysmis).
1677 evaluate.sps:14.53-14.59: note: DEBUG EVALUATE: The index is system-missing.
1678 14 | DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v($sysmis).
1683 evaluate.sps:15.51-15.54: error: DEBUG EVALUATE: Index outside valid range 1 to
1684 3, inclusive, for vector V. The value will be treated as system-missing.
1685 15 | DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(0).
1688 evaluate.sps:15.53: note: DEBUG EVALUATE: The index has value 0.
1689 15 | DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(0).
1694 evaluate.sps:16.51-16.54: error: DEBUG EVALUATE: Index outside valid range 1 to
1695 3, inclusive, for vector V. The value will be treated as system-missing.
1696 16 | DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(4).
1699 evaluate.sps:16.53: note: DEBUG EVALUATE: The index has value 4.
1700 16 | DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(4).
1708 AT_SETUP([expressions - MISSING NMISS NVALID SYSMIS])
1709 AT_KEYWORDS([expression expressions evaluate])
1710 AT_DATA([evaluate-base.sps], [dnl
1712 DEBUG EVALUATE SET opt.
1713 DEBUG EVALUATE /MISSING(10).
1714 DEBUG EVALUATE /MISSING($SYSMIS).
1715 DEBUG EVALUATE /MISSING(ASIN(1.01)).
1716 DEBUG EVALUATE /MISSING(ASIN(.5)).
1717 DEBUG EVALUATE /MISSING(' ').
1719 DEBUG EVALUATE (x=5)/x.
1720 DEBUG EVALUATE (x=5 MISSING)/x.
1721 DEBUG EVALUATE (x=5 MISSING)/x + 1.
1722 DEBUG EVALUATE (x=SYSMIS)/x.
1724 DEBUG EVALUATE (x=5) VECTOR/v(1).
1725 DEBUG EVALUATE (x=5 MISSING) VECTOR/v(1).
1726 DEBUG EVALUATE (x=5 MISSING) VECTOR/v(1) + 1.
1727 DEBUG EVALUATE (x=SYSMIS) VECTOR/v(1).
1729 DEBUG EVALUATE (x=5)/VALUE(x).
1730 DEBUG EVALUATE (x=5 MISSING)/VALUE(x).
1731 DEBUG EVALUATE (x=SYSMIS)/VALUE(x).
1733 DEBUG EVALUATE (x=5) VECTOR/VALUE(v(1)).
1734 DEBUG EVALUATE (x=5 MISSING) VECTOR/VALUE(v(1)).
1735 DEBUG EVALUATE (x=SYSMIS) VECTOR/VALUE(v(1)).
1737 DEBUG EVALUATE (x=5)/MISSING(x).
1738 DEBUG EVALUATE (x=5 MISSING)/MISSING(x).
1739 DEBUG EVALUATE (x=SYSMIS)/MISSING(x).
1741 DEBUG EVALUATE (x=5)/SYSMIS(x).
1742 DEBUG EVALUATE (x=5 MISSING)/SYSMIS(x).
1743 DEBUG EVALUATE (x=SYSMIS)/SYSMIS(x).
1745 DEBUG EVALUATE /NMISS($sysmis).
1746 DEBUG EVALUATE /NMISS(0).
1747 DEBUG EVALUATE /NMISS($sysmis, $sysmis, $sysmis).
1748 DEBUG EVALUATE /NMISS(1, 2, 3, 4).
1749 DEBUG EVALUATE /NMISS(1, $sysmis, $sysmis, 2, 2, $sysmis, $sysmis, 3, 4).
1750 DEBUG EVALUATE (a=1 MISSING) (b=2) (c=3 MISSING) (d=4)/NMISS(a, b, c, d).
1752 DEBUG EVALUATE /NVALID($sysmis).
1753 DEBUG EVALUATE /NVALID(0).
1754 DEBUG EVALUATE /NVALID($sysmis, $sysmis, $sysmis).
1755 DEBUG EVALUATE /NVALID(1, 2, 3, 4).
1756 DEBUG EVALUATE /NVALID(1, $sysmis, $sysmis, 2, 2, $sysmis, $sysmis, 3, 4).
1757 DEBUG EVALUATE (a=1 MISSING) (b=2) (c=3 MISSING) (d=4)/NVALID(a, b, c, d).
1759 DEBUG EVALUATE /SYSMIS(1).
1760 DEBUG EVALUATE /SYSMIS($SYSMIS).
1761 DEBUG EVALUATE /SYSMIS(1 + $SYSMIS).
1764 for opt in OPT NOOPT; do
1766 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
1767 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
1768 MISSING(10) => false
1770 MISSING($SYSMIS) => true
1772 MISSING(ASIN(1.01)) => true
1774 MISSING(ASIN(.5)) => false
1776 evaluate.sps:7.17-7.31: error: DEBUG EVALUATE: Type mismatch invoking
1777 MISSING(number) as MISSING(string).
1778 7 | DEBUG EVALUATE /MISSING(' ').
1781 evaluate.sps:7.25-7.30: note: DEBUG EVALUATE: This argument has type 'string'
1782 but 'number' is required.
1783 7 | DEBUG EVALUATE /MISSING(' ').
1786 MISSING(' ') => error
1814 VALUE(v(1)) => sysmis
1828 NMISS($sysmis) => 1.00
1832 NMISS($sysmis, $sysmis, $sysmis) => 3.00
1834 NMISS(1, 2, 3, 4) => 0.00
1836 NMISS(1, $sysmis, $sysmis, 2, 2, $sysmis, $sysmis, 3, 4) => 4.00
1838 NMISS(a, b, c, d) => 2.00
1840 NVALID($sysmis) => 0.00
1844 NVALID($sysmis, $sysmis, $sysmis) => 0.00
1846 NVALID(1, 2, 3, 4) => 4.00
1848 NVALID(1, $sysmis, $sysmis, 2, 2, $sysmis, $sysmis, 3, 4) => 5.00
1850 NVALID(a, b, c, d) => 2.00
1854 SYSMIS($SYSMIS) => true
1856 SYSMIS(1 + $SYSMIS) => true
1861 AT_SETUP([expressions - ANY])
1862 AT_KEYWORDS([expression expressions evaluate])
1863 AT_DATA([evaluate-base.sps], [dnl
1865 DEBUG EVALUATE SET opt.
1867 DEBUG EVALUATE /any(1, 1, 2, 3).
1868 DEBUG EVALUATE /any(1, $true, 2, 3).
1869 DEBUG EVALUATE /any(1, $false, 2, 3).
1870 DEBUG EVALUATE /any(2, 1, 2, 3).
1871 DEBUG EVALUATE /any(3, 1, 2, 3).
1872 DEBUG EVALUATE /any(5, 1, 2, 3).
1873 DEBUG EVALUATE /any(1, 1, 1, 1).
1874 DEBUG EVALUATE /any($sysmis, 1, 1, 1).
1875 DEBUG EVALUATE /any($sysmis, 1, $sysmis, 3).
1876 DEBUG EVALUATE /any(1, 1, $sysmis, $sysmis).
1877 DEBUG EVALUATE /any(1, $sysmis, $sysmis, $sysmis).
1878 DEBUG EVALUATE /any($sysmis, $sysmis, $sysmis, $sysmis).
1880 DEBUG EVALUATE /any(1).
1881 DEBUG EVALUATE /any('1', 2, 3, 4).
1882 DEBUG EVALUATE /any(1, '2', 3, 4).
1883 DEBUG EVALUATE /any(1, 2, '3', 4).
1884 DEBUG EVALUATE /any(1, 2, 3, '4').
1886 DEBUG EVALUATE /any('', 'a', '', 'c').
1887 DEBUG EVALUATE /any('a', 'a', 'b', 'c').
1888 DEBUG EVALUATE /any('b', 'a', 'b', 'c').
1889 DEBUG EVALUATE /any('c', 'a', 'b', 'c').
1890 DEBUG EVALUATE /any('e', 'a', 'b', 'c').
1891 DEBUG EVALUATE /any('a', 'a', 'a', 'a').
1892 DEBUG EVALUATE /any('', 'a', 'a', 'a').
1893 DEBUG EVALUATE /any('a', '', '', '').
1894 DEBUG EVALUATE /any('a').
1896 DEBUG EVALUATE /any('a', 'a ', 'b', 'c').
1897 DEBUG EVALUATE /any('b ', 'a', 'b', 'c').
1898 DEBUG EVALUATE /any('c ', 'a', 'b', 'c ').
1899 DEBUG EVALUATE /any(a10, 'b', 'c', 'd').
1900 DEBUG EVALUATE /any('a', b, 'c', 'd').
1901 DEBUG EVALUATE /any('a', 'b', c, 'd').
1902 DEBUG EVALUATE /any('a', 'b', 'c', d).
1905 for opt in OPT NOOPT; do
1907 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
1908 AT_CHECK([pspp --testing-mode evaluate.sps], [1],
1909 [[any(1, 1, 2, 3) => true
1911 any(1, $true, 2, 3) => true
1913 any(1, $false, 2, 3) => false
1915 any(2, 1, 2, 3) => true
1917 any(3, 1, 2, 3) => true
1919 any(5, 1, 2, 3) => false
1921 any(1, 1, 1, 1) => true
1923 any($sysmis, 1, 1, 1) => sysmis
1925 any($sysmis, 1, $sysmis, 3) => sysmis
1927 any(1, 1, $sysmis, $sysmis) => true
1929 any(1, $sysmis, $sysmis, $sysmis) => sysmis
1931 any($sysmis, $sysmis, $sysmis, $sysmis) => sysmis
1933 evaluate.sps:17.17-17.22: error: DEBUG EVALUATE: Function invocation
1934 any(number) does not match any known function. Candidates are:
1935 ANY(number, number[, number]...)
1936 ANY(string, string[, string]...).
1937 17 | DEBUG EVALUATE /any(1).
1942 evaluate.sps:18.17-18.33: error: DEBUG EVALUATE: Function invocation
1943 any(string, number, number, number) does not match any known function.
1945 ANY(number, number[, number]...)
1946 ANY(string, string[, string]...).
1947 18 | DEBUG EVALUATE /any('1', 2, 3, 4).
1950 any('1', 2, 3, 4) => error
1952 evaluate.sps:19.17-19.33: error: DEBUG EVALUATE: Function invocation
1953 any(number, string, number, number) does not match any known function.
1955 ANY(number, number[, number]...)
1956 ANY(string, string[, string]...).
1957 19 | DEBUG EVALUATE /any(1, '2', 3, 4).
1960 any(1, '2', 3, 4) => error
1962 evaluate.sps:20.17-20.33: error: DEBUG EVALUATE: Function invocation
1963 any(number, number, string, number) does not match any known function.
1965 ANY(number, number[, number]...)
1966 ANY(string, string[, string]...).
1967 20 | DEBUG EVALUATE /any(1, 2, '3', 4).
1970 any(1, 2, '3', 4) => error
1972 evaluate.sps:21.17-21.33: error: DEBUG EVALUATE: Function invocation
1973 any(number, number, number, string) does not match any known function.
1975 ANY(number, number[, number]...)
1976 ANY(string, string[, string]...).
1977 21 | DEBUG EVALUATE /any(1, 2, 3, '4').
1980 any(1, 2, 3, '4') => error
1982 any('', 'a', '', 'c') => true
1984 any('a', 'a', 'b', 'c') => true
1986 any('b', 'a', 'b', 'c') => true
1988 any('c', 'a', 'b', 'c') => true
1990 any('e', 'a', 'b', 'c') => false
1992 any('a', 'a', 'a', 'a') => true
1994 any('', 'a', 'a', 'a') => false
1996 any('a', '', '', '') => false
1998 evaluate.sps:31.17-31.24: error: DEBUG EVALUATE: Function invocation
1999 any(string) does not match any known function. Candidates are:
2000 ANY(number, number[, number]...)
2001 ANY(string, string[, string]...).
2002 31 | DEBUG EVALUATE /any('a').
2007 any('a', 'a ', 'b', 'c') => true
2009 any('b ', 'a', 'b', 'c') => true
2011 any('c ', 'a', 'b', 'c ') => true
2013 evaluate.sps:36.17-36.39: error: DEBUG EVALUATE: Function invocation
2014 any(format, string, string, string) does not match any known function.
2016 ANY(number, number[, number]...)
2017 ANY(string, string[, string]...).
2018 36 | DEBUG EVALUATE /any(a10, 'b', 'c', 'd').
2019 | ^~~~~~~~~~~~~~~~~~~~~~~
2021 any(a10, 'b', 'c', 'd') => error
2023 evaluate.sps:37: error: DEBUG EVALUATE: Unknown identifier b.
2025 any('a', b, 'c', 'd') => error
2027 evaluate.sps:38: error: DEBUG EVALUATE: Unknown identifier c.
2029 any('a', 'b', c, 'd') => error
2031 evaluate.sps:39: error: DEBUG EVALUATE: Unknown identifier d.
2033 any('a', 'b', 'c', d) => error
2038 AT_SETUP([expressions - RANGE])
2039 AT_KEYWORDS([expression expressions evaluate])
2040 AT_DATA([evaluate-base.sps], [dnl
2042 DEBUG EVALUATE SET opt.
2044 DEBUG EVALUATE /range(5, 1, 10).
2045 DEBUG EVALUATE /range(1, 1, 10).
2046 DEBUG EVALUATE /range(10, 1, 10).
2047 DEBUG EVALUATE /range(-1, 1, 10).
2048 DEBUG EVALUATE /range(12, 1, 10).
2050 DEBUG EVALUATE /range(5, $sysmis, 6, 1, 10).
2051 DEBUG EVALUATE /range(5, $sysmis, $sysmis, 1, 10).
2052 DEBUG EVALUATE /range(1, 1, 10, 6, $sysmis).
2053 DEBUG EVALUATE /range(1, 1, 10, $sysmis, $sysmis).
2055 DEBUG EVALUATE /range(5, 5, 10, 3, 7).
2056 DEBUG EVALUATE /range(5, 10, 5, 3, 7).
2057 DEBUG EVALUATE /range(5, 3, 7, 5, 10).
2058 DEBUG EVALUATE /range(5, 3, 7, 10, 5).
2060 DEBUG EVALUATE /range($sysmis, 1, 10).
2061 DEBUG EVALUATE /range(5, 1, $sysmis).
2062 DEBUG EVALUATE /range(5, $sysmis, 10).
2063 DEBUG EVALUATE /range(1, 1, $sysmis).
2064 DEBUG EVALUATE /range(10, $sysmis, 10).
2065 DEBUG EVALUATE /range(5, 10, 5).
2066 DEBUG EVALUATE /range($sysmis, $sysmis, 10).
2067 DEBUG EVALUATE /range($sysmis, 1, $sysmis).
2068 DEBUG EVALUATE /range($sysmis, $sysmis, $sysmis).
2070 DEBUG EVALUATE /range(0, 1, 8, 10, 18).
2071 DEBUG EVALUATE /range(1, 1, 8, 10, 18).
2072 DEBUG EVALUATE /range(6, 1, 8, 10, 18).
2073 DEBUG EVALUATE /range(8, 1, 8, 10, 18).
2074 DEBUG EVALUATE /range(9, 1, 8, 10, 18).
2075 DEBUG EVALUATE /range(10, 1, 8, 10, 18).
2076 DEBUG EVALUATE /range(13, 1, 8, 10, 18).
2077 DEBUG EVALUATE /range(16, 1, 8, 10, 18).
2078 DEBUG EVALUATE /range(18, 1, 8, 10, 18).
2079 DEBUG EVALUATE /range(20, 1, 8, 10, 18).
2080 DEBUG EVALUATE /range(1).
2081 DEBUG EVALUATE /range(1, 2).
2082 DEBUG EVALUATE /range(1, 2, 3, 4).
2083 DEBUG EVALUATE /range(1, 2, 3, 4, 5, 6).
2084 DEBUG EVALUATE /range('1', 2, 3).
2085 DEBUG EVALUATE /range(1, '2', 3).
2086 DEBUG EVALUATE /range(1, 2, '3').
2088 DEBUG EVALUATE /range('123', '111', '888').
2089 DEBUG EVALUATE /range('111', '111', '888').
2090 DEBUG EVALUATE /range('888', '111', '888').
2091 DEBUG EVALUATE /range('110', '111', '888').
2092 DEBUG EVALUATE /range('889', '111', '888').
2093 DEBUG EVALUATE /range('000', '111', '888').
2094 DEBUG EVALUATE /range('999', '111', '888').
2096 DEBUG EVALUATE /range('123 ', '111', '888').
2097 DEBUG EVALUATE /range('123', '111 ', '888').
2098 DEBUG EVALUATE /range('123', '111', '888 ').
2099 DEBUG EVALUATE /range('123', '111 ', '888 ').
2101 DEBUG EVALUATE /range('00', '01', '08', '10', '18').
2102 DEBUG EVALUATE /range('01', '01', '08', '10', '18').
2103 DEBUG EVALUATE /range('06', '01', '08', '10', '18').
2104 DEBUG EVALUATE /range('08', '01', '08', '10', '18').
2105 DEBUG EVALUATE /range('09', '01', '08', '10', '18').
2106 DEBUG EVALUATE /range('10', '01', '08', '10', '18').
2107 DEBUG EVALUATE /range('15', '01', '08', '10', '18').
2108 DEBUG EVALUATE /range('18', '01', '08', '10', '18').
2109 DEBUG EVALUATE /range('19', '01', '08', '10', '18').
2111 DEBUG EVALUATE /range('07', '01', '08', '18', '10').
2112 DEBUG EVALUATE /range('12', '08', '01', '10', '18').
2114 DEBUG EVALUATE /range('1').
2115 DEBUG EVALUATE /range('1', '2').
2116 DEBUG EVALUATE /range('1', '2', '3', '4').
2117 DEBUG EVALUATE /range('1', '2', '3', '4', '5', '6').
2118 DEBUG EVALUATE /range(1, '2', '3').
2119 DEBUG EVALUATE /range('1', 2, '3').
2120 DEBUG EVALUATE /range('1', '2', 3).
2123 for opt in OPT NOOPT; do
2125 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
2126 AT_CHECK([pspp --testing-mode evaluate.sps], [1],
2127 [[range(5, 1, 10) => true
2129 range(1, 1, 10) => true
2131 range(10, 1, 10) => true
2133 range(-1, 1, 10) => false
2135 range(12, 1, 10) => false
2137 range(5, $sysmis, 6, 1, 10) => true
2139 range(5, $sysmis, $sysmis, 1, 10) => true
2141 range(1, 1, 10, 6, $sysmis) => true
2143 range(1, 1, 10, $sysmis, $sysmis) => true
2145 range(5, 5, 10, 3, 7) => true
2147 range(5, 10, 5, 3, 7) => sysmis
2149 range(5, 3, 7, 5, 10) => true
2151 range(5, 3, 7, 10, 5) => sysmis
2153 range($sysmis, 1, 10) => sysmis
2155 range(5, 1, $sysmis) => sysmis
2157 range(5, $sysmis, 10) => sysmis
2159 range(1, 1, $sysmis) => sysmis
2161 range(10, $sysmis, 10) => sysmis
2163 range(5, 10, 5) => sysmis
2165 range($sysmis, $sysmis, 10) => sysmis
2167 range($sysmis, 1, $sysmis) => sysmis
2169 range($sysmis, $sysmis, $sysmis) => sysmis
2171 range(0, 1, 8, 10, 18) => false
2173 range(1, 1, 8, 10, 18) => true
2175 range(6, 1, 8, 10, 18) => true
2177 range(8, 1, 8, 10, 18) => true
2179 range(9, 1, 8, 10, 18) => false
2181 range(10, 1, 8, 10, 18) => true
2183 range(13, 1, 8, 10, 18) => true
2185 range(16, 1, 8, 10, 18) => true
2187 range(18, 1, 8, 10, 18) => true
2189 range(20, 1, 8, 10, 18) => false
2191 evaluate.sps:40.17-40.24: error: DEBUG EVALUATE: Function invocation
2192 range(number) does not match any known function. Candidates are:
2193 RANGE(number, number, number[, number, number]...)
2194 RANGE(string, string, string[, string, string]...).
2195 40 | DEBUG EVALUATE /range(1).
2200 evaluate.sps:41.17-41.27: error: DEBUG EVALUATE: RANGE(number, number, number[,
2201 number, number]...) must have an odd number of arguments.
2202 41 | DEBUG EVALUATE /range(1, 2).
2205 range(1, 2) => error
2207 evaluate.sps:42.17-42.33: error: DEBUG EVALUATE: RANGE(number, number, number[,
2208 number, number]...) must have an odd number of arguments.
2209 42 | DEBUG EVALUATE /range(1, 2, 3, 4).
2212 range(1, 2, 3, 4) => error
2214 evaluate.sps:43.17-43.39: error: DEBUG EVALUATE: RANGE(number, number, number[,
2215 number, number]...) must have an odd number of arguments.
2216 43 | DEBUG EVALUATE /range(1, 2, 3, 4, 5, 6).
2217 | ^~~~~~~~~~~~~~~~~~~~~~~
2219 range(1, 2, 3, 4, 5, 6) => error
2221 evaluate.sps:44.17-44.32: error: DEBUG EVALUATE: Function invocation
2222 range(string, number, number) does not match any known function. Candidates
2224 RANGE(number, number, number[, number, number]...)
2225 RANGE(string, string, string[, string, string]...).
2226 44 | DEBUG EVALUATE /range('1', 2, 3).
2229 range('1', 2, 3) => error
2231 evaluate.sps:45.17-45.32: error: DEBUG EVALUATE: Function invocation
2232 range(number, string, number) does not match any known function. Candidates
2234 RANGE(number, number, number[, number, number]...)
2235 RANGE(string, string, string[, string, string]...).
2236 45 | DEBUG EVALUATE /range(1, '2', 3).
2239 range(1, '2', 3) => error
2241 evaluate.sps:46.17-46.32: error: DEBUG EVALUATE: Function invocation
2242 range(number, number, string) does not match any known function. Candidates
2244 RANGE(number, number, number[, number, number]...)
2245 RANGE(string, string, string[, string, string]...).
2246 46 | DEBUG EVALUATE /range(1, 2, '3').
2249 range(1, 2, '3') => error
2251 range('123', '111', '888') => true
2253 range('111', '111', '888') => true
2255 range('888', '111', '888') => true
2257 range('110', '111', '888') => false
2259 range('889', '111', '888') => false
2261 range('000', '111', '888') => false
2263 range('999', '111', '888') => false
2265 range('123 ', '111', '888') => true
2267 range('123', '111 ', '888') => true
2269 range('123', '111', '888 ') => true
2271 range('123', '111 ', '888 ') => true
2273 range('00', '01', '08', '10', '18') => false
2275 range('01', '01', '08', '10', '18') => true
2277 range('06', '01', '08', '10', '18') => true
2279 range('08', '01', '08', '10', '18') => true
2281 range('09', '01', '08', '10', '18') => false
2283 range('10', '01', '08', '10', '18') => true
2285 range('15', '01', '08', '10', '18') => true
2287 range('18', '01', '08', '10', '18') => true
2289 range('19', '01', '08', '10', '18') => false
2291 range('07', '01', '08', '18', '10') => sysmis
2293 range('12', '08', '01', '10', '18') => sysmis
2295 evaluate.sps:74.17-74.26: error: DEBUG EVALUATE: Function invocation
2296 range(string) does not match any known function. Candidates are:
2297 RANGE(number, number, number[, number, number]...)
2298 RANGE(string, string, string[, string, string]...).
2299 74 | DEBUG EVALUATE /range('1').
2304 evaluate.sps:75.17-75.31: error: DEBUG EVALUATE: RANGE(string, string, string[,
2305 string, string]...) must have an odd number of arguments.
2306 75 | DEBUG EVALUATE /range('1', '2').
2309 range('1', '2') => error
2311 evaluate.sps:76.17-76.41: error: DEBUG EVALUATE: RANGE(string, string, string[,
2312 string, string]...) must have an odd number of arguments.
2313 76 | DEBUG EVALUATE /range('1', '2', '3', '4').
2314 | ^~~~~~~~~~~~~~~~~~~~~~~~~
2316 range('1', '2', '3', '4') => error
2318 evaluate.sps:77.17-77.51: error: DEBUG EVALUATE: RANGE(string, string, string[,
2319 string, string]...) must have an odd number of arguments.
2320 77 | DEBUG EVALUATE /range('1', '2', '3', '4', '5', '6').
2321 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2323 range('1', '2', '3', '4', '5', '6') => error
2325 evaluate.sps:78.17-78.34: error: DEBUG EVALUATE: Function invocation
2326 range(number, string, string) does not match any known function. Candidates
2328 RANGE(number, number, number[, number, number]...)
2329 RANGE(string, string, string[, string, string]...).
2330 78 | DEBUG EVALUATE /range(1, '2', '3').
2331 | ^~~~~~~~~~~~~~~~~~
2333 range(1, '2', '3') => error
2335 evaluate.sps:79.17-79.34: error: DEBUG EVALUATE: Function invocation
2336 range(string, number, string) does not match any known function. Candidates
2338 RANGE(number, number, number[, number, number]...)
2339 RANGE(string, string, string[, string, string]...).
2340 79 | DEBUG EVALUATE /range('1', 2, '3').
2341 | ^~~~~~~~~~~~~~~~~~
2343 range('1', 2, '3') => error
2345 evaluate.sps:80.17-80.34: error: DEBUG EVALUATE: Function invocation
2346 range(string, string, number) does not match any known function. Candidates
2348 RANGE(number, number, number[, number, number]...)
2349 RANGE(string, string, string[, string, string]...).
2350 80 | DEBUG EVALUATE /range('1', '2', 3).
2351 | ^~~~~~~~~~~~~~~~~~
2353 range('1', '2', 3) => error
2358 AT_SETUP([expressions - MAX MIN])
2359 AT_KEYWORDS([expression expressions evaluate])
2360 AT_DATA([evaluate-base.sps], [dnl
2362 DEBUG EVALUATE SET opt.
2363 DEBUG EVALUATE /max(1, 2, 3, 4, 5).
2364 DEBUG EVALUATE /max(1, $sysmis, 2, 3, $sysmis, 4, 5).
2365 DEBUG EVALUATE /max(1, 2).
2366 DEBUG EVALUATE /max().
2367 DEBUG EVALUATE /max(1).
2368 DEBUG EVALUATE /max(1, $sysmis).
2369 DEBUG EVALUATE /max(1, 2, 3, $sysmis).
2370 DEBUG EVALUATE /max.4(1, 2, 3, $sysmis).
2371 DEBUG EVALUATE /max.4(1, 2, 3).
2373 DEBUG EVALUATE /max("2", "3", "5", "1", "4").
2374 DEBUG EVALUATE /max("1", "2").
2375 DEBUG EVALUATE /max("1").
2377 DEBUG EVALUATE /min(1, 2, 3, 4, 5).
2378 DEBUG EVALUATE /min(1, $sysmis, 2, 3, $sysmis, 4, 5).
2379 DEBUG EVALUATE /min(1, 2).
2380 DEBUG EVALUATE /min().
2381 DEBUG EVALUATE /min(1).
2382 DEBUG EVALUATE /min(1, $sysmis).
2383 DEBUG EVALUATE /min(1, 2, 3, $sysmis).
2384 DEBUG EVALUATE /min.4(1, 2, 3, $sysmis).
2385 DEBUG EVALUATE /min.4(1, 2, 3).
2387 DEBUG EVALUATE /min("2", "3", "5", "1", "4").
2388 DEBUG EVALUATE /min("1", "2").
2389 DEBUG EVALUATE /min("1").
2392 for opt in OPT NOOPT; do
2394 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
2395 AT_CHECK([pspp --testing-mode evaluate.sps], [1],
2396 [[max(1, 2, 3, 4, 5) => 5.00
2398 max(1, $sysmis, 2, 3, $sysmis, 4, 5) => 5.00
2402 evaluate.sps:6.17-6.20: error: DEBUG EVALUATE: Function invocation max() does
2403 not match any known function. Candidates are:
2404 MAX(number[, number]...)
2405 MAX(string[, string]...).
2406 6 | DEBUG EVALUATE /max().
2413 max(1, $sysmis) => 1.00
2415 max(1, 2, 3, $sysmis) => 3.00
2417 max.4(1, 2, 3, $sysmis) => sysmis
2419 evaluate.sps:11.17-11.30: error: DEBUG EVALUATE: For MAX(number[, number]...)
2420 with 3 arguments, at most 3 (not 4) may be required to be valid.
2421 11 | DEBUG EVALUATE /max.4(1, 2, 3).
2424 max.4(1, 2, 3) => error
2426 max("2", "3", "5", "1", "4") => "5"
2428 max("1", "2") => "2"
2432 min(1, 2, 3, 4, 5) => 1.00
2434 min(1, $sysmis, 2, 3, $sysmis, 4, 5) => 1.00
2438 evaluate.sps:20.17-20.20: error: DEBUG EVALUATE: Function invocation min() does
2439 not match any known function. Candidates are:
2440 MIN(number[, number]...)
2441 MIN(string[, string]...).
2442 20 | DEBUG EVALUATE /min().
2449 min(1, $sysmis) => 1.00
2451 min(1, 2, 3, $sysmis) => 1.00
2453 min.4(1, 2, 3, $sysmis) => sysmis
2455 evaluate.sps:25.17-25.30: error: DEBUG EVALUATE: For MIN(number[, number]...)
2456 with 3 arguments, at most 3 (not 4) may be required to be valid.
2457 25 | DEBUG EVALUATE /min.4(1, 2, 3).
2460 min.4(1, 2, 3) => error
2462 min("2", "3", "5", "1", "4") => "1"
2464 min("1", "2") => "1"
2471 AT_SETUP([expressions - CFVAR MEAN MEDIAN])
2472 AT_KEYWORDS([expression expressions evaluate])
2473 AT_DATA([evaluate-base.sps], [dnl
2475 DEBUG EVALUATE SET opt.
2477 DEBUG EVALUATE /cfvar(1, 2, 3, 4, 5).
2478 DEBUG EVALUATE /cfvar(1, $sysmis, 2, 3, $sysmis, 4, 5).
2479 DEBUG EVALUATE /cfvar(1, 2).
2480 DEBUG EVALUATE /cfvar(1).
2481 DEBUG EVALUATE /cfvar(1, $sysmis).
2482 DEBUG EVALUATE /cfvar(1, 2, 3, $sysmis).
2483 DEBUG EVALUATE /cfvar.4(1, 2, 3, $sysmis).
2484 DEBUG EVALUATE /cfvar.4(1, 2, 3).
2485 DEBUG EVALUATE /cfvar('x').
2486 DEBUG EVALUATE /cfvar('x', 1, 2, 3).
2488 DEBUG EVALUATE /mean(1, 2, 3, 4, 5).
2489 DEBUG EVALUATE /mean(1, $sysmis, 2, 3, $sysmis, 4, 5).
2490 DEBUG EVALUATE /mean(1, 2).
2491 DEBUG EVALUATE /mean().
2492 DEBUG EVALUATE /mean(1).
2493 DEBUG EVALUATE /mean(1, $sysmis).
2494 DEBUG EVALUATE /mean(1, 2, 3, $sysmis).
2495 DEBUG EVALUATE /mean.4(1, 2, 3, $sysmis).
2496 DEBUG EVALUATE /mean.4(1, 2, 3).
2498 DEBUG EVALUATE /median(1, 2, 3, 4, 5).
2499 DEBUG EVALUATE /median(2, 3, 4, 5, 1).
2500 DEBUG EVALUATE /median(2, 3, 4, 1, 5).
2501 DEBUG EVALUATE /median(2, 1, 4, 5, 3).
2502 DEBUG EVALUATE /median(1, 2, 3, 4).
2503 DEBUG EVALUATE /median(2, 3, 1, 4).
2504 DEBUG EVALUATE /median(2, 3, 4, 1).
2505 DEBUG EVALUATE /median(2, 1, 4, 3).
2506 DEBUG EVALUATE /median(1, $sysmis, 3, 4, 5).
2507 DEBUG EVALUATE /median(2, 3, 4, 5, $sysmis, 1).
2508 DEBUG EVALUATE /median($sysmis, $sysmis, $sysmis, 2, 3, 4, 1, 5).
2509 DEBUG EVALUATE /median(1, 2, 3).
2510 DEBUG EVALUATE /median(1).
2511 DEBUG EVALUATE /median(1, 2).
2512 DEBUG EVALUATE /median(1, 2, $sysmis).
2513 DEBUG EVALUATE /median(1, $sysmis, $sysmis).
2514 DEBUG EVALUATE /median($sysmis, $sysmis, $sysmis).
2515 DEBUG EVALUATE /median.3(1, 2, $sysmis).
2516 DEBUG EVALUATE /median.2(1, $sysmis).
2519 for opt in OPT NOOPT; do
2521 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
2522 AT_CHECK([pspp --testing-mode evaluate.sps], [1],
2523 [[cfvar(1, 2, 3, 4, 5) => 0.53
2525 cfvar(1, $sysmis, 2, 3, $sysmis, 4, 5) => 0.53
2529 evaluate.sps:7.17-7.24: error: DEBUG EVALUATE: Type mismatch invoking
2530 CFVAR(number, number[, number]...) as cfvar(number).
2531 7 | DEBUG EVALUATE /cfvar(1).
2536 cfvar(1, $sysmis) => sysmis
2538 cfvar(1, 2, 3, $sysmis) => 0.50
2540 cfvar.4(1, 2, 3, $sysmis) => sysmis
2542 evaluate.sps:11.17-11.32: error: DEBUG EVALUATE: For CFVAR(number, number[,
2543 number]...) with 3 arguments, at most 3 (not 4) may be required to be valid.
2544 11 | DEBUG EVALUATE /cfvar.4(1, 2, 3).
2547 cfvar.4(1, 2, 3) => error
2549 evaluate.sps:12.17-12.26: error: DEBUG EVALUATE: Type mismatch invoking
2550 CFVAR(number, number[, number]...) as cfvar(string).
2551 12 | DEBUG EVALUATE /cfvar('x').
2554 evaluate.sps:12.23-12.25: note: DEBUG EVALUATE: This argument has type 'string'
2555 but 'number' is required.
2556 12 | DEBUG EVALUATE /cfvar('x').
2561 evaluate.sps:13.17-13.35: error: DEBUG EVALUATE: Type mismatch invoking
2562 CFVAR(number, number[, number]...) as cfvar(string, number, number, number).
2563 13 | DEBUG EVALUATE /cfvar('x', 1, 2, 3).
2564 | ^~~~~~~~~~~~~~~~~~~
2566 cfvar('x', 1, 2, 3) => error
2568 mean(1, 2, 3, 4, 5) => 3.00
2570 mean(1, $sysmis, 2, 3, $sysmis, 4, 5) => 3.00
2574 evaluate.sps:18.17-18.21: error: DEBUG EVALUATE: Type mismatch invoking
2575 MEAN(number[, number]...) as mean().
2576 18 | DEBUG EVALUATE /mean().
2583 mean(1, $sysmis) => 1.00
2585 mean(1, 2, 3, $sysmis) => 2.00
2587 mean.4(1, 2, 3, $sysmis) => sysmis
2589 evaluate.sps:23.17-23.31: error: DEBUG EVALUATE: For MEAN(number[, number]...)
2590 with 3 arguments, at most 3 (not 4) may be required to be valid.
2591 23 | DEBUG EVALUATE /mean.4(1, 2, 3).
2594 mean.4(1, 2, 3) => error
2596 median(1, 2, 3, 4, 5) => 3.00
2598 median(2, 3, 4, 5, 1) => 3.00
2600 median(2, 3, 4, 1, 5) => 3.00
2602 median(2, 1, 4, 5, 3) => 3.00
2604 median(1, 2, 3, 4) => 2.50
2606 median(2, 3, 1, 4) => 2.50
2608 median(2, 3, 4, 1) => 2.50
2610 median(2, 1, 4, 3) => 2.50
2612 median(1, $sysmis, 3, 4, 5) => 3.50
2614 median(2, 3, 4, 5, $sysmis, 1) => 3.00
2616 median($sysmis, $sysmis, $sysmis, 2, 3, 4, 1, 5) => 3.00
2618 median(1, 2, 3) => 2.00
2622 median(1, 2) => 1.50
2624 median(1, 2, $sysmis) => 1.50
2626 median(1, $sysmis, $sysmis) => 1.00
2628 median($sysmis, $sysmis, $sysmis) => sysmis
2630 median.3(1, 2, $sysmis) => sysmis
2632 median.2(1, $sysmis) => sysmis
2637 AT_SETUP([expressions - SD SUM VARIANCE])
2638 AT_KEYWORDS([expression expressions evaluate])
2639 AT_DATA([evaluate-base.sps], [dnl
2641 DEBUG EVALUATE SET opt.
2643 DEBUG EVALUATE /sd(1, 2, 3, 4, 5).
2644 DEBUG EVALUATE /sd(1, $sysmis, 2, 3, $sysmis, 4, 5).
2645 DEBUG EVALUATE /sd(1, 2).
2646 DEBUG EVALUATE /sd(1).
2647 DEBUG EVALUATE /sd(1, $sysmis).
2648 DEBUG EVALUATE /sd(1, 2, 3, $sysmis).
2649 DEBUG EVALUATE /sd.4(1, 2, 3, $sysmis).
2650 DEBUG EVALUATE /sd.4(1, 2, 3).
2651 DEBUG EVALUATE /sd('x').
2652 DEBUG EVALUATE /sd('x', 1, 2, 3).
2653 DEBUG EVALUATE (a=1)(b=2)(c=3)(d=4)(e=5)(f=6)(g=7)/sd(a TO c).
2655 DEBUG EVALUATE /sum(1, 2, 3, 4, 5).
2656 DEBUG EVALUATE /sum(1, $sysmis, 2, 3, $sysmis, 4, 5).
2657 DEBUG EVALUATE /sum(1, 2).
2658 DEBUG EVALUATE /sum().
2659 DEBUG EVALUATE /sum(1).
2660 DEBUG EVALUATE /sum(1, $sysmis).
2661 DEBUG EVALUATE /sum(1, 2, 3, $sysmis).
2662 DEBUG EVALUATE /sum.4(1, 2, 3, $sysmis).
2663 DEBUG EVALUATE /sum.4(1, 2, 3).
2664 DEBUG EVALUATE (a=1)(b=2)(c=3)(d=4)(e=5)(f=6)(g=7)/sum(b TO F).
2666 DEBUG EVALUATE /variance(1, 2, 3, 4, 5).
2667 DEBUG EVALUATE /variance(1, $sysmis, 2, 3, $sysmis, 4, 5).
2668 DEBUG EVALUATE /variance(1, 2).
2669 DEBUG EVALUATE /variance(1).
2670 DEBUG EVALUATE /variance(1, $sysmis).
2671 DEBUG EVALUATE /variance(1, 2, 3, $sysmis).
2672 DEBUG EVALUATE /variance.4(1, 2, 3, $sysmis).
2673 DEBUG EVALUATE /variance.4(1, 2, 3).
2674 DEBUG EVALUATE /variance('x').
2675 DEBUG EVALUATE /variance('x', 1, 2, 3).
2676 DEBUG EVALUATE (a=1)(b=2)(c=3)(d=4)(e=5)(f=6)(g=7)/variance(a TO e).
2679 for opt in OPT NOOPT; do
2681 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
2682 AT_CHECK([pspp --testing-mode evaluate.sps], [1],
2683 [[sd(1, 2, 3, 4, 5) => 1.58
2685 sd(1, $sysmis, 2, 3, $sysmis, 4, 5) => 1.58
2689 evaluate.sps:7.17-7.21: error: DEBUG EVALUATE: Type mismatch invoking
2690 SD(number, number[, number]...) as sd(number).
2691 7 | DEBUG EVALUATE /sd(1).
2696 sd(1, $sysmis) => sysmis
2698 sd(1, 2, 3, $sysmis) => 1.00
2700 sd.4(1, 2, 3, $sysmis) => sysmis
2702 evaluate.sps:11.17-11.29: error: DEBUG EVALUATE: For SD(number, number[,
2703 number]...) with 3 arguments, at most 3 (not 4) may be required to be valid.
2704 11 | DEBUG EVALUATE /sd.4(1, 2, 3).
2707 sd.4(1, 2, 3) => error
2709 evaluate.sps:12.17-12.23: error: DEBUG EVALUATE: Type mismatch invoking
2710 SD(number, number[, number]...) as sd(string).
2711 12 | DEBUG EVALUATE /sd('x').
2714 evaluate.sps:12.20-12.22: note: DEBUG EVALUATE: This argument has type 'string'
2715 but 'number' is required.
2716 12 | DEBUG EVALUATE /sd('x').
2721 evaluate.sps:13.17-13.32: error: DEBUG EVALUATE: Type mismatch invoking
2722 SD(number, number[, number]...) as sd(string, number, number, number).
2723 13 | DEBUG EVALUATE /sd('x', 1, 2, 3).
2726 sd('x', 1, 2, 3) => error
2730 sum(1, 2, 3, 4, 5) => 15.00
2732 sum(1, $sysmis, 2, 3, $sysmis, 4, 5) => 15.00
2736 evaluate.sps:19.17-19.20: error: DEBUG EVALUATE: Type mismatch invoking
2737 SUM(number[, number]...) as sum().
2738 19 | DEBUG EVALUATE /sum().
2745 sum(1, $sysmis) => 1.00
2747 sum(1, 2, 3, $sysmis) => 6.00
2749 sum.4(1, 2, 3, $sysmis) => sysmis
2751 evaluate.sps:24.17-24.30: error: DEBUG EVALUATE: For SUM(number[, number]...)
2752 with 3 arguments, at most 3 (not 4) may be required to be valid.
2753 24 | DEBUG EVALUATE /sum.4(1, 2, 3).
2756 sum.4(1, 2, 3) => error
2758 sum(b TO F) => 20.00
2760 variance(1, 2, 3, 4, 5) => 2.50
2762 variance(1, $sysmis, 2, 3, $sysmis, 4, 5) => 2.50
2764 variance(1, 2) => 0.50
2766 evaluate.sps:30.17-30.27: error: DEBUG EVALUATE: Type mismatch invoking
2767 VARIANCE(number, number[, number]...) as variance(number).
2768 30 | DEBUG EVALUATE /variance(1).
2771 variance(1) => error
2773 variance(1, $sysmis) => sysmis
2775 variance(1, 2, 3, $sysmis) => 1.00
2777 variance.4(1, 2, 3, $sysmis) => sysmis
2779 evaluate.sps:34.17-34.35: error: DEBUG EVALUATE: For VARIANCE(number, number[,
2780 number]...) with 3 arguments, at most 3 (not 4) may be required to be valid.
2781 34 | DEBUG EVALUATE /variance.4(1, 2, 3).
2782 | ^~~~~~~~~~~~~~~~~~~
2784 variance.4(1, 2, 3) => error
2786 evaluate.sps:35.17-35.29: error: DEBUG EVALUATE: Type mismatch invoking
2787 VARIANCE(number, number[, number]...) as variance(string).
2788 35 | DEBUG EVALUATE /variance('x').
2791 evaluate.sps:35.26-35.28: note: DEBUG EVALUATE: This argument has type 'string'
2792 but 'number' is required.
2793 35 | DEBUG EVALUATE /variance('x').
2796 variance('x') => error
2798 evaluate.sps:36.17-36.38: error: DEBUG EVALUATE: Type mismatch invoking
2799 VARIANCE(number, number[, number]...) as variance(string, number, number,
2801 36 | DEBUG EVALUATE /variance('x', 1, 2, 3).
2802 | ^~~~~~~~~~~~~~~~~~~~~~
2804 variance('x', 1, 2, 3) => error
2806 variance(a TO e) => 2.50
2811 AT_SETUP([expressions - CONCAT])
2812 AT_KEYWORDS([expression expressions evaluate])
2813 AT_DATA([evaluate-base.sps], [dnl
2815 DEBUG EVALUATE SET opt.
2817 DEBUG EVALUATE /concat('').
2818 DEBUG EVALUATE /concat('a', 'b').
2819 DEBUG EVALUATE /concat('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h').
2820 DEBUG EVALUATE /concat('abcdefgh', 'ijklmnopq').
2821 DEBUG EVALUATE /concat('a', 1).
2822 DEBUG EVALUATE /concat(1, 2).
2825 for opt in OPT NOOPT; do
2827 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
2828 AT_CHECK([pspp --testing-mode evaluate.sps], [1],
2831 concat('a', 'b') => "ab"
2833 concat('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h') => "abcdefgh"
2835 concat('abcdefgh', 'ijklmnopq') => "abcdefghijklmnopq"
2837 evaluate.sps:8.17-8.30: error: DEBUG EVALUATE: Type mismatch invoking
2838 CONCAT(string[, string]...) as concat(string, number).
2839 8 | DEBUG EVALUATE /concat('a', 1).
2842 concat('a', 1) => error
2844 evaluate.sps:9.17-9.28: error: DEBUG EVALUATE: Type mismatch invoking
2845 CONCAT(string[, string]...) as concat(number, number).
2846 9 | DEBUG EVALUATE /concat(1, 2).
2849 concat(1, 2) => error
2854 AT_SETUP([expressions - INDEX])
2855 AT_KEYWORDS([expression expressions evaluate])
2856 AT_DATA([evaluate-base.sps], [dnl
2858 DEBUG EVALUATE SET opt.
2860 DEBUG EVALUATE /index('abcbcde', 'bc').
2861 DEBUG EVALUATE /index('abcbcde', 'bcd').
2862 DEBUG EVALUATE /index('abcbcde', 'bcbc').
2863 DEBUG EVALUATE /index('abcdefgh', 'abc').
2864 DEBUG EVALUATE /index('abcdefgh', 'bcd').
2865 DEBUG EVALUATE /index('abcdefgh', 'cde').
2866 DEBUG EVALUATE /index('abcdefgh', 'def').
2867 DEBUG EVALUATE /index('abcdefgh', 'efg').
2868 DEBUG EVALUATE /index('abcdefgh', 'fgh').
2869 DEBUG EVALUATE /index('abcdefgh', 'fghi').
2870 DEBUG EVALUATE /index('abcdefgh', 'x').
2871 DEBUG EVALUATE /index('abcdefgh', 'abch').
2872 DEBUG EVALUATE /index('banana', 'na').
2873 DEBUG EVALUATE /index('banana', 'ana').
2874 DEBUG EVALUATE /index('', 'x').
2875 DEBUG EVALUATE /index('x', '').
2876 DEBUG EVALUATE /index('', '').
2877 DEBUG EVALUATE /index('abcdefgh', '').
2878 DEBUG EVALUATE /index('abcdefgh', 'alkjsfdjlskalkjfa').
2880 DEBUG EVALUATE /index('abcbcde', 'bc', 1).
2881 DEBUG EVALUATE /index('abcbcde', 'dc', 1).
2882 DEBUG EVALUATE /index('abcbcde', 'abc', 1).
2883 DEBUG EVALUATE /index('abcbcde', 'bc', 2).
2884 DEBUG EVALUATE /index('abcbcde', 'dc', 2).
2885 DEBUG EVALUATE /index('abcbcde', 'abc', 1).
2886 DEBUG EVALUATE /index('abcbcde', 'bccb', 2).
2887 DEBUG EVALUATE /index('abcbcde', 'bcbc', 2).
2888 DEBUG EVALUATE /index('abcbcde', 'bcbc', $sysmis).
2889 DEBUG EVALUATE /index('abcbcde', 'bcbc', 3).
2890 DEBUG EVALUATE /index('abcbcde', '', 1).
2891 DEBUG EVALUATE /index('', '', 1).
2894 for opt in OPT NOOPT; do
2896 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
2897 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
2898 index('abcbcde', 'bc') => 2.00
2900 index('abcbcde', 'bcd') => 4.00
2902 index('abcbcde', 'bcbc') => 2.00
2904 index('abcdefgh', 'abc') => 1.00
2906 index('abcdefgh', 'bcd') => 2.00
2908 index('abcdefgh', 'cde') => 3.00
2910 index('abcdefgh', 'def') => 4.00
2912 index('abcdefgh', 'efg') => 5.00
2914 index('abcdefgh', 'fgh') => 6.00
2916 index('abcdefgh', 'fghi') => 0.00
2918 index('abcdefgh', 'x') => 0.00
2920 index('abcdefgh', 'abch') => 0.00
2922 index('banana', 'na') => 3.00
2924 index('banana', 'ana') => 2.00
2926 index('', 'x') => 0.00
2928 index('x', '') => 1.00
2930 index('', '') => 1.00
2932 index('abcdefgh', '') => 1.00
2934 index('abcdefgh', 'alkjsfdjlskalkjfa') => 0.00
2936 index('abcbcde', 'bc', 1) => 2.00
2938 index('abcbcde', 'dc', 1) => 3.00
2940 index('abcbcde', 'abc', 1) => 1.00
2942 index('abcbcde', 'bc', 2) => 2.00
2944 index('abcbcde', 'dc', 2) => 0.00
2946 index('abcbcde', 'abc', 1) => 1.00
2948 index('abcbcde', 'bccb', 2) => 2.00
2950 index('abcbcde', 'bcbc', 2) => 2.00
2952 index('abcbcde', 'bcbc', $sysmis) => sysmis
2954 evaluate.sps:33.17-33.43: error: DEBUG EVALUATE: INDEX needle length argument
2955 must evenly divide the length of the needles argument.
2956 33 | DEBUG EVALUATE /index('abcbcde', 'bcbc', 3).
2957 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
2959 evaluate.sps:33.34-33.39: note: DEBUG EVALUATE: The needles argument has length
2961 33 | DEBUG EVALUATE /index('abcbcde', 'bcbc', 3).
2964 evaluate.sps:33.42: note: DEBUG EVALUATE: The needle length argument has value
2966 33 | DEBUG EVALUATE /index('abcbcde', 'bcbc', 3).
2969 index('abcbcde', 'bcbc', 3) => sysmis
2971 index('abcbcde', '', 1) => 0.00
2973 index('', '', 1) => 0.00
2978 AT_SETUP([expressions - RINDEX])
2979 AT_KEYWORDS([expression expressions evaluate])
2980 AT_DATA([evaluate-base.sps], [dnl
2982 DEBUG EVALUATE SET opt.
2984 DEBUG EVALUATE /rindex('abcbcde', 'bc').
2985 DEBUG EVALUATE /rindex('abcbcde', 'bcd').
2986 DEBUG EVALUATE /rindex('abcbcde', 'bcbc').
2987 DEBUG EVALUATE /rindex('abcdefgh', 'abc').
2988 DEBUG EVALUATE /rindex('abcdefgh', 'bcd').
2989 DEBUG EVALUATE /rindex('abcdefgh', 'cde').
2990 DEBUG EVALUATE /rindex('abcdefgh', 'def').
2991 DEBUG EVALUATE /rindex('abcdefgh', 'efg').
2992 DEBUG EVALUATE /rindex('abcdefgh', 'fgh').
2993 DEBUG EVALUATE /rindex('abcdefgh', 'fghi').
2994 DEBUG EVALUATE /rindex('abcdefgh', 'x').
2995 DEBUG EVALUATE /rindex('abcdefgh', 'abch').
2996 DEBUG EVALUATE /rindex('banana', 'na').
2997 DEBUG EVALUATE /rindex('banana', 'ana').
2998 DEBUG EVALUATE /rindex('', 'x').
2999 DEBUG EVALUATE /rindex('x', '').
3000 DEBUG EVALUATE /rindex('', '').
3001 DEBUG EVALUATE /rindex('abcdefgh', '').
3002 DEBUG EVALUATE /rindex('abcdefgh', 'alkjsfdjlskalkjfa').
3004 DEBUG EVALUATE /rindex('abcbcde', 'bc', 1).
3005 DEBUG EVALUATE /rindex('abcbcde', 'dc', 1).
3006 DEBUG EVALUATE /rindex('abcbcde', 'abc', 1).
3007 DEBUG EVALUATE /rindex('abcbcde', 'bc', 2).
3008 DEBUG EVALUATE /rindex('abcbcde', 'dc', 2).
3009 DEBUG EVALUATE /rindex('abcbcde', 'abc', 1).
3010 DEBUG EVALUATE /rindex('abcbcde', 'bccb', 2).
3011 DEBUG EVALUATE /rindex('abcbcde', 'bcbc', 2).
3012 DEBUG EVALUATE /rindex('abcbcde', 'bcbc', 0).
3013 DEBUG EVALUATE /rindex('abcbcde', 'bcbc', $sysmis).
3014 DEBUG EVALUATE /rindex('abcbcde', 'bcbcg', 2).
3015 DEBUG EVALUATE /rindex('abcbcde', 'bcbcg', $sysmis).
3016 DEBUG EVALUATE /rindex('abcbcde', 'bcbcg', 'x').
3017 DEBUG EVALUATE /rindex(1, 'bcdfkjl', 2).
3018 DEBUG EVALUATE /rindex('aksj', 2, 2).
3019 DEBUG EVALUATE /rindex(1, 2, 3).
3020 DEBUG EVALUATE /rindex(1, 2, '3').
3021 DEBUG EVALUATE /rindex('abcbcde', '', 1).
3022 DEBUG EVALUATE /rindex('', '', 1).
3025 for opt in OPT NOOPT; do
3027 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3028 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3029 rindex('abcbcde', 'bc') => 4.00
3031 rindex('abcbcde', 'bcd') => 4.00
3033 rindex('abcbcde', 'bcbc') => 2.00
3035 rindex('abcdefgh', 'abc') => 1.00
3037 rindex('abcdefgh', 'bcd') => 2.00
3039 rindex('abcdefgh', 'cde') => 3.00
3041 rindex('abcdefgh', 'def') => 4.00
3043 rindex('abcdefgh', 'efg') => 5.00
3045 rindex('abcdefgh', 'fgh') => 6.00
3047 rindex('abcdefgh', 'fghi') => 0.00
3049 rindex('abcdefgh', 'x') => 0.00
3051 rindex('abcdefgh', 'abch') => 0.00
3053 rindex('banana', 'na') => 5.00
3055 rindex('banana', 'ana') => 4.00
3057 rindex('', 'x') => 0.00
3059 rindex('x', '') => 2.00
3061 rindex('', '') => 1.00
3063 rindex('abcdefgh', '') => 9.00
3065 rindex('abcdefgh', 'alkjsfdjlskalkjfa') => 0.00
3067 rindex('abcbcde', 'bc', 1) => 5.00
3069 rindex('abcbcde', 'dc', 1) => 6.00
3071 rindex('abcbcde', 'abc', 1) => 5.00
3073 rindex('abcbcde', 'bc', 2) => 4.00
3075 rindex('abcbcde', 'dc', 2) => 0.00
3077 rindex('abcbcde', 'abc', 1) => 5.00
3079 rindex('abcbcde', 'bccb', 2) => 4.00
3081 rindex('abcbcde', 'bcbc', 2) => 4.00
3083 evaluate.sps:32.17-32.44: error: DEBUG EVALUATE: RINDEX needle length argument
3084 must evenly divide the length of the needles argument.
3085 32 | DEBUG EVALUATE /rindex('abcbcde', 'bcbc', 0).
3086 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
3088 evaluate.sps:32.35-32.40: note: DEBUG EVALUATE: The needles argument has length
3090 32 | DEBUG EVALUATE /rindex('abcbcde', 'bcbc', 0).
3093 evaluate.sps:32.43: note: DEBUG EVALUATE: The needle length argument has value
3095 32 | DEBUG EVALUATE /rindex('abcbcde', 'bcbc', 0).
3098 rindex('abcbcde', 'bcbc', 0) => sysmis
3100 rindex('abcbcde', 'bcbc', $sysmis) => sysmis
3102 evaluate.sps:34.17-34.45: error: DEBUG EVALUATE: RINDEX needle length argument
3103 must evenly divide the length of the needles argument.
3104 34 | DEBUG EVALUATE /rindex('abcbcde', 'bcbcg', 2).
3105 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3107 evaluate.sps:34.35-34.41: note: DEBUG EVALUATE: The needles argument has length
3109 34 | DEBUG EVALUATE /rindex('abcbcde', 'bcbcg', 2).
3112 evaluate.sps:34.44: note: DEBUG EVALUATE: The needle length argument has value
3114 34 | DEBUG EVALUATE /rindex('abcbcde', 'bcbcg', 2).
3117 rindex('abcbcde', 'bcbcg', 2) => sysmis
3119 rindex('abcbcde', 'bcbcg', $sysmis) => sysmis
3121 evaluate.sps:36.17-36.47: error: DEBUG EVALUATE: Function invocation
3122 rindex(string, string, string) does not match any known function. Candidates
3124 RINDEX(string, string)
3125 RINDEX(string, string, integer).
3126 36 | DEBUG EVALUATE /rindex('abcbcde', 'bcbcg', 'x').
3127 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3129 rindex('abcbcde', 'bcbcg', 'x') => error
3131 evaluate.sps:37.17-37.39: error: DEBUG EVALUATE: Function invocation
3132 rindex(number, string, number) does not match any known function. Candidates
3134 RINDEX(string, string)
3135 RINDEX(string, string, integer).
3136 37 | DEBUG EVALUATE /rindex(1, 'bcdfkjl', 2).
3137 | ^~~~~~~~~~~~~~~~~~~~~~~
3139 rindex(1, 'bcdfkjl', 2) => error
3141 evaluate.sps:38.17-38.36: error: DEBUG EVALUATE: Function invocation
3142 rindex(string, number, number) does not match any known function. Candidates
3144 RINDEX(string, string)
3145 RINDEX(string, string, integer).
3146 38 | DEBUG EVALUATE /rindex('aksj', 2, 2).
3147 | ^~~~~~~~~~~~~~~~~~~~
3149 rindex('aksj', 2, 2) => error
3151 evaluate.sps:39.17-39.31: error: DEBUG EVALUATE: Function invocation
3152 rindex(number, number, number) does not match any known function. Candidates
3154 RINDEX(string, string)
3155 RINDEX(string, string, integer).
3156 39 | DEBUG EVALUATE /rindex(1, 2, 3).
3159 rindex(1, 2, 3) => error
3161 evaluate.sps:40.17-40.33: error: DEBUG EVALUATE: Function invocation
3162 rindex(number, number, string) does not match any known function. Candidates
3164 RINDEX(string, string)
3165 RINDEX(string, string, integer).
3166 40 | DEBUG EVALUATE /rindex(1, 2, '3').
3169 rindex(1, 2, '3') => error
3171 rindex('abcbcde', '', 1) => 0.00
3173 rindex('', '', 1) => 0.00
3178 AT_SETUP([expressions - LENGTH])
3179 AT_KEYWORDS([expression expressions evaluate])
3180 AT_DATA([evaluate-base.sps], [dnl
3182 DEBUG EVALUATE SET opt.
3184 DEBUG EVALUATE /length('').
3185 DEBUG EVALUATE /length('a').
3186 DEBUG EVALUATE /length('xy').
3187 DEBUG EVALUATE /length('adsf ').
3188 DEBUG EVALUATE /length('abcdefghijkl').
3189 DEBUG EVALUATE /length(0).
3190 DEBUG EVALUATE /length($sysmis).
3193 for opt in OPT NOOPT; do
3195 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3196 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3201 length('xy') => 2.00
3203 length('adsf ') => 8.00
3205 length('abcdefghijkl') => 12.00
3207 evaluate.sps:9.17-9.25: error: DEBUG EVALUATE: Type mismatch invoking
3208 LENGTH(string) as length(number).
3209 9 | DEBUG EVALUATE /length(0).
3212 evaluate.sps:9.24: note: DEBUG EVALUATE: This argument has type 'number' but
3213 'string' is required.
3214 9 | DEBUG EVALUATE /length(0).
3219 evaluate.sps:10.17-10.31: error: DEBUG EVALUATE: Type mismatch invoking
3220 LENGTH(string) as length(number).
3221 10 | DEBUG EVALUATE /length($sysmis).
3224 evaluate.sps:10.24-10.30: note: DEBUG EVALUATE: This argument has type 'number'
3225 but 'string' is required.
3226 10 | DEBUG EVALUATE /length($sysmis).
3229 length($sysmis) => error
3234 AT_SETUP([expressions - LOWER])
3235 AT_KEYWORDS([expression expressions evaluate])
3236 AT_DATA([evaluate-base.sps], [dnl
3238 DEBUG EVALUATE SET opt.
3240 DEBUG EVALUATE /lower('ABCDEFGHIJKLMNOPQRSTUVWXYZ!@%&*089').
3241 DEBUG EVALUATE /lower('').
3242 DEBUG EVALUATE /lower(1).
3245 for opt in OPT NOOPT; do
3247 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3248 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3249 lower('ABCDEFGHIJKLMNOPQRSTUVWXYZ!@%&*089') => "abcdefghijklmnopqrstuvwxyz!
3254 evaluate.sps:6.17-6.24: error: DEBUG EVALUATE: Type mismatch invoking
3255 LOWER(string) as lower(number).
3256 6 | DEBUG EVALUATE /lower(1).
3259 evaluate.sps:6.23: note: DEBUG EVALUATE: This argument has type 'number' but
3260 'string' is required.
3261 6 | DEBUG EVALUATE /lower(1).
3269 AT_SETUP([expressions - REPLACE])
3270 AT_KEYWORDS([expression expressions evaluate])
3271 AT_DATA([evaluate-base.sps], [dnl
3273 DEBUG EVALUATE SET opt.
3274 DEBUG EVALUATE /replace('banana', 'an', 'AN').
3275 DEBUG EVALUATE /replace('banana', 'an', 'a').
3276 DEBUG EVALUATE /replace('banana', 'an', '').
3277 DEBUG EVALUATE /replace('banana', 'na', '').
3278 DEBUG EVALUATE /replace('banana', 'ba', 'BA').
3279 DEBUG EVALUATE /replace('banana', 'na', 'xyzzy').
3280 DEBUG EVALUATE /replace('banana', 'an', 'xyzzy', 1).
3281 DEBUG EVALUATE /replace('banana', 'an', 'xyzzy', 1.5).
3282 DEBUG EVALUATE /replace('banana', 'bananana', 'xyzzy').
3283 DEBUG EVALUATE /replace('banana', '', 'xyzzy').
3284 DEBUG EVALUATE /replace('banana', 'ba', '', 0).
3285 DEBUG EVALUATE /replace('banana', 'ba', '', -1).
3286 DEBUG EVALUATE /replace('banana', 'ba', '', $sysmis).
3289 for opt in OPT NOOPT; do
3291 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3292 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3293 replace('banana', 'an', 'AN') => "bANANa"
3295 replace('banana', 'an', 'a') => "baaa"
3297 replace('banana', 'an', '') => "ba"
3299 replace('banana', 'na', '') => "ba"
3301 replace('banana', 'ba', 'BA') => "BAnana"
3303 replace('banana', 'na', 'xyzzy') => "baxyzzyxyzzy"
3305 replace('banana', 'an', 'xyzzy', 1) => "bxyzzyana"
3307 evaluate.sps:10.50-10.52: error: DEBUG EVALUATE: Treating unexpected non-
3308 integer value 1.5 as missing.
3309 10 | DEBUG EVALUATE /replace('banana', 'an', 'xyzzy', 1.5).
3312 replace('banana', 'an', 'xyzzy', 1.5) => "banana"
3314 replace('banana', 'bananana', 'xyzzy') => "banana"
3316 replace('banana', '', 'xyzzy') => "banana"
3318 replace('banana', 'ba', '', 0) => "banana"
3320 replace('banana', 'ba', '', -1) => "banana"
3322 replace('banana', 'ba', '', $sysmis) => "banana"
3327 AT_SETUP([expressions - LPAD])
3328 AT_KEYWORDS([expression expressions evaluate])
3329 AT_DATA([evaluate-base.sps], [dnl
3331 DEBUG EVALUATE SET opt.
3333 DEBUG EVALUATE /lpad('abc', 0).
3334 DEBUG EVALUATE /lpad('abc', 2).
3335 DEBUG EVALUATE /lpad('abc', 3).
3336 DEBUG EVALUATE /lpad('abc', 10).
3338 DEBUG EVALUATE /lpad('abc', -1).
3339 DEBUG EVALUATE /lpad('abc', 32768).
3340 DEBUG EVALUATE /lpad('abc', $sysmis).
3342 DEBUG EVALUATE /lpad('abc', -1, '*').
3343 DEBUG EVALUATE /lpad('abc', 0, '*').
3344 DEBUG EVALUATE /lpad('abc', 2, '*').
3345 DEBUG EVALUATE /lpad('abc', 3, '*').
3346 DEBUG EVALUATE /lpad('abc', 10, '*').
3348 DEBUG EVALUATE /lpad('abc', 5, 'de').
3349 DEBUG EVALUATE /lpad('abc', 6, 'de').
3350 DEBUG EVALUATE /lpad('abc', 7, 'de').
3351 DEBUG EVALUATE /lpad('abc', 8, 'de').
3352 DEBUG EVALUATE /lpad('abc', 9, 'de').
3354 DEBUG EVALUATE /lpad('abc', 32768, '*').
3355 DEBUG EVALUATE /lpad('abc', $sysmis, '*').
3356 DEBUG EVALUATE /lpad('abc', $sysmis, '').
3357 DEBUG EVALUATE /lpad('abc', $sysmis, 'xy').
3358 DEBUG EVALUATE /lpad(0, 10).
3359 DEBUG EVALUATE /lpad('abc', 'def').
3360 DEBUG EVALUATE /lpad(0, 10, ' ').
3361 DEBUG EVALUATE /lpad('abc', 'def', ' ').
3362 DEBUG EVALUATE /lpad('x', 5, 0).
3363 DEBUG EVALUATE /lpad('x', 5, 2).
3366 for opt in OPT NOOPT; do
3368 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3369 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3370 lpad('abc', 0) => "abc"
3372 lpad('abc', 2) => "abc"
3374 lpad('abc', 3) => "abc"
3376 lpad('abc', 10) => " abc"
3378 evaluate.sps:9.17-9.31: error: DEBUG EVALUATE: The length argument to LPAD must
3379 be between 0 and 32767.
3380 9 | DEBUG EVALUATE /lpad('abc', -1).
3383 evaluate.sps:9.29-9.30: note: DEBUG EVALUATE: The length argument is -1.
3384 9 | DEBUG EVALUATE /lpad('abc', -1).
3387 lpad('abc', -1) => "abc"
3389 evaluate.sps:10.17-10.34: error: DEBUG EVALUATE: The length argument to LPAD
3390 must be between 0 and 32767.
3391 10 | DEBUG EVALUATE /lpad('abc', 32768).
3392 | ^~~~~~~~~~~~~~~~~~
3394 evaluate.sps:10.29-10.33: note: DEBUG EVALUATE: The length argument is 32768.
3395 10 | DEBUG EVALUATE /lpad('abc', 32768).
3398 lpad('abc', 32768) => "abc"
3400 lpad('abc', $sysmis) => "abc"
3402 evaluate.sps:13.17-13.36: error: DEBUG EVALUATE: The length argument to LPAD
3403 must be between 0 and 32767.
3404 13 | DEBUG EVALUATE /lpad('abc', -1, '*').
3405 | ^~~~~~~~~~~~~~~~~~~~
3407 evaluate.sps:13.29-13.30: note: DEBUG EVALUATE: The length argument is -1.
3408 13 | DEBUG EVALUATE /lpad('abc', -1, '*').
3411 lpad('abc', -1, '*') => "abc"
3413 lpad('abc', 0, '*') => "abc"
3415 lpad('abc', 2, '*') => "abc"
3417 lpad('abc', 3, '*') => "abc"
3419 lpad('abc', 10, '*') => "*******abc"
3421 lpad('abc', 5, 'de') => "deabc"
3423 lpad('abc', 6, 'de') => "deabc"
3425 lpad('abc', 7, 'de') => "dedeabc"
3427 lpad('abc', 8, 'de') => "dedeabc"
3429 lpad('abc', 9, 'de') => "dededeabc"
3431 evaluate.sps:25.17-25.39: error: DEBUG EVALUATE: The length argument to LPAD
3432 must be between 0 and 32767.
3433 25 | DEBUG EVALUATE /lpad('abc', 32768, '*').
3434 | ^~~~~~~~~~~~~~~~~~~~~~~
3436 evaluate.sps:25.29-25.33: note: DEBUG EVALUATE: The length argument is 32768.
3437 25 | DEBUG EVALUATE /lpad('abc', 32768, '*').
3440 lpad('abc', 32768, '*') => "abc"
3442 lpad('abc', $sysmis, '*') => "abc"
3444 lpad('abc', $sysmis, '') => "abc"
3446 lpad('abc', $sysmis, 'xy') => "abc"
3448 evaluate.sps:29.17-29.27: error: DEBUG EVALUATE: Function invocation
3449 lpad(number, number) does not match any known function. Candidates are:
3450 LPAD(string, integer)
3451 LPAD(string, integer, string).
3452 29 | DEBUG EVALUATE /lpad(0, 10).
3455 lpad(0, 10) => error
3457 evaluate.sps:30.17-30.34: error: DEBUG EVALUATE: Function invocation
3458 lpad(string, string) does not match any known function. Candidates are:
3459 LPAD(string, integer)
3460 LPAD(string, integer, string).
3461 30 | DEBUG EVALUATE /lpad('abc', 'def').
3462 | ^~~~~~~~~~~~~~~~~~
3464 lpad('abc', 'def') => error
3466 evaluate.sps:31.17-31.32: error: DEBUG EVALUATE: Function invocation
3467 lpad(number, number, string) does not match any known function. Candidates
3469 LPAD(string, integer)
3470 LPAD(string, integer, string).
3471 31 | DEBUG EVALUATE /lpad(0, 10, ' ').
3474 lpad(0, 10, ' ') => error
3476 evaluate.sps:32.17-32.39: error: DEBUG EVALUATE: Function invocation
3477 lpad(string, string, string) does not match any known function. Candidates
3479 LPAD(string, integer)
3480 LPAD(string, integer, string).
3481 32 | DEBUG EVALUATE /lpad('abc', 'def', ' ').
3482 | ^~~~~~~~~~~~~~~~~~~~~~~
3484 lpad('abc', 'def', ' ') => error
3486 evaluate.sps:33.17-33.31: error: DEBUG EVALUATE: Function invocation
3487 lpad(string, number, number) does not match any known function. Candidates
3489 LPAD(string, integer)
3490 LPAD(string, integer, string).
3491 33 | DEBUG EVALUATE /lpad('x', 5, 0).
3494 lpad('x', 5, 0) => error
3496 evaluate.sps:34.17-34.31: error: DEBUG EVALUATE: Function invocation
3497 lpad(string, number, number) does not match any known function. Candidates
3499 LPAD(string, integer)
3500 LPAD(string, integer, string).
3501 34 | DEBUG EVALUATE /lpad('x', 5, 2).
3504 lpad('x', 5, 2) => error
3509 AT_SETUP([expressions - NUMBER])
3510 AT_KEYWORDS([expression expressions evaluate])
3511 AT_DATA([evaluate-base.sps], [dnl
3513 DEBUG EVALUATE SET opt.
3514 DEBUG EVALUATE /number("123", f3.0).
3515 DEBUG EVALUATE /number(" 123", f3.0).
3516 DEBUG EVALUATE /number("123", f3.1).
3517 DEBUG EVALUATE /number(" ", f3.1).
3518 DEBUG EVALUATE /number("123", a8).
3519 dnl CCA is not an input format:
3520 DEBUG EVALUATE /number("123", cca1.2).
3523 for opt in OPT NOOPT; do
3525 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3526 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3527 number("123", f3.0) => 123.00
3529 number(" 123", f3.0) => 12.00
3531 number("123", f3.1) => 12.30
3533 number(" ", f3.1) => sysmis
3535 evaluate.sps:7.17-7.33: error: DEBUG EVALUATE: Type mismatch invoking
3536 NUMBER(string, num_input_format) as number(string, format).
3537 7 | DEBUG EVALUATE /number("123", a8).
3540 evaluate.sps:7.31-7.32: note: DEBUG EVALUATE: Numeric variables are not
3541 compatible with string format A8.
3542 7 | DEBUG EVALUATE /number("123", a8).
3545 number("123", a8) => error
3547 evaluate.sps:8.17-8.37: error: DEBUG EVALUATE: Type mismatch invoking
3548 NUMBER(string, num_input_format) as number(string, format).
3549 8 | DEBUG EVALUATE /number("123", cca1.2).
3550 | ^~~~~~~~~~~~~~~~~~~~~
3552 evaluate.sps:8.31-8.36: note: DEBUG EVALUATE: Format CCA1.2 may not be used for
3554 8 | DEBUG EVALUATE /number("123", cca1.2).
3557 number("123", cca1.2) => error
3562 AT_SETUP([expressions - LTRIM])
3563 AT_KEYWORDS([expression expressions evaluate])
3564 AT_DATA([evaluate-base.sps], [dnl
3566 DEBUG EVALUATE SET opt.
3567 DEBUG EVALUATE /ltrim(' abc').
3568 DEBUG EVALUATE /rtrim(' abc ').
3569 DEBUG EVALUATE /ltrim('abc').
3570 * The following string contains a tab.
3571 DEBUG EVALUATE /ltrim(' abc').
3572 DEBUG EVALUATE /ltrim(' ').
3573 DEBUG EVALUATE /ltrim('').
3574 DEBUG EVALUATE /ltrim(8).
3576 DEBUG EVALUATE /ltrim('***abc', '*').
3577 DEBUG EVALUATE /ltrim('abc', '*').
3578 DEBUG EVALUATE /ltrim('*abc', '*').
3579 DEBUG EVALUATE /ltrim('', '*').
3581 DEBUG EVALUATE /ltrim('abc', 'xy').
3582 DEBUG EVALUATE /ltrim('xyabc', 'xy').
3583 DEBUG EVALUATE /ltrim('xyxyabc', 'xy').
3585 DEBUG EVALUATE /ltrim(8, '*').
3586 DEBUG EVALUATE /ltrim(' x', 8).
3587 DEBUG EVALUATE /ltrim(8, 9).
3590 for opt in OPT NOOPT; do
3592 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3593 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3594 ltrim(' abc') => "abc"
3596 rtrim(' abc ') => " abc"
3598 ltrim('abc') => "abc"
3600 ltrim(' abc') => " abc"
3606 evaluate.sps:10.17-10.24: error: DEBUG EVALUATE: Function invocation
3607 ltrim(number) does not match any known function. Candidates are:
3609 LTRIM(string, string).
3610 10 | DEBUG EVALUATE /ltrim(8).
3615 ltrim('***abc', '*') => "abc"
3617 ltrim('abc', '*') => "abc"
3619 ltrim('*abc', '*') => "abc"
3621 ltrim('', '*') => ""
3623 ltrim('abc', 'xy') => "abc"
3625 ltrim('xyabc', 'xy') => "abc"
3627 ltrim('xyxyabc', 'xy') => "abc"
3629 evaluate.sps:21.17-21.29: error: DEBUG EVALUATE: Function invocation
3630 ltrim(number, string) does not match any known function. Candidates are:
3632 LTRIM(string, string).
3633 21 | DEBUG EVALUATE /ltrim(8, '*').
3636 ltrim(8, '*') => error
3638 evaluate.sps:22.17-22.30: error: DEBUG EVALUATE: Function invocation
3639 ltrim(string, number) does not match any known function. Candidates are:
3641 LTRIM(string, string).
3642 22 | DEBUG EVALUATE /ltrim(' x', 8).
3645 ltrim(' x', 8) => error
3647 evaluate.sps:23.17-23.27: error: DEBUG EVALUATE: Function invocation
3648 ltrim(number, number) does not match any known function. Candidates are:
3650 LTRIM(string, string).
3651 23 | DEBUG EVALUATE /ltrim(8, 9).
3654 ltrim(8, 9) => error
3659 AT_SETUP([expressions - RPAD])
3660 AT_KEYWORDS([expression expressions evaluate])
3661 AT_DATA([evaluate-base.sps], [dnl
3663 DEBUG EVALUATE SET opt.
3665 DEBUG EVALUATE /rpad('abc', 0).
3666 DEBUG EVALUATE /rpad('abc', 2).
3667 DEBUG EVALUATE /rpad('abc', 3).
3668 DEBUG EVALUATE /rpad('abc', 10).
3670 DEBUG EVALUATE /rpad('abc', -1).
3671 DEBUG EVALUATE /rpad('abc', 32768).
3672 DEBUG EVALUATE /rpad('abc', $sysmis).
3674 DEBUG EVALUATE /rpad('abc', -1, '*').
3675 DEBUG EVALUATE /rpad('abc', 0, '*').
3676 DEBUG EVALUATE /rpad('abc', 2, '*').
3677 DEBUG EVALUATE /rpad('abc', 3, '*').
3678 DEBUG EVALUATE /rpad('abc', 10, '*').
3680 DEBUG EVALUATE /rpad('abc', 5, 'de').
3681 DEBUG EVALUATE /rpad('abc', 6, 'de').
3682 DEBUG EVALUATE /rpad('abc', 7, 'de').
3683 DEBUG EVALUATE /rpad('abc', 8, 'de').
3684 DEBUG EVALUATE /rpad('abc', 9, 'de').
3686 DEBUG EVALUATE /rpad('abc', 32768, '*').
3687 DEBUG EVALUATE /rpad('abc', $sysmis, '*').
3688 DEBUG EVALUATE /rpad('abc', $sysmis, '').
3689 DEBUG EVALUATE /rpad('abc', $sysmis, 'xy').
3690 DEBUG EVALUATE /rpad(0, 10).
3691 DEBUG EVALUATE /rpad('abc', 'def').
3692 DEBUG EVALUATE /rpad(0, 10, ' ').
3693 DEBUG EVALUATE /rpad('abc', 'def', ' ').
3694 DEBUG EVALUATE /rpad('x', 5, 0).
3695 DEBUG EVALUATE /rpad('x', 5, 2).
3698 for opt in OPT NOOPT; do
3700 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3701 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3702 rpad('abc', 0) => "abc"
3704 rpad('abc', 2) => "abc"
3706 rpad('abc', 3) => "abc"
3708 rpad('abc', 10) => "abc "
3710 evaluate.sps:9.17-9.31: error: DEBUG EVALUATE: The length argument to RPAD must
3711 be between 0 and 32767.
3712 9 | DEBUG EVALUATE /rpad('abc', -1).
3715 evaluate.sps:9.29-9.30: note: DEBUG EVALUATE: The length argument is -1.
3716 9 | DEBUG EVALUATE /rpad('abc', -1).
3719 rpad('abc', -1) => "abc"
3721 evaluate.sps:10.17-10.34: error: DEBUG EVALUATE: The length argument to RPAD
3722 must be between 0 and 32767.
3723 10 | DEBUG EVALUATE /rpad('abc', 32768).
3724 | ^~~~~~~~~~~~~~~~~~
3726 evaluate.sps:10.29-10.33: note: DEBUG EVALUATE: The length argument is 32768.
3727 10 | DEBUG EVALUATE /rpad('abc', 32768).
3730 rpad('abc', 32768) => "abc"
3732 rpad('abc', $sysmis) => "abc"
3734 evaluate.sps:13.17-13.36: error: DEBUG EVALUATE: The length argument to RPAD
3735 must be between 0 and 32767.
3736 13 | DEBUG EVALUATE /rpad('abc', -1, '*').
3737 | ^~~~~~~~~~~~~~~~~~~~
3739 evaluate.sps:13.29-13.30: note: DEBUG EVALUATE: The length argument is -1.
3740 13 | DEBUG EVALUATE /rpad('abc', -1, '*').
3743 rpad('abc', -1, '*') => "abc"
3745 rpad('abc', 0, '*') => "abc"
3747 rpad('abc', 2, '*') => "abc"
3749 rpad('abc', 3, '*') => "abc"
3751 rpad('abc', 10, '*') => "abc*******"
3753 rpad('abc', 5, 'de') => "abcde"
3755 rpad('abc', 6, 'de') => "abcde"
3757 rpad('abc', 7, 'de') => "abcdede"
3759 rpad('abc', 8, 'de') => "abcdede"
3761 rpad('abc', 9, 'de') => "abcdedede"
3763 evaluate.sps:25.17-25.39: error: DEBUG EVALUATE: The length argument to RPAD
3764 must be between 0 and 32767.
3765 25 | DEBUG EVALUATE /rpad('abc', 32768, '*').
3766 | ^~~~~~~~~~~~~~~~~~~~~~~
3768 evaluate.sps:25.29-25.33: note: DEBUG EVALUATE: The length argument is 32768.
3769 25 | DEBUG EVALUATE /rpad('abc', 32768, '*').
3772 rpad('abc', 32768, '*') => "abc"
3774 rpad('abc', $sysmis, '*') => "abc"
3776 rpad('abc', $sysmis, '') => "abc"
3778 rpad('abc', $sysmis, 'xy') => "abc"
3780 evaluate.sps:29.17-29.27: error: DEBUG EVALUATE: Function invocation
3781 rpad(number, number) does not match any known function. Candidates are:
3782 RPAD(string, integer)
3783 RPAD(string, integer, string).
3784 29 | DEBUG EVALUATE /rpad(0, 10).
3787 rpad(0, 10) => error
3789 evaluate.sps:30.17-30.34: error: DEBUG EVALUATE: Function invocation
3790 rpad(string, string) does not match any known function. Candidates are:
3791 RPAD(string, integer)
3792 RPAD(string, integer, string).
3793 30 | DEBUG EVALUATE /rpad('abc', 'def').
3794 | ^~~~~~~~~~~~~~~~~~
3796 rpad('abc', 'def') => error
3798 evaluate.sps:31.17-31.32: error: DEBUG EVALUATE: Function invocation
3799 rpad(number, number, string) does not match any known function. Candidates
3801 RPAD(string, integer)
3802 RPAD(string, integer, string).
3803 31 | DEBUG EVALUATE /rpad(0, 10, ' ').
3806 rpad(0, 10, ' ') => error
3808 evaluate.sps:32.17-32.39: error: DEBUG EVALUATE: Function invocation
3809 rpad(string, string, string) does not match any known function. Candidates
3811 RPAD(string, integer)
3812 RPAD(string, integer, string).
3813 32 | DEBUG EVALUATE /rpad('abc', 'def', ' ').
3814 | ^~~~~~~~~~~~~~~~~~~~~~~
3816 rpad('abc', 'def', ' ') => error
3818 evaluate.sps:33.17-33.31: error: DEBUG EVALUATE: Function invocation
3819 rpad(string, number, number) does not match any known function. Candidates
3821 RPAD(string, integer)
3822 RPAD(string, integer, string).
3823 33 | DEBUG EVALUATE /rpad('x', 5, 0).
3826 rpad('x', 5, 0) => error
3828 evaluate.sps:34.17-34.31: error: DEBUG EVALUATE: Function invocation
3829 rpad(string, number, number) does not match any known function. Candidates
3831 RPAD(string, integer)
3832 RPAD(string, integer, string).
3833 34 | DEBUG EVALUATE /rpad('x', 5, 2).
3836 rpad('x', 5, 2) => error
3841 AT_SETUP([expressions - RTRIM])
3842 AT_KEYWORDS([expression expressions evaluate])
3843 AT_DATA([evaluate-base.sps], [dnl
3845 DEBUG EVALUATE SET opt.
3846 DEBUG EVALUATE /rtrim('abc ').
3847 DEBUG EVALUATE /rtrim(' abc ').
3848 DEBUG EVALUATE /rtrim('abc').
3849 * The following string contains a tab.
3850 DEBUG EVALUATE /rtrim('abc ').
3851 DEBUG EVALUATE /rtrim(' ').
3852 DEBUG EVALUATE /rtrim('').
3853 DEBUG EVALUATE /rtrim(8).
3855 DEBUG EVALUATE /rtrim('abc***', '*').
3856 DEBUG EVALUATE /rtrim('abc', '*').
3857 DEBUG EVALUATE /rtrim('abc*', '*').
3858 DEBUG EVALUATE /rtrim('', '*').
3860 DEBUG EVALUATE /rtrim('abc', 'xy').
3861 DEBUG EVALUATE /rtrim('abcxy', 'xy').
3862 DEBUG EVALUATE /rtrim('abcxyxy', 'xy').
3864 DEBUG EVALUATE /rtrim(8, '*').
3865 DEBUG EVALUATE /rtrim('x ', 8).
3866 DEBUG EVALUATE /rtrim(8, 9).
3869 for opt in OPT NOOPT; do
3871 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3872 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3873 rtrim('abc ') => "abc"
3875 rtrim(' abc ') => " abc"
3877 rtrim('abc') => "abc"
3879 rtrim('abc ') => "abc "
3885 evaluate.sps:10.17-10.24: error: DEBUG EVALUATE: Function invocation
3886 rtrim(number) does not match any known function. Candidates are:
3888 RTRIM(string, string).
3889 10 | DEBUG EVALUATE /rtrim(8).
3894 rtrim('abc***', '*') => "abc"
3896 rtrim('abc', '*') => "abc"
3898 rtrim('abc*', '*') => "abc"
3900 rtrim('', '*') => ""
3902 rtrim('abc', 'xy') => "abc"
3904 rtrim('abcxy', 'xy') => "abc"
3906 rtrim('abcxyxy', 'xy') => "abc"
3908 evaluate.sps:21.17-21.29: error: DEBUG EVALUATE: Function invocation
3909 rtrim(number, string) does not match any known function. Candidates are:
3911 RTRIM(string, string).
3912 21 | DEBUG EVALUATE /rtrim(8, '*').
3915 rtrim(8, '*') => error
3917 evaluate.sps:22.17-22.30: error: DEBUG EVALUATE: Function invocation
3918 rtrim(string, number) does not match any known function. Candidates are:
3920 RTRIM(string, string).
3921 22 | DEBUG EVALUATE /rtrim('x ', 8).
3924 rtrim('x ', 8) => error
3926 evaluate.sps:23.17-23.27: error: DEBUG EVALUATE: Function invocation
3927 rtrim(number, number) does not match any known function. Candidates are:
3929 RTRIM(string, string).
3930 23 | DEBUG EVALUATE /rtrim(8, 9).
3933 rtrim(8, 9) => error
3938 AT_SETUP([expressions - STRING])
3939 AT_KEYWORDS([expression expressions evaluate])
3940 AT_DATA([evaluate-base.sps], [dnl
3942 DEBUG EVALUATE SET opt.
3943 DEBUG EVALUATE /string(123.56, f5.1).
3944 DEBUG EVALUATE /string($sysmis, f5.1).
3945 DEBUG EVALUATE /string("abc", A5).
3946 dnl E has a minimum width of 6 on output:
3947 DEBUG EVALUATE /string(123, e1).
3948 DEBUG EVALUATE /string(123, e6.0).
3951 for opt in OPT NOOPT; do
3953 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3954 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3955 string(123.56, f5.1) => "123.6"
3957 string($sysmis, f5.1) => " . "
3959 evaluate.sps:5.17-5.33: error: DEBUG EVALUATE: Type mismatch invoking
3960 STRING(number, num_output_format) as string(string, format).
3961 5 | DEBUG EVALUATE /string("abc", A5).
3964 evaluate.sps:5.24-5.28: note: DEBUG EVALUATE: This argument has type 'string'
3965 but 'number' is required.
3966 5 | DEBUG EVALUATE /string("abc", A5).
3969 evaluate.sps:5.31-5.32: note: DEBUG EVALUATE: Numeric variables are not
3970 compatible with string format A5.
3971 5 | DEBUG EVALUATE /string("abc", A5).
3974 string("abc", A5) => error
3976 evaluate.sps:6.17-6.31: error: DEBUG EVALUATE: Type mismatch invoking
3977 STRING(number, num_output_format) as string(number, format).
3978 6 | DEBUG EVALUATE /string(123, e1).
3981 evaluate.sps:6.29-6.30: note: DEBUG EVALUATE: Output format E1.0 specifies
3982 width 1, but E requires a width between 6 and 40.
3983 6 | DEBUG EVALUATE /string(123, e1).
3986 string(123, e1) => error
3988 string(123, e6.0) => "1E+002"
3993 AT_SETUP([expressions - STRUNC])
3994 AT_KEYWORDS([expression expressions evaluate])
3995 AT_DATA([evaluate-base.sps], [dnl
3997 DEBUG EVALUATE SET opt.
3998 DEBUG EVALUATE /strunc('a c ', 9).
3999 DEBUG EVALUATE /strunc('a c ', 7).
4000 DEBUG EVALUATE /strunc('a c ', 6).
4001 DEBUG EVALUATE /strunc('a c ', 5).
4002 DEBUG EVALUATE /strunc('a c ', 4).
4003 DEBUG EVALUATE /strunc('a c ', 3).
4004 DEBUG EVALUATE /strunc('a c ', 2).
4005 DEBUG EVALUATE /strunc('a c ', 1).
4006 DEBUG EVALUATE /strunc('a c ', 0).
4008 DEBUG EVALUATE /strunc('a c ', 0.75).
4009 DEBUG EVALUATE /strunc('a c ', -1).
4010 DEBUG EVALUATE /strunc('a c ', $sysmis).
4012 DEBUG EVALUATE /strunc(' abc ', 9).
4013 DEBUG EVALUATE /strunc(' abc ', 8).
4014 DEBUG EVALUATE /strunc(' abc ', 7).
4015 DEBUG EVALUATE /strunc(' abc ', 6).
4016 DEBUG EVALUATE /strunc(' abc ', 5).
4017 DEBUG EVALUATE /strunc(' abc ', 4).
4018 DEBUG EVALUATE /strunc(' abc ', 3).
4019 DEBUG EVALUATE /strunc(' abc ', 2).
4020 DEBUG EVALUATE /strunc(' abc ', 1).
4022 DEBUG EVALUATE /strunc(' abc ', 1.5).
4023 DEBUG EVALUATE /strunc(' abc ', -1).
4024 DEBUG EVALUATE /strunc(' abc ', $sysmis).
4027 for opt in OPT NOOPT; do
4029 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
4030 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
4031 strunc('a c ', 9) => "a c"
4033 strunc('a c ', 7) => "a c"
4035 strunc('a c ', 6) => "a c"
4037 strunc('a c ', 5) => "a c"
4039 strunc('a c ', 4) => "a c"
4041 strunc('a c ', 3) => "a c"
4043 strunc('a c ', 2) => "a"
4045 strunc('a c ', 1) => "a"
4047 strunc('a c ', 0) => ""
4049 evaluate.sps:13.34-13.37: error: DEBUG EVALUATE: Treating unexpected non-
4050 integer value 0.75 as missing.
4051 13 | DEBUG EVALUATE /strunc('a c ', 0.75).
4054 strunc('a c ', 0.75) => "a c "
4056 strunc('a c ', -1) => ""
4058 strunc('a c ', $sysmis) => "a c "
4060 strunc(' abc ', 9) => " abc"
4062 strunc(' abc ', 8) => " abc"
4064 strunc(' abc ', 7) => " abc"
4066 strunc(' abc ', 6) => " abc"
4068 strunc(' abc ', 5) => " abc"
4070 strunc(' abc ', 4) => " ab"
4072 strunc(' abc ', 3) => " a"
4074 strunc(' abc ', 2) => ""
4076 strunc(' abc ', 1) => ""
4078 evaluate.sps:27.35-27.37: error: DEBUG EVALUATE: Treating unexpected non-
4079 integer value 1.5 as missing.
4080 27 | DEBUG EVALUATE /strunc(' abc ', 1.5).
4083 strunc(' abc ', 1.5) => " abc "
4085 strunc(' abc ', -1) => ""
4087 strunc(' abc ', $sysmis) => " abc "
4092 AT_SETUP([expressions - SUBSTR])
4093 AT_KEYWORDS([expression expressions evaluate])
4094 AT_DATA([evaluate-base.sps], [dnl
4095 DEBUG EVALUATE SET opt.
4096 DEBUG EVALUATE /substr('abcdefgh', 1).
4097 DEBUG EVALUATE /substr('abcdefgh', 3).
4098 DEBUG EVALUATE /substr('abcdefgh', 5).
4099 DEBUG EVALUATE /substr('abcdefgh', 6).
4100 DEBUG EVALUATE /substr('abcdefgh', 7).
4101 DEBUG EVALUATE /substr('abcdefgh', 8).
4102 DEBUG EVALUATE /substr('abcdefgh', 9).
4103 DEBUG EVALUATE /substr('abcdefgh', 10).
4104 DEBUG EVALUATE /substr('abcdefgh', 20).
4105 DEBUG EVALUATE /substr('abcdefgh', $sysmis).
4106 DEBUG EVALUATE /substr('abcdefgh', -5).
4107 DEBUG EVALUATE /substr('abcdefgh', 0).
4108 DEBUG EVALUATE /substr(0, 10).
4109 DEBUG EVALUATE /substr('abcd', 'abc').
4110 DEBUG EVALUATE /substr(0, 'abc').
4112 DEBUG EVALUATE /substr('abcdefgh', 0, 0).
4113 DEBUG EVALUATE /substr('abcdefgh', 3, 0).
4114 DEBUG EVALUATE /substr('abcdefgh', 5, 0).
4115 DEBUG EVALUATE /substr('abcdefgh', 9, 0).
4116 DEBUG EVALUATE /substr('abcdefgh', 0, 1).
4117 DEBUG EVALUATE /substr('abcdefgh', 0, 5).
4118 DEBUG EVALUATE /substr('abcdefgh', 1, 8).
4119 DEBUG EVALUATE /substr('abcdefgh', 1, 10).
4120 DEBUG EVALUATE /substr('abcdefgh', 1, 20).
4121 DEBUG EVALUATE /substr('abcdefgh', 3, 4).
4122 DEBUG EVALUATE /substr('abcdefgh', 5, 2).
4123 DEBUG EVALUATE /substr('abcdefgh', 6, 1).
4124 DEBUG EVALUATE /substr('abcdefgh', 7, 10).
4125 DEBUG EVALUATE /substr('abcdefgh', 8, 1).
4126 DEBUG EVALUATE /substr('abcdefgh', 8, 2).
4127 DEBUG EVALUATE /substr('abcdefgh', 9, 11).
4128 DEBUG EVALUATE /substr('abcdefgh', 10, 52).
4129 DEBUG EVALUATE /substr('abcdefgh', 20, 1).
4130 DEBUG EVALUATE /substr('abcdefgh', $sysmis, 2).
4131 DEBUG EVALUATE /substr('abcdefgh', 9, $sysmis).
4132 DEBUG EVALUATE /substr('abcdefgh', $sysmis, $sysmis).
4133 DEBUG EVALUATE /substr('abc', 1, 'x').
4134 DEBUG EVALUATE /substr(0, 10, 1).
4135 DEBUG EVALUATE /substr(0, 10, 'x').
4136 DEBUG EVALUATE /substr('abcd', 'abc', 0).
4137 DEBUG EVALUATE /substr('abcd', 'abc', 'j').
4138 DEBUG EVALUATE /substr(0, 'abc', 4).
4139 DEBUG EVALUATE /substr(0, 'abc', 'k').
4142 for opt in OPT NOOPT; do
4144 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
4145 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
4146 substr('abcdefgh', 1) => "abcdefgh"
4148 substr('abcdefgh', 3) => "cdefgh"
4150 substr('abcdefgh', 5) => "efgh"
4152 substr('abcdefgh', 6) => "fgh"
4154 substr('abcdefgh', 7) => "gh"
4156 substr('abcdefgh', 8) => "h"
4158 substr('abcdefgh', 9) => ""
4160 substr('abcdefgh', 10) => ""
4162 substr('abcdefgh', 20) => ""
4164 substr('abcdefgh', $sysmis) => ""
4166 substr('abcdefgh', -5) => ""
4168 substr('abcdefgh', 0) => ""
4170 evaluate.sps:14.17-14.29: error: DEBUG EVALUATE: Function invocation
4171 substr(number, number) does not match any known function. Candidates are:
4172 SUBSTR(string, integer)
4173 SUBSTR(string, integer, integer).
4174 14 | DEBUG EVALUATE /substr(0, 10).
4177 substr(0, 10) => error
4179 evaluate.sps:15.17-15.37: error: DEBUG EVALUATE: Function invocation
4180 substr(string, string) does not match any known function. Candidates are:
4181 SUBSTR(string, integer)
4182 SUBSTR(string, integer, integer).
4183 15 | DEBUG EVALUATE /substr('abcd', 'abc').
4184 | ^~~~~~~~~~~~~~~~~~~~~
4186 substr('abcd', 'abc') => error
4188 evaluate.sps:16.17-16.32: error: DEBUG EVALUATE: Function invocation
4189 substr(number, string) does not match any known function. Candidates are:
4190 SUBSTR(string, integer)
4191 SUBSTR(string, integer, integer).
4192 16 | DEBUG EVALUATE /substr(0, 'abc').
4195 substr(0, 'abc') => error
4197 substr('abcdefgh', 0, 0) => ""
4199 substr('abcdefgh', 3, 0) => ""
4201 substr('abcdefgh', 5, 0) => ""
4203 substr('abcdefgh', 9, 0) => ""
4205 substr('abcdefgh', 0, 1) => ""
4207 substr('abcdefgh', 0, 5) => ""
4209 substr('abcdefgh', 1, 8) => "abcdefgh"
4211 substr('abcdefgh', 1, 10) => "abcdefgh"
4213 substr('abcdefgh', 1, 20) => "abcdefgh"
4215 substr('abcdefgh', 3, 4) => "cdef"
4217 substr('abcdefgh', 5, 2) => "ef"
4219 substr('abcdefgh', 6, 1) => "f"
4221 substr('abcdefgh', 7, 10) => "gh"
4223 substr('abcdefgh', 8, 1) => "h"
4225 substr('abcdefgh', 8, 2) => "h"
4227 substr('abcdefgh', 9, 11) => ""
4229 substr('abcdefgh', 10, 52) => ""
4231 substr('abcdefgh', 20, 1) => ""
4233 substr('abcdefgh', $sysmis, 2) => ""
4235 substr('abcdefgh', 9, $sysmis) => ""
4237 substr('abcdefgh', $sysmis, $sysmis) => ""
4239 evaluate.sps:39.17-39.37: error: DEBUG EVALUATE: Function invocation
4240 substr(string, number, string) does not match any known function. Candidates
4242 SUBSTR(string, integer)
4243 SUBSTR(string, integer, integer).
4244 39 | DEBUG EVALUATE /substr('abc', 1, 'x').
4245 | ^~~~~~~~~~~~~~~~~~~~~
4247 substr('abc', 1, 'x') => error
4249 evaluate.sps:40.17-40.32: error: DEBUG EVALUATE: Function invocation
4250 substr(number, number, number) does not match any known function. Candidates
4252 SUBSTR(string, integer)
4253 SUBSTR(string, integer, integer).
4254 40 | DEBUG EVALUATE /substr(0, 10, 1).
4257 substr(0, 10, 1) => error
4259 evaluate.sps:41.17-41.34: error: DEBUG EVALUATE: Function invocation
4260 substr(number, number, string) does not match any known function. Candidates
4262 SUBSTR(string, integer)
4263 SUBSTR(string, integer, integer).
4264 41 | DEBUG EVALUATE /substr(0, 10, 'x').
4265 | ^~~~~~~~~~~~~~~~~~
4267 substr(0, 10, 'x') => error
4269 evaluate.sps:42.17-42.40: error: DEBUG EVALUATE: Function invocation
4270 substr(string, string, number) does not match any known function. Candidates
4272 SUBSTR(string, integer)
4273 SUBSTR(string, integer, integer).
4274 42 | DEBUG EVALUATE /substr('abcd', 'abc', 0).
4275 | ^~~~~~~~~~~~~~~~~~~~~~~~
4277 substr('abcd', 'abc', 0) => error
4279 evaluate.sps:43.17-43.42: error: DEBUG EVALUATE: Function invocation
4280 substr(string, string, string) does not match any known function. Candidates
4282 SUBSTR(string, integer)
4283 SUBSTR(string, integer, integer).
4284 43 | DEBUG EVALUATE /substr('abcd', 'abc', 'j').
4285 | ^~~~~~~~~~~~~~~~~~~~~~~~~~
4287 substr('abcd', 'abc', 'j') => error
4289 evaluate.sps:44.17-44.35: error: DEBUG EVALUATE: Function invocation
4290 substr(number, string, number) does not match any known function. Candidates
4292 SUBSTR(string, integer)
4293 SUBSTR(string, integer, integer).
4294 44 | DEBUG EVALUATE /substr(0, 'abc', 4).
4295 | ^~~~~~~~~~~~~~~~~~~
4297 substr(0, 'abc', 4) => error
4299 evaluate.sps:45.17-45.37: error: DEBUG EVALUATE: Function invocation
4300 substr(number, string, string) does not match any known function. Candidates
4302 SUBSTR(string, integer)
4303 SUBSTR(string, integer, integer).
4304 45 | DEBUG EVALUATE /substr(0, 'abc', 'k').
4305 | ^~~~~~~~~~~~~~~~~~~~~
4307 substr(0, 'abc', 'k') => error
4312 AT_SETUP([expressions - UPCASE])
4313 AT_KEYWORDS([expression expressions evaluate])
4314 AT_DATA([evaluate-base.sps], [dnl
4315 DEBUG EVALUATE SET opt.
4316 DEBUG EVALUATE /upcase('abcdefghijklmnopqrstuvwxyz!@%&*089').
4317 DEBUG EVALUATE /upcase('').
4318 DEBUG EVALUATE /upcase(1).
4321 for opt in OPT NOOPT; do
4323 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
4324 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
4325 upcase('abcdefghijklmnopqrstuvwxyz!@%&*089') => "ABCDEFGHIJKLMNOPQRSTUVWXYZ!
4330 evaluate.sps:4.17-4.25: error: DEBUG EVALUATE: Type mismatch invoking
4331 UPCASE(string) as upcase(number).
4332 4 | DEBUG EVALUATE /upcase(1).
4335 evaluate.sps:4.24: note: DEBUG EVALUATE: This argument has type 'number' but
4336 'string' is required.
4337 4 | DEBUG EVALUATE /upcase(1).
4345 AT_SETUP([expressions - TIME.DAYS])
4346 AT_KEYWORDS([expression expressions evaluate])
4347 AT_DATA([evaluate-base.sps], [dnl
4349 DEBUG EVALUATE SET opt.
4350 DEBUG EVALUATE /time.days(1).
4351 DEBUG EVALUATE /time.days(-1).
4352 DEBUG EVALUATE /time.days(0.5).
4353 DEBUG EVALUATE /time.days('x').
4354 DEBUG EVALUATE /time.days($sysmis).
4357 for opt in OPT NOOPT; do
4359 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
4360 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
4361 time.days(1) => 86400.00
4363 time.days(-1) => -86400.00
4365 time.days(0.5) => 43200.00
4367 evaluate.sps:6.17-6.30: error: DEBUG EVALUATE: Type mismatch invoking TIME.
4368 DAYS(number) as time.days(string).
4369 6 | DEBUG EVALUATE /time.days('x').
4372 evaluate.sps:6.27-6.29: note: DEBUG EVALUATE: This argument has type 'string'
4373 but 'number' is required.
4374 6 | DEBUG EVALUATE /time.days('x').
4377 time.days('x') => error
4379 time.days($sysmis) => sysmis
4384 AT_SETUP([expressions - TIME.HMS])
4385 AT_KEYWORDS([expression expressions evaluate])
4386 AT_DATA([evaluate-base.sps], [dnl
4388 DEBUG EVALUATE SET opt.
4389 DEBUG EVALUATE /time.hms(4,50,38).
4390 DEBUG EVALUATE /time.hms(12,31,35).
4391 DEBUG EVALUATE /time.hms(12,47,53).
4392 DEBUG EVALUATE /time.hms(1,26,0).
4393 DEBUG EVALUATE /time.hms(20,58,11).
4394 DEBUG EVALUATE /time.hms(7,36,5).
4395 DEBUG EVALUATE /time.hms(15,43,49).
4396 DEBUG EVALUATE /time.hms(4,25,9).
4397 DEBUG EVALUATE /time.hms(6,49,27).
4398 DEBUG EVALUATE /time.hms(2,57,52).
4399 DEBUG EVALUATE /time.hms(16,45,44).
4400 DEBUG EVALUATE /time.hms(21,30,57).
4401 DEBUG EVALUATE /time.hms(22,30,4).
4402 DEBUG EVALUATE /time.hms(1,56,51).
4403 DEBUG EVALUATE /time.hms(5, 6, 7).
4404 DEBUG EVALUATE /time.hms(5, 6, 0).
4405 DEBUG EVALUATE /time.hms(5, 0, 7).
4406 DEBUG EVALUATE /time.hms(0, 6, 7).
4407 DEBUG EVALUATE /time.hms(-5, 6, -7).
4408 DEBUG EVALUATE /time.hms(-5, 5, -7).
4409 DEBUG EVALUATE /time.hms($sysmis, 6, 7).
4410 DEBUG EVALUATE /time.hms(5, $sysmis, 7).
4411 DEBUG EVALUATE /time.hms(5, $sysmis, 7).
4412 DEBUG EVALUATE /time.hms($sysmis, $sysmis, 7).
4413 DEBUG EVALUATE /time.hms(5, $sysmis, $sysmis).
4414 DEBUG EVALUATE /time.hms($sysmis, $sysmis, 7).
4415 DEBUG EVALUATE /time.hms($sysmis, $sysmis, $sysmis).
4418 for opt in OPT NOOPT; do
4420 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
4421 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
4422 time.hms(4,50,38) => 17438.00
4424 time.hms(12,31,35) => 45095.00
4426 time.hms(12,47,53) => 46073.00
4428 time.hms(1,26,0) => 5160.00
4430 time.hms(20,58,11) => 75491.00
4432 time.hms(7,36,5) => 27365.00
4434 time.hms(15,43,49) => 56629.00
4436 time.hms(4,25,9) => 15909.00
4438 time.hms(6,49,27) => 24567.00
4440 time.hms(2,57,52) => 10672.00
4442 time.hms(16,45,44) => 60344.00
4444 time.hms(21,30,57) => 77457.00
4446 time.hms(22,30,4) => 81004.00
4448 time.hms(1,56,51) => 7011.00
4450 time.hms(5, 6, 7) => 18367.00
4452 time.hms(5, 6, 0) => 18360.00
4454 time.hms(5, 0, 7) => 18007.00
4456 time.hms(0, 6, 7) => 367.00
4458 evaluate.sps:21.17-21.35: warning: DEBUG EVALUATE: TIME.HMS cannot accept a mix
4459 of positive and negative arguments.
4460 21 | DEBUG EVALUATE /time.hms(-5, 6, -7).
4461 | ^~~~~~~~~~~~~~~~~~~
4463 evaluate.sps:21.26-21.27: note: DEBUG EVALUATE: This argument has negative
4465 21 | DEBUG EVALUATE /time.hms(-5, 6, -7).
4468 evaluate.sps:21.30: note: DEBUG EVALUATE: This argument has positive value 6.
4469 21 | DEBUG EVALUATE /time.hms(-5, 6, -7).
4472 evaluate.sps:21.33-21.34: note: DEBUG EVALUATE: This argument has negative
4474 21 | DEBUG EVALUATE /time.hms(-5, 6, -7).
4477 time.hms(-5, 6, -7) => sysmis
4479 evaluate.sps:22.17-22.35: warning: DEBUG EVALUATE: TIME.HMS cannot accept a mix
4480 of positive and negative arguments.
4481 22 | DEBUG EVALUATE /time.hms(-5, 5, -7).
4482 | ^~~~~~~~~~~~~~~~~~~
4484 evaluate.sps:22.26-22.27: note: DEBUG EVALUATE: This argument has negative
4486 22 | DEBUG EVALUATE /time.hms(-5, 5, -7).
4489 evaluate.sps:22.30: note: DEBUG EVALUATE: This argument has positive value 5.
4490 22 | DEBUG EVALUATE /time.hms(-5, 5, -7).
4493 evaluate.sps:22.33-22.34: note: DEBUG EVALUATE: This argument has negative
4495 22 | DEBUG EVALUATE /time.hms(-5, 5, -7).
4498 time.hms(-5, 5, -7) => sysmis
4500 time.hms($sysmis, 6, 7) => sysmis
4502 time.hms(5, $sysmis, 7) => sysmis
4504 time.hms(5, $sysmis, 7) => sysmis
4506 time.hms($sysmis, $sysmis, 7) => sysmis
4508 time.hms(5, $sysmis, $sysmis) => sysmis
4510 time.hms($sysmis, $sysmis, 7) => sysmis
4512 time.hms($sysmis, $sysmis, $sysmis) => sysmis
4517 AT_SETUP([expressions - CTIME.*])
4518 AT_KEYWORDS([expression expressions evaluate ctime])
4519 AT_DATA([evaluate-base.sps], [dnl
4521 DEBUG EVALUATE SET opt.
4522 DEBUG EVALUATE /ctime.days(106272).
4523 DEBUG EVALUATE /ctime.hours(106272).
4524 DEBUG EVALUATE /ctime.minutes(106272).
4525 DEBUG EVALUATE /ctime.seconds(106272).
4526 DEBUG EVALUATE /ctime.days(-106272).
4527 DEBUG EVALUATE /ctime.hours(-106272).
4528 DEBUG EVALUATE /ctime.minutes(-106272).
4529 DEBUG EVALUATE /ctime.seconds(-106272).
4530 DEBUG EVALUATE /ctime.days($sysmis).
4531 DEBUG EVALUATE /ctime.hours($sysmis).
4532 DEBUG EVALUATE /ctime.minutes($sysmis).
4533 DEBUG EVALUATE /ctime.seconds($sysmis).
4534 DEBUG EVALUATE /ctime.days('a').
4535 DEBUG EVALUATE /ctime.hours('b').
4536 DEBUG EVALUATE /ctime.minutes('c').
4537 DEBUG EVALUATE /ctime.seconds('d').
4539 DEBUG EVALUATE /ctime.days(date.dmy(15,10,1582)).
4540 DEBUG EVALUATE /ctime.days(date.dmy(6,9,1719)).
4541 DEBUG EVALUATE /ctime.days(date.dmy(24,1,1583)).
4542 DEBUG EVALUATE /ctime.days(date.dmy(14,12,1585)).
4543 DEBUG EVALUATE /ctime.days(date.dmy(26,11,1621)).
4544 DEBUG EVALUATE /ctime.days(date.dmy(25,12,1821)).
4545 DEBUG EVALUATE /ctime.days(date.dmy(3,12,1882)).
4546 DEBUG EVALUATE /ctime.days(date.dmy(6,4,2002)).
4547 DEBUG EVALUATE /ctime.days(date.dmy(19,12,1999)).
4548 DEBUG EVALUATE /ctime.days(date.dmy(1,10,1978)).
4549 DEBUG EVALUATE /ctime.days(date.dmy(0,10,1978)).
4550 DEBUG EVALUATE /ctime.days(date.dmy(32,10,1978)).
4551 DEBUG EVALUATE /ctime.days(date.dmy(31,0,1978)).
4552 DEBUG EVALUATE /ctime.days(date.dmy(31,13,1978)).
4553 DEBUG EVALUATE /ctime.days(date.dmy($sysmis,10,1978)).
4554 DEBUG EVALUATE /ctime.days(date.dmy(31,$sysmis,1978)).
4555 DEBUG EVALUATE /ctime.days(date.dmy(31,10,$sysmis)).
4556 DEBUG EVALUATE /ctime.days(date.dmy($sysmis,$sysmis,1978)).
4557 DEBUG EVALUATE /ctime.days(date.dmy(31,$sysmis,$sysmis)).
4558 DEBUG EVALUATE /ctime.days(date.dmy($sysmis,10,$sysmis)).
4559 DEBUG EVALUATE /ctime.days(date.dmy($sysmis,$sysmis,$sysmis)).
4562 for opt in OPT NOOPT; do
4564 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
4565 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
4566 ctime.days(106272) => 1.23
4568 ctime.hours(106272) => 29.52
4570 ctime.minutes(106272) => 1771.20
4572 ctime.seconds(106272) => 106272.00
4574 ctime.days(-106272) => -1.23
4576 ctime.hours(-106272) => -29.52
4578 ctime.minutes(-106272) => -1771.20
4580 ctime.seconds(-106272) => -106272.00
4582 ctime.days($sysmis) => sysmis
4584 ctime.hours($sysmis) => sysmis
4586 ctime.minutes($sysmis) => sysmis
4588 ctime.seconds($sysmis) => sysmis
4590 evaluate.sps:15.17-15.31: error: DEBUG EVALUATE: Type mismatch invoking CTIME.
4591 DAYS(number) as ctime.days(string).
4592 15 | DEBUG EVALUATE /ctime.days('a').
4595 evaluate.sps:15.28-15.30: note: DEBUG EVALUATE: This argument has type 'string'
4596 but 'number' is required.
4597 15 | DEBUG EVALUATE /ctime.days('a').
4600 ctime.days('a') => error
4602 evaluate.sps:16.17-16.32: error: DEBUG EVALUATE: Type mismatch invoking CTIME.
4603 HOURS(number) as ctime.hours(string).
4604 16 | DEBUG EVALUATE /ctime.hours('b').
4607 evaluate.sps:16.29-16.31: note: DEBUG EVALUATE: This argument has type 'string'
4608 but 'number' is required.
4609 16 | DEBUG EVALUATE /ctime.hours('b').
4612 ctime.hours('b') => error
4614 evaluate.sps:17.17-17.34: error: DEBUG EVALUATE: Type mismatch invoking CTIME.
4615 MINUTES(number) as ctime.minutes(string).
4616 17 | DEBUG EVALUATE /ctime.minutes('c').
4617 | ^~~~~~~~~~~~~~~~~~
4619 evaluate.sps:17.31-17.33: note: DEBUG EVALUATE: This argument has type 'string'
4620 but 'number' is required.
4621 17 | DEBUG EVALUATE /ctime.minutes('c').
4624 ctime.minutes('c') => error
4626 evaluate.sps:18.17-18.34: error: DEBUG EVALUATE: Type mismatch invoking CTIME.
4627 SECONDS(number) as ctime.seconds(string).
4628 18 | DEBUG EVALUATE /ctime.seconds('d').
4629 | ^~~~~~~~~~~~~~~~~~
4631 evaluate.sps:18.31-18.33: note: DEBUG EVALUATE: This argument has type 'string'
4632 but 'number' is required.
4633 18 | DEBUG EVALUATE /ctime.seconds('d').
4636 ctime.seconds('d') => error
4638 ctime.days(date.dmy(15,10,1582)) => 1.00
4640 ctime.days(date.dmy(6,9,1719)) => 50000.00
4642 ctime.days(date.dmy(24,1,1583)) => 102.00
4644 ctime.days(date.dmy(14,12,1585)) => 1157.00
4646 ctime.days(date.dmy(26,11,1621)) => 14288.00
4648 ctime.days(date.dmy(25,12,1821)) => 87365.00
4650 ctime.days(date.dmy(3,12,1882)) => 109623.00
4652 ctime.days(date.dmy(6,4,2002)) => 153211.00
4654 ctime.days(date.dmy(19,12,1999)) => 152372.00
4656 ctime.days(date.dmy(1,10,1978)) => 144623.00
4658 ctime.days(date.dmy(0,10,1978)) => 144622.00
4660 evaluate.sps:31.28-31.47: error: DEBUG EVALUATE: Invalid arguments to DATE.DMY
4662 31 | DEBUG EVALUATE /ctime.days(date.dmy(32,10,1978)).
4663 | ^~~~~~~~~~~~~~~~~~~~
4665 evaluate.sps:31.37-31.38: note: DEBUG EVALUATE: Day 32 is not in the acceptable
4667 31 | DEBUG EVALUATE /ctime.days(date.dmy(32,10,1978)).
4670 ctime.days(date.dmy(32,10,1978)) => sysmis
4672 ctime.days(date.dmy(31,0,1978)) => 144349.00
4674 ctime.days(date.dmy(31,13,1978)) => 144745.00
4676 ctime.days(date.dmy($sysmis,10,1978)) => sysmis
4678 ctime.days(date.dmy(31,$sysmis,1978)) => sysmis
4680 ctime.days(date.dmy(31,10,$sysmis)) => sysmis
4682 ctime.days(date.dmy($sysmis,$sysmis,1978)) => sysmis
4684 ctime.days(date.dmy(31,$sysmis,$sysmis)) => sysmis
4686 ctime.days(date.dmy($sysmis,10,$sysmis)) => sysmis
4688 ctime.days(date.dmy($sysmis,$sysmis,$sysmis)) => sysmis
4693 AT_SETUP([expressions - DATE.DMY])
4694 AT_KEYWORDS([expression expressions evaluate])
4695 AT_DATA([evaluate-base.sps], [dnl
4697 DEBUG EVALUATE SET opt.
4698 DEBUG EVALUATE /date.dmy('a',1,2).
4699 DEBUG EVALUATE /date.dmy(1,'a',2).
4700 DEBUG EVALUATE /date.dmy(1,2,'a').
4703 for opt in OPT NOOPT; do
4705 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
4706 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
4707 evaluate.sps:3.17-3.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
4708 DMY(integer, integer, integer) as date.dmy(string, number, number).
4709 3 | DEBUG EVALUATE /date.dmy('a',1,2).
4712 evaluate.sps:3.26-3.28: note: DEBUG EVALUATE: This argument has type 'string'
4713 but 'integer' is required.
4714 3 | DEBUG EVALUATE /date.dmy('a',1,2).
4717 date.dmy('a',1,2) => error
4719 evaluate.sps:4.17-4.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
4720 DMY(integer, integer, integer) as date.dmy(number, string, number).
4721 4 | DEBUG EVALUATE /date.dmy(1,'a',2).
4724 evaluate.sps:4.28-4.30: note: DEBUG EVALUATE: This argument has type 'string'
4725 but 'integer' is required.
4726 4 | DEBUG EVALUATE /date.dmy(1,'a',2).
4729 date.dmy(1,'a',2) => error
4731 evaluate.sps:5.17-5.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
4732 DMY(integer, integer, integer) as date.dmy(number, number, string).
4733 5 | DEBUG EVALUATE /date.dmy(1,2,'a').
4736 evaluate.sps:5.30-5.32: note: DEBUG EVALUATE: This argument has type 'string'
4737 but 'integer' is required.
4738 5 | DEBUG EVALUATE /date.dmy(1,2,'a').
4741 date.dmy(1,2,'a') => error
4746 AT_SETUP([expressions - YRMODA])
4747 AT_KEYWORDS([expression expressions evaluate])
4748 AT_DATA([evaluate-base.sps], [dnl
4750 DEBUG EVALUATE SET opt.
4751 dnl FIXME: check out-of-range and nearly out-of-range values
4752 DEBUG EVALUATE /yrmoda(1582,10,15).
4753 DEBUG EVALUATE /yrmoda(1719,9,6).
4754 DEBUG EVALUATE /yrmoda(1583,1,24).
4755 DEBUG EVALUATE /yrmoda(1585,12,14).
4756 DEBUG EVALUATE /yrmoda(1621,11,26).
4757 DEBUG EVALUATE /yrmoda(1821,12,25).
4758 DEBUG EVALUATE /yrmoda(1882,12,3).
4759 DEBUG EVALUATE /yrmoda(2002,4,6).
4760 DEBUG EVALUATE /yrmoda(1999,12,19).
4761 DEBUG EVALUATE /yrmoda(1978,10,1).
4762 DEBUG EVALUATE /yrmoda(1978,10,0).
4763 DEBUG EVALUATE /yrmoda(1978,10,32).
4764 DEBUG EVALUATE /yrmoda(1978,0,31).
4765 DEBUG EVALUATE /yrmoda(1978,13,31).
4766 DEBUG EVALUATE /yrmoda(1978,10,$sysmis).
4767 DEBUG EVALUATE /yrmoda(1978,$sysmis,31).
4768 DEBUG EVALUATE /yrmoda($sysmis,10,31).
4769 DEBUG EVALUATE /yrmoda(1978,$sysmis,$sysmis).
4770 DEBUG EVALUATE /yrmoda($sysmis,$sysmis,31).
4771 DEBUG EVALUATE /yrmoda($sysmis,10,$sysmis).
4772 DEBUG EVALUATE /yrmoda($sysmis,$sysmis,$sysmis).
4773 DEBUG EVALUATE /yrmoda('a',1,2).
4774 DEBUG EVALUATE /yrmoda(1,'a',2).
4775 DEBUG EVALUATE /yrmoda(1,2,'a').
4778 for opt in OPT NOOPT; do
4780 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
4781 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
4782 yrmoda(1582,10,15) => 1.00
4784 yrmoda(1719,9,6) => 50000.00
4786 yrmoda(1583,1,24) => 102.00
4788 yrmoda(1585,12,14) => 1157.00
4790 yrmoda(1621,11,26) => 14288.00
4792 yrmoda(1821,12,25) => 87365.00
4794 yrmoda(1882,12,3) => 109623.00
4796 yrmoda(2002,4,6) => 153211.00
4798 yrmoda(1999,12,19) => 152372.00
4800 yrmoda(1978,10,1) => 144623.00
4802 yrmoda(1978,10,0) => 144622.00
4804 evaluate.sps:14.17-14.34: error: DEBUG EVALUATE: Invalid arguments to YRMODA
4806 14 | DEBUG EVALUATE /yrmoda(1978,10,32).
4807 | ^~~~~~~~~~~~~~~~~~
4809 evaluate.sps:14.32-14.33: note: DEBUG EVALUATE: Day 32 is not in the acceptable
4811 14 | DEBUG EVALUATE /yrmoda(1978,10,32).
4814 yrmoda(1978,10,32) => sysmis
4816 yrmoda(1978,0,31) => 144349.00
4818 yrmoda(1978,13,31) => 144745.00
4820 yrmoda(1978,10,$sysmis) => sysmis
4822 yrmoda(1978,$sysmis,31) => sysmis
4824 yrmoda($sysmis,10,31) => sysmis
4826 yrmoda(1978,$sysmis,$sysmis) => sysmis
4828 yrmoda($sysmis,$sysmis,31) => sysmis
4830 yrmoda($sysmis,10,$sysmis) => sysmis
4832 yrmoda($sysmis,$sysmis,$sysmis) => sysmis
4834 evaluate.sps:24.17-24.31: error: DEBUG EVALUATE: Type mismatch invoking
4835 YRMODA(integer, integer, integer) as yrmoda(string, number, number).
4836 24 | DEBUG EVALUATE /yrmoda('a',1,2).
4839 evaluate.sps:24.24-24.26: note: DEBUG EVALUATE: This argument has type 'string'
4840 but 'integer' is required.
4841 24 | DEBUG EVALUATE /yrmoda('a',1,2).
4844 yrmoda('a',1,2) => error
4846 evaluate.sps:25.17-25.31: error: DEBUG EVALUATE: Type mismatch invoking
4847 YRMODA(integer, integer, integer) as yrmoda(number, string, number).
4848 25 | DEBUG EVALUATE /yrmoda(1,'a',2).
4851 evaluate.sps:25.26-25.28: note: DEBUG EVALUATE: This argument has type 'string'
4852 but 'integer' is required.
4853 25 | DEBUG EVALUATE /yrmoda(1,'a',2).
4856 yrmoda(1,'a',2) => error
4858 evaluate.sps:26.17-26.31: error: DEBUG EVALUATE: Type mismatch invoking
4859 YRMODA(integer, integer, integer) as yrmoda(number, number, string).
4860 26 | DEBUG EVALUATE /yrmoda(1,2,'a').
4863 evaluate.sps:26.28-26.30: note: DEBUG EVALUATE: This argument has type 'string'
4864 but 'integer' is required.
4865 26 | DEBUG EVALUATE /yrmoda(1,2,'a').
4868 yrmoda(1,2,'a') => error
4873 AT_SETUP([expressions - DATE.MDY])
4874 AT_KEYWORDS([expression expressions evaluate])
4875 AT_DATA([evaluate-base.sps], [dnl
4877 DEBUG EVALUATE SET opt.
4879 dnl FIXME: check out-of-range and nearly out-of-range values
4880 DEBUG EVALUATE /ctime.days(date.mdy(6,10,1648)) + 577735.
4881 DEBUG EVALUATE /ctime.days(date.mdy(6,30,1680)) + 577735.
4882 DEBUG EVALUATE /ctime.days(date.mdy(7,24,1716)) + 577735.
4883 DEBUG EVALUATE /ctime.days(date.mdy(6,19,1768)) + 577735.
4884 DEBUG EVALUATE /ctime.days(date.mdy(8,2,1819)) + 577735.
4885 DEBUG EVALUATE /ctime.days(date.mdy(3,27,1839)) + 577735.
4886 DEBUG EVALUATE /ctime.days(date.mdy(4,19,1903)) + 577735.
4887 DEBUG EVALUATE /ctime.days(date.mdy(8,25,1929)) + 577735.
4888 DEBUG EVALUATE /ctime.days(date.mdy(9,29,1941)) + 577735.
4889 DEBUG EVALUATE /ctime.days(date.mdy(4,19,1943)) + 577735.
4890 DEBUG EVALUATE /ctime.days(date.mdy(10,7,1943)) + 577735.
4891 DEBUG EVALUATE /ctime.days(date.mdy(3,17,1992)) + 577735.
4892 DEBUG EVALUATE /ctime.days(date.mdy(2,25,1996)) + 577735.
4893 DEBUG EVALUATE /ctime.days(date.mdy(11,10,2038)) + 577735.
4894 DEBUG EVALUATE /ctime.days(date.mdy(7,18,2094)) + 577735.
4896 dnl FIXME: check out-of-range and nearly out-of-range values
4897 DEBUG EVALUATE /ctime.days(date.mdy(10,15,1582)).
4898 DEBUG EVALUATE /ctime.days(date.mdy(9,6,1719)).
4899 DEBUG EVALUATE /ctime.days(date.mdy(1,24,1583)).
4900 DEBUG EVALUATE /ctime.days(date.mdy(12,14,1585)).
4901 DEBUG EVALUATE /ctime.days(date.mdy(11,26,1621)).
4902 DEBUG EVALUATE /ctime.days(date.mdy(12,25,1821)).
4903 DEBUG EVALUATE /ctime.days(date.mdy(12,3,1882)).
4904 DEBUG EVALUATE /ctime.days(date.mdy(4,6,2002)).
4905 DEBUG EVALUATE /ctime.days(date.mdy(12,19,1999)).
4906 DEBUG EVALUATE /ctime.days(date.mdy(10,1,1978)).
4907 DEBUG EVALUATE /ctime.days(date.mdy(10,0,1978)).
4908 DEBUG EVALUATE /ctime.days(date.mdy(10,32,1978)).
4909 DEBUG EVALUATE /ctime.days(date.mdy(0,31,1978)).
4910 DEBUG EVALUATE /ctime.days(date.mdy(13,31,1978)).
4911 DEBUG EVALUATE /ctime.days(date.mdy(10,$sysmis,1978)).
4912 DEBUG EVALUATE /ctime.days(date.mdy($sysmis,31,1978)).
4913 DEBUG EVALUATE /ctime.days(date.mdy(10,31,$sysmis)).
4914 DEBUG EVALUATE /ctime.days(date.mdy($sysmis,$sysmis,1978)).
4915 DEBUG EVALUATE /ctime.days(date.mdy($sysmis,31,$sysmis)).
4916 DEBUG EVALUATE /ctime.days(date.mdy(10,$sysmis,$sysmis)).
4917 DEBUG EVALUATE /ctime.days(date.mdy($sysmis,$sysmis,$sysmis)).
4918 DEBUG EVALUATE /date.mdy('a',1,2).
4919 DEBUG EVALUATE /date.mdy(1,'a',2).
4920 DEBUG EVALUATE /date.mdy(1,2,'a').
4921 DEBUG EVALUATE /ctime.days(date.mdy(0,0,0)).
4922 DEBUG EVALUATE /ctime.days(date.mdy(0,0,999)).
4923 DEBUG EVALUATE /date.mdy(1,1,1582).
4924 DEBUG EVALUATE /date.mdy(10,14,1582).
4925 DEBUG EVALUATE /date.mdy(10,15,1582).
4928 for opt in OPT NOOPT; do
4930 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
4931 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
4932 ctime.days(date.mdy(6,10,1648)) + 577735 => 601716.00
4934 ctime.days(date.mdy(6,30,1680)) + 577735 => 613424.00
4936 ctime.days(date.mdy(7,24,1716)) + 577735 => 626596.00
4938 ctime.days(date.mdy(6,19,1768)) + 577735 => 645554.00
4940 ctime.days(date.mdy(8,2,1819)) + 577735 => 664224.00
4942 ctime.days(date.mdy(3,27,1839)) + 577735 => 671401.00
4944 ctime.days(date.mdy(4,19,1903)) + 577735 => 694799.00
4946 ctime.days(date.mdy(8,25,1929)) + 577735 => 704424.00
4948 ctime.days(date.mdy(9,29,1941)) + 577735 => 708842.00
4950 ctime.days(date.mdy(4,19,1943)) + 577735 => 709409.00
4952 ctime.days(date.mdy(10,7,1943)) + 577735 => 709580.00
4954 ctime.days(date.mdy(3,17,1992)) + 577735 => 727274.00
4956 ctime.days(date.mdy(2,25,1996)) + 577735 => 728714.00
4958 ctime.days(date.mdy(11,10,2038)) + 577735 => 744313.00
4960 ctime.days(date.mdy(7,18,2094)) + 577735 => 764652.00
4962 ctime.days(date.mdy(10,15,1582)) => 1.00
4964 ctime.days(date.mdy(9,6,1719)) => 50000.00
4966 ctime.days(date.mdy(1,24,1583)) => 102.00
4968 ctime.days(date.mdy(12,14,1585)) => 1157.00
4970 ctime.days(date.mdy(11,26,1621)) => 14288.00
4972 ctime.days(date.mdy(12,25,1821)) => 87365.00
4974 ctime.days(date.mdy(12,3,1882)) => 109623.00
4976 ctime.days(date.mdy(4,6,2002)) => 153211.00
4978 ctime.days(date.mdy(12,19,1999)) => 152372.00
4980 ctime.days(date.mdy(10,1,1978)) => 144623.00
4982 ctime.days(date.mdy(10,0,1978)) => 144622.00
4984 evaluate.sps:31.28-31.47: error: DEBUG EVALUATE: Invalid arguments to DATE.MDY
4986 31 | DEBUG EVALUATE /ctime.days(date.mdy(10,32,1978)).
4987 | ^~~~~~~~~~~~~~~~~~~~
4989 evaluate.sps:31.40-31.41: note: DEBUG EVALUATE: Day 32 is not in the acceptable
4991 31 | DEBUG EVALUATE /ctime.days(date.mdy(10,32,1978)).
4994 ctime.days(date.mdy(10,32,1978)) => sysmis
4996 ctime.days(date.mdy(0,31,1978)) => 144349.00
4998 ctime.days(date.mdy(13,31,1978)) => 144745.00
5000 ctime.days(date.mdy(10,$sysmis,1978)) => sysmis
5002 ctime.days(date.mdy($sysmis,31,1978)) => sysmis
5004 ctime.days(date.mdy(10,31,$sysmis)) => sysmis
5006 ctime.days(date.mdy($sysmis,$sysmis,1978)) => sysmis
5008 ctime.days(date.mdy($sysmis,31,$sysmis)) => sysmis
5010 ctime.days(date.mdy(10,$sysmis,$sysmis)) => sysmis
5012 ctime.days(date.mdy($sysmis,$sysmis,$sysmis)) => sysmis
5014 evaluate.sps:41.17-41.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5015 MDY(integer, integer, integer) as date.mdy(string, number, number).
5016 41 | DEBUG EVALUATE /date.mdy('a',1,2).
5019 evaluate.sps:41.26-41.28: note: DEBUG EVALUATE: This argument has type 'string'
5020 but 'integer' is required.
5021 41 | DEBUG EVALUATE /date.mdy('a',1,2).
5024 date.mdy('a',1,2) => error
5026 evaluate.sps:42.17-42.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5027 MDY(integer, integer, integer) as date.mdy(number, string, number).
5028 42 | DEBUG EVALUATE /date.mdy(1,'a',2).
5031 evaluate.sps:42.28-42.30: note: DEBUG EVALUATE: This argument has type 'string'
5032 but 'integer' is required.
5033 42 | DEBUG EVALUATE /date.mdy(1,'a',2).
5036 date.mdy(1,'a',2) => error
5038 evaluate.sps:43.17-43.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5039 MDY(integer, integer, integer) as date.mdy(number, number, string).
5040 43 | DEBUG EVALUATE /date.mdy(1,2,'a').
5043 evaluate.sps:43.30-43.32: note: DEBUG EVALUATE: This argument has type 'string'
5044 but 'integer' is required.
5045 43 | DEBUG EVALUATE /date.mdy(1,2,'a').
5048 date.mdy(1,2,'a') => error
5050 ctime.days(date.mdy(0,0,0)) => 152353.00
5052 evaluate.sps:45.28-45.44: error: DEBUG EVALUATE: Invalid arguments to DATE.MDY
5054 45 | DEBUG EVALUATE /ctime.days(date.mdy(0,0,999)).
5057 evaluate.sps:45.41-45.43: note: DEBUG EVALUATE: Date 0998-12-0 is before the
5058 earliest supported date 1582-10-15.
5059 45 | DEBUG EVALUATE /ctime.days(date.mdy(0,0,999)).
5062 ctime.days(date.mdy(0,0,999)) => sysmis
5064 evaluate.sps:46.17-46.34: error: DEBUG EVALUATE: Invalid arguments to DATE.MDY
5066 46 | DEBUG EVALUATE /date.mdy(1,1,1582).
5067 | ^~~~~~~~~~~~~~~~~~
5069 evaluate.sps:46.17-46.34: note: DEBUG EVALUATE: Date 1582-1-1 is before the
5070 earliest supported date 1582-10-15.
5071 46 | DEBUG EVALUATE /date.mdy(1,1,1582).
5072 | ^~~~~~~~~~~~~~~~~~
5074 date.mdy(1,1,1582) => sysmis
5076 evaluate.sps:47.17-47.36: error: DEBUG EVALUATE: Invalid arguments to DATE.MDY
5078 47 | DEBUG EVALUATE /date.mdy(10,14,1582).
5079 | ^~~~~~~~~~~~~~~~~~~~
5081 evaluate.sps:47.17-47.36: note: DEBUG EVALUATE: Date 1582-10-14 is before the
5082 earliest supported date 1582-10-15.
5083 47 | DEBUG EVALUATE /date.mdy(10,14,1582).
5084 | ^~~~~~~~~~~~~~~~~~~~
5086 date.mdy(10,14,1582) => sysmis
5088 date.mdy(10,15,1582) => 86400.00
5093 AT_SETUP([expressions - DATE.MOYR])
5094 AT_KEYWORDS([expression expressions evaluate])
5095 AT_DATA([evaluate-base.sps], [dnl
5097 DEBUG EVALUATE SET opt.
5098 DEBUG EVALUATE /ctime.days(date.moyr(1,2000)).
5099 DEBUG EVALUATE /ctime.days(date.moyr(2,2000)).
5100 DEBUG EVALUATE /ctime.days(date.moyr(3,2000)).
5101 DEBUG EVALUATE /ctime.days(date.moyr(4,2000)).
5102 DEBUG EVALUATE /ctime.days(date.moyr(5,2000)).
5103 DEBUG EVALUATE /ctime.days(date.moyr(13,2000)).
5104 DEBUG EVALUATE /ctime.days(date.moyr(14,2000)).
5105 DEBUG EVALUATE /ctime.days(date.moyr($sysmis,2000)).
5106 DEBUG EVALUATE /ctime.days(date.moyr(1,$sysmis)).
5107 DEBUG EVALUATE /ctime.days(date.moyr($sysmis,$sysmis)).
5108 DEBUG EVALUATE /date.moyr('a',2000).
5109 DEBUG EVALUATE /date.moyr(5,'a').
5110 DEBUG EVALUATE /date.moyr('a','b').
5113 for opt in OPT NOOPT; do
5115 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5116 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
5117 ctime.days(date.moyr(1,2000)) => 152385.00
5119 ctime.days(date.moyr(2,2000)) => 152416.00
5121 ctime.days(date.moyr(3,2000)) => 152445.00
5123 ctime.days(date.moyr(4,2000)) => 152476.00
5125 ctime.days(date.moyr(5,2000)) => 152506.00
5127 ctime.days(date.moyr(13,2000)) => 152751.00
5129 evaluate.sps:9.28-9.45: error: DEBUG EVALUATE: Invalid arguments to DATE.MOYR
5131 9 | DEBUG EVALUATE /ctime.days(date.moyr(14,2000)).
5132 | ^~~~~~~~~~~~~~~~~~
5134 evaluate.sps:9.38-9.39: note: DEBUG EVALUATE: Month 14 is not in the acceptable
5136 9 | DEBUG EVALUATE /ctime.days(date.moyr(14,2000)).
5139 ctime.days(date.moyr(14,2000)) => sysmis
5141 ctime.days(date.moyr($sysmis,2000)) => sysmis
5143 ctime.days(date.moyr(1,$sysmis)) => sysmis
5145 ctime.days(date.moyr($sysmis,$sysmis)) => sysmis
5147 evaluate.sps:13.17-13.35: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5148 MOYR(integer, integer) as date.moyr(string, number).
5149 13 | DEBUG EVALUATE /date.moyr('a',2000).
5150 | ^~~~~~~~~~~~~~~~~~~
5152 evaluate.sps:13.27-13.29: note: DEBUG EVALUATE: This argument has type 'string'
5153 but 'integer' is required.
5154 13 | DEBUG EVALUATE /date.moyr('a',2000).
5157 date.moyr('a',2000) => error
5159 evaluate.sps:14.17-14.32: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5160 MOYR(integer, integer) as date.moyr(number, string).
5161 14 | DEBUG EVALUATE /date.moyr(5,'a').
5164 evaluate.sps:14.29-14.31: note: DEBUG EVALUATE: This argument has type 'string'
5165 but 'integer' is required.
5166 14 | DEBUG EVALUATE /date.moyr(5,'a').
5169 date.moyr(5,'a') => error
5171 evaluate.sps:15.17-15.34: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5172 MOYR(integer, integer) as date.moyr(string, string).
5173 15 | DEBUG EVALUATE /date.moyr('a','b').
5174 | ^~~~~~~~~~~~~~~~~~
5176 evaluate.sps:15.27-15.29: note: DEBUG EVALUATE: This argument has type 'string'
5177 but 'integer' is required.
5178 15 | DEBUG EVALUATE /date.moyr('a','b').
5181 evaluate.sps:15.31-15.33: note: DEBUG EVALUATE: This argument has type 'string'
5182 but 'integer' is required.
5183 15 | DEBUG EVALUATE /date.moyr('a','b').
5186 date.moyr('a','b') => error
5191 AT_SETUP([expressions - DATE.QYR])
5192 AT_KEYWORDS([expression expressions evaluate])
5193 AT_DATA([evaluate-base.sps], [dnl
5195 DEBUG EVALUATE SET opt.
5196 DEBUG EVALUATE /ctime.days(date.qyr(1,2000)).
5197 DEBUG EVALUATE /ctime.days(date.qyr(2,2000)).
5198 DEBUG EVALUATE /ctime.days(date.qyr(5,2000)).
5199 DEBUG EVALUATE /ctime.days(date.qyr(6,2000)).
5200 DEBUG EVALUATE /ctime.days(date.qyr($sysmis,2000)).
5201 DEBUG EVALUATE /ctime.days(date.qyr(1,$sysmis)).
5202 DEBUG EVALUATE /ctime.days(date.qyr($sysmis,$sysmis)).
5203 DEBUG EVALUATE /date.qyr('a',2000).
5204 DEBUG EVALUATE /date.qyr(5,'a').
5205 DEBUG EVALUATE /date.qyr('a','b').
5208 for opt in OPT NOOPT; do
5210 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5211 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
5212 ctime.days(date.qyr(1,2000)) => 152385.00
5214 ctime.days(date.qyr(2,2000)) => 152476.00
5216 evaluate.sps:5.37: warning: DEBUG EVALUATE: Argument 1 to DATE.QYR must be 1,
5218 5 | DEBUG EVALUATE /ctime.days(date.qyr(5,2000)).
5221 ctime.days(date.qyr(5,2000)) => sysmis
5223 evaluate.sps:6.37: warning: DEBUG EVALUATE: Argument 1 to DATE.QYR must be 1,
5225 6 | DEBUG EVALUATE /ctime.days(date.qyr(6,2000)).
5228 ctime.days(date.qyr(6,2000)) => sysmis
5230 ctime.days(date.qyr($sysmis,2000)) => sysmis
5232 ctime.days(date.qyr(1,$sysmis)) => sysmis
5234 ctime.days(date.qyr($sysmis,$sysmis)) => sysmis
5236 evaluate.sps:10.17-10.34: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5237 QYR(integer, integer) as date.qyr(string, number).
5238 10 | DEBUG EVALUATE /date.qyr('a',2000).
5239 | ^~~~~~~~~~~~~~~~~~
5241 evaluate.sps:10.26-10.28: note: DEBUG EVALUATE: This argument has type 'string'
5242 but 'integer' is required.
5243 10 | DEBUG EVALUATE /date.qyr('a',2000).
5246 date.qyr('a',2000) => error
5248 evaluate.sps:11.17-11.31: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5249 QYR(integer, integer) as date.qyr(number, string).
5250 11 | DEBUG EVALUATE /date.qyr(5,'a').
5253 evaluate.sps:11.28-11.30: note: DEBUG EVALUATE: This argument has type 'string'
5254 but 'integer' is required.
5255 11 | DEBUG EVALUATE /date.qyr(5,'a').
5258 date.qyr(5,'a') => error
5260 evaluate.sps:12.17-12.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5261 QYR(integer, integer) as date.qyr(string, string).
5262 12 | DEBUG EVALUATE /date.qyr('a','b').
5265 evaluate.sps:12.26-12.28: note: DEBUG EVALUATE: This argument has type 'string'
5266 but 'integer' is required.
5267 12 | DEBUG EVALUATE /date.qyr('a','b').
5270 evaluate.sps:12.30-12.32: note: DEBUG EVALUATE: This argument has type 'string'
5271 but 'integer' is required.
5272 12 | DEBUG EVALUATE /date.qyr('a','b').
5275 date.qyr('a','b') => error
5280 AT_SETUP([expressions - DATE.WKYR])
5281 AT_KEYWORDS([expression expressions evaluate])
5282 AT_DATA([evaluate-base.sps], [dnl
5284 DEBUG EVALUATE SET opt.
5285 DEBUG EVALUATE /ctime.days(date.wkyr(1,2000)).
5286 DEBUG EVALUATE /ctime.days(date.wkyr(15,1999)).
5287 DEBUG EVALUATE /ctime.days(date.wkyr(36,1999)).
5288 DEBUG EVALUATE /ctime.days(date.wkyr(54,1999)).
5289 DEBUG EVALUATE /ctime.days(date.wkyr($sysmis,1999)).
5290 DEBUG EVALUATE /ctime.days(date.wkyr(1,$sysmis)).
5291 DEBUG EVALUATE /ctime.days(date.wkyr($sysmis,$sysmis)).
5292 DEBUG EVALUATE /date.wkyr('a',1999).
5293 DEBUG EVALUATE /date.wkyr(5,'a').
5294 DEBUG EVALUATE /date.wkyr('a','b').
5297 for opt in OPT NOOPT; do
5299 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5300 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
5301 ctime.days(date.wkyr(1,2000)) => 152385.00
5303 ctime.days(date.wkyr(15,1999)) => 152118.00
5305 ctime.days(date.wkyr(36,1999)) => 152265.00
5307 evaluate.sps:6.38-6.39: error: DEBUG EVALUATE: The week argument to DATE.WKYR
5308 is outside the acceptable range of 1 to 53. The result will be system-missing.
5309 6 | DEBUG EVALUATE /ctime.days(date.wkyr(54,1999)).
5312 ctime.days(date.wkyr(54,1999)) => sysmis
5314 ctime.days(date.wkyr($sysmis,1999)) => sysmis
5316 ctime.days(date.wkyr(1,$sysmis)) => sysmis
5318 ctime.days(date.wkyr($sysmis,$sysmis)) => sysmis
5320 evaluate.sps:10.17-10.35: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5321 WKYR(integer, integer) as date.wkyr(string, number).
5322 10 | DEBUG EVALUATE /date.wkyr('a',1999).
5323 | ^~~~~~~~~~~~~~~~~~~
5325 evaluate.sps:10.27-10.29: note: DEBUG EVALUATE: This argument has type 'string'
5326 but 'integer' is required.
5327 10 | DEBUG EVALUATE /date.wkyr('a',1999).
5330 date.wkyr('a',1999) => error
5332 evaluate.sps:11.17-11.32: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5333 WKYR(integer, integer) as date.wkyr(number, string).
5334 11 | DEBUG EVALUATE /date.wkyr(5,'a').
5337 evaluate.sps:11.29-11.31: note: DEBUG EVALUATE: This argument has type 'string'
5338 but 'integer' is required.
5339 11 | DEBUG EVALUATE /date.wkyr(5,'a').
5342 date.wkyr(5,'a') => error
5344 evaluate.sps:12.17-12.34: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5345 WKYR(integer, integer) as date.wkyr(string, string).
5346 12 | DEBUG EVALUATE /date.wkyr('a','b').
5347 | ^~~~~~~~~~~~~~~~~~
5349 evaluate.sps:12.27-12.29: note: DEBUG EVALUATE: This argument has type 'string'
5350 but 'integer' is required.
5351 12 | DEBUG EVALUATE /date.wkyr('a','b').
5354 evaluate.sps:12.31-12.33: note: DEBUG EVALUATE: This argument has type 'string'
5355 but 'integer' is required.
5356 12 | DEBUG EVALUATE /date.wkyr('a','b').
5359 date.wkyr('a','b') => error
5364 AT_SETUP([expressions - DATE.YRDAY])
5365 AT_KEYWORDS([expression expressions evaluate])
5366 AT_DATA([evaluate-base.sps], [dnl
5368 DEBUG EVALUATE SET opt.
5369 DEBUG EVALUATE /ctime.days(date.yrday(2000,1)).
5370 DEBUG EVALUATE /ctime.days(date.yrday(2000,100)).
5371 DEBUG EVALUATE /ctime.days(date.yrday(2000,253)).
5372 DEBUG EVALUATE /ctime.days(date.yrday(2000,500)).
5373 DEBUG EVALUATE /ctime.days(date.yrday(2000,-100)).
5374 DEBUG EVALUATE /ctime.days(date.yrday(1999,$sysmis)).
5375 DEBUG EVALUATE /ctime.days(date.yrday($sysmis,1)).
5376 DEBUG EVALUATE /ctime.days(date.yrday($sysmis,$sysmis)).
5377 DEBUG EVALUATE /date.yrday(1999,'a').
5378 DEBUG EVALUATE /date.yrday('a',5).
5379 DEBUG EVALUATE /date.yrday('a','b').
5382 for opt in OPT NOOPT; do
5384 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5385 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
5386 ctime.days(date.yrday(2000,1)) => 152385.00
5388 ctime.days(date.yrday(2000,100)) => 152484.00
5390 ctime.days(date.yrday(2000,253)) => 152637.00
5392 evaluate.sps:6.44-6.46: error: DEBUG EVALUATE: The value 500 as day argument to
5393 DATE.YRDAY is outside the acceptable range of 1 to 366. The result will be
5395 6 | DEBUG EVALUATE /ctime.days(date.yrday(2000,500)).
5398 ctime.days(date.yrday(2000,500)) => sysmis
5400 evaluate.sps:7.44-7.47: error: DEBUG EVALUATE: The value -100 as day argument
5401 to DATE.YRDAY is outside the acceptable range of 1 to 366. The result will be
5403 7 | DEBUG EVALUATE /ctime.days(date.yrday(2000,-100)).
5406 ctime.days(date.yrday(2000,-100)) => sysmis
5408 ctime.days(date.yrday(1999,$sysmis)) => sysmis
5410 ctime.days(date.yrday($sysmis,1)) => sysmis
5412 ctime.days(date.yrday($sysmis,$sysmis)) => sysmis
5414 evaluate.sps:11.17-11.36: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5415 YRDAY(integer, integer) as date.yrday(number, string).
5416 11 | DEBUG EVALUATE /date.yrday(1999,'a').
5417 | ^~~~~~~~~~~~~~~~~~~~
5419 evaluate.sps:11.33-11.35: note: DEBUG EVALUATE: This argument has type 'string'
5420 but 'integer' is required.
5421 11 | DEBUG EVALUATE /date.yrday(1999,'a').
5424 date.yrday(1999,'a') => error
5426 evaluate.sps:12.17-12.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5427 YRDAY(integer, integer) as date.yrday(string, number).
5428 12 | DEBUG EVALUATE /date.yrday('a',5).
5431 evaluate.sps:12.28-12.30: note: DEBUG EVALUATE: This argument has type 'string'
5432 but 'integer' is required.
5433 12 | DEBUG EVALUATE /date.yrday('a',5).
5436 date.yrday('a',5) => error
5438 evaluate.sps:13.17-13.35: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5439 YRDAY(integer, integer) as date.yrday(string, string).
5440 13 | DEBUG EVALUATE /date.yrday('a','b').
5441 | ^~~~~~~~~~~~~~~~~~~
5443 evaluate.sps:13.28-13.30: note: DEBUG EVALUATE: This argument has type 'string'
5444 but 'integer' is required.
5445 13 | DEBUG EVALUATE /date.yrday('a','b').
5448 evaluate.sps:13.32-13.34: note: DEBUG EVALUATE: This argument has type 'string'
5449 but 'integer' is required.
5450 13 | DEBUG EVALUATE /date.yrday('a','b').
5453 date.yrday('a','b') => error
5458 AT_SETUP([expressions - XDATE.DATE])
5459 AT_KEYWORDS([expression expressions evaluate])
5460 AT_DATA([evaluate-base.sps], [dnl
5462 DEBUG EVALUATE SET opt.
5463 DEBUG EVALUATE /xdate.date(date.mdy(6,10,1648) + time.hms(0,0,0)) / 86400.
5464 DEBUG EVALUATE /xdate.date(date.mdy(6,30,1680) + time.hms(4,50,38)) / 86400.
5465 DEBUG EVALUATE /xdate.date(date.mdy(7,24,1716) + time.hms(12,31,35)) / 86400.
5466 DEBUG EVALUATE /xdate.date(date.mdy(6,19,1768) + time.hms(12,47,53)) / 86400.
5467 DEBUG EVALUATE /xdate.date(date.mdy(8,2,1819) + time.hms(1,26,0)) / 86400.
5468 DEBUG EVALUATE /xdate.date(date.mdy(3,27,1839) + time.hms(20,58,11)) / 86400.
5469 DEBUG EVALUATE /xdate.date(date.mdy(4,19,1903) + time.hms(7,36,5)) / 86400.
5470 DEBUG EVALUATE /xdate.date(date.mdy(8,25,1929) + time.hms(15,43,49)) / 86400.
5471 DEBUG EVALUATE /xdate.date(date.mdy(9,29,1941) + time.hms(4,25,9)) / 86400.
5472 DEBUG EVALUATE /xdate.date(date.mdy(4,19,1943) + time.hms(6,49,27)) / 86400.
5473 DEBUG EVALUATE /xdate.date(date.mdy(10,7,1943) + time.hms(2,57,52)) / 86400.
5474 DEBUG EVALUATE /xdate.date(date.mdy(3,17,1992) + time.hms(16,45,44)) / 86400.
5475 DEBUG EVALUATE /xdate.date(date.mdy(2,25,1996) + time.hms(21,30,57)) / 86400.
5476 DEBUG EVALUATE /xdate.date(date.mdy(9,29,1941) + time.hms(4,25,9)) / 86400.
5477 DEBUG EVALUATE /xdate.date(date.mdy(4,19,43) + time.hms(6,49,27)) / 86400.
5478 DEBUG EVALUATE /xdate.date(date.mdy(10,7,43) + time.hms(2,57,52)) / 86400.
5479 DEBUG EVALUATE /xdate.date(date.mdy(3,17,92) + time.hms(16,45,44)) / 86400.
5480 DEBUG EVALUATE /xdate.date(date.mdy(2,25,96) + time.hms(21,30,57)) / 86400.
5481 DEBUG EVALUATE /xdate.date(date.mdy(11,10,2038) + time.hms(22,30,4)) / 86400.
5482 DEBUG EVALUATE /xdate.date(date.mdy(7,18,2094) + time.hms(1,56,51)) / 86400.
5483 DEBUG EVALUATE /xdate.date(123.4).
5484 DEBUG EVALUATE /xdate.date('').
5487 for opt in OPT NOOPT; do
5489 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5490 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
5491 xdate.date(date.mdy(6,10,1648) + time.hms(0,0,0)) / 86400 => 23981.00
5493 xdate.date(date.mdy(6,30,1680) + time.hms(4,50,38)) / 86400 => 35689.00
5495 xdate.date(date.mdy(7,24,1716) + time.hms(12,31,35)) / 86400 => 48861.00
5497 xdate.date(date.mdy(6,19,1768) + time.hms(12,47,53)) / 86400 => 67819.00
5499 xdate.date(date.mdy(8,2,1819) + time.hms(1,26,0)) / 86400 => 86489.00
5501 xdate.date(date.mdy(3,27,1839) + time.hms(20,58,11)) / 86400 => 93666.00
5503 xdate.date(date.mdy(4,19,1903) + time.hms(7,36,5)) / 86400 => 117064.00
5505 xdate.date(date.mdy(8,25,1929) + time.hms(15,43,49)) / 86400 => 126689.00
5507 xdate.date(date.mdy(9,29,1941) + time.hms(4,25,9)) / 86400 => 131107.00
5509 xdate.date(date.mdy(4,19,1943) + time.hms(6,49,27)) / 86400 => 131674.00
5511 xdate.date(date.mdy(10,7,1943) + time.hms(2,57,52)) / 86400 => 131845.00
5513 xdate.date(date.mdy(3,17,1992) + time.hms(16,45,44)) / 86400 => 149539.00
5515 xdate.date(date.mdy(2,25,1996) + time.hms(21,30,57)) / 86400 => 150979.00
5517 xdate.date(date.mdy(9,29,1941) + time.hms(4,25,9)) / 86400 => 131107.00
5519 xdate.date(date.mdy(4,19,43) + time.hms(6,49,27)) / 86400 => 131674.00
5521 xdate.date(date.mdy(10,7,43) + time.hms(2,57,52)) / 86400 => 131845.00
5523 xdate.date(date.mdy(3,17,92) + time.hms(16,45,44)) / 86400 => 149539.00
5525 xdate.date(date.mdy(2,25,96) + time.hms(21,30,57)) / 86400 => 150979.00
5527 xdate.date(date.mdy(11,10,2038) + time.hms(22,30,4)) / 86400 => 166578.00
5529 xdate.date(date.mdy(7,18,2094) + time.hms(1,56,51)) / 86400 => 186917.00
5531 xdate.date(123.4) => 0.00
5533 evaluate.sps:24.17-24.30: error: DEBUG EVALUATE: Type mismatch invoking XDATE.
5534 DATE(number) as xdate.date(string).
5535 24 | DEBUG EVALUATE /xdate.date('').
5538 evaluate.sps:24.28-24.29: note: DEBUG EVALUATE: This argument has type 'string'
5539 but 'number' is required.
5540 24 | DEBUG EVALUATE /xdate.date('').
5543 xdate.date('') => error
5548 AT_SETUP([expressions - XDATE.HOUR])
5549 AT_KEYWORDS([expression expressions evaluate])
5550 AT_DATA([evaluate-base.sps], [dnl
5552 DEBUG EVALUATE SET opt.
5553 DEBUG EVALUATE /xdate.hour(date.mdy(6,10,1648) + time.hms(0,0,0)).
5554 DEBUG EVALUATE /xdate.hour(date.mdy(6,30,1680) + time.hms(4,50,38)).
5555 DEBUG EVALUATE /xdate.hour(date.mdy(7,24,1716) + time.hms(12,31,35)).
5556 DEBUG EVALUATE /xdate.hour(date.mdy(6,19,1768) + time.hms(12,47,53)).
5557 DEBUG EVALUATE /xdate.hour(date.mdy(8,2,1819) + time.hms(1,26,0)).
5558 DEBUG EVALUATE /xdate.hour(date.mdy(3,27,1839) + time.hms(20,58,11)).
5559 DEBUG EVALUATE /xdate.hour(date.mdy(4,19,1903) + time.hms(7,36,5)).
5560 DEBUG EVALUATE /xdate.hour(date.mdy(8,25,1929) + time.hms(15,43,49)).
5561 DEBUG EVALUATE /xdate.hour(date.mdy(9,29,1941) + time.hms(4,25,9)).
5562 DEBUG EVALUATE /xdate.hour(date.mdy(4,19,1943) + time.hms(6,49,27)).
5563 DEBUG EVALUATE /xdate.hour(date.mdy(10,7,1943) + time.hms(2,57,52)).
5564 DEBUG EVALUATE /xdate.hour(date.mdy(3,17,1992) + time.hms(16,45,44)).
5565 DEBUG EVALUATE /xdate.hour(date.mdy(2,25,1996) + time.hms(21,30,57)).
5566 DEBUG EVALUATE /xdate.hour(date.mdy(9,29,1941) + time.hms(4,25,9)).
5567 DEBUG EVALUATE /xdate.hour(date.mdy(4,19,43) + time.hms(6,49,27)).
5568 DEBUG EVALUATE /xdate.hour(date.mdy(10,7,43) + time.hms(2,57,52)).
5569 DEBUG EVALUATE /xdate.hour(date.mdy(3,17,92) + time.hms(16,45,44)).
5570 DEBUG EVALUATE /xdate.hour(date.mdy(2,25,96) + time.hms(21,30,57)).
5571 DEBUG EVALUATE /xdate.hour(date.mdy(11,10,2038) + time.hms(22,30,4)).
5572 DEBUG EVALUATE /xdate.hour(date.mdy(7,18,2094) + time.hms(1,56,51)).
5573 DEBUG EVALUATE /xdate.hour(-1).
5574 DEBUG EVALUATE /xdate.hour(1).
5575 DEBUG EVALUATE /xdate.hour($sysmis).
5576 DEBUG EVALUATE /xdate.hour('').
5579 for opt in OPT NOOPT; do
5581 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5582 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
5583 xdate.hour(date.mdy(6,10,1648) + time.hms(0,0,0)) => 0.00
5585 xdate.hour(date.mdy(6,30,1680) + time.hms(4,50,38)) => 4.00
5587 xdate.hour(date.mdy(7,24,1716) + time.hms(12,31,35)) => 12.00
5589 xdate.hour(date.mdy(6,19,1768) + time.hms(12,47,53)) => 12.00
5591 xdate.hour(date.mdy(8,2,1819) + time.hms(1,26,0)) => 1.00
5593 xdate.hour(date.mdy(3,27,1839) + time.hms(20,58,11)) => 20.00
5595 xdate.hour(date.mdy(4,19,1903) + time.hms(7,36,5)) => 7.00
5597 xdate.hour(date.mdy(8,25,1929) + time.hms(15,43,49)) => 15.00
5599 xdate.hour(date.mdy(9,29,1941) + time.hms(4,25,9)) => 4.00
5601 xdate.hour(date.mdy(4,19,1943) + time.hms(6,49,27)) => 6.00
5603 xdate.hour(date.mdy(10,7,1943) + time.hms(2,57,52)) => 2.00
5605 xdate.hour(date.mdy(3,17,1992) + time.hms(16,45,44)) => 16.00
5607 xdate.hour(date.mdy(2,25,1996) + time.hms(21,30,57)) => 21.00
5609 xdate.hour(date.mdy(9,29,1941) + time.hms(4,25,9)) => 4.00
5611 xdate.hour(date.mdy(4,19,43) + time.hms(6,49,27)) => 6.00
5613 xdate.hour(date.mdy(10,7,43) + time.hms(2,57,52)) => 2.00
5615 xdate.hour(date.mdy(3,17,92) + time.hms(16,45,44)) => 16.00
5617 xdate.hour(date.mdy(2,25,96) + time.hms(21,30,57)) => 21.00
5619 xdate.hour(date.mdy(11,10,2038) + time.hms(22,30,4)) => 22.00
5621 xdate.hour(date.mdy(7,18,2094) + time.hms(1,56,51)) => 1.00
5623 xdate.hour(-1) => -1.00
5625 xdate.hour(1) => 0.00
5627 xdate.hour($sysmis) => sysmis
5629 evaluate.sps:26.17-26.30: error: DEBUG EVALUATE: Type mismatch invoking XDATE.
5630 HOUR(number) as xdate.hour(string).
5631 26 | DEBUG EVALUATE /xdate.hour('').
5634 evaluate.sps:26.28-26.29: note: DEBUG EVALUATE: This argument has type 'string'
5635 but 'number' is required.
5636 26 | DEBUG EVALUATE /xdate.hour('').
5639 xdate.hour('') => error
5644 AT_SETUP([expressions - XDATE.JDAY])
5645 AT_KEYWORDS([expression expressions evaluate])
5646 AT_DATA([evaluate-base.sps], [dnl
5648 DEBUG EVALUATE SET opt.
5649 DEBUG EVALUATE /xdate.jday(date.mdy(6,10,1648) + time.hms(0,0,0)).
5650 DEBUG EVALUATE /xdate.jday(date.mdy(6,30,1680) + time.hms(4,50,38)).
5651 DEBUG EVALUATE /xdate.jday(date.mdy(7,24,1716) + time.hms(12,31,35)).
5652 DEBUG EVALUATE /xdate.jday(date.mdy(6,19,1768) + time.hms(12,47,53)).
5653 DEBUG EVALUATE /xdate.jday(date.mdy(8,2,1819) + time.hms(1,26,0)).
5654 DEBUG EVALUATE /xdate.jday(date.mdy(3,27,1839) + time.hms(20,58,11)).
5655 DEBUG EVALUATE /xdate.jday(date.mdy(4,19,1903) + time.hms(7,36,5)).
5656 DEBUG EVALUATE /xdate.jday(date.mdy(8,25,1929) + time.hms(15,43,49)).
5657 DEBUG EVALUATE /xdate.jday(date.mdy(9,29,1941) + time.hms(4,25,9)).
5658 DEBUG EVALUATE /xdate.jday(date.mdy(4,19,1943) + time.hms(6,49,27)).
5659 DEBUG EVALUATE /xdate.jday(date.mdy(10,7,1943) + time.hms(2,57,52)).
5660 DEBUG EVALUATE /xdate.jday(date.mdy(3,17,1992) + time.hms(16,45,44)).
5661 DEBUG EVALUATE /xdate.jday(date.mdy(2,25,1996) + time.hms(21,30,57)).
5662 DEBUG EVALUATE /xdate.jday(date.mdy(9,29,1941) + time.hms(4,25,9)).
5663 DEBUG EVALUATE /xdate.jday(date.mdy(4,19,43) + time.hms(6,49,27)).
5664 DEBUG EVALUATE /xdate.jday(date.mdy(10,7,43) + time.hms(2,57,52)).
5665 DEBUG EVALUATE /xdate.jday(date.mdy(3,17,92) + time.hms(16,45,44)).
5666 DEBUG EVALUATE /xdate.jday(date.mdy(2,25,96) + time.hms(21,30,57)).
5667 DEBUG EVALUATE /xdate.jday(date.mdy(11,10,2038) + time.hms(22,30,4)).
5668 DEBUG EVALUATE /xdate.jday(date.mdy(7,18,2094) + time.hms(1,56,51)).
5669 DEBUG EVALUATE /xdate.jday(0).
5670 DEBUG EVALUATE /xdate.jday(1).
5671 DEBUG EVALUATE /xdate.jday(86400).
5674 for opt in OPT NOOPT; do
5676 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5677 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
5678 xdate.jday(date.mdy(6,10,1648) + time.hms(0,0,0)) => 162.00
5680 xdate.jday(date.mdy(6,30,1680) + time.hms(4,50,38)) => 182.00
5682 xdate.jday(date.mdy(7,24,1716) + time.hms(12,31,35)) => 206.00
5684 xdate.jday(date.mdy(6,19,1768) + time.hms(12,47,53)) => 171.00
5686 xdate.jday(date.mdy(8,2,1819) + time.hms(1,26,0)) => 214.00
5688 xdate.jday(date.mdy(3,27,1839) + time.hms(20,58,11)) => 86.00
5690 xdate.jday(date.mdy(4,19,1903) + time.hms(7,36,5)) => 109.00
5692 xdate.jday(date.mdy(8,25,1929) + time.hms(15,43,49)) => 237.00
5694 xdate.jday(date.mdy(9,29,1941) + time.hms(4,25,9)) => 272.00
5696 xdate.jday(date.mdy(4,19,1943) + time.hms(6,49,27)) => 109.00
5698 xdate.jday(date.mdy(10,7,1943) + time.hms(2,57,52)) => 280.00
5700 xdate.jday(date.mdy(3,17,1992) + time.hms(16,45,44)) => 77.00
5702 xdate.jday(date.mdy(2,25,1996) + time.hms(21,30,57)) => 56.00
5704 xdate.jday(date.mdy(9,29,1941) + time.hms(4,25,9)) => 272.00
5706 xdate.jday(date.mdy(4,19,43) + time.hms(6,49,27)) => 109.00
5708 xdate.jday(date.mdy(10,7,43) + time.hms(2,57,52)) => 280.00
5710 xdate.jday(date.mdy(3,17,92) + time.hms(16,45,44)) => 77.00
5712 xdate.jday(date.mdy(2,25,96) + time.hms(21,30,57)) => 56.00
5714 xdate.jday(date.mdy(11,10,2038) + time.hms(22,30,4)) => 314.00
5716 xdate.jday(date.mdy(7,18,2094) + time.hms(1,56,51)) => 199.00
5718 xdate.jday(0) => sysmis
5720 xdate.jday(1) => sysmis
5722 xdate.jday(86400) => 288.00
5727 AT_SETUP([expressions - XDATE.MDAY])
5728 AT_KEYWORDS([expression expressions evaluate])
5729 AT_DATA([evaluate-base.sps], [dnl
5731 DEBUG EVALUATE SET opt.
5732 DEBUG EVALUATE /xdate.mday(date.mdy(6,10,1648) + time.hms(0,0,0)).
5733 DEBUG EVALUATE /xdate.mday(date.mdy(6,30,1680) + time.hms(4,50,38)).
5734 DEBUG EVALUATE /xdate.mday(date.mdy(7,24,1716) + time.hms(12,31,35)).
5735 DEBUG EVALUATE /xdate.mday(date.mdy(6,19,1768) + time.hms(12,47,53)).
5736 DEBUG EVALUATE /xdate.mday(date.mdy(8,2,1819) + time.hms(1,26,0)).
5737 DEBUG EVALUATE /xdate.mday(date.mdy(3,27,1839) + time.hms(20,58,11)).
5738 DEBUG EVALUATE /xdate.mday(date.mdy(4,19,1903) + time.hms(7,36,5)).
5739 DEBUG EVALUATE /xdate.mday(date.mdy(8,25,1929) + time.hms(15,43,49)).
5740 DEBUG EVALUATE /xdate.mday(date.mdy(9,29,1941) + time.hms(4,25,9)).
5741 DEBUG EVALUATE /xdate.mday(date.mdy(4,19,1943) + time.hms(6,49,27)).
5742 DEBUG EVALUATE /xdate.mday(date.mdy(10,7,1943) + time.hms(2,57,52)).
5743 DEBUG EVALUATE /xdate.mday(date.mdy(3,17,1992) + time.hms(16,45,44)).
5744 DEBUG EVALUATE /xdate.mday(date.mdy(2,25,1996) + time.hms(21,30,57)).
5745 DEBUG EVALUATE /xdate.mday(date.mdy(9,29,1941) + time.hms(4,25,9)).
5746 DEBUG EVALUATE /xdate.mday(date.mdy(4,19,43) + time.hms(6,49,27)).
5747 DEBUG EVALUATE /xdate.mday(date.mdy(10,7,43) + time.hms(2,57,52)).
5748 DEBUG EVALUATE /xdate.mday(date.mdy(3,17,92) + time.hms(16,45,44)).
5749 DEBUG EVALUATE /xdate.mday(date.mdy(2,25,96) + time.hms(21,30,57)).
5750 DEBUG EVALUATE /xdate.mday(date.mdy(11,10,2038) + time.hms(22,30,4)).
5751 DEBUG EVALUATE /xdate.mday(date.mdy(7,18,2094) + time.hms(1,56,51)).
5754 for opt in OPT NOOPT; do
5756 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5757 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
5758 xdate.mday(date.mdy(6,10,1648) + time.hms(0,0,0)) => 10.00
5760 xdate.mday(date.mdy(6,30,1680) + time.hms(4,50,38)) => 30.00
5762 xdate.mday(date.mdy(7,24,1716) + time.hms(12,31,35)) => 24.00
5764 xdate.mday(date.mdy(6,19,1768) + time.hms(12,47,53)) => 19.00
5766 xdate.mday(date.mdy(8,2,1819) + time.hms(1,26,0)) => 2.00
5768 xdate.mday(date.mdy(3,27,1839) + time.hms(20,58,11)) => 27.00
5770 xdate.mday(date.mdy(4,19,1903) + time.hms(7,36,5)) => 19.00
5772 xdate.mday(date.mdy(8,25,1929) + time.hms(15,43,49)) => 25.00
5774 xdate.mday(date.mdy(9,29,1941) + time.hms(4,25,9)) => 29.00
5776 xdate.mday(date.mdy(4,19,1943) + time.hms(6,49,27)) => 19.00
5778 xdate.mday(date.mdy(10,7,1943) + time.hms(2,57,52)) => 7.00
5780 xdate.mday(date.mdy(3,17,1992) + time.hms(16,45,44)) => 17.00
5782 xdate.mday(date.mdy(2,25,1996) + time.hms(21,30,57)) => 25.00
5784 xdate.mday(date.mdy(9,29,1941) + time.hms(4,25,9)) => 29.00
5786 xdate.mday(date.mdy(4,19,43) + time.hms(6,49,27)) => 19.00
5788 xdate.mday(date.mdy(10,7,43) + time.hms(2,57,52)) => 7.00
5790 xdate.mday(date.mdy(3,17,92) + time.hms(16,45,44)) => 17.00
5792 xdate.mday(date.mdy(2,25,96) + time.hms(21,30,57)) => 25.00
5794 xdate.mday(date.mdy(11,10,2038) + time.hms(22,30,4)) => 10.00
5796 xdate.mday(date.mdy(7,18,2094) + time.hms(1,56,51)) => 18.00
5801 AT_SETUP([expressions - XDATE.MINUTE])
5802 AT_KEYWORDS([expression expressions evaluate])
5803 AT_DATA([evaluate-base.sps], [dnl
5805 DEBUG EVALUATE SET opt.
5806 DEBUG EVALUATE /xdate.minute(date.mdy(6,10,1648) + time.hms(0,0,0)).
5807 DEBUG EVALUATE /xdate.minute(date.mdy(6,30,1680) + time.hms(4,50,38)).
5808 DEBUG EVALUATE /xdate.minute(date.mdy(7,24,1716) + time.hms(12,31,35)).
5809 DEBUG EVALUATE /xdate.minute(date.mdy(6,19,1768) + time.hms(12,47,53)).
5810 DEBUG EVALUATE /xdate.minute(date.mdy(8,2,1819) + time.hms(1,26,0)).
5811 DEBUG EVALUATE /xdate.minute(date.mdy(3,27,1839) + time.hms(20,58,11)).
5812 DEBUG EVALUATE /xdate.minute(date.mdy(4,19,1903) + time.hms(7,36,5)).
5813 DEBUG EVALUATE /xdate.minute(date.mdy(8,25,1929) + time.hms(15,43,49)).
5814 DEBUG EVALUATE /xdate.minute(date.mdy(9,29,1941) + time.hms(4,25,9)).
5815 DEBUG EVALUATE /xdate.minute(date.mdy(4,19,1943) + time.hms(6,49,27)).
5816 DEBUG EVALUATE /xdate.minute(date.mdy(10,7,1943) + time.hms(2,57,52)).
5817 DEBUG EVALUATE /xdate.minute(date.mdy(3,17,1992) + time.hms(16,45,44)).
5818 DEBUG EVALUATE /xdate.minute(date.mdy(2,25,1996) + time.hms(21,30,57)).
5819 DEBUG EVALUATE /xdate.minute(date.mdy(9,29,1941) + time.hms(4,25,9)).
5820 DEBUG EVALUATE /xdate.minute(date.mdy(4,19,43) + time.hms(6,49,27)).
5821 DEBUG EVALUATE /xdate.minute(date.mdy(10,7,43) + time.hms(2,57,52)).
5822 DEBUG EVALUATE /xdate.minute(date.mdy(3,17,92) + time.hms(16,45,44)).
5823 DEBUG EVALUATE /xdate.minute(date.mdy(2,25,96) + time.hms(21,30,57)).
5824 DEBUG EVALUATE /xdate.minute(date.mdy(11,10,2038) + time.hms(22,30,4)).
5825 DEBUG EVALUATE /xdate.minute(date.mdy(7,18,2094) + time.hms(1,56,51)).
5828 for opt in OPT NOOPT; do
5830 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5831 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
5832 xdate.minute(date.mdy(6,10,1648) + time.hms(0,0,0)) => 0.00
5834 xdate.minute(date.mdy(6,30,1680) + time.hms(4,50,38)) => 50.00
5836 xdate.minute(date.mdy(7,24,1716) + time.hms(12,31,35)) => 31.00
5838 xdate.minute(date.mdy(6,19,1768) + time.hms(12,47,53)) => 47.00
5840 xdate.minute(date.mdy(8,2,1819) + time.hms(1,26,0)) => 26.00
5842 xdate.minute(date.mdy(3,27,1839) + time.hms(20,58,11)) => 58.00
5844 xdate.minute(date.mdy(4,19,1903) + time.hms(7,36,5)) => 36.00
5846 xdate.minute(date.mdy(8,25,1929) + time.hms(15,43,49)) => 43.00
5848 xdate.minute(date.mdy(9,29,1941) + time.hms(4,25,9)) => 25.00
5850 xdate.minute(date.mdy(4,19,1943) + time.hms(6,49,27)) => 49.00
5852 xdate.minute(date.mdy(10,7,1943) + time.hms(2,57,52)) => 57.00
5854 xdate.minute(date.mdy(3,17,1992) + time.hms(16,45,44)) => 45.00
5856 xdate.minute(date.mdy(2,25,1996) + time.hms(21,30,57)) => 30.00
5858 xdate.minute(date.mdy(9,29,1941) + time.hms(4,25,9)) => 25.00
5860 xdate.minute(date.mdy(4,19,43) + time.hms(6,49,27)) => 49.00
5862 xdate.minute(date.mdy(10,7,43) + time.hms(2,57,52)) => 57.00
5864 xdate.minute(date.mdy(3,17,92) + time.hms(16,45,44)) => 45.00
5866 xdate.minute(date.mdy(2,25,96) + time.hms(21,30,57)) => 30.00
5868 xdate.minute(date.mdy(11,10,2038) + time.hms(22,30,4)) => 30.00
5870 xdate.minute(date.mdy(7,18,2094) + time.hms(1,56,51)) => 56.00
5875 AT_SETUP([expressions - XDATE.MONTH])
5876 AT_KEYWORDS([expression expressions evaluate])
5877 AT_DATA([evaluate-base.sps], [dnl
5879 DEBUG EVALUATE SET opt.
5880 DEBUG EVALUATE /xdate.month(date.mdy(6,10,1648) + time.hms(0,0,0)).
5881 DEBUG EVALUATE /xdate.month(date.mdy(6,30,1680) + time.hms(4,50,38)).
5882 DEBUG EVALUATE /xdate.month(date.mdy(7,24,1716) + time.hms(12,31,35)).
5883 DEBUG EVALUATE /xdate.month(date.mdy(6,19,1768) + time.hms(12,47,53)).
5884 DEBUG EVALUATE /xdate.month(date.mdy(8,2,1819) + time.hms(1,26,0)).
5885 DEBUG EVALUATE /xdate.month(date.mdy(3,27,1839) + time.hms(20,58,11)).
5886 DEBUG EVALUATE /xdate.month(date.mdy(4,19,1903) + time.hms(7,36,5)).
5887 DEBUG EVALUATE /xdate.month(date.mdy(8,25,1929) + time.hms(15,43,49)).
5888 DEBUG EVALUATE /xdate.month(date.mdy(9,29,1941) + time.hms(4,25,9)).
5889 DEBUG EVALUATE /xdate.month(date.mdy(4,19,1943) + time.hms(6,49,27)).
5890 DEBUG EVALUATE /xdate.month(date.mdy(10,7,1943) + time.hms(2,57,52)).
5891 DEBUG EVALUATE /xdate.month(date.mdy(3,17,1992) + time.hms(16,45,44)).
5892 DEBUG EVALUATE /xdate.month(date.mdy(2,25,1996) + time.hms(21,30,57)).
5893 DEBUG EVALUATE /xdate.month(date.mdy(9,29,1941) + time.hms(4,25,9)).
5894 DEBUG EVALUATE /xdate.month(date.mdy(4,19,43) + time.hms(6,49,27)).
5895 DEBUG EVALUATE /xdate.month(date.mdy(10,7,43) + time.hms(2,57,52)).
5896 DEBUG EVALUATE /xdate.month(date.mdy(3,17,92) + time.hms(16,45,44)).
5897 DEBUG EVALUATE /xdate.month(date.mdy(2,25,96) + time.hms(21,30,57)).
5898 DEBUG EVALUATE /xdate.month(date.mdy(11,10,2038) + time.hms(22,30,4)).
5899 DEBUG EVALUATE /xdate.month(date.mdy(7,18,2094) + time.hms(1,56,51)).
5902 for opt in OPT NOOPT; do
5904 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5905 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
5906 xdate.month(date.mdy(6,10,1648) + time.hms(0,0,0)) => 6.00
5908 xdate.month(date.mdy(6,30,1680) + time.hms(4,50,38)) => 6.00
5910 xdate.month(date.mdy(7,24,1716) + time.hms(12,31,35)) => 7.00
5912 xdate.month(date.mdy(6,19,1768) + time.hms(12,47,53)) => 6.00
5914 xdate.month(date.mdy(8,2,1819) + time.hms(1,26,0)) => 8.00
5916 xdate.month(date.mdy(3,27,1839) + time.hms(20,58,11)) => 3.00
5918 xdate.month(date.mdy(4,19,1903) + time.hms(7,36,5)) => 4.00
5920 xdate.month(date.mdy(8,25,1929) + time.hms(15,43,49)) => 8.00
5922 xdate.month(date.mdy(9,29,1941) + time.hms(4,25,9)) => 9.00
5924 xdate.month(date.mdy(4,19,1943) + time.hms(6,49,27)) => 4.00
5926 xdate.month(date.mdy(10,7,1943) + time.hms(2,57,52)) => 10.00
5928 xdate.month(date.mdy(3,17,1992) + time.hms(16,45,44)) => 3.00
5930 xdate.month(date.mdy(2,25,1996) + time.hms(21,30,57)) => 2.00
5932 xdate.month(date.mdy(9,29,1941) + time.hms(4,25,9)) => 9.00
5934 xdate.month(date.mdy(4,19,43) + time.hms(6,49,27)) => 4.00
5936 xdate.month(date.mdy(10,7,43) + time.hms(2,57,52)) => 10.00
5938 xdate.month(date.mdy(3,17,92) + time.hms(16,45,44)) => 3.00
5940 xdate.month(date.mdy(2,25,96) + time.hms(21,30,57)) => 2.00
5942 xdate.month(date.mdy(11,10,2038) + time.hms(22,30,4)) => 11.00
5944 xdate.month(date.mdy(7,18,2094) + time.hms(1,56,51)) => 7.00
5949 AT_SETUP([expressions - XDATE.QUARTER])
5950 AT_KEYWORDS([expression expressions evaluate])
5951 AT_DATA([evaluate-base.sps], [dnl
5953 DEBUG EVALUATE SET opt.
5954 DEBUG EVALUATE /xdate.quarter(date.mdy(6,10,1648) + time.hms(0,0,0)).
5955 DEBUG EVALUATE /xdate.quarter(date.mdy(6,30,1680) + time.hms(4,50,38)).
5956 DEBUG EVALUATE /xdate.quarter(date.mdy(7,24,1716) + time.hms(12,31,35)).
5957 DEBUG EVALUATE /xdate.quarter(date.mdy(6,19,1768) + time.hms(12,47,53)).
5958 DEBUG EVALUATE /xdate.quarter(date.mdy(8,2,1819) + time.hms(1,26,0)).
5959 DEBUG EVALUATE /xdate.quarter(date.mdy(3,27,1839) + time.hms(20,58,11)).
5960 DEBUG EVALUATE /xdate.quarter(date.mdy(4,19,1903) + time.hms(7,36,5)).
5961 DEBUG EVALUATE /xdate.quarter(date.mdy(8,25,1929) + time.hms(15,43,49)).
5962 DEBUG EVALUATE /xdate.quarter(date.mdy(9,29,1941) + time.hms(4,25,9)).
5963 DEBUG EVALUATE /xdate.quarter(date.mdy(4,19,1943) + time.hms(6,49,27)).
5964 DEBUG EVALUATE /xdate.quarter(date.mdy(10,7,1943) + time.hms(2,57,52)).
5965 DEBUG EVALUATE /xdate.quarter(date.mdy(3,17,1992) + time.hms(16,45,44)).
5966 DEBUG EVALUATE /xdate.quarter(date.mdy(2,25,1996) + time.hms(21,30,57)).
5967 DEBUG EVALUATE /xdate.quarter(date.mdy(9,29,1941) + time.hms(4,25,9)).
5968 DEBUG EVALUATE /xdate.quarter(date.mdy(4,19,43) + time.hms(6,49,27)).
5969 DEBUG EVALUATE /xdate.quarter(date.mdy(10,7,43) + time.hms(2,57,52)).
5970 DEBUG EVALUATE /xdate.quarter(date.mdy(3,17,92) + time.hms(16,45,44)).
5971 DEBUG EVALUATE /xdate.quarter(date.mdy(2,25,96) + time.hms(21,30,57)).
5972 DEBUG EVALUATE /xdate.quarter(date.mdy(11,10,2038) + time.hms(22,30,4)).
5973 DEBUG EVALUATE /xdate.quarter(date.mdy(7,18,2094) + time.hms(1,56,51)).
5976 for opt in OPT NOOPT; do
5978 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5979 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
5980 xdate.quarter(date.mdy(6,10,1648) + time.hms(0,0,0)) => 2.00
5982 xdate.quarter(date.mdy(6,30,1680) + time.hms(4,50,38)) => 2.00
5984 xdate.quarter(date.mdy(7,24,1716) + time.hms(12,31,35)) => 3.00
5986 xdate.quarter(date.mdy(6,19,1768) + time.hms(12,47,53)) => 2.00
5988 xdate.quarter(date.mdy(8,2,1819) + time.hms(1,26,0)) => 3.00
5990 xdate.quarter(date.mdy(3,27,1839) + time.hms(20,58,11)) => 1.00
5992 xdate.quarter(date.mdy(4,19,1903) + time.hms(7,36,5)) => 2.00
5994 xdate.quarter(date.mdy(8,25,1929) + time.hms(15,43,49)) => 3.00
5996 xdate.quarter(date.mdy(9,29,1941) + time.hms(4,25,9)) => 3.00
5998 xdate.quarter(date.mdy(4,19,1943) + time.hms(6,49,27)) => 2.00
6000 xdate.quarter(date.mdy(10,7,1943) + time.hms(2,57,52)) => 4.00
6002 xdate.quarter(date.mdy(3,17,1992) + time.hms(16,45,44)) => 1.00
6004 xdate.quarter(date.mdy(2,25,1996) + time.hms(21,30,57)) => 1.00
6006 xdate.quarter(date.mdy(9,29,1941) + time.hms(4,25,9)) => 3.00
6008 xdate.quarter(date.mdy(4,19,43) + time.hms(6,49,27)) => 2.00
6010 xdate.quarter(date.mdy(10,7,43) + time.hms(2,57,52)) => 4.00
6012 xdate.quarter(date.mdy(3,17,92) + time.hms(16,45,44)) => 1.00
6014 xdate.quarter(date.mdy(2,25,96) + time.hms(21,30,57)) => 1.00
6016 xdate.quarter(date.mdy(11,10,2038) + time.hms(22,30,4)) => 4.00
6018 xdate.quarter(date.mdy(7,18,2094) + time.hms(1,56,51)) => 3.00
6023 AT_SETUP([expressions - XDATE.SECOND])
6024 AT_KEYWORDS([expression expressions evaluate])
6025 AT_DATA([evaluate-base.sps], [dnl
6027 DEBUG EVALUATE SET opt.
6028 DEBUG EVALUATE /xdate.second(date.mdy(6,10,1648) + time.hms(0,0,0)).
6029 DEBUG EVALUATE /xdate.second(date.mdy(6,30,1680) + time.hms(4,50,38)).
6030 DEBUG EVALUATE /xdate.second(date.mdy(7,24,1716) + time.hms(12,31,35)).
6031 DEBUG EVALUATE /xdate.second(date.mdy(6,19,1768) + time.hms(12,47,53)).
6032 DEBUG EVALUATE /xdate.second(date.mdy(8,2,1819) + time.hms(1,26,0)).
6033 DEBUG EVALUATE /xdate.second(date.mdy(3,27,1839) + time.hms(20,58,11)).
6034 DEBUG EVALUATE /xdate.second(date.mdy(4,19,1903) + time.hms(7,36,5)).
6035 DEBUG EVALUATE /xdate.second(date.mdy(8,25,1929) + time.hms(15,43,49)).
6036 DEBUG EVALUATE /xdate.second(date.mdy(9,29,1941) + time.hms(4,25,9)).
6037 DEBUG EVALUATE /xdate.second(date.mdy(4,19,1943) + time.hms(6,49,27)).
6038 DEBUG EVALUATE /xdate.second(date.mdy(10,7,1943) + time.hms(2,57,52)).
6039 DEBUG EVALUATE /xdate.second(date.mdy(3,17,1992) + time.hms(16,45,44)).
6040 DEBUG EVALUATE /xdate.second(date.mdy(2,25,1996) + time.hms(21,30,57)).
6041 DEBUG EVALUATE /xdate.second(date.mdy(9,29,1941) + time.hms(4,25,9)).
6042 DEBUG EVALUATE /xdate.second(date.mdy(4,19,43) + time.hms(6,49,27)).
6043 DEBUG EVALUATE /xdate.second(date.mdy(10,7,43) + time.hms(2,57,52)).
6044 DEBUG EVALUATE /xdate.second(date.mdy(3,17,92) + time.hms(16,45,44)).
6045 DEBUG EVALUATE /xdate.second(date.mdy(2,25,96) + time.hms(21,30,57)).
6046 DEBUG EVALUATE /xdate.second(date.mdy(11,10,2038) + time.hms(22,30,4)).
6047 DEBUG EVALUATE /xdate.second(date.mdy(7,18,2094) + time.hms(1,56,51)).
6050 for opt in OPT NOOPT; do
6052 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6053 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6054 xdate.second(date.mdy(6,10,1648) + time.hms(0,0,0)) => 0.00
6056 xdate.second(date.mdy(6,30,1680) + time.hms(4,50,38)) => 38.00
6058 xdate.second(date.mdy(7,24,1716) + time.hms(12,31,35)) => 35.00
6060 xdate.second(date.mdy(6,19,1768) + time.hms(12,47,53)) => 53.00
6062 xdate.second(date.mdy(8,2,1819) + time.hms(1,26,0)) => 0.00
6064 xdate.second(date.mdy(3,27,1839) + time.hms(20,58,11)) => 11.00
6066 xdate.second(date.mdy(4,19,1903) + time.hms(7,36,5)) => 5.00
6068 xdate.second(date.mdy(8,25,1929) + time.hms(15,43,49)) => 49.00
6070 xdate.second(date.mdy(9,29,1941) + time.hms(4,25,9)) => 9.00
6072 xdate.second(date.mdy(4,19,1943) + time.hms(6,49,27)) => 27.00
6074 xdate.second(date.mdy(10,7,1943) + time.hms(2,57,52)) => 52.00
6076 xdate.second(date.mdy(3,17,1992) + time.hms(16,45,44)) => 44.00
6078 xdate.second(date.mdy(2,25,1996) + time.hms(21,30,57)) => 57.00
6080 xdate.second(date.mdy(9,29,1941) + time.hms(4,25,9)) => 9.00
6082 xdate.second(date.mdy(4,19,43) + time.hms(6,49,27)) => 27.00
6084 xdate.second(date.mdy(10,7,43) + time.hms(2,57,52)) => 52.00
6086 xdate.second(date.mdy(3,17,92) + time.hms(16,45,44)) => 44.00
6088 xdate.second(date.mdy(2,25,96) + time.hms(21,30,57)) => 57.00
6090 xdate.second(date.mdy(11,10,2038) + time.hms(22,30,4)) => 4.00
6092 xdate.second(date.mdy(7,18,2094) + time.hms(1,56,51)) => 51.00
6097 AT_SETUP([expressions - XDATE.TDAY])
6098 AT_KEYWORDS([expression expressions evaluate])
6099 AT_DATA([evaluate-base.sps], [dnl
6101 DEBUG EVALUATE SET opt.
6102 DEBUG EVALUATE /xdate.tday(date.mdy(6,10,1648) + time.hms(0,0,0)).
6103 DEBUG EVALUATE /xdate.tday(date.mdy(6,30,1680) + time.hms(4,50,38)).
6104 DEBUG EVALUATE /xdate.tday(date.mdy(7,24,1716) + time.hms(12,31,35)).
6105 DEBUG EVALUATE /xdate.tday(date.mdy(6,19,1768) + time.hms(12,47,53)).
6106 DEBUG EVALUATE /xdate.tday(date.mdy(8,2,1819) + time.hms(1,26,0)).
6107 DEBUG EVALUATE /xdate.tday(date.mdy(3,27,1839) + time.hms(20,58,11)).
6108 DEBUG EVALUATE /xdate.tday(date.mdy(4,19,1903) + time.hms(7,36,5)).
6109 DEBUG EVALUATE /xdate.tday(date.mdy(8,25,1929) + time.hms(15,43,49)).
6110 DEBUG EVALUATE /xdate.tday(date.mdy(9,29,1941) + time.hms(4,25,9)).
6111 DEBUG EVALUATE /xdate.tday(date.mdy(4,19,1943) + time.hms(6,49,27)).
6112 DEBUG EVALUATE /xdate.tday(date.mdy(10,7,1943) + time.hms(2,57,52)).
6113 DEBUG EVALUATE /xdate.tday(date.mdy(3,17,1992) + time.hms(16,45,44)).
6114 DEBUG EVALUATE /xdate.tday(date.mdy(2,25,1996) + time.hms(21,30,57)).
6115 DEBUG EVALUATE /xdate.tday(date.mdy(9,29,1941) + time.hms(4,25,9)).
6116 DEBUG EVALUATE /xdate.tday(date.mdy(4,19,43) + time.hms(6,49,27)).
6117 DEBUG EVALUATE /xdate.tday(date.mdy(10,7,43) + time.hms(2,57,52)).
6118 DEBUG EVALUATE /xdate.tday(date.mdy(3,17,92) + time.hms(16,45,44)).
6119 DEBUG EVALUATE /xdate.tday(date.mdy(2,25,96) + time.hms(21,30,57)).
6120 DEBUG EVALUATE /xdate.tday(date.mdy(11,10,2038) + time.hms(22,30,4)).
6121 DEBUG EVALUATE /xdate.tday(date.mdy(7,18,2094) + time.hms(1,56,51)).
6124 for opt in OPT NOOPT; do
6126 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6127 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6128 xdate.tday(date.mdy(6,10,1648) + time.hms(0,0,0)) => 23981.00
6130 xdate.tday(date.mdy(6,30,1680) + time.hms(4,50,38)) => 35689.00
6132 xdate.tday(date.mdy(7,24,1716) + time.hms(12,31,35)) => 48861.00
6134 xdate.tday(date.mdy(6,19,1768) + time.hms(12,47,53)) => 67819.00
6136 xdate.tday(date.mdy(8,2,1819) + time.hms(1,26,0)) => 86489.00
6138 xdate.tday(date.mdy(3,27,1839) + time.hms(20,58,11)) => 93666.00
6140 xdate.tday(date.mdy(4,19,1903) + time.hms(7,36,5)) => 117064.00
6142 xdate.tday(date.mdy(8,25,1929) + time.hms(15,43,49)) => 126689.00
6144 xdate.tday(date.mdy(9,29,1941) + time.hms(4,25,9)) => 131107.00
6146 xdate.tday(date.mdy(4,19,1943) + time.hms(6,49,27)) => 131674.00
6148 xdate.tday(date.mdy(10,7,1943) + time.hms(2,57,52)) => 131845.00
6150 xdate.tday(date.mdy(3,17,1992) + time.hms(16,45,44)) => 149539.00
6152 xdate.tday(date.mdy(2,25,1996) + time.hms(21,30,57)) => 150979.00
6154 xdate.tday(date.mdy(9,29,1941) + time.hms(4,25,9)) => 131107.00
6156 xdate.tday(date.mdy(4,19,43) + time.hms(6,49,27)) => 131674.00
6158 xdate.tday(date.mdy(10,7,43) + time.hms(2,57,52)) => 131845.00
6160 xdate.tday(date.mdy(3,17,92) + time.hms(16,45,44)) => 149539.00
6162 xdate.tday(date.mdy(2,25,96) + time.hms(21,30,57)) => 150979.00
6164 xdate.tday(date.mdy(11,10,2038) + time.hms(22,30,4)) => 166578.00
6166 xdate.tday(date.mdy(7,18,2094) + time.hms(1,56,51)) => 186917.00
6171 AT_SETUP([expressions - XDATE.TIME])
6172 AT_KEYWORDS([expression expressions evaluate])
6173 AT_DATA([evaluate-base.sps], [dnl
6175 DEBUG EVALUATE SET opt.
6176 DEBUG EVALUATE /xdate.time(date.mdy(6,10,1648) + time.hms(0,0,0)).
6177 DEBUG EVALUATE /xdate.time(date.mdy(6,30,1680) + time.hms(4,50,38)).
6178 DEBUG EVALUATE /xdate.time(date.mdy(7,24,1716) + time.hms(12,31,35)).
6179 DEBUG EVALUATE /xdate.time(date.mdy(6,19,1768) + time.hms(12,47,53)).
6180 DEBUG EVALUATE /xdate.time(date.mdy(8,2,1819) + time.hms(1,26,0)).
6181 DEBUG EVALUATE /xdate.time(date.mdy(3,27,1839) + time.hms(20,58,11)).
6182 DEBUG EVALUATE /xdate.time(date.mdy(4,19,1903) + time.hms(7,36,5)).
6183 DEBUG EVALUATE /xdate.time(date.mdy(8,25,1929) + time.hms(15,43,49)).
6184 DEBUG EVALUATE /xdate.time(date.mdy(9,29,1941) + time.hms(4,25,9)).
6185 DEBUG EVALUATE /xdate.time(date.mdy(4,19,1943) + time.hms(6,49,27)).
6186 DEBUG EVALUATE /xdate.time(date.mdy(10,7,1943) + time.hms(2,57,52)).
6187 DEBUG EVALUATE /xdate.time(date.mdy(3,17,1992) + time.hms(16,45,44)).
6188 DEBUG EVALUATE /xdate.time(date.mdy(2,25,1996) + time.hms(21,30,57)).
6189 DEBUG EVALUATE /xdate.time(date.mdy(9,29,1941) + time.hms(4,25,9)).
6190 DEBUG EVALUATE /xdate.time(date.mdy(4,19,43) + time.hms(6,49,27)).
6191 DEBUG EVALUATE /xdate.time(date.mdy(10,7,43) + time.hms(2,57,52)).
6192 DEBUG EVALUATE /xdate.time(date.mdy(3,17,92) + time.hms(16,45,44)).
6193 DEBUG EVALUATE /xdate.time(date.mdy(2,25,96) + time.hms(21,30,57)).
6194 DEBUG EVALUATE /xdate.time(date.mdy(11,10,2038) + time.hms(22,30,4)).
6195 DEBUG EVALUATE /xdate.time(date.mdy(7,18,2094) + time.hms(1,56,51)).
6198 for opt in OPT NOOPT; do
6200 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6201 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6202 xdate.time(date.mdy(6,10,1648) + time.hms(0,0,0)) => 0.00
6204 xdate.time(date.mdy(6,30,1680) + time.hms(4,50,38)) => 17438.00
6206 xdate.time(date.mdy(7,24,1716) + time.hms(12,31,35)) => 45095.00
6208 xdate.time(date.mdy(6,19,1768) + time.hms(12,47,53)) => 46073.00
6210 xdate.time(date.mdy(8,2,1819) + time.hms(1,26,0)) => 5160.00
6212 xdate.time(date.mdy(3,27,1839) + time.hms(20,58,11)) => 75491.00
6214 xdate.time(date.mdy(4,19,1903) + time.hms(7,36,5)) => 27365.00
6216 xdate.time(date.mdy(8,25,1929) + time.hms(15,43,49)) => 56629.00
6218 xdate.time(date.mdy(9,29,1941) + time.hms(4,25,9)) => 15909.00
6220 xdate.time(date.mdy(4,19,1943) + time.hms(6,49,27)) => 24567.00
6222 xdate.time(date.mdy(10,7,1943) + time.hms(2,57,52)) => 10672.00
6224 xdate.time(date.mdy(3,17,1992) + time.hms(16,45,44)) => 60344.00
6226 xdate.time(date.mdy(2,25,1996) + time.hms(21,30,57)) => 77457.00
6228 xdate.time(date.mdy(9,29,1941) + time.hms(4,25,9)) => 15909.00
6230 xdate.time(date.mdy(4,19,43) + time.hms(6,49,27)) => 24567.00
6232 xdate.time(date.mdy(10,7,43) + time.hms(2,57,52)) => 10672.00
6234 xdate.time(date.mdy(3,17,92) + time.hms(16,45,44)) => 60344.00
6236 xdate.time(date.mdy(2,25,96) + time.hms(21,30,57)) => 77457.00
6238 xdate.time(date.mdy(11,10,2038) + time.hms(22,30,4)) => 81004.00
6240 xdate.time(date.mdy(7,18,2094) + time.hms(1,56,51)) => 7011.00
6245 AT_SETUP([expressions - XDATE.WEEK])
6246 AT_KEYWORDS([expression expressions evaluate])
6247 AT_DATA([evaluate-base.sps], [dnl
6249 DEBUG EVALUATE SET opt.
6250 DEBUG EVALUATE /xdate.week(date.mdy(6,10,1648) + time.hms(0,0,0)).
6251 DEBUG EVALUATE /xdate.week(date.mdy(6,30,1680) + time.hms(4,50,38)).
6252 DEBUG EVALUATE /xdate.week(date.mdy(7,24,1716) + time.hms(12,31,35)).
6253 DEBUG EVALUATE /xdate.week(date.mdy(6,19,1768) + time.hms(12,47,53)).
6254 DEBUG EVALUATE /xdate.week(date.mdy(8,2,1819) + time.hms(1,26,0)).
6255 DEBUG EVALUATE /xdate.week(date.mdy(3,27,1839) + time.hms(20,58,11)).
6256 DEBUG EVALUATE /xdate.week(date.mdy(4,19,1903) + time.hms(7,36,5)).
6257 DEBUG EVALUATE /xdate.week(date.mdy(8,25,1929) + time.hms(15,43,49)).
6258 DEBUG EVALUATE /xdate.week(date.mdy(9,29,1941) + time.hms(4,25,9)).
6259 DEBUG EVALUATE /xdate.week(date.mdy(4,19,1943) + time.hms(6,49,27)).
6260 DEBUG EVALUATE /xdate.week(date.mdy(10,7,1943) + time.hms(2,57,52)).
6261 DEBUG EVALUATE /xdate.week(date.mdy(3,17,1992) + time.hms(16,45,44)).
6262 DEBUG EVALUATE /xdate.week(date.mdy(2,25,1996) + time.hms(21,30,57)).
6263 DEBUG EVALUATE /xdate.week(date.mdy(9,29,1941) + time.hms(4,25,9)).
6264 DEBUG EVALUATE /xdate.week(date.mdy(4,19,43) + time.hms(6,49,27)).
6265 DEBUG EVALUATE /xdate.week(date.mdy(10,7,43) + time.hms(2,57,52)).
6266 DEBUG EVALUATE /xdate.week(date.mdy(3,17,92) + time.hms(16,45,44)).
6267 DEBUG EVALUATE /xdate.week(date.mdy(2,25,96) + time.hms(21,30,57)).
6268 DEBUG EVALUATE /xdate.week(date.mdy(11,10,2038) + time.hms(22,30,4)).
6269 DEBUG EVALUATE /xdate.week(date.mdy(7,18,2094) + time.hms(1,56,51)).
6272 for opt in OPT NOOPT; do
6274 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6275 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6276 xdate.week(date.mdy(6,10,1648) + time.hms(0,0,0)) => 24.00
6278 xdate.week(date.mdy(6,30,1680) + time.hms(4,50,38)) => 26.00
6280 xdate.week(date.mdy(7,24,1716) + time.hms(12,31,35)) => 30.00
6282 xdate.week(date.mdy(6,19,1768) + time.hms(12,47,53)) => 25.00
6284 xdate.week(date.mdy(8,2,1819) + time.hms(1,26,0)) => 31.00
6286 xdate.week(date.mdy(3,27,1839) + time.hms(20,58,11)) => 13.00
6288 xdate.week(date.mdy(4,19,1903) + time.hms(7,36,5)) => 16.00
6290 xdate.week(date.mdy(8,25,1929) + time.hms(15,43,49)) => 34.00
6292 xdate.week(date.mdy(9,29,1941) + time.hms(4,25,9)) => 39.00
6294 xdate.week(date.mdy(4,19,1943) + time.hms(6,49,27)) => 16.00
6296 xdate.week(date.mdy(10,7,1943) + time.hms(2,57,52)) => 40.00
6298 xdate.week(date.mdy(3,17,1992) + time.hms(16,45,44)) => 11.00
6300 xdate.week(date.mdy(2,25,1996) + time.hms(21,30,57)) => 8.00
6302 xdate.week(date.mdy(9,29,1941) + time.hms(4,25,9)) => 39.00
6304 xdate.week(date.mdy(4,19,43) + time.hms(6,49,27)) => 16.00
6306 xdate.week(date.mdy(10,7,43) + time.hms(2,57,52)) => 40.00
6308 xdate.week(date.mdy(3,17,92) + time.hms(16,45,44)) => 11.00
6310 xdate.week(date.mdy(2,25,96) + time.hms(21,30,57)) => 8.00
6312 xdate.week(date.mdy(11,10,2038) + time.hms(22,30,4)) => 45.00
6314 xdate.week(date.mdy(7,18,2094) + time.hms(1,56,51)) => 29.00
6319 AT_SETUP([expressions - XDATE.WKDAY])
6320 AT_KEYWORDS([expression expressions evaluate])
6321 AT_DATA([evaluate-base.sps], [dnl
6323 DEBUG EVALUATE SET opt.
6324 DEBUG EVALUATE /xdate.wkday(date.mdy(6,10,1648)).
6325 DEBUG EVALUATE /xdate.wkday(date.mdy(6,30,1680)).
6326 DEBUG EVALUATE /xdate.wkday(date.mdy(7,24,1716)).
6327 DEBUG EVALUATE /xdate.wkday(date.mdy(6,19,1768)).
6328 DEBUG EVALUATE /xdate.wkday(date.mdy(8,2,1819)).
6329 DEBUG EVALUATE /xdate.wkday(date.mdy(3,27,1839)).
6330 DEBUG EVALUATE /xdate.wkday(date.mdy(4,19,1903)).
6331 DEBUG EVALUATE /xdate.wkday(date.mdy(8,25,1929)).
6332 DEBUG EVALUATE /xdate.wkday(date.mdy(9,29,1941)).
6333 DEBUG EVALUATE /xdate.wkday(date.mdy(4,19,1943)).
6334 DEBUG EVALUATE /xdate.wkday(date.mdy(10,7,1943)).
6335 DEBUG EVALUATE /xdate.wkday(date.mdy(3,17,1992)).
6336 DEBUG EVALUATE /xdate.wkday(date.mdy(2,25,1996)).
6337 DEBUG EVALUATE /xdate.wkday(date.mdy(9,29,1941)).
6338 DEBUG EVALUATE /xdate.wkday(date.mdy(4,19,43)).
6339 DEBUG EVALUATE /xdate.wkday(date.mdy(10,7,43)).
6340 DEBUG EVALUATE /xdate.wkday(date.mdy(3,17,92)).
6341 DEBUG EVALUATE /xdate.wkday(date.mdy(2,25,96)).
6342 DEBUG EVALUATE /xdate.wkday(date.mdy(11,10,2038)).
6343 DEBUG EVALUATE /xdate.wkday(date.mdy(7,18,2094)).
6346 for opt in OPT NOOPT; do
6348 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6349 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6350 xdate.wkday(date.mdy(6,10,1648)) => 4.00
6352 xdate.wkday(date.mdy(6,30,1680)) => 1.00
6354 xdate.wkday(date.mdy(7,24,1716)) => 6.00
6356 xdate.wkday(date.mdy(6,19,1768)) => 1.00
6358 xdate.wkday(date.mdy(8,2,1819)) => 2.00
6360 xdate.wkday(date.mdy(3,27,1839)) => 4.00
6362 xdate.wkday(date.mdy(4,19,1903)) => 1.00
6364 xdate.wkday(date.mdy(8,25,1929)) => 1.00
6366 xdate.wkday(date.mdy(9,29,1941)) => 2.00
6368 xdate.wkday(date.mdy(4,19,1943)) => 2.00
6370 xdate.wkday(date.mdy(10,7,1943)) => 5.00
6372 xdate.wkday(date.mdy(3,17,1992)) => 3.00
6374 xdate.wkday(date.mdy(2,25,1996)) => 1.00
6376 xdate.wkday(date.mdy(9,29,1941)) => 2.00
6378 xdate.wkday(date.mdy(4,19,43)) => 2.00
6380 xdate.wkday(date.mdy(10,7,43)) => 5.00
6382 xdate.wkday(date.mdy(3,17,92)) => 3.00
6384 xdate.wkday(date.mdy(2,25,96)) => 1.00
6386 xdate.wkday(date.mdy(11,10,2038)) => 4.00
6388 xdate.wkday(date.mdy(7,18,2094)) => 1.00
6393 AT_SETUP([expressions - XDATE.YEAR])
6394 AT_KEYWORDS([expression expressions evaluate])
6395 AT_DATA([evaluate-base.sps], [dnl
6397 DEBUG EVALUATE SET opt.
6398 DEBUG EVALUATE /xdate.year(date.mdy(6,10,1648) + time.hms(0,0,0)).
6399 DEBUG EVALUATE /xdate.year(date.mdy(6,30,1680) + time.hms(4,50,38)).
6400 DEBUG EVALUATE /xdate.year(date.mdy(7,24,1716) + time.hms(12,31,35)).
6401 DEBUG EVALUATE /xdate.year(date.mdy(6,19,1768) + time.hms(12,47,53)).
6402 DEBUG EVALUATE /xdate.year(date.mdy(8,2,1819) + time.hms(1,26,0)).
6403 DEBUG EVALUATE /xdate.year(date.mdy(3,27,1839) + time.hms(20,58,11)).
6404 DEBUG EVALUATE /xdate.year(date.mdy(4,19,1903) + time.hms(7,36,5)).
6405 DEBUG EVALUATE /xdate.year(date.mdy(8,25,1929) + time.hms(15,43,49)).
6406 DEBUG EVALUATE /xdate.year(date.mdy(9,29,1941) + time.hms(4,25,9)).
6407 DEBUG EVALUATE /xdate.year(date.mdy(4,19,1943) + time.hms(6,49,27)).
6408 DEBUG EVALUATE /xdate.year(date.mdy(10,7,1943) + time.hms(2,57,52)).
6409 DEBUG EVALUATE /xdate.year(date.mdy(3,17,1992) + time.hms(16,45,44)).
6410 DEBUG EVALUATE /xdate.year(date.mdy(2,25,1996) + time.hms(21,30,57)).
6411 DEBUG EVALUATE /xdate.year(date.mdy(9,29,1941) + time.hms(4,25,9)).
6412 DEBUG EVALUATE /xdate.year(date.mdy(4,19,43) + time.hms(6,49,27)).
6413 DEBUG EVALUATE /xdate.year(date.mdy(10,7,43) + time.hms(2,57,52)).
6414 DEBUG EVALUATE /xdate.year(date.mdy(3,17,92) + time.hms(16,45,44)).
6415 DEBUG EVALUATE /xdate.year(date.mdy(2,25,96) + time.hms(21,30,57)).
6416 DEBUG EVALUATE /xdate.year(date.mdy(11,10,2038) + time.hms(22,30,4)).
6417 DEBUG EVALUATE /xdate.year(date.mdy(7,18,2094) + time.hms(1,56,51)).
6420 for opt in OPT NOOPT; do
6422 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6423 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6424 xdate.year(date.mdy(6,10,1648) + time.hms(0,0,0)) => 1648.00
6426 xdate.year(date.mdy(6,30,1680) + time.hms(4,50,38)) => 1680.00
6428 xdate.year(date.mdy(7,24,1716) + time.hms(12,31,35)) => 1716.00
6430 xdate.year(date.mdy(6,19,1768) + time.hms(12,47,53)) => 1768.00
6432 xdate.year(date.mdy(8,2,1819) + time.hms(1,26,0)) => 1819.00
6434 xdate.year(date.mdy(3,27,1839) + time.hms(20,58,11)) => 1839.00
6436 xdate.year(date.mdy(4,19,1903) + time.hms(7,36,5)) => 1903.00
6438 xdate.year(date.mdy(8,25,1929) + time.hms(15,43,49)) => 1929.00
6440 xdate.year(date.mdy(9,29,1941) + time.hms(4,25,9)) => 1941.00
6442 xdate.year(date.mdy(4,19,1943) + time.hms(6,49,27)) => 1943.00
6444 xdate.year(date.mdy(10,7,1943) + time.hms(2,57,52)) => 1943.00
6446 xdate.year(date.mdy(3,17,1992) + time.hms(16,45,44)) => 1992.00
6448 xdate.year(date.mdy(2,25,1996) + time.hms(21,30,57)) => 1996.00
6450 xdate.year(date.mdy(9,29,1941) + time.hms(4,25,9)) => 1941.00
6452 xdate.year(date.mdy(4,19,43) + time.hms(6,49,27)) => 1943.00
6454 xdate.year(date.mdy(10,7,43) + time.hms(2,57,52)) => 1943.00
6456 xdate.year(date.mdy(3,17,92) + time.hms(16,45,44)) => 1992.00
6458 xdate.year(date.mdy(2,25,96) + time.hms(21,30,57)) => 1996.00
6460 xdate.year(date.mdy(11,10,2038) + time.hms(22,30,4)) => 2038.00
6462 xdate.year(date.mdy(7,18,2094) + time.hms(1,56,51)) => 2094.00
6467 AT_SETUP([expressions - DATEDIFF years])
6468 AT_KEYWORDS([expression expressions evaluate])
6469 AT_DATA([evaluate-base.sps], [dnl
6471 DEBUG EVALUATE SET opt.
6473 DEBUG EVALUATE /datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'years').
6474 DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'years').
6475 DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'years').
6476 DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'years').
6477 DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'years').
6478 DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'years').
6479 DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'years').
6480 DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'years').
6481 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'years').
6482 DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'years').
6483 DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'years').
6484 DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'years').
6485 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'years').
6486 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'years').
6487 DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'years').
6488 DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'years').
6489 DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'years').
6490 DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'years').
6491 DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'years').
6492 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'years').
6493 DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'years').
6494 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'years').
6496 DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'years').
6497 DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'years').
6498 DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'years').
6499 DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'years').
6500 DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'years').
6501 DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'years').
6502 DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'years').
6503 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'years').
6504 DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'years').
6505 DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'years').
6506 DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'years').
6507 DEBUG EVALUATE /datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'years').
6508 DEBUG EVALUATE /datediff(date.mdy(2,25,1996), date.mdy(9,29,1941), 'years').
6509 DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(9,29,1941), 'years').
6510 DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'years').
6511 DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'years').
6512 DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'years').
6513 DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(2,25,96), 'years').
6514 DEBUG EVALUATE /datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'years').
6515 DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'years').
6516 DEBUG EVALUATE /datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'years').
6517 DEBUG EVALUATE /datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'years').
6520 for opt in OPT NOOPT; do
6522 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6523 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6524 datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'years') => -32.00
6526 datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'years') => -36.00
6528 datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'years') => -51.00
6530 datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'years') => -51.00
6532 datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'years') => -19.00
6534 datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'years') => -64.00
6536 datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'years') => -26.00
6538 datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'years') => -12.00
6540 datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'years') => -1.00
6542 datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'years') => 0.00
6544 datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'years') => -48.00
6546 datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'years') => -3.00
6548 datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'years') => -54.00
6550 datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'years') => -1.00
6552 datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'years') => 0.00
6554 datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'years') => -48.00
6556 datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'years') => -3.00
6558 datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'years') => -42.00
6560 datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'years') => -55.00
6562 datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'years') => -3.00
6564 datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'years') => -4.00
6566 datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'years') => -2.00
6568 datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'years') => 32.00
6570 datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'years') => 36.00
6572 datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'years') => 51.00
6574 datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'years') => 51.00
6576 datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'years') => 19.00
6578 datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'years') => 64.00
6580 datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'years') => 26.00
6582 datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'years') => 12.00
6584 datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'years') => 1.00
6586 datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'years') => 0.00
6588 datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'years') => 48.00
6590 datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'years') => 3.00
6592 datediff(date.mdy(2,25,1996), date.mdy(9,29,1941), 'years') => 54.00
6594 datediff(date.mdy(4,19,43), date.mdy(9,29,1941), 'years') => 1.00
6596 datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'years') => 0.00
6598 datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'years') => 48.00
6600 datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'years') => 3.00
6602 datediff(date.mdy(11,10,2038), date.mdy(2,25,96), 'years') => 42.00
6604 datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'years') => 55.00
6606 datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'years') => 3.00
6608 datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'years') => 4.00
6610 datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'years') => 2.00
6615 AT_SETUP([expressions - DATEDIFF quarters])
6616 AT_KEYWORDS([expression expressions evaluate])
6617 AT_DATA([evaluate-base.sps], [dnl
6619 DEBUG EVALUATE SET opt.
6620 DEBUG EVALUATE /datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'quarters').
6621 DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'quarters').
6622 DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'quarters').
6623 DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'quarters').
6624 DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'quarters').
6625 DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'quarters').
6626 DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'quarters').
6627 DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'quarters').
6628 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'quarters').
6629 DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'quarters').
6630 DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'quarters').
6631 DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'quarters').
6632 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'quarters').
6633 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'quarters').
6634 DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'quarters').
6635 DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'quarters').
6636 DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'quarters').
6637 DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'quarters').
6638 DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'quarters').
6639 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'quarters').
6640 DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'quarters').
6641 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'quarters').
6643 DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'quarters').
6644 DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'quarters').
6645 DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'quarters').
6646 DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'quarters').
6647 DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'quarters').
6648 DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'quarters').
6649 DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'quarters').
6650 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'quarters').
6651 DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'quarters').
6652 DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'quarters').
6653 DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'quarters').
6654 DEBUG EVALUATE /datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'quarters').
6655 DEBUG EVALUATE /datediff(date.mdy(2,25,1996), date.mdy(9,29,1941), 'quarters').
6656 DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(9,29,1941), 'quarters').
6657 DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'quarters').
6658 DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'quarters').
6659 DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'quarters').
6660 DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(2,25,96), 'quarters').
6661 DEBUG EVALUATE /datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'quarters').
6662 DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'quarters').
6663 DEBUG EVALUATE /datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'quarters').
6664 DEBUG EVALUATE /datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'quarters').
6667 for opt in OPT NOOPT; do
6669 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6670 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6671 datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'quarters') => -128.00
6673 datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'quarters') => -144.00
6675 datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'quarters') => -207.00
6677 datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'quarters') => -204.00
6679 datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'quarters') => -78.00
6681 datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'quarters') => -256.00
6683 datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'quarters') => -105.00
6685 datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'quarters') => -48.00
6687 datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'quarters') => -6.00
6689 datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'quarters') => -1.00
6691 datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'quarters') => -193.00
6693 datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'quarters') => -15.00
6695 datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'quarters') => -217.00
6697 datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'quarters') => -6.00
6699 datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'quarters') => -1.00
6701 datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'quarters') => -193.00
6703 datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'quarters') => -15.00
6705 datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'quarters') => -170.00
6707 datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'quarters') => -222.00
6709 datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'quarters') => -15.00
6711 datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'quarters') => -16.00
6713 datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'quarters') => -11.00
6715 datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'quarters') => 128.00
6717 datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'quarters') => 144.00
6719 datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'quarters') => 207.00
6721 datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'quarters') => 204.00
6723 datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'quarters') => 78.00
6725 datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'quarters') => 256.00
6727 datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'quarters') => 105.00
6729 datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'quarters') => 48.00
6731 datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'quarters') => 6.00
6733 datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'quarters') => 1.00
6735 datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'quarters') => 193.00
6737 datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'quarters') => 15.00
6739 datediff(date.mdy(2,25,1996), date.mdy(9,29,1941), 'quarters') => 217.00
6741 datediff(date.mdy(4,19,43), date.mdy(9,29,1941), 'quarters') => 6.00
6743 datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'quarters') => 1.00
6745 datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'quarters') => 193.00
6747 datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'quarters') => 15.00
6749 datediff(date.mdy(11,10,2038), date.mdy(2,25,96), 'quarters') => 170.00
6751 datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'quarters') => 222.00
6753 datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'quarters') => 15.00
6755 datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'quarters') => 16.00
6757 datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'quarters') => 11.00
6762 AT_SETUP([expressions - DATEDIFF months])
6763 AT_KEYWORDS([expression expressions evaluate])
6764 AT_DATA([evaluate-base.sps], [dnl
6766 DEBUG EVALUATE SET opt.
6767 DEBUG EVALUATE /datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'months').
6768 DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'months').
6769 DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'months').
6770 DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'months').
6771 DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'months').
6772 DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'months').
6773 DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'months').
6774 DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'months').
6775 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'months').
6776 DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'months').
6777 DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'months').
6778 DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'months').
6779 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'months').
6780 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'months').
6781 DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'months').
6782 DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'months').
6783 DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'months').
6784 DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'months').
6785 DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'months').
6786 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'months').
6787 DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'months').
6788 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'months').
6790 DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'months').
6791 DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'months').
6792 DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'months').
6793 DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'months').
6794 DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'months').
6795 DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'months').
6796 DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'months').
6797 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'months').
6798 DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'months').
6799 DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'months').
6800 DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'months').
6801 DEBUG EVALUATE /datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'months').
6802 DEBUG EVALUATE /datediff(date.mdy(2,25,1996), date.mdy(9,29,1941), 'months').
6803 DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(9,29,1941), 'months').
6804 DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'months').
6805 DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'months').
6806 DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'months').
6807 DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(2,25,96), 'months').
6808 DEBUG EVALUATE /datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'months').
6809 DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'months').
6810 DEBUG EVALUATE /datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'months').
6811 DEBUG EVALUATE /datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'months').
6814 for opt in OPT NOOPT; do
6816 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6817 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6818 datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'months') => -384.00
6820 datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'months') => -432.00
6822 datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'months') => -622.00
6824 datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'months') => -613.00
6826 datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'months') => -235.00
6828 datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'months') => -768.00
6830 datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'months') => -316.00
6832 datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'months') => -145.00
6834 datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'months') => -18.00
6836 datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'months') => -5.00
6838 datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'months') => -581.00
6840 datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'months') => -47.00
6842 datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'months') => -652.00
6844 datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'months') => -18.00
6846 datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'months') => -5.00
6848 datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'months') => -581.00
6850 datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'months') => -47.00
6852 datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'months') => -512.00
6854 datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'months') => -668.00
6856 datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'months') => -47.00
6858 datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'months') => -48.00
6860 datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'months') => -35.00
6862 datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'months') => 384.00
6864 datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'months') => 432.00
6866 datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'months') => 622.00
6868 datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'months') => 613.00
6870 datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'months') => 235.00
6872 datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'months') => 768.00
6874 datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'months') => 316.00
6876 datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'months') => 145.00
6878 datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'months') => 18.00
6880 datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'months') => 5.00
6882 datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'months') => 581.00
6884 datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'months') => 47.00
6886 datediff(date.mdy(2,25,1996), date.mdy(9,29,1941), 'months') => 652.00
6888 datediff(date.mdy(4,19,43), date.mdy(9,29,1941), 'months') => 18.00
6890 datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'months') => 5.00
6892 datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'months') => 581.00
6894 datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'months') => 47.00
6896 datediff(date.mdy(11,10,2038), date.mdy(2,25,96), 'months') => 512.00
6898 datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'months') => 668.00
6900 datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'months') => 47.00
6902 datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'months') => 48.00
6904 datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'months') => 35.00
6909 AT_SETUP([expressions - DATEDIFF weeks])
6910 AT_KEYWORDS([expression expressions evaluate])
6911 AT_DATA([evaluate-base.sps], [dnl
6913 DEBUG EVALUATE SET opt.
6914 DEBUG EVALUATE /datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'weeks').
6915 DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'weeks').
6916 DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'weeks').
6917 DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'weeks').
6918 DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'weeks').
6919 DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'weeks').
6920 DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'weeks').
6921 DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'weeks').
6922 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'weeks').
6923 DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'weeks').
6924 DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'weeks').
6925 DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'weeks').
6926 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'weeks').
6927 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'weeks').
6928 DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'weeks').
6929 DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'weeks').
6930 DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'weeks').
6931 DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'weeks').
6932 DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'weeks').
6933 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'weeks').
6934 DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'weeks').
6935 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'weeks').
6938 for opt in OPT NOOPT; do
6940 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6941 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6942 datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'weeks') => -1672.00
6944 datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'weeks') => -1881.00
6946 datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'weeks') => -2708.00
6948 datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'weeks') => -2667.00
6950 datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'weeks') => -1025.00
6952 datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'weeks') => -3342.00
6954 datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'weeks') => -1375.00
6956 datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'weeks') => -631.00
6958 datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'weeks') => -81.00
6960 datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'weeks') => -24.00
6962 datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'weeks') => -2527.00
6964 datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'weeks') => -205.00
6966 datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'weeks') => -2838.00
6968 datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'weeks') => -81.00
6970 datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'weeks') => -24.00
6972 datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'weeks') => -2527.00
6974 datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'weeks') => -205.00
6976 datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'weeks') => -2228.00
6978 datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'weeks') => -2905.00
6980 datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'weeks') => -208.00
6982 datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'weeks') => -208.00
6984 datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'weeks') => -156.00
6989 AT_SETUP([expressions - DATEDIFF days])
6990 AT_KEYWORDS([expression expressions evaluate])
6991 AT_DATA([evaluate-base.sps], [dnl
6993 DEBUG EVALUATE SET opt.
6994 DEBUG EVALUATE /datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'days').
6995 DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'days').
6996 DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'days').
6997 DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'days').
6998 DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'days').
6999 DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'days').
7000 DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'days').
7001 DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'days').
7002 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'days').
7003 DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'days').
7004 DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'days').
7005 DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'days').
7006 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'days').
7007 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'days').
7008 DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'days').
7009 DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'days').
7010 DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'days').
7011 DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'days').
7012 DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'days').
7013 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'days').
7014 DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'days').
7015 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'days').
7018 for opt in OPT NOOPT; do
7020 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
7021 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
7022 datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'days') => -11708.00
7024 datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'days') => -13172.00
7026 datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'days') => -18958.00
7028 datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'days') => -18670.00
7030 datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'days') => -7177.00
7032 datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'days') => -23398.00
7034 datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'days') => -9625.00
7036 datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'days') => -4418.00
7038 datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'days') => -567.00
7040 datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'days') => -171.00
7042 datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'days') => -17694.00
7044 datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'days') => -1440.00
7046 datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'days') => -19872.00
7048 datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'days') => -567.00
7050 datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'days') => -171.00
7052 datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'days') => -17694.00
7054 datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'days') => -1440.00
7056 datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'days') => -15599.00
7058 datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'days') => -20339.00
7060 datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'days') => -1460.00
7062 datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'days') => -1461.00
7064 datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'days') => -1094.00
7069 dnl time of day is significant for DATEDIFF
7070 AT_SETUP([expressions - DATEDIFF time of day])
7071 AT_KEYWORDS([expression expressions evaluate])
7072 AT_DATA([evaluate-base.sps], [dnl
7074 DEBUG EVALUATE SET opt.
7075 DEBUG EVALUATE /datediff(date.mdy(10,15,1910) + 234, date.mdy(10,10,1910) + 123, 'days').
7076 DEBUG EVALUATE /datediff(date.mdy(10,15,1910) + 123, date.mdy(10,10,1910) + 234, 'days').
7077 DEBUG EVALUATE /datediff(date.mdy(10,24,1910) + 234, date.mdy(10,10,1910) + 123, 'weeks').
7078 DEBUG EVALUATE /datediff(date.mdy(10,24,1910) + 123, date.mdy(10,10,1910) + 234, 'weeks').
7079 DEBUG EVALUATE /datediff(date.mdy(10,10,1910) + 234, date.mdy(5,10,1910) + 123, 'months').
7080 DEBUG EVALUATE /datediff(date.mdy(10,10,1910) + 123, date.mdy(5,10,1910) + 234, 'months').
7081 DEBUG EVALUATE /datediff(date.mdy(5,10,1919) + 234, date.mdy(5,10,1910) + 123, 'years').
7082 DEBUG EVALUATE /datediff(date.mdy(5,10,1919) + 123, date.mdy(5,10,1910) + 234, 'years').
7084 DEBUG EVALUATE /datediff(date.mdy(10,10,1910) + 123, date.mdy(10,15,1910) + 234, 'days').
7085 DEBUG EVALUATE /datediff(date.mdy(10,10,1910) + 234, date.mdy(10,15,1910) + 123, 'days').
7086 DEBUG EVALUATE /datediff(date.mdy(10,10,1910) + 123, date.mdy(10,24,1910) + 234, 'weeks').
7087 DEBUG EVALUATE /datediff(date.mdy(10,10,1910) + 234, date.mdy(10,24,1910) + 123, 'weeks').
7088 DEBUG EVALUATE /datediff(date.mdy(5,10,1910) + 123, date.mdy(10,10,1910) + 234, 'months').
7089 DEBUG EVALUATE /datediff(date.mdy(5,10,1910) + 234, date.mdy(10,10,1910) + 123, 'months').
7090 DEBUG EVALUATE /datediff(date.mdy(5,10,1910) + 123, date.mdy(5,10,1919) + 234, 'years').
7091 DEBUG EVALUATE /datediff(date.mdy(5,10,1910) + 234, date.mdy(5,10,1919) + 123, 'years').
7094 for opt in OPT NOOPT; do
7096 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
7097 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
7098 datediff(date.mdy(10,15,1910) + 234, date.mdy(10,10,1910) + 123, 'days') =>
7101 datediff(date.mdy(10,15,1910) + 123, date.mdy(10,10,1910) + 234, 'days') =>
7104 datediff(date.mdy(10,24,1910) + 234, date.mdy(10,10,1910) + 123, 'weeks') =>
7107 datediff(date.mdy(10,24,1910) + 123, date.mdy(10,10,1910) + 234, 'weeks') =>
7110 datediff(date.mdy(10,10,1910) + 234, date.mdy(5,10,1910) + 123, 'months') =>
7113 datediff(date.mdy(10,10,1910) + 123, date.mdy(5,10,1910) + 234, 'months') =>
7116 datediff(date.mdy(5,10,1919) + 234, date.mdy(5,10,1910) + 123, 'years') => 9.00
7118 datediff(date.mdy(5,10,1919) + 123, date.mdy(5,10,1910) + 234, 'years') => 8.00
7120 datediff(date.mdy(10,10,1910) + 123, date.mdy(10,15,1910) + 234, 'days') =>
7123 datediff(date.mdy(10,10,1910) + 234, date.mdy(10,15,1910) + 123, 'days') =>
7126 datediff(date.mdy(10,10,1910) + 123, date.mdy(10,24,1910) + 234, 'weeks') =>
7129 datediff(date.mdy(10,10,1910) + 234, date.mdy(10,24,1910) + 123, 'weeks') =>
7132 datediff(date.mdy(5,10,1910) + 123, date.mdy(10,10,1910) + 234, 'months') =>
7135 datediff(date.mdy(5,10,1910) + 234, date.mdy(10,10,1910) + 123, 'months') =>
7138 datediff(date.mdy(5,10,1910) + 123, date.mdy(5,10,1919) + 234, 'years') =>
7141 datediff(date.mdy(5,10,1910) + 234, date.mdy(5,10,1919) + 123, 'years') =>
7147 AT_SETUP([expressions - DATESUM with non-leap year])
7148 AT_KEYWORDS([expression expressions evaluate])
7149 AT_DATA([evaluate-base.sps], [dnl
7151 DEBUG EVALUATE SET opt.
7152 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 1, 'months') - date.mdy(1,1,1900)).
7153 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 2, 'months') - date.mdy(1,1,1900)).
7154 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 3, 'months') - date.mdy(1,1,1900)).
7155 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 4, 'months') - date.mdy(1,1,1900)).
7156 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 5.4, 'months') - date.mdy(1,1,1900)).
7157 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 6, 'months') - date.mdy(1,1,1900)).
7158 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 7, 'months') - date.mdy(1,1,1900)).
7159 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 8, 'months') - date.mdy(1,1,1900)).
7160 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 9, 'months') - date.mdy(1,1,1900)).
7161 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 10, 'months') - date.mdy(1,1,1900)).
7162 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 11, 'months') - date.mdy(1,1,1900)).
7163 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 12, 'months') - date.mdy(1,1,1900)).
7164 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 13.9, 'months') - date.mdy(1,1,1900)).
7165 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 1, 'months', 'rollover') - date.mdy(1,1,1900)).
7166 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 2, 'months', 'rollover') - date.mdy(1,1,1900)).
7167 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 3.2, 'months', 'rollover') - date.mdy(1,1,1900)).
7168 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 4, 'months', 'rollover') - date.mdy(1,1,1900)).
7169 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 5, 'months', 'rollover') - date.mdy(1,1,1900)).
7170 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 6, 'months', 'rollover') - date.mdy(1,1,1900)).
7171 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 7, 'months', 'rollover') - date.mdy(1,1,1900)).
7172 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 8, 'months', 'rollover') - date.mdy(1,1,1900)).
7173 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 9, 'months', 'rollover') - date.mdy(1,1,1900)).
7174 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 10, 'months', 'rollover') - date.mdy(1,1,1900)).
7175 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 11, 'months', 'rollover') - date.mdy(1,1,1900)).
7176 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 12, 'months', 'rollover') - date.mdy(1,1,1900)).
7177 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 13, 'months', 'rollover') - date.mdy(1,1,1900)).
7180 for opt in OPT NOOPT; do
7182 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
7183 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
7184 ctime.days(datesum(date.mdy(1,31,1900), 1, 'months') - date.mdy(1,1,1900)) =>
7187 ctime.days(datesum(date.mdy(1,31,1900), 2, 'months') - date.mdy(1,1,1900)) =>
7190 ctime.days(datesum(date.mdy(1,31,1900), 3, 'months') - date.mdy(1,1,1900)) =>
7193 ctime.days(datesum(date.mdy(1,31,1900), 4, 'months') - date.mdy(1,1,1900)) =>
7196 ctime.days(datesum(date.mdy(1,31,1900), 5.4, 'months') - date.mdy(1,1,1900)) =>
7199 ctime.days(datesum(date.mdy(1,31,1900), 6, 'months') - date.mdy(1,1,1900)) =>
7202 ctime.days(datesum(date.mdy(1,31,1900), 7, 'months') - date.mdy(1,1,1900)) =>
7205 ctime.days(datesum(date.mdy(1,31,1900), 8, 'months') - date.mdy(1,1,1900)) =>
7208 ctime.days(datesum(date.mdy(1,31,1900), 9, 'months') - date.mdy(1,1,1900)) =>
7211 ctime.days(datesum(date.mdy(1,31,1900), 10, 'months') - date.mdy(1,1,1900)) =>
7214 ctime.days(datesum(date.mdy(1,31,1900), 11, 'months') - date.mdy(1,1,1900)) =>
7217 ctime.days(datesum(date.mdy(1,31,1900), 12, 'months') - date.mdy(1,1,1900)) =>
7220 ctime.days(datesum(date.mdy(1,31,1900), 13.9, 'months') - date.mdy(1,1,1900))
7223 ctime.days(datesum(date.mdy(1,31,1900), 1, 'months', 'rollover') - date.
7224 mdy(1,1,1900)) => 61.00
7226 ctime.days(datesum(date.mdy(1,31,1900), 2, 'months', 'rollover') - date.
7227 mdy(1,1,1900)) => 89.00
7229 ctime.days(datesum(date.mdy(1,31,1900), 3.2, 'months', 'rollover') - date.
7230 mdy(1,1,1900)) => 120.00
7232 ctime.days(datesum(date.mdy(1,31,1900), 4, 'months', 'rollover') - date.
7233 mdy(1,1,1900)) => 150.00
7235 ctime.days(datesum(date.mdy(1,31,1900), 5, 'months', 'rollover') - date.
7236 mdy(1,1,1900)) => 181.00
7238 ctime.days(datesum(date.mdy(1,31,1900), 6, 'months', 'rollover') - date.
7239 mdy(1,1,1900)) => 211.00
7241 ctime.days(datesum(date.mdy(1,31,1900), 7, 'months', 'rollover') - date.
7242 mdy(1,1,1900)) => 242.00
7244 ctime.days(datesum(date.mdy(1,31,1900), 8, 'months', 'rollover') - date.
7245 mdy(1,1,1900)) => 273.00
7247 ctime.days(datesum(date.mdy(1,31,1900), 9, 'months', 'rollover') - date.
7248 mdy(1,1,1900)) => 303.00
7250 ctime.days(datesum(date.mdy(1,31,1900), 10, 'months', 'rollover') - date.
7251 mdy(1,1,1900)) => 334.00
7253 ctime.days(datesum(date.mdy(1,31,1900), 11, 'months', 'rollover') - date.
7254 mdy(1,1,1900)) => 364.00
7256 ctime.days(datesum(date.mdy(1,31,1900), 12, 'months', 'rollover') - date.
7257 mdy(1,1,1900)) => 395.00
7259 ctime.days(datesum(date.mdy(1,31,1900), 13, 'months', 'rollover') - date.
7260 mdy(1,1,1900)) => 426.00
7265 AT_SETUP([expressions - DATESUM with leap year])
7266 AT_KEYWORDS([expression expressions evaluate])
7267 AT_DATA([evaluate-base.sps], [dnl
7269 DEBUG EVALUATE SET opt.
7270 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 1, 'months') - date.mdy(1,1,1904)).
7271 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 2.5, 'months') - date.mdy(1,1,1904)).
7272 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 3, 'months') - date.mdy(1,1,1904)).
7273 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 4.9, 'months') - date.mdy(1,1,1904)).
7274 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 5.1, 'months') - date.mdy(1,1,1904)).
7275 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 6, 'months') - date.mdy(1,1,1904)).
7276 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 7, 'months') - date.mdy(1,1,1904)).
7277 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 8, 'months') - date.mdy(1,1,1904)).
7278 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 9, 'months') - date.mdy(1,1,1904)).
7279 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 10, 'months') - date.mdy(1,1,1904)).
7280 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 11, 'months') - date.mdy(1,1,1904)).
7281 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 12, 'months') - date.mdy(1,1,1904)).
7282 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 13, 'months') - date.mdy(1,1,1904)).
7283 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 1, 'months', 'rollover') - date.mdy(1,1,1904)).
7284 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 2, 'months', 'rollover') - date.mdy(1,1,1904)).
7285 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 3, 'months', 'rollover') - date.mdy(1,1,1904)).
7286 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 4, 'months', 'rollover') - date.mdy(1,1,1904)).
7287 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 5, 'months', 'rollover') - date.mdy(1,1,1904)).
7288 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 6, 'months', 'rollover') - date.mdy(1,1,1904)).
7289 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 7, 'months', 'rollover') - date.mdy(1,1,1904)).
7290 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 8, 'months', 'rollover') - date.mdy(1,1,1904)).
7291 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 9, 'months', 'rollover') - date.mdy(1,1,1904)).
7292 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 10, 'months', 'rollover') - date.mdy(1,1,1904)).
7293 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 11, 'months', 'rollover') - date.mdy(1,1,1904)).
7294 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 12, 'months', 'rollover') - date.mdy(1,1,1904)).
7295 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 13, 'months', 'rollover') - date.mdy(1,1,1904)).
7298 for opt in OPT NOOPT; do
7300 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
7301 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
7302 ctime.days(datesum(date.mdy(1,31,1904), 1, 'months') - date.mdy(1,1,1904)) =>
7305 ctime.days(datesum(date.mdy(1,31,1904), 2.5, 'months') - date.mdy(1,1,1904)) =>
7308 ctime.days(datesum(date.mdy(1,31,1904), 3, 'months') - date.mdy(1,1,1904)) =>
7311 ctime.days(datesum(date.mdy(1,31,1904), 4.9, 'months') - date.mdy(1,1,1904)) =>
7314 ctime.days(datesum(date.mdy(1,31,1904), 5.1, 'months') - date.mdy(1,1,1904)) =>
7317 ctime.days(datesum(date.mdy(1,31,1904), 6, 'months') - date.mdy(1,1,1904)) =>
7320 ctime.days(datesum(date.mdy(1,31,1904), 7, 'months') - date.mdy(1,1,1904)) =>
7323 ctime.days(datesum(date.mdy(1,31,1904), 8, 'months') - date.mdy(1,1,1904)) =>
7326 ctime.days(datesum(date.mdy(1,31,1904), 9, 'months') - date.mdy(1,1,1904)) =>
7329 ctime.days(datesum(date.mdy(1,31,1904), 10, 'months') - date.mdy(1,1,1904)) =>
7332 ctime.days(datesum(date.mdy(1,31,1904), 11, 'months') - date.mdy(1,1,1904)) =>
7335 ctime.days(datesum(date.mdy(1,31,1904), 12, 'months') - date.mdy(1,1,1904)) =>
7338 ctime.days(datesum(date.mdy(1,31,1904), 13, 'months') - date.mdy(1,1,1904)) =>
7341 ctime.days(datesum(date.mdy(1,31,1904), 1, 'months', 'rollover') - date.
7342 mdy(1,1,1904)) => 61.00
7344 ctime.days(datesum(date.mdy(1,31,1904), 2, 'months', 'rollover') - date.
7345 mdy(1,1,1904)) => 90.00
7347 ctime.days(datesum(date.mdy(1,31,1904), 3, 'months', 'rollover') - date.
7348 mdy(1,1,1904)) => 121.00
7350 ctime.days(datesum(date.mdy(1,31,1904), 4, 'months', 'rollover') - date.
7351 mdy(1,1,1904)) => 151.00
7353 ctime.days(datesum(date.mdy(1,31,1904), 5, 'months', 'rollover') - date.
7354 mdy(1,1,1904)) => 182.00
7356 ctime.days(datesum(date.mdy(1,31,1904), 6, 'months', 'rollover') - date.
7357 mdy(1,1,1904)) => 212.00
7359 ctime.days(datesum(date.mdy(1,31,1904), 7, 'months', 'rollover') - date.
7360 mdy(1,1,1904)) => 243.00
7362 ctime.days(datesum(date.mdy(1,31,1904), 8, 'months', 'rollover') - date.
7363 mdy(1,1,1904)) => 274.00
7365 ctime.days(datesum(date.mdy(1,31,1904), 9, 'months', 'rollover') - date.
7366 mdy(1,1,1904)) => 304.00
7368 ctime.days(datesum(date.mdy(1,31,1904), 10, 'months', 'rollover') - date.
7369 mdy(1,1,1904)) => 335.00
7371 ctime.days(datesum(date.mdy(1,31,1904), 11, 'months', 'rollover') - date.
7372 mdy(1,1,1904)) => 365.00
7374 ctime.days(datesum(date.mdy(1,31,1904), 12, 'months', 'rollover') - date.
7375 mdy(1,1,1904)) => 396.00
7377 ctime.days(datesum(date.mdy(1,31,1904), 13, 'months', 'rollover') - date.
7378 mdy(1,1,1904)) => 427.00
7383 AT_SETUP([expressions - DATESUM])
7384 AT_KEYWORDS([expression expressions evaluate])
7385 AT_DATA([evaluate-base.sps], [dnl
7387 DEBUG EVALUATE SET opt.
7388 DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,10,1648), 1, 'weeks') - date.mdy(6,10,1648)).
7389 DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'weeks') - date.mdy(6,30,1680)).
7390 DEBUG EVALUATE /ctime.days(datesum(date.mdy(7,24,1716), -3, 'weeks') - date.mdy(7,24,1716)).
7391 DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,19,1768), 4, 'weeks') - date.mdy(6,19,1768)).
7392 DEBUG EVALUATE /ctime.days(datesum(date.mdy(8,2,1819), 5, 'weeks') - date.mdy(8,2,1819)).
7394 DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,10,1648), 1, 'days') - date.mdy(6,10,1648)).
7395 DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'days') - date.mdy(6,30,1680)).
7396 DEBUG EVALUATE /ctime.days(datesum(date.mdy(7,24,1716), -3, 'days') - date.mdy(7,24,1716)).
7397 DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,19,1768), 4, 'days') - date.mdy(6,19,1768)).
7398 DEBUG EVALUATE /ctime.days(datesum(date.mdy(8,2,1819), 5, 'days') - date.mdy(8,2,1819)).
7399 DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,10,1648), 1, 'hours') - date.mdy(6,10,1648)).
7400 DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'hours') - date.mdy(6,30,1680)).
7401 DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,19,1768), -4, 'hours') - date.mdy(6,19,1768)).
7402 DEBUG EVALUATE /ctime.days(datesum(date.mdy(8,2,1819), 5, 'hours') - date.mdy(8,2,1819)).
7405 for opt in OPT NOOPT; do
7407 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
7408 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
7409 ctime.days(datesum(date.mdy(6,10,1648), 1, 'weeks') - date.mdy(6,10,1648)) =>
7412 ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'weeks') - date.mdy(6,30,1680)) =>
7415 ctime.days(datesum(date.mdy(7,24,1716), -3, 'weeks') - date.mdy(7,24,1716)) =>
7418 ctime.days(datesum(date.mdy(6,19,1768), 4, 'weeks') - date.mdy(6,19,1768)) =>
7421 ctime.days(datesum(date.mdy(8,2,1819), 5, 'weeks') - date.mdy(8,2,1819)) =>
7424 ctime.days(datesum(date.mdy(6,10,1648), 1, 'days') - date.mdy(6,10,1648)) =>
7427 ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'days') - date.mdy(6,30,1680)) =>
7430 ctime.days(datesum(date.mdy(7,24,1716), -3, 'days') - date.mdy(7,24,1716)) =>
7433 ctime.days(datesum(date.mdy(6,19,1768), 4, 'days') - date.mdy(6,19,1768)) =>
7436 ctime.days(datesum(date.mdy(8,2,1819), 5, 'days') - date.mdy(8,2,1819)) => 5.00
7438 ctime.days(datesum(date.mdy(6,10,1648), 1, 'hours') - date.mdy(6,10,1648)) =>
7441 ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'hours') - date.mdy(6,30,1680)) =>
7444 ctime.days(datesum(date.mdy(6,19,1768), -4, 'hours') - date.mdy(6,19,1768)) =>
7447 ctime.days(datesum(date.mdy(8,2,1819), 5, 'hours') - date.mdy(8,2,1819)) =>
7453 AT_SETUP([expressions - DATESUM preserves time of day for units of days and longer])
7454 AT_KEYWORDS([expression expressions evaluate])
7455 AT_DATA([evaluate-base.sps], [dnl
7457 DEBUG EVALUATE SET opt.
7458 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))).
7459 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))).
7460 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))).
7461 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))).
7464 for opt in OPT NOOPT; do
7466 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
7467 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
7468 ctime.days(datesum(date.mdy(8,2,1819) + time.hms(1,2,3), 5, 'days') - (date.
7469 mdy(8,2,1819) + time.hms(1,2,3))) => 5.00
7471 ctime.days(datesum(date.mdy(8,2,1819) + time.hms(1,2,3), 5, 'weeks') - (date.
7472 mdy(8,2,1819) + time.hms(1,2,3))) => 35.00
7474 ctime.days(datesum(date.mdy(8,2,1819) + time.hms(1,2,3), 5, 'months') - (date.
7475 mdy(8,2,1819) + time.hms(1,2,3))) => 153.00
7477 ctime.days(datesum(date.mdy(8,2,1819) + time.hms(1,2,3), 5, 'years') - (date.
7478 mdy(8,2,1819) + time.hms(1,2,3))) => 1827.00
7483 dnl These test values are from Applied Statistics, Algorithm AS 310.
7484 AT_SETUP([expressions - NCDF.BETA])
7485 AT_KEYWORDS([expression expressions evaluate])
7486 AT_DATA([evaluate-base.sps], [dnl
7488 DEBUG EVALUATE SET opt.
7489 DEBUG EVALUATE /1000 * ncdf.beta(.868,10,20,150).
7490 DEBUG EVALUATE /1000 * ncdf.beta(.9,10,10,120).
7491 DEBUG EVALUATE /1000 * ncdf.beta(.88,15,5,80).
7492 DEBUG EVALUATE /1000 * ncdf.beta(.85,20,10,110).
7493 DEBUG EVALUATE /1000 * ncdf.beta(.66,20,30,65).
7494 DEBUG EVALUATE /1000 * ncdf.beta(.72,20,50,130).
7495 DEBUG EVALUATE /1000 * ncdf.beta(.72,30,20,80).
7496 DEBUG EVALUATE /1000 * ncdf.beta(.8,30,40,130).
7499 for opt in OPT NOOPT; do
7501 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
7502 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
7503 1000 * ncdf.beta(.868,10,20,150) => 937.66
7505 1000 * ncdf.beta(.9,10,10,120) => 730.68
7507 1000 * ncdf.beta(.88,15,5,80) => 160.43
7509 1000 * ncdf.beta(.85,20,10,110) => 186.75
7511 1000 * ncdf.beta(.66,20,30,65) => 655.94
7513 1000 * ncdf.beta(.72,20,50,130) => 979.69
7515 1000 * ncdf.beta(.72,30,20,80) => 116.24
7517 1000 * ncdf.beta(.8,30,40,130) => 993.04
7524 [[X], [1.00], [], [(X = 1.00)]],
7526 dnl FIXME: out-of-range and nearly out-of-range values on dates
7528 dnl Tests correctness of generic optimizations in optimize_tree().
7529 AT_SETUP([expressions - generic tree optimizations])
7530 AT_KEYWORDS([expression expressions evaluate])
7531 AT_DATA([evaluate-base.sps], [dnl
7533 DEBUG EVALUATE SET opt.
7534 DEBUG EVALUATE (x=10) /x + 0.
7535 DEBUG EVALUATE (x=-3) /x - 0.
7536 DEBUG EVALUATE (x=5) /0 + x.
7537 DEBUG EVALUATE (x=10) /x * 1.
7538 DEBUG EVALUATE (x=-3) /1 * x.
7539 DEBUG EVALUATE (x=5) /x / 1.
7540 DEBUG EVALUATE (x=10) /0 * x.
7541 DEBUG EVALUATE (x=-3) /x * 0.
7542 DEBUG EVALUATE (x=5) /0 / x.
7543 DEBUG EVALUATE (x=5) /mod(0, x).
7544 DEBUG EVALUATE (x=5) /x ** 1.
7545 DEBUG EVALUATE (x=5) /x ** 2.
7548 for opt in OPT NOOPT; do
7550 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
7551 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
7579 AT_SETUP([expressions - LAG])
7580 AT_DATA([lag.sps], [dnl
7595 AT_CHECK([pspp -o pspp.csv lag.sps])
7596 AT_CHECK([cat pspp.csv], [0], [dnl
7597 Table: Reading 1 record from INLINE.
7598 Variable,Record,Columns,Format
7611 AT_SETUP([expression - LAG crash])
7612 AT_DATA([lag.sps], [dnl
7619 DO IF (x <> LAG(x) ).
7625 AT_CHECK([pspp -o pspp.csv lag.sps])
7626 AT_CHECK([cat pspp.csv], [0], [dnl
7627 Table: Reading free-form data from INLINE.
7635 dnl Tests for a bug which caused UNIFORM(x) to always return zero.
7636 AT_SETUP([expressions - UNIFORM])
7637 AT_DATA([uniform.sps], [dnl
7640 + loop #i = 1 to 20.
7641 + do repeat response=R1.
7642 + compute response = uniform(10).
7651 AT_CHECK([pspp -o pspp.csv uniform.sps])
7652 AT_CHECK([cat pspp.csv], [0], [dnl
7678 AT_SETUP([expressions - VALUELABEL])
7679 AT_DATA([valuelabel.sps], [dnl
7680 DATA LIST notable /n 1 s 2(a).
7681 VALUE LABELS /n 0 'Very dissatisfied'
7683 1.5 'Slightly Peeved'
7687 VALUE LABELS /s 'a' 'Wouldn''t buy again'
7692 STRING nlabel slabel(a10).
7693 COMPUTE nlabel = VALUELABEL(n).
7694 COMPUTE slabel = VALUELABEL(s).
7707 AT_CHECK([pspp -o pspp.csv valuelabel.sps])
7708 AT_CHECK([cat pspp.csv], [0], [dnl
7712 0,a,Very dissa,Wouldn't b
7713 1,b,Dissatisfi,Unhappy
7715 3,d,Satisfied,Satiated
7716 4,e,Very satis,Elated
7722 AT_SETUP([expressions - variables])
7723 AT_DATA([variables.sps], [dnl
7724 DATA LIST NOTABLE/N1 TO N5 1-5.
7725 MISSING VALUES N1 TO N5 (3 THRU 5, 1).
7737 COMPUTE MC=NMISS(N1 TO N5).
7738 COMPUTE VC=NVALID(N1 TO N5).
7740 COMPUTE S1=SYSMIS(N1).
7741 COMPUTE S2=SYSMIS(N2).
7742 COMPUTE S3=SYSMIS(N3).
7743 COMPUTE S4=SYSMIS(N4).
7744 COMPUTE S5=SYSMIS(N5).
7746 COMPUTE M1=MISSING(N1).
7747 COMPUTE M2=MISSING(N2).
7748 COMPUTE M3=MISSING(N3).
7749 COMPUTE M4=MISSING(N4).
7750 COMPUTE M5=MISSING(N5).
7752 COMPUTE V1=VALUE(N1).
7753 COMPUTE V2=VALUE(N2).
7754 COMPUTE V3=VALUE(N3).
7755 COMPUTE V4=VALUE(N4).
7756 COMPUTE V5=VALUE(N5).
7762 AT_CHECK([pspp -o pspp.csv variables.sps])
7763 AT_CHECK([cat pspp.csv], [0], [dnl
7765 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
7766 1,2,3,4,5,.,2,.,.,.,4,1,0,0,0,0,0,1,0,1,1,1,1,2,3,4,5
7767 6,7,8,9,.,6,7,8,9,.,1,4,0,0,0,0,1,0,0,0,0,1,6,7,8,9,.
7771 AT_SETUP([expressions - vectors])
7772 AT_DATA([vectors.sps], [dnl
7773 DATA LIST NOTABLE /N1 TO N5 1-5.
7774 MISSING VALUES N1 TO N5 (3 THRU 5, 1).
7783 COMPUTE X(I)=N(I) + 1.
7790 AT_CHECK([pspp -o pspp.csv vectors.sps])
7791 AT_CHECK([cat pspp.csv], [0], [dnl
7793 N1,N2,N3,N4,N5,X1,X2,X3,X4,X5,I
7794 1,2,3,4,5,.,3,.,.,.,5
7795 6,7,8,9,.,7,8,9,10,.,5