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 for opt in OPT NOOPT; do
121 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
122 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
125 $sysmis + 1 => sysmis
127 7676 + $sysmis => sysmis
129 1 +3 - 2 +4 - 5 => 1.00
137 evaluate.sps:11.18-11.27: error: DEBUG EVALUATE: Both operands of + must be
139 11 | DEBUG EVALUATE /('foo') + 5.
142 evaluate.sps:11.18-11.22: note: DEBUG EVALUATE: This operand has type 'string'.
143 11 | DEBUG EVALUATE /('foo') + 5.
146 evaluate.sps:11.27: note: DEBUG EVALUATE: This operand has type 'number'.
147 11 | DEBUG EVALUATE /('foo') + 5.
152 evaluate.sps:12.18-12.32: error: DEBUG EVALUATE: Both operands of + must be
154 12 | DEBUG EVALUATE /('foo') + ('bar'). /* Concatenation requires CONCAT.
157 evaluate.sps:12.18-12.22: note: DEBUG EVALUATE: This operand has type 'string'.
158 12 | DEBUG EVALUATE /('foo') + ('bar'). /* Concatenation requires CONCAT.
161 evaluate.sps:12.28-12.32: note: DEBUG EVALUATE: This operand has type 'string'.
162 12 | DEBUG EVALUATE /('foo') + ('bar'). /* Concatenation requires CONCAT.
165 ('foo') + ('bar') => error
167 'foo' + 'bar' => "foobar"
169 evaluate.sps:15.17-15.31: error: DEBUG EVALUATE: Both operands of - must be
171 15 | DEBUG EVALUATE /'string' - 1e10.
174 evaluate.sps:15.17-15.24: note: DEBUG EVALUATE: This operand has type 'string'.
175 15 | DEBUG EVALUATE /'string' - 1e10.
178 evaluate.sps:15.26-15.31: note: DEBUG EVALUATE: This operand has type 'number'.
179 15 | DEBUG EVALUATE /'string' - 1e10.
182 'string' - 1e10 => error
184 evaluate.sps:16.17-16.24: error: DEBUG EVALUATE: Both operands of - must be
186 16 | DEBUG EVALUATE /9.5 - ''.
189 evaluate.sps:16.17-16.19: note: DEBUG EVALUATE: This operand has type 'number'.
190 16 | DEBUG EVALUATE /9.5 - ''.
193 evaluate.sps:16.23-16.24: note: DEBUG EVALUATE: This operand has type 'string'.
194 16 | DEBUG EVALUATE /9.5 - ''.
199 evaluate.sps:18.17-18.24: error: DEBUG EVALUATE: Both operands of + must be
201 18 | DEBUG EVALUATE /F2.0 + 3.
204 evaluate.sps:18.17-18.20: note: DEBUG EVALUATE: This operand has type 'format'.
205 18 | DEBUG EVALUATE /F2.0 + 3.
208 evaluate.sps:18.24: note: DEBUG EVALUATE: This operand has type 'number'.
209 18 | DEBUG EVALUATE /F2.0 + 3.
217 AT_SETUP([expressions - multiplication and division])
218 AT_KEYWORDS([expression expressions evaluate])
219 AT_DATA([evaluate-base.sps], [dnl
221 DEBUG EVALUATE SET opt.
222 DEBUG EVALUATE /5 * 10.
223 DEBUG EVALUATE /10 * $true.
224 DEBUG EVALUATE /$true * 5.
225 DEBUG EVALUATE /1.5 * $true.
226 DEBUG EVALUATE /$sysmis * 15.
227 DEBUG EVALUATE /8.5 / $sysmis.
228 DEBUG EVALUATE /2 * 5 / 10.
229 DEBUG EVALUATE /1 / 2.
230 DEBUG EVALUATE /2 / 5.
231 DEBUG EVALUATE /12 / 3 / 2.
233 DEBUG EVALUATE /'x' * 1.
234 DEBUG EVALUATE /2 / 'x'.
237 for opt in OPT NOOPT; do
239 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
240 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
249 $sysmis * 15 => sysmis
251 8.5 / $sysmis => sysmis
261 evaluate.sps:14.17-14.23: error: DEBUG EVALUATE: Both operands of * must be
263 14 | DEBUG EVALUATE /'x' * 1.
266 evaluate.sps:14.17-14.19: note: DEBUG EVALUATE: This operand has type 'string'.
267 14 | DEBUG EVALUATE /'x' * 1.
270 evaluate.sps:14.23: note: DEBUG EVALUATE: This operand has type 'number'.
271 14 | DEBUG EVALUATE /'x' * 1.
276 evaluate.sps:15.17-15.23: error: DEBUG EVALUATE: Both operands of / must be
278 15 | DEBUG EVALUATE /2 / 'x'.
281 evaluate.sps:15.17: note: DEBUG EVALUATE: This operand has type 'number'.
282 15 | DEBUG EVALUATE /2 / 'x'.
285 evaluate.sps:15.21-15.23: note: DEBUG EVALUATE: This operand has type 'string'.
286 15 | DEBUG EVALUATE /2 / 'x'.
294 AT_SETUP([expressions - exponentiation])
295 AT_KEYWORDS([expression expressions evaluate])
296 AT_DATA([evaluate-base.sps], [dnl
298 DEBUG EVALUATE SET opt.
299 DEBUG EVALUATE /2**8.
300 DEBUG EVALUATE /(2**3)**4.
301 DEBUG EVALUATE /2**3**4.
302 DEBUG EVALUATE /-2**2.
303 DEBUG EVALUATE /-2**-3**-4.
304 DEBUG EVALUATE /-((2**-3)**-4).
307 for opt in OPT NOOPT; do
309 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
310 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
315 evaluate.sps:5.17-5.23: warning: DEBUG EVALUATE: The exponentiation operator
316 (`**') is left-associative: `a**b**c' equals `(a**b)**c', not `a**(b**c)'. To
317 disable this warning, insert parentheses.
318 5 | DEBUG EVALUATE /2**3**4.
325 evaluate.sps:7.17-7.26: warning: DEBUG EVALUATE: The exponentiation operator
326 (`**') is left-associative: `a**b**c' equals `(a**b)**c', not `a**(b**c)'. To
327 disable this warning, insert parentheses.
328 7 | DEBUG EVALUATE /-2**-3**-4.
331 -2**-3**-4 => -4096.00
333 -((2**-3)**-4) => -4096.00
338 AT_SETUP([expressions - unary minus])
339 AT_KEYWORDS([expression expressions evaluate])
340 AT_DATA([evaluate-base.sps], [dnl
342 DEBUG EVALUATE SET opt.
343 DEBUG EVALUATE /2+-3.
344 DEBUG EVALUATE /2*-3.
345 DEBUG EVALUATE /-3**2.
346 DEBUG EVALUATE /(-3)**2.
347 DEBUG EVALUATE /-(3**2).
348 DEBUG EVALUATE /2**-1.
349 DEBUG EVALUATE /0**0.
350 DEBUG EVALUATE /0**-1.
351 DEBUG EVALUATE /(-3)**1.5.
354 for opt in OPT NOOPT; do
355 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
356 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
378 AT_SETUP([expressions - AND truth table])
379 AT_KEYWORDS([expression expressions evaluate])
380 AT_DATA([evaluate-base.sps], [dnl
382 DEBUG EVALUATE SET opt.
383 DEBUG EVALUATE /$false AND $false.
384 DEBUG EVALUATE /$false AND $true.
385 DEBUG EVALUATE /$false AND $sysmis.
386 DEBUG EVALUATE /$true AND $false.
387 DEBUG EVALUATE /$true AND $true.
388 DEBUG EVALUATE /$true AND $sysmis.
389 DEBUG EVALUATE /$sysmis AND $false.
390 DEBUG EVALUATE /$sysmis AND $true.
391 DEBUG EVALUATE /$sysmis AND $sysmis.
392 DEBUG EVALUATE /$false & $false.
393 DEBUG EVALUATE /$false & $true.
394 DEBUG EVALUATE /$false & $sysmis.
395 DEBUG EVALUATE /$true & $false.
396 DEBUG EVALUATE /$true & $true.
397 DEBUG EVALUATE /$true & $sysmis.
398 DEBUG EVALUATE /$sysmis & $false.
399 DEBUG EVALUATE /$sysmis & $true.
400 DEBUG EVALUATE /$sysmis & $sysmis.
403 for opt in OPT NOOPT; do
405 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
406 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
407 $false AND $false => false
409 $false AND $true => false
411 $false AND $sysmis => false
413 $true AND $false => false
415 $true AND $true => true
417 $true AND $sysmis => sysmis
419 $sysmis AND $false => false
421 $sysmis AND $true => sysmis
423 $sysmis AND $sysmis => sysmis
425 $false & $false => false
427 $false & $true => false
429 $false & $sysmis => false
431 $true & $false => false
433 $true & $true => true
435 $true & $sysmis => sysmis
437 $sysmis & $false => false
439 $sysmis & $true => sysmis
441 $sysmis & $sysmis => sysmis
446 AT_SETUP([expressions - OR truth table])
447 AT_KEYWORDS([expression expressions evaluate])
448 AT_DATA([evaluate-base.sps], [dnl
450 DEBUG EVALUATE SET opt.
451 DEBUG EVALUATE /$false OR $false.
452 DEBUG EVALUATE /$false OR $true.
453 DEBUG EVALUATE /$false OR $sysmis.
454 DEBUG EVALUATE /$true OR $false.
455 DEBUG EVALUATE /$true OR $true.
456 DEBUG EVALUATE /$true OR $sysmis.
457 DEBUG EVALUATE /$sysmis OR $false.
458 DEBUG EVALUATE /$sysmis OR $true.
459 DEBUG EVALUATE /$sysmis OR $sysmis.
460 DEBUG EVALUATE /$false | $false.
461 DEBUG EVALUATE /$false | $true.
462 DEBUG EVALUATE /$false | $sysmis.
463 DEBUG EVALUATE /$true | $false.
464 DEBUG EVALUATE /$true | $true.
465 DEBUG EVALUATE /$true | $sysmis.
466 DEBUG EVALUATE /$sysmis | $false.
467 DEBUG EVALUATE /$sysmis | $true.
468 DEBUG EVALUATE /$sysmis | $sysmis.
471 for opt in OPT NOOPT; do
473 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
474 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
475 $false OR $false => false
477 $false OR $true => true
479 $false OR $sysmis => sysmis
481 $true OR $false => true
483 $true OR $true => true
485 $true OR $sysmis => true
487 $sysmis OR $false => sysmis
489 $sysmis OR $true => true
491 $sysmis OR $sysmis => sysmis
493 $false | $false => false
495 $false | $true => true
497 $false | $sysmis => sysmis
499 $true | $false => true
501 $true | $true => true
503 $true | $sysmis => true
505 $sysmis | $false => sysmis
507 $sysmis | $true => true
509 $sysmis | $sysmis => sysmis
514 AT_SETUP([expressions - NOT truth table])
515 AT_KEYWORDS([expression expressions evaluate])
516 AT_DATA([evaluate-base.sps], [dnl
518 DEBUG EVALUATE SET opt.
519 DEBUG EVALUATE /not $false.
520 DEBUG EVALUATE /not 0.
521 DEBUG EVALUATE /not 2.5.
522 DEBUG EVALUATE /not $true.
523 DEBUG EVALUATE /not 1.
524 DEBUG EVALUATE /not $sysmis.
525 DEBUG EVALUATE /~ $false.
527 DEBUG EVALUATE /~ 2.5.
528 DEBUG EVALUATE /~ $true.
530 DEBUG EVALUATE /~ $sysmis.
533 for opt in OPT NOOPT; do
535 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
536 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
541 evaluate.sps:5.17-5.23: error: DEBUG EVALUATE: The operand of NOT must have
543 5 | DEBUG EVALUATE /not 2.5.
546 evaluate.sps:5.21-5.23: note: DEBUG EVALUATE: This operand with unexpected
547 value 2.5 will be treated as 0.
548 5 | DEBUG EVALUATE /not 2.5.
557 not $sysmis => sysmis
563 evaluate.sps:11.17-11.21: error: DEBUG EVALUATE: The operand of NOT must have
565 11 | DEBUG EVALUATE /~ 2.5.
568 evaluate.sps:11.19-11.21: note: DEBUG EVALUATE: This operand with unexpected
569 value 2.5 will be treated as 0.
570 11 | DEBUG EVALUATE /~ 2.5.
584 AT_SETUP([expressions - = <= <])
585 AT_KEYWORDS([expression expressions evaluate eq le lt])
586 AT_DATA([evaluate-base.sps], [dnl
588 DEBUG EVALUATE SET opt.
589 DEBUG EVALUATE /1 eq 1.
590 DEBUG EVALUATE /1 = 1.
591 DEBUG EVALUATE /1 eq 2.
592 DEBUG EVALUATE /2 = 3.
593 DEBUG EVALUATE /1 eq 'foobar'.
594 DEBUG EVALUATE /'baz' = 10.
595 DEBUG EVALUATE /'baz' = f8.2.
596 DEBUG EVALUATE /'baz' = 'baz'.
597 DEBUG EVALUATE /'quux' = 'bar'.
598 DEBUG EVALUATE /'bar ' = 'bar'.
599 DEBUG EVALUATE /'asdf ' = 'asdf '.
600 DEBUG EVALUATE /'asdfj ' = 'asdf'.
601 DEBUG EVALUATE /1 + 2 = 3.
602 DEBUG EVALUATE /1 >= 2 = 2 ge 3.
603 DEBUG EVALUATE /3 ne 2 != 1.
604 DEBUG EVALUATE /3 > 2 > 1.
606 DEBUG EVALUATE /1 <= 2.
607 DEBUG EVALUATE /2.5 <= 1.5.
608 DEBUG EVALUATE /1 le 2.
609 DEBUG EVALUATE /2 <= 2.
610 DEBUG EVALUATE /2 le 2.
611 DEBUG EVALUATE /2 < = 2.
612 DEBUG EVALUATE /1 <= 'foobar'.
613 DEBUG EVALUATE /'baz' <= 10.
614 DEBUG EVALUATE /'quux' <= 5.55.
615 DEBUG EVALUATE /'0123' <= '0123'.
616 DEBUG EVALUATE /'0123' <= '0124'.
617 DEBUG EVALUATE /'0124' le '0123'.
618 DEBUG EVALUATE /'0123 ' <= '0123'.
619 DEBUG EVALUATE /'0123' le '0123 '.
621 DEBUG EVALUATE /1 < 2.
622 DEBUG EVALUATE /2.5 < 1.5.
623 DEBUG EVALUATE /3.5 lt 4.
624 DEBUG EVALUATE /4 lt 3.5
625 DEBUG EVALUATE /1 lt 'foobar'.
626 DEBUG EVALUATE /5 lt 'foobar'.
627 DEBUG EVALUATE /'baz' < 10.
628 DEBUG EVALUATE /'quux' < 5.55.
629 DEBUG EVALUATE /'0123' lt '0123'.
630 DEBUG EVALUATE /'0123' < '0124'.
631 DEBUG EVALUATE /'0124' lt '0123'.
632 DEBUG EVALUATE /'0123 ' < '0123'.
633 DEBUG EVALUATE /'0123' lt '0123 '.
636 for opt in OPT NOOPT; do
638 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
639 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
648 evaluate.sps:7.17-7.29: error: DEBUG EVALUATE: Both operands of EQ must have
650 7 | DEBUG EVALUATE /1 eq 'foobar'.
653 evaluate.sps:7.17: note: DEBUG EVALUATE: This operand has type 'number'.
654 7 | DEBUG EVALUATE /1 eq 'foobar'.
657 evaluate.sps:7.22-7.29: note: DEBUG EVALUATE: This operand has type 'string'.
658 7 | DEBUG EVALUATE /1 eq 'foobar'.
661 1 eq 'foobar' => error
663 evaluate.sps:8.17-8.26: error: DEBUG EVALUATE: Both operands of = must have the
665 8 | DEBUG EVALUATE /'baz' = 10.
668 evaluate.sps:8.17-8.21: note: DEBUG EVALUATE: This operand has type 'string'.
669 8 | DEBUG EVALUATE /'baz' = 10.
672 evaluate.sps:8.25-8.26: note: DEBUG EVALUATE: This operand has type 'number'.
673 8 | DEBUG EVALUATE /'baz' = 10.
678 evaluate.sps:9.17-9.28: error: DEBUG EVALUATE: Both operands of = must have the
680 9 | DEBUG EVALUATE /'baz' = f8.2.
683 evaluate.sps:9.17-9.21: note: DEBUG EVALUATE: This operand has type 'string'.
684 9 | DEBUG EVALUATE /'baz' = f8.2.
687 evaluate.sps:9.25-9.28: note: DEBUG EVALUATE: This operand has type 'format'.
688 9 | DEBUG EVALUATE /'baz' = f8.2.
691 'baz' = f8.2 => error
693 'baz' = 'baz' => true
695 'quux' = 'bar' => false
697 'bar ' = 'bar' => true
699 'asdf ' = 'asdf ' => true
701 'asdfj ' = 'asdf' => false
705 evaluate.sps:16.17-16.31: warning: DEBUG EVALUATE: Chaining relational
706 operators (e.g. `a < b < c') will not produce the mathematically expected
707 result. Use the AND logical operator to fix the problem (e.g. `a < b AND b <
708 c'). To disable this warning, insert parentheses.
709 16 | DEBUG EVALUATE /1 >= 2 = 2 ge 3.
712 1 >= 2 = 2 ge 3 => false
714 evaluate.sps:17.24: error: DEBUG EVALUATE: Syntax error at `!': expecting end
719 evaluate.sps:18.17-18.25: 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 18 | DEBUG EVALUATE /3 > 2 > 1.
738 evaluate.sps:25.21: error: DEBUG EVALUATE: Syntax error at `='.
742 evaluate.sps:26.17-26.29: error: DEBUG EVALUATE: Both operands of <= must have
744 26 | DEBUG EVALUATE /1 <= 'foobar'.
747 evaluate.sps:26.17: note: DEBUG EVALUATE: This operand has type 'number'.
748 26 | DEBUG EVALUATE /1 <= 'foobar'.
751 evaluate.sps:26.22-26.29: note: DEBUG EVALUATE: This operand has type 'string'.
752 26 | DEBUG EVALUATE /1 <= 'foobar'.
755 1 <= 'foobar' => error
757 evaluate.sps:27.17-27.27: error: DEBUG EVALUATE: Both operands of <= must have
759 27 | DEBUG EVALUATE /'baz' <= 10.
762 evaluate.sps:27.17-27.21: note: DEBUG EVALUATE: This operand has type 'string'.
763 27 | DEBUG EVALUATE /'baz' <= 10.
766 evaluate.sps:27.26-27.27: note: DEBUG EVALUATE: This operand has type 'number'.
767 27 | DEBUG EVALUATE /'baz' <= 10.
772 evaluate.sps:28.17-28.30: error: DEBUG EVALUATE: Both operands of <= must have
774 28 | DEBUG EVALUATE /'quux' <= 5.55.
777 evaluate.sps:28.17-28.22: note: DEBUG EVALUATE: This operand has type 'string'.
778 28 | DEBUG EVALUATE /'quux' <= 5.55.
781 evaluate.sps:28.27-28.30: note: DEBUG EVALUATE: This operand has type 'number'.
782 28 | DEBUG EVALUATE /'quux' <= 5.55.
785 'quux' <= 5.55 => error
787 '0123' <= '0123' => true
789 '0123' <= '0124' => true
791 '0124' le '0123' => false
793 '0123 ' <= '0123' => true
795 '0123' le '0123 ' => true
805 evaluate.sps:39.17-39.29: error: DEBUG EVALUATE: Both operands of < must have
807 39 | DEBUG EVALUATE /1 lt 'foobar'.
810 evaluate.sps:39.17: note: DEBUG EVALUATE: This operand has type 'number'.
811 39 | DEBUG EVALUATE /1 lt 'foobar'.
814 evaluate.sps:39.22-39.29: note: DEBUG EVALUATE: This operand has type 'string'.
815 39 | DEBUG EVALUATE /1 lt 'foobar'.
818 1 lt 'foobar' => error
820 evaluate.sps:40.17-40.29: error: DEBUG EVALUATE: Both operands of < must have
822 40 | DEBUG EVALUATE /5 lt 'foobar'.
825 evaluate.sps:40.17: note: DEBUG EVALUATE: This operand has type 'number'.
826 40 | DEBUG EVALUATE /5 lt 'foobar'.
829 evaluate.sps:40.22-40.29: note: DEBUG EVALUATE: This operand has type 'string'.
830 40 | DEBUG EVALUATE /5 lt 'foobar'.
833 5 lt 'foobar' => error
835 evaluate.sps:41.17-41.26: error: DEBUG EVALUATE: Both operands of < must have
837 41 | DEBUG EVALUATE /'baz' < 10.
840 evaluate.sps:41.17-41.21: note: DEBUG EVALUATE: This operand has type 'string'.
841 41 | DEBUG EVALUATE /'baz' < 10.
844 evaluate.sps:41.25-41.26: note: DEBUG EVALUATE: This operand has type 'number'.
845 41 | DEBUG EVALUATE /'baz' < 10.
850 evaluate.sps:42.17-42.29: error: DEBUG EVALUATE: Both operands of < must have
852 42 | DEBUG EVALUATE /'quux' < 5.55.
855 evaluate.sps:42.17-42.22: note: DEBUG EVALUATE: This operand has type 'string'.
856 42 | DEBUG EVALUATE /'quux' < 5.55.
859 evaluate.sps:42.26-42.29: note: DEBUG EVALUATE: This operand has type 'number'.
860 42 | DEBUG EVALUATE /'quux' < 5.55.
863 'quux' < 5.55 => error
865 '0123' lt '0123' => false
867 '0123' < '0124' => true
869 '0124' lt '0123' => false
871 '0123 ' < '0123' => false
873 '0123' lt '0123 ' => false
878 AT_SETUP([expressions - >= > <>])
879 AT_KEYWORDS([expression expressions evaluate ge gt ne])
880 AT_DATA([evaluate-base.sps], [dnl
882 DEBUG EVALUATE SET opt.
883 DEBUG EVALUATE /1 >= 2.
884 DEBUG EVALUATE /2.5 >= 1.5
885 DEBUG EVALUATE /1 ge 2.
886 DEBUG EVALUATE /2 >= 2.
887 DEBUG EVALUATE /2 ge 2.
888 DEBUG EVALUATE /2 > = 2.
889 DEBUG EVALUATE /1 >= 'foobar'.
890 DEBUG EVALUATE /5 ge 'foobar'.
891 DEBUG EVALUATE /'baz' ge 10.
892 DEBUG EVALUATE /'0123' ge '0123'.
893 DEBUG EVALUATE /'0123' >= '0124'.
894 DEBUG EVALUATE /'0124' >= '0123'.
895 DEBUG EVALUATE /'0123 ' ge '0123'.
896 DEBUG EVALUATE /'0123' >= '0123 '.
898 DEBUG EVALUATE /1 > 2.
899 DEBUG EVALUATE /2.5 > 1.5
900 DEBUG EVALUATE /3.5 gt 4.
901 DEBUG EVALUATE /4 gt 3.5
902 DEBUG EVALUATE /1 gt 'foobar'.
903 DEBUG EVALUATE /'baz' > 10.
904 DEBUG EVALUATE /'0123' > '0123'.
905 DEBUG EVALUATE /'0123' > '0124'.
906 DEBUG EVALUATE /'0124' > '0123'.
907 DEBUG EVALUATE /'0123 ' > '0123'.
908 DEBUG EVALUATE /'0123 ' > '0123 '.
910 DEBUG EVALUATE /1 ne 1.
911 DEBUG EVALUATE /1 ~= 1.
912 DEBUG EVALUATE /1 <> 2.
913 DEBUG EVALUATE /2 ne 3.
914 DEBUG EVALUATE /1 ~= 'foobar'.
915 DEBUG EVALUATE /'baz' ne 10.
916 DEBUG EVALUATE /'quux' ~= 5.55.
917 DEBUG EVALUATE /'foobar' <> 'foobar'.
918 DEBUG EVALUATE /'quux' ne 'bar'.
919 DEBUG EVALUATE /'bar ' <> 'bar'.
920 DEBUG EVALUATE /'asdf ' ~= "asdf ".
921 DEBUG EVALUATE /1 < > 1.
922 DEBUG EVALUATE /1 ~ = 1.
925 for opt in OPT NOOPT; do
927 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
928 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
939 evaluate.sps:8.21: error: DEBUG EVALUATE: Syntax error at `='.
943 evaluate.sps:9.17-9.29: error: DEBUG EVALUATE: Both operands of >= must have
945 9 | DEBUG EVALUATE /1 >= 'foobar'.
948 evaluate.sps:9.17: note: DEBUG EVALUATE: This operand has type 'number'.
949 9 | DEBUG EVALUATE /1 >= 'foobar'.
952 evaluate.sps:9.22-9.29: note: DEBUG EVALUATE: This operand has type 'string'.
953 9 | DEBUG EVALUATE /1 >= 'foobar'.
956 1 >= 'foobar' => error
958 evaluate.sps:10.17-10.29: error: DEBUG EVALUATE: Both operands of >= must have
960 10 | DEBUG EVALUATE /5 ge 'foobar'.
963 evaluate.sps:10.17: note: DEBUG EVALUATE: This operand has type 'number'.
964 10 | DEBUG EVALUATE /5 ge 'foobar'.
967 evaluate.sps:10.22-10.29: note: DEBUG EVALUATE: This operand has type 'string'.
968 10 | DEBUG EVALUATE /5 ge 'foobar'.
971 5 ge 'foobar' => error
973 evaluate.sps:11.17-11.27: error: DEBUG EVALUATE: Both operands of >= must have
975 11 | DEBUG EVALUATE /'baz' ge 10.
978 evaluate.sps:11.17-11.21: note: DEBUG EVALUATE: This operand has type 'string'.
979 11 | DEBUG EVALUATE /'baz' ge 10.
982 evaluate.sps:11.26-11.27: note: DEBUG EVALUATE: This operand has type 'number'.
983 11 | DEBUG EVALUATE /'baz' ge 10.
988 '0123' ge '0123' => true
990 '0123' >= '0124' => false
992 '0124' >= '0123' => true
994 '0123 ' ge '0123' => true
996 '0123' >= '0123 ' => true
1006 evaluate.sps:22.17-22.29: error: DEBUG EVALUATE: Both operands of > must have
1008 22 | DEBUG EVALUATE /1 gt 'foobar'.
1011 evaluate.sps:22.17: note: DEBUG EVALUATE: This operand has type 'number'.
1012 22 | DEBUG EVALUATE /1 gt 'foobar'.
1015 evaluate.sps:22.22-22.29: note: DEBUG EVALUATE: This operand has type 'string'.
1016 22 | DEBUG EVALUATE /1 gt 'foobar'.
1019 1 gt 'foobar' => error
1021 evaluate.sps:23.17-23.26: error: DEBUG EVALUATE: Both operands of > must have
1023 23 | DEBUG EVALUATE /'baz' > 10.
1026 evaluate.sps:23.17-23.21: note: DEBUG EVALUATE: This operand has type 'string'.
1027 23 | DEBUG EVALUATE /'baz' > 10.
1030 evaluate.sps:23.25-23.26: note: DEBUG EVALUATE: This operand has type 'number'.
1031 23 | DEBUG EVALUATE /'baz' > 10.
1036 '0123' > '0123' => false
1038 '0123' > '0124' => false
1040 '0124' > '0123' => true
1042 '0123 ' > '0123' => false
1044 '0123 ' > '0123 ' => false
1054 evaluate.sps:34.17-34.29: error: DEBUG EVALUATE: Both operands of ~= must have
1056 34 | DEBUG EVALUATE /1 ~= 'foobar'.
1059 evaluate.sps:34.17: note: DEBUG EVALUATE: This operand has type 'number'.
1060 34 | DEBUG EVALUATE /1 ~= 'foobar'.
1063 evaluate.sps:34.22-34.29: note: DEBUG EVALUATE: This operand has type 'string'.
1064 34 | DEBUG EVALUATE /1 ~= 'foobar'.
1067 1 ~= 'foobar' => error
1069 evaluate.sps:35.17-35.27: error: DEBUG EVALUATE: Both operands of ~= must have
1071 35 | DEBUG EVALUATE /'baz' ne 10.
1074 evaluate.sps:35.17-35.21: note: DEBUG EVALUATE: This operand has type 'string'.
1075 35 | DEBUG EVALUATE /'baz' ne 10.
1078 evaluate.sps:35.26-35.27: note: DEBUG EVALUATE: This operand has type 'number'.
1079 35 | DEBUG EVALUATE /'baz' ne 10.
1082 'baz' ne 10 => error
1084 evaluate.sps:36.17-36.30: error: DEBUG EVALUATE: Both operands of ~= must have
1086 36 | DEBUG EVALUATE /'quux' ~= 5.55.
1089 evaluate.sps:36.17-36.22: note: DEBUG EVALUATE: This operand has type 'string'.
1090 36 | DEBUG EVALUATE /'quux' ~= 5.55.
1093 evaluate.sps:36.27-36.30: note: DEBUG EVALUATE: This operand has type 'number'.
1094 36 | DEBUG EVALUATE /'quux' ~= 5.55.
1097 'quux' ~= 5.55 => error
1099 'foobar' <> 'foobar' => false
1101 'quux' ne 'bar' => true
1103 'bar ' <> 'bar' => false
1105 'asdf ' ~= "asdf " => false
1107 evaluate.sps:41.21: error: DEBUG EVALUATE: Syntax error at `>'.
1111 evaluate.sps:42.19: error: DEBUG EVALUATE: Syntax error at `~': expecting end
1119 AT_SETUP([expressions - EXP LG10 LN SQRT ABS MOD MOD10 RND TRUNC])
1120 AT_KEYWORDS([expression expressions evaluate])
1121 AT_DATA([evaluate-base.sps], [dnl
1123 DEBUG EVALUATE SET opt.
1124 DEBUG EVALUATE /EXP(10).
1125 DEBUG EVALUATE /EXP('x').
1127 DEBUG EVALUATE /LG10(500).
1128 DEBUG EVALUATE /LG10('x').
1130 DEBUG EVALUATE /SQRT(500).
1131 DEBUG EVALUATE /SQRT(-1).
1133 DEBUG EVALUATE /ABS(-10.5).
1134 DEBUG EVALUATE /ABS(55.79).
1135 DEBUG EVALUATE /ABS(0).
1136 DEBUG EVALUATE /ABS(-0).
1138 DEBUG EVALUATE /MOD(55.5, 2).
1139 DEBUG EVALUATE /MOD(-55.5, 2).
1140 DEBUG EVALUATE /MOD(55.5, -2).
1141 DEBUG EVALUATE /MOD(-55.5, -2).
1142 DEBUG EVALUATE /MOD('a', 2).
1143 DEBUG EVALUATE /MOD(2, 'a').
1144 DEBUG EVALUATE /MOD('a', 'b').
1146 DEBUG EVALUATE /MOD10(55.5).
1147 DEBUG EVALUATE /MOD10(-55.5).
1149 DEBUG EVALUATE /RND(5.4).
1150 DEBUG EVALUATE /RND(5.6).
1151 DEBUG EVALUATE /RND(-5.4).
1152 DEBUG EVALUATE /RND(-5.6).
1153 DEBUG EVALUATE /RND(5.56, .1).
1154 DEBUG EVALUATE /RND(-5.56, .1)
1155 DEBUG EVALUATE /RND(.5).
1156 DEBUG EVALUATE /RND(.5 - 2**-53).
1157 DEBUG EVALUATE /RND(.5 - 2**-52).
1158 DEBUG EVALUATE /RND(.5 - 2**-51).
1159 DEBUG EVALUATE /RND(.5 - 2**-45).
1160 DEBUG EVALUATE /RND(.5 - 2**-45, 1, 10).
1161 DEBUG EVALUATE /RND('x').
1163 DEBUG EVALUATE /TRUNC(1.2).
1164 DEBUG EVALUATE /TRUNC(1.9).
1165 DEBUG EVALUATE /TRUNC(-1.2).
1166 DEBUG EVALUATE /TRUNC(-1.9).
1167 DEBUG EVALUATE /TRUNC(5.06, .1).
1168 DEBUG EVALUATE /TRUNC(-5.06, .1).
1169 DEBUG EVALUATE /TRUNC(1).
1170 DEBUG EVALUATE /TRUNC(1 - 2**-53).
1171 DEBUG EVALUATE /TRUNC(1 - 2**-52).
1172 DEBUG EVALUATE /TRUNC(1 - 2**-51).
1173 DEBUG EVALUATE /TRUNC(1 - 2**-45).
1174 DEBUG EVALUATE /TRUNC(1 - 2**-45, 1, 10).
1175 DEBUG EVALUATE /TRUNC('x').
1178 for opt in OPT NOOPT; do
1180 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
1181 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
1184 evaluate.sps:4.17-4.24: error: DEBUG EVALUATE: Type mismatch invoking
1185 EXP(number) as EXP(string).
1186 4 | DEBUG EVALUATE /EXP('x').
1189 evaluate.sps:4.21-4.23: note: DEBUG EVALUATE: This argument has type 'string'
1190 but 'number' is required.
1191 4 | DEBUG EVALUATE /EXP('x').
1198 evaluate.sps:7.17-7.25: error: DEBUG EVALUATE: Type mismatch invoking
1199 LG10(number) as LG10(string).
1200 7 | DEBUG EVALUATE /LG10('x').
1203 evaluate.sps:7.22-7.24: note: DEBUG EVALUATE: This argument has type 'string'
1204 but 'number' is required.
1205 7 | DEBUG EVALUATE /LG10('x').
1222 MOD(55.5, 2) => 1.50
1224 MOD(-55.5, 2) => -1.50
1226 MOD(55.5, -2) => 1.50
1228 MOD(-55.5, -2) => -1.50
1230 evaluate.sps:21.17-21.27: error: DEBUG EVALUATE: Type mismatch invoking
1231 MOD(number, number) as MOD(string, number).
1232 21 | DEBUG EVALUATE /MOD('a', 2).
1235 evaluate.sps:21.21-21.23: note: DEBUG EVALUATE: This argument has type 'string'
1236 but 'number' is required.
1237 21 | DEBUG EVALUATE /MOD('a', 2).
1240 MOD('a', 2) => error
1242 evaluate.sps:22.17-22.27: error: DEBUG EVALUATE: Type mismatch invoking
1243 MOD(number, number) as MOD(number, string).
1244 22 | DEBUG EVALUATE /MOD(2, 'a').
1247 evaluate.sps:22.24-22.26: note: DEBUG EVALUATE: This argument has type 'string'
1248 but 'number' is required.
1249 22 | DEBUG EVALUATE /MOD(2, 'a').
1252 MOD(2, 'a') => error
1254 evaluate.sps:23.17-23.29: error: DEBUG EVALUATE: Type mismatch invoking
1255 MOD(number, number) as MOD(string, string).
1256 23 | DEBUG EVALUATE /MOD('a', 'b').
1259 evaluate.sps:23.21-23.23: note: DEBUG EVALUATE: This argument has type 'string'
1260 but 'number' is required.
1261 23 | DEBUG EVALUATE /MOD('a', 'b').
1264 evaluate.sps:23.26-23.28: note: DEBUG EVALUATE: This argument has type 'string'
1265 but 'number' is required.
1266 23 | DEBUG EVALUATE /MOD('a', 'b').
1269 MOD('a', 'b') => error
1273 MOD10(-55.5) => -5.50
1283 RND(5.56, .1) => 5.60
1285 RND(-5.56, .1) => -5.60
1289 RND(.5 - 2**-53) => 1.00
1291 RND(.5 - 2**-52) => 1.00
1293 RND(.5 - 2**-51) => 1.00
1295 RND(.5 - 2**-45) => 0.00
1297 RND(.5 - 2**-45, 1, 10) => 1.00
1299 evaluate.sps:40.17-40.24: error: DEBUG EVALUATE: Function invocation
1300 RND(string) does not match any known function. Candidates are:
1303 RND(number, number, number).
1304 40 | DEBUG EVALUATE /RND('x').
1313 TRUNC(-1.2) => -1.00
1315 TRUNC(-1.9) => -1.00
1317 TRUNC(5.06, .1) => 5.00
1319 TRUNC(-5.06, .1) => -5.00
1323 TRUNC(1 - 2**-53) => 1.00
1325 TRUNC(1 - 2**-52) => 1.00
1327 TRUNC(1 - 2**-51) => 1.00
1329 TRUNC(1 - 2**-45) => 0.00
1331 TRUNC(1 - 2**-45, 1, 10) => 1.00
1333 evaluate.sps:54.17-54.26: error: DEBUG EVALUATE: Function invocation
1334 TRUNC(string) does not match any known function. Candidates are:
1336 TRUNC(number, number)
1337 TRUNC(number, number, number).
1338 54 | DEBUG EVALUATE /TRUNC('x').
1346 AT_SETUP([expressions - ACOS ARSIN ARTAN COS SIN TAN])
1347 AT_KEYWORDS([expression expressions evaluate])
1348 AT_DATA([evaluate-base.sps], [dnl
1350 DEBUG EVALUATE SET opt.
1351 DEBUG EVALUATE /ACOS(.5) / 3.14159 * 180.
1352 DEBUG EVALUATE /ARCOS(.75) / 3.14159 * 180.
1353 DEBUG EVALUATE /ARCOS(-.5) / 3.14159 * 180.
1354 DEBUG EVALUATE /ACOS(-.75) / 3.14159 * 180.
1355 DEBUG EVALUATE /ACOS(-1) / 3.14159 * 180.
1356 DEBUG EVALUATE /ARCOS(1) / 3.14159 * 180.
1357 DEBUG EVALUATE /ACOS(-1.01) / 3.14159 * 180.
1358 DEBUG EVALUATE /ARCOS(1.01) / 3.14159 * 180.
1359 DEBUG EVALUATE /ACOS('x') / 3.14159 * 180.
1361 DEBUG EVALUATE /ASIN(.5) / 3.14159 * 180.
1362 DEBUG EVALUATE /ARSIN(.25) / 3.14159 * 180.
1363 DEBUG EVALUATE /ARSIN(-.5) / 3.14159 * 180.
1364 DEBUG EVALUATE /ASIN(-.25) / 3.14159 * 180.
1365 DEBUG EVALUATE /ASIN(-1.01) / 3.14159 * 180.
1366 DEBUG EVALUATE /ARSIN(1.01) / 3.14159 * 180.
1367 DEBUG EVALUATE /ASIN('x') / 3.14159 * 180.
1369 DEBUG EVALUATE /ATAN(1) / 3.14159 * 180.
1370 DEBUG EVALUATE /ARTAN(10) / 3.14159 * 180.
1371 DEBUG EVALUATE /ARTAN(-1) / 3.14159 * 180.
1372 DEBUG EVALUATE /ATAN(-10) / 3.14159 * 180.
1373 DEBUG EVALUATE /ATAN('x') / 3.14159 * 180.
1375 DEBUG EVALUATE /COS(60 / 180 * 3.14159).
1376 DEBUG EVALUATE /COS(45 / 180 * 3.14159).
1377 DEBUG EVALUATE /COS(30 / 180 * 3.14159).
1378 DEBUG EVALUATE /COS(15 / 180 * 3.14159).
1379 DEBUG EVALUATE /COS(-60 / 180 * 3.14159).
1380 DEBUG EVALUATE /COS(-45 / 180 * 3.14159).
1381 DEBUG EVALUATE /COS(-30 / 180 * 3.14159).
1382 DEBUG EVALUATE /COS(-15 / 180 * 3.14159).
1383 DEBUG EVALUATE /COS(123 / 180 * 3.14159).
1384 DEBUG EVALUATE /COS(321 / 180 * 3.14159).
1385 DEBUG EVALUATE /COS('x').
1387 DEBUG EVALUATE /SIN(60 / 180 * 3.14159).
1388 DEBUG EVALUATE /SIN(45 / 180 * 3.14159).
1389 DEBUG EVALUATE /SIN(30 / 180 * 3.14159).
1390 DEBUG EVALUATE /SIN(15 / 180 * 3.14159).
1391 DEBUG EVALUATE /SIN(-60 / 180 * 3.14159).
1392 DEBUG EVALUATE /SIN(-45 / 180 * 3.14159).
1393 DEBUG EVALUATE /SIN(-30 / 180 * 3.14159).
1394 DEBUG EVALUATE /SIN(-15 / 180 * 3.14159).
1395 DEBUG EVALUATE /SIN(123 / 180 * 3.14159).
1396 DEBUG EVALUATE /SIN(321 / 180 * 3.14159).
1397 DEBUG EVALUATE /SIN('x').
1399 DEBUG EVALUATE /TAN(60 / 180 * 3.14159).
1400 DEBUG EVALUATE /TAN(45 / 180 * 3.14159).
1401 DEBUG EVALUATE /TAN(30 / 180 * 3.14159).
1402 DEBUG EVALUATE /TAN(15 / 180 * 3.14159).
1403 DEBUG EVALUATE /TAN(-60 / 180 * 3.14159).
1404 DEBUG EVALUATE /TAN(-45 / 180 * 3.14159).
1405 DEBUG EVALUATE /TAN(-30 / 180 * 3.14159).
1406 DEBUG EVALUATE /TAN(-15 / 180 * 3.14159).
1407 DEBUG EVALUATE /TAN(123 / 180 * 3.14159).
1408 DEBUG EVALUATE /TAN(321 / 180 * 3.14159).
1409 DEBUG EVALUATE /TAN('x').
1412 for opt in OPT NOOPT; do
1414 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
1415 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
1416 ACOS(.5) / 3.14159 * 180 => 60.00
1418 ARCOS(.75) / 3.14159 * 180 => 41.41
1420 ARCOS(-.5) / 3.14159 * 180 => 120.00
1422 ACOS(-.75) / 3.14159 * 180 => 138.59
1424 ACOS(-1) / 3.14159 * 180 => 180.00
1426 ARCOS(1) / 3.14159 * 180 => 0.00
1428 ACOS(-1.01) / 3.14159 * 180 => sysmis
1430 ARCOS(1.01) / 3.14159 * 180 => sysmis
1432 evaluate.sps:11.17-11.25: error: DEBUG EVALUATE: Type mismatch invoking
1433 ACOS(number) as ACOS(string).
1434 11 | DEBUG EVALUATE /ACOS('x') / 3.14159 * 180.
1437 evaluate.sps:11.22-11.24: note: DEBUG EVALUATE: This argument has type 'string'
1438 but 'number' is required.
1439 11 | DEBUG EVALUATE /ACOS('x') / 3.14159 * 180.
1442 ACOS('x') / 3.14159 * 180 => error
1444 ASIN(.5) / 3.14159 * 180 => 30.00
1446 ARSIN(.25) / 3.14159 * 180 => 14.48
1448 ARSIN(-.5) / 3.14159 * 180 => -30.00
1450 ASIN(-.25) / 3.14159 * 180 => -14.48
1452 ASIN(-1.01) / 3.14159 * 180 => sysmis
1454 ARSIN(1.01) / 3.14159 * 180 => sysmis
1456 evaluate.sps:19.17-19.25: error: DEBUG EVALUATE: Type mismatch invoking
1457 ASIN(number) as ASIN(string).
1458 19 | DEBUG EVALUATE /ASIN('x') / 3.14159 * 180.
1461 evaluate.sps:19.22-19.24: note: DEBUG EVALUATE: This argument has type 'string'
1462 but 'number' is required.
1463 19 | DEBUG EVALUATE /ASIN('x') / 3.14159 * 180.
1466 ASIN('x') / 3.14159 * 180 => error
1468 ATAN(1) / 3.14159 * 180 => 45.00
1470 ARTAN(10) / 3.14159 * 180 => 84.29
1472 ARTAN(-1) / 3.14159 * 180 => -45.00
1474 ATAN(-10) / 3.14159 * 180 => -84.29
1476 evaluate.sps:25.17-25.25: error: DEBUG EVALUATE: Type mismatch invoking
1477 ATAN(number) as ATAN(string).
1478 25 | DEBUG EVALUATE /ATAN('x') / 3.14159 * 180.
1481 evaluate.sps:25.22-25.24: note: DEBUG EVALUATE: This argument has type 'string'
1482 but 'number' is required.
1483 25 | DEBUG EVALUATE /ATAN('x') / 3.14159 * 180.
1486 ATAN('x') / 3.14159 * 180 => error
1488 COS(60 / 180 * 3.14159) => 0.50
1490 COS(45 / 180 * 3.14159) => 0.71
1492 COS(30 / 180 * 3.14159) => 0.87
1494 COS(15 / 180 * 3.14159) => 0.97
1496 COS(-60 / 180 * 3.14159) => 0.50
1498 COS(-45 / 180 * 3.14159) => 0.71
1500 COS(-30 / 180 * 3.14159) => 0.87
1502 COS(-15 / 180 * 3.14159) => 0.97
1504 COS(123 / 180 * 3.14159) => -0.54
1506 COS(321 / 180 * 3.14159) => 0.78
1508 evaluate.sps:37.17-37.24: error: DEBUG EVALUATE: Type mismatch invoking
1509 COS(number) as COS(string).
1510 37 | DEBUG EVALUATE /COS('x').
1513 evaluate.sps:37.21-37.23: note: DEBUG EVALUATE: This argument has type 'string'
1514 but 'number' is required.
1515 37 | DEBUG EVALUATE /COS('x').
1520 SIN(60 / 180 * 3.14159) => 0.87
1522 SIN(45 / 180 * 3.14159) => 0.71
1524 SIN(30 / 180 * 3.14159) => 0.50
1526 SIN(15 / 180 * 3.14159) => 0.26
1528 SIN(-60 / 180 * 3.14159) => -0.87
1530 SIN(-45 / 180 * 3.14159) => -0.71
1532 SIN(-30 / 180 * 3.14159) => -0.50
1534 SIN(-15 / 180 * 3.14159) => -0.26
1536 SIN(123 / 180 * 3.14159) => 0.84
1538 SIN(321 / 180 * 3.14159) => -0.63
1540 evaluate.sps:49.17-49.24: error: DEBUG EVALUATE: Type mismatch invoking
1541 SIN(number) as SIN(string).
1542 49 | DEBUG EVALUATE /SIN('x').
1545 evaluate.sps:49.21-49.23: note: DEBUG EVALUATE: This argument has type 'string'
1546 but 'number' is required.
1547 49 | DEBUG EVALUATE /SIN('x').
1552 TAN(60 / 180 * 3.14159) => 1.73
1554 TAN(45 / 180 * 3.14159) => 1.00
1556 TAN(30 / 180 * 3.14159) => 0.58
1558 TAN(15 / 180 * 3.14159) => 0.27
1560 TAN(-60 / 180 * 3.14159) => -1.73
1562 TAN(-45 / 180 * 3.14159) => -1.00
1564 TAN(-30 / 180 * 3.14159) => -0.58
1566 TAN(-15 / 180 * 3.14159) => -0.27
1568 TAN(123 / 180 * 3.14159) => -1.54
1570 TAN(321 / 180 * 3.14159) => -0.81
1572 evaluate.sps:61.17-61.24: error: DEBUG EVALUATE: Type mismatch invoking
1573 TAN(number) as TAN(string).
1574 61 | DEBUG EVALUATE /TAN('x').
1577 evaluate.sps:61.21-61.23: note: DEBUG EVALUATE: This argument has type 'string'
1578 but 'number' is required.
1579 61 | DEBUG EVALUATE /TAN('x').
1587 AT_SETUP([expressions - vector indexing])
1588 AT_KEYWORDS([expression expressions evaluate])
1589 AT_DATA([evaluate-base.sps], [dnl
1591 DEBUG EVALUATE SET opt.
1593 DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(1).
1594 DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(2).
1595 DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(3).
1596 DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v($sysmis).
1597 DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(0).
1598 DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(4).
1600 DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(1).
1601 DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(2).
1602 DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(3).
1603 DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v($sysmis).
1604 DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(0).
1605 DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(4).
1609 for opt in OPT NOOPT; do
1611 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
1612 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
1619 evaluate.sps:7.42-7.51: error: DEBUG EVALUATE: Index outside valid range 1 to
1620 3, inclusive, for vector V. The value will be treated as system-missing.
1621 7 | DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v($sysmis).
1624 evaluate.sps:7.44-7.50: note: DEBUG EVALUATE: The index is system-missing.
1625 7 | DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v($sysmis).
1628 v($sysmis) => sysmis
1630 evaluate.sps:8.42-8.45: error: DEBUG EVALUATE: Index outside valid range 1 to
1631 3, inclusive, for vector V. The value will be treated as system-missing.
1632 8 | DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(0).
1635 evaluate.sps:8.44: note: DEBUG EVALUATE: The index has value 0.
1636 8 | DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(0).
1641 evaluate.sps:9.42-9.45: error: DEBUG EVALUATE: Index outside valid range 1 to
1642 3, inclusive, for vector V. The value will be treated as system-missing.
1643 9 | DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(4).
1646 evaluate.sps:9.44: note: DEBUG EVALUATE: The index has value 4.
1647 9 | DEBUG EVALUATE (a=11)(b=22)(c=33) VECTOR/v(4).
1658 evaluate.sps:14.51-14.60: error: DEBUG EVALUATE: Index outside valid range 1 to
1659 3, inclusive, for vector V. The value will be treated as system-missing.
1660 14 | DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v($sysmis).
1663 evaluate.sps:14.53-14.59: note: DEBUG EVALUATE: The index is system-missing.
1664 14 | DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v($sysmis).
1669 evaluate.sps:15.51-15.54: error: DEBUG EVALUATE: Index outside valid range 1 to
1670 3, inclusive, for vector V. The value will be treated as system-missing.
1671 15 | DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(0).
1674 evaluate.sps:15.53: note: DEBUG EVALUATE: The index has value 0.
1675 15 | DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(0).
1680 evaluate.sps:16.51-16.54: error: DEBUG EVALUATE: Index outside valid range 1 to
1681 3, inclusive, for vector V. The value will be treated as system-missing.
1682 16 | DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(4).
1685 evaluate.sps:16.53: note: DEBUG EVALUATE: The index has value 4.
1686 16 | DEBUG EVALUATE (a='abc')(b='def')(c='ghi') VECTOR/v(4).
1694 AT_SETUP([expressions - MISSING NMISS NVALID SYSMIS])
1695 AT_KEYWORDS([expression expressions evaluate])
1696 AT_DATA([evaluate-base.sps], [dnl
1698 DEBUG EVALUATE SET opt.
1699 DEBUG EVALUATE /MISSING(10).
1700 DEBUG EVALUATE /MISSING($SYSMIS).
1701 DEBUG EVALUATE /MISSING(ASIN(1.01)).
1702 DEBUG EVALUATE /MISSING(ASIN(.5)).
1703 DEBUG EVALUATE /MISSING(' ').
1705 DEBUG EVALUATE (x=5)/x.
1706 DEBUG EVALUATE (x=5 MISSING)/x.
1707 DEBUG EVALUATE (x=5 MISSING)/x + 1.
1708 DEBUG EVALUATE (x=SYSMIS)/x.
1710 DEBUG EVALUATE (x=5) VECTOR/v(1).
1711 DEBUG EVALUATE (x=5 MISSING) VECTOR/v(1).
1712 DEBUG EVALUATE (x=5 MISSING) VECTOR/v(1) + 1.
1713 DEBUG EVALUATE (x=SYSMIS) VECTOR/v(1).
1715 DEBUG EVALUATE (x=5)/VALUE(x).
1716 DEBUG EVALUATE (x=5 MISSING)/VALUE(x).
1717 DEBUG EVALUATE (x=SYSMIS)/VALUE(x).
1719 DEBUG EVALUATE (x=5) VECTOR/VALUE(v(1)).
1720 DEBUG EVALUATE (x=5 MISSING) VECTOR/VALUE(v(1)).
1721 DEBUG EVALUATE (x=SYSMIS) VECTOR/VALUE(v(1)).
1723 DEBUG EVALUATE (x=5)/MISSING(x).
1724 DEBUG EVALUATE (x=5 MISSING)/MISSING(x).
1725 DEBUG EVALUATE (x=SYSMIS)/MISSING(x).
1727 DEBUG EVALUATE (x=5)/SYSMIS(x).
1728 DEBUG EVALUATE (x=5 MISSING)/SYSMIS(x).
1729 DEBUG EVALUATE (x=SYSMIS)/SYSMIS(x).
1731 DEBUG EVALUATE /NMISS($sysmis).
1732 DEBUG EVALUATE /NMISS(0).
1733 DEBUG EVALUATE /NMISS($sysmis, $sysmis, $sysmis).
1734 DEBUG EVALUATE /NMISS(1, 2, 3, 4).
1735 DEBUG EVALUATE /NMISS(1, $sysmis, $sysmis, 2, 2, $sysmis, $sysmis, 3, 4).
1736 DEBUG EVALUATE (a=1 MISSING) (b=2) (c=3 MISSING) (d=4)/NMISS(a, b, c, d).
1738 DEBUG EVALUATE /NVALID($sysmis).
1739 DEBUG EVALUATE /NVALID(0).
1740 DEBUG EVALUATE /NVALID($sysmis, $sysmis, $sysmis).
1741 DEBUG EVALUATE /NVALID(1, 2, 3, 4).
1742 DEBUG EVALUATE /NVALID(1, $sysmis, $sysmis, 2, 2, $sysmis, $sysmis, 3, 4).
1743 DEBUG EVALUATE (a=1 MISSING) (b=2) (c=3 MISSING) (d=4)/NVALID(a, b, c, d).
1745 DEBUG EVALUATE /SYSMIS(1).
1746 DEBUG EVALUATE /SYSMIS($SYSMIS).
1747 DEBUG EVALUATE /SYSMIS(1 + $SYSMIS).
1750 for opt in OPT NOOPT; do
1752 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
1753 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
1754 MISSING(10) => false
1756 MISSING($SYSMIS) => true
1758 MISSING(ASIN(1.01)) => true
1760 MISSING(ASIN(.5)) => false
1762 evaluate.sps:7.17-7.31: error: DEBUG EVALUATE: Type mismatch invoking
1763 MISSING(number) as MISSING(string).
1764 7 | DEBUG EVALUATE /MISSING(' ').
1767 evaluate.sps:7.25-7.30: note: DEBUG EVALUATE: This argument has type 'string'
1768 but 'number' is required.
1769 7 | DEBUG EVALUATE /MISSING(' ').
1772 MISSING(' ') => error
1800 VALUE(v(1)) => sysmis
1814 NMISS($sysmis) => 1.00
1818 NMISS($sysmis, $sysmis, $sysmis) => 3.00
1820 NMISS(1, 2, 3, 4) => 0.00
1822 NMISS(1, $sysmis, $sysmis, 2, 2, $sysmis, $sysmis, 3, 4) => 4.00
1824 NMISS(a, b, c, d) => 2.00
1826 NVALID($sysmis) => 0.00
1830 NVALID($sysmis, $sysmis, $sysmis) => 0.00
1832 NVALID(1, 2, 3, 4) => 4.00
1834 NVALID(1, $sysmis, $sysmis, 2, 2, $sysmis, $sysmis, 3, 4) => 5.00
1836 NVALID(a, b, c, d) => 2.00
1840 SYSMIS($SYSMIS) => true
1842 SYSMIS(1 + $SYSMIS) => true
1847 AT_SETUP([expressions - ANY])
1848 AT_KEYWORDS([expression expressions evaluate])
1849 AT_DATA([evaluate-base.sps], [dnl
1851 DEBUG EVALUATE SET opt.
1853 DEBUG EVALUATE /any(1, 1, 2, 3).
1854 DEBUG EVALUATE /any(1, $true, 2, 3).
1855 DEBUG EVALUATE /any(1, $false, 2, 3).
1856 DEBUG EVALUATE /any(2, 1, 2, 3).
1857 DEBUG EVALUATE /any(3, 1, 2, 3).
1858 DEBUG EVALUATE /any(5, 1, 2, 3).
1859 DEBUG EVALUATE /any(1, 1, 1, 1).
1860 DEBUG EVALUATE /any($sysmis, 1, 1, 1).
1861 DEBUG EVALUATE /any($sysmis, 1, $sysmis, 3).
1862 DEBUG EVALUATE /any(1, 1, $sysmis, $sysmis).
1863 DEBUG EVALUATE /any(1, $sysmis, $sysmis, $sysmis).
1864 DEBUG EVALUATE /any($sysmis, $sysmis, $sysmis, $sysmis).
1866 DEBUG EVALUATE /any(1).
1867 DEBUG EVALUATE /any('1', 2, 3, 4).
1868 DEBUG EVALUATE /any(1, '2', 3, 4).
1869 DEBUG EVALUATE /any(1, 2, '3', 4).
1870 DEBUG EVALUATE /any(1, 2, 3, '4').
1872 DEBUG EVALUATE /any('', 'a', '', 'c').
1873 DEBUG EVALUATE /any('a', 'a', 'b', 'c').
1874 DEBUG EVALUATE /any('b', 'a', 'b', 'c').
1875 DEBUG EVALUATE /any('c', 'a', 'b', 'c').
1876 DEBUG EVALUATE /any('e', 'a', 'b', 'c').
1877 DEBUG EVALUATE /any('a', 'a', 'a', 'a').
1878 DEBUG EVALUATE /any('', 'a', 'a', 'a').
1879 DEBUG EVALUATE /any('a', '', '', '').
1880 DEBUG EVALUATE /any('a').
1882 DEBUG EVALUATE /any('a', 'a ', 'b', 'c').
1883 DEBUG EVALUATE /any('b ', 'a', 'b', 'c').
1884 DEBUG EVALUATE /any('c ', 'a', 'b', 'c ').
1885 DEBUG EVALUATE /any(a10, 'b', 'c', 'd').
1886 DEBUG EVALUATE /any('a', b, 'c', 'd').
1887 DEBUG EVALUATE /any('a', 'b', c, 'd').
1888 DEBUG EVALUATE /any('a', 'b', 'c', d).
1891 for opt in OPT NOOPT; do
1893 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
1894 AT_CHECK([pspp --testing-mode evaluate.sps], [1],
1895 [[any(1, 1, 2, 3) => true
1897 any(1, $true, 2, 3) => true
1899 any(1, $false, 2, 3) => false
1901 any(2, 1, 2, 3) => true
1903 any(3, 1, 2, 3) => true
1905 any(5, 1, 2, 3) => false
1907 any(1, 1, 1, 1) => true
1909 any($sysmis, 1, 1, 1) => sysmis
1911 any($sysmis, 1, $sysmis, 3) => sysmis
1913 any(1, 1, $sysmis, $sysmis) => true
1915 any(1, $sysmis, $sysmis, $sysmis) => sysmis
1917 any($sysmis, $sysmis, $sysmis, $sysmis) => sysmis
1919 evaluate.sps:17.17-17.22: error: DEBUG EVALUATE: Function invocation
1920 any(number) does not match any known function. Candidates are:
1921 ANY(number, number[, number]...)
1922 ANY(string, string[, string]...).
1923 17 | DEBUG EVALUATE /any(1).
1928 evaluate.sps:18.17-18.33: error: DEBUG EVALUATE: Function invocation
1929 any(string, number, number, number) does not match any known function.
1931 ANY(number, number[, number]...)
1932 ANY(string, string[, string]...).
1933 18 | DEBUG EVALUATE /any('1', 2, 3, 4).
1936 any('1', 2, 3, 4) => error
1938 evaluate.sps:19.17-19.33: error: DEBUG EVALUATE: Function invocation
1939 any(number, string, number, number) does not match any known function.
1941 ANY(number, number[, number]...)
1942 ANY(string, string[, string]...).
1943 19 | DEBUG EVALUATE /any(1, '2', 3, 4).
1946 any(1, '2', 3, 4) => error
1948 evaluate.sps:20.17-20.33: error: DEBUG EVALUATE: Function invocation
1949 any(number, number, string, number) does not match any known function.
1951 ANY(number, number[, number]...)
1952 ANY(string, string[, string]...).
1953 20 | DEBUG EVALUATE /any(1, 2, '3', 4).
1956 any(1, 2, '3', 4) => error
1958 evaluate.sps:21.17-21.33: error: DEBUG EVALUATE: Function invocation
1959 any(number, number, number, string) does not match any known function.
1961 ANY(number, number[, number]...)
1962 ANY(string, string[, string]...).
1963 21 | DEBUG EVALUATE /any(1, 2, 3, '4').
1966 any(1, 2, 3, '4') => error
1968 any('', 'a', '', 'c') => true
1970 any('a', 'a', 'b', 'c') => true
1972 any('b', 'a', 'b', 'c') => true
1974 any('c', 'a', 'b', 'c') => true
1976 any('e', 'a', 'b', 'c') => false
1978 any('a', 'a', 'a', 'a') => true
1980 any('', 'a', 'a', 'a') => false
1982 any('a', '', '', '') => false
1984 evaluate.sps:31.17-31.24: error: DEBUG EVALUATE: Function invocation
1985 any(string) does not match any known function. Candidates are:
1986 ANY(number, number[, number]...)
1987 ANY(string, string[, string]...).
1988 31 | DEBUG EVALUATE /any('a').
1993 any('a', 'a ', 'b', 'c') => true
1995 any('b ', 'a', 'b', 'c') => true
1997 any('c ', 'a', 'b', 'c ') => true
1999 evaluate.sps:36.17-36.39: error: DEBUG EVALUATE: Function invocation
2000 any(format, string, string, string) does not match any known function.
2002 ANY(number, number[, number]...)
2003 ANY(string, string[, string]...).
2004 36 | DEBUG EVALUATE /any(a10, 'b', 'c', 'd').
2005 | ^~~~~~~~~~~~~~~~~~~~~~~
2007 any(a10, 'b', 'c', 'd') => error
2009 evaluate.sps:37: error: DEBUG EVALUATE: Unknown identifier b.
2011 any('a', b, 'c', 'd') => error
2013 evaluate.sps:38: error: DEBUG EVALUATE: Unknown identifier c.
2015 any('a', 'b', c, 'd') => error
2017 evaluate.sps:39: error: DEBUG EVALUATE: Unknown identifier d.
2019 any('a', 'b', 'c', d) => error
2024 AT_SETUP([expressions - RANGE])
2025 AT_KEYWORDS([expression expressions evaluate])
2026 AT_DATA([evaluate-base.sps], [dnl
2028 DEBUG EVALUATE SET opt.
2030 DEBUG EVALUATE /range(5, 1, 10).
2031 DEBUG EVALUATE /range(1, 1, 10).
2032 DEBUG EVALUATE /range(10, 1, 10).
2033 DEBUG EVALUATE /range(-1, 1, 10).
2034 DEBUG EVALUATE /range(12, 1, 10).
2036 DEBUG EVALUATE /range(5, $sysmis, 6, 1, 10).
2037 DEBUG EVALUATE /range(5, $sysmis, $sysmis, 1, 10).
2038 DEBUG EVALUATE /range(1, 1, 10, 6, $sysmis).
2039 DEBUG EVALUATE /range(1, 1, 10, $sysmis, $sysmis).
2041 DEBUG EVALUATE /range(5, 5, 10, 3, 7).
2042 DEBUG EVALUATE /range(5, 10, 5, 3, 7).
2043 DEBUG EVALUATE /range(5, 3, 7, 5, 10).
2044 DEBUG EVALUATE /range(5, 3, 7, 10, 5).
2046 DEBUG EVALUATE /range($sysmis, 1, 10).
2047 DEBUG EVALUATE /range(5, 1, $sysmis).
2048 DEBUG EVALUATE /range(5, $sysmis, 10).
2049 DEBUG EVALUATE /range(1, 1, $sysmis).
2050 DEBUG EVALUATE /range(10, $sysmis, 10).
2051 DEBUG EVALUATE /range(5, 10, 5).
2052 DEBUG EVALUATE /range($sysmis, $sysmis, 10).
2053 DEBUG EVALUATE /range($sysmis, 1, $sysmis).
2054 DEBUG EVALUATE /range($sysmis, $sysmis, $sysmis).
2056 DEBUG EVALUATE /range(0, 1, 8, 10, 18).
2057 DEBUG EVALUATE /range(1, 1, 8, 10, 18).
2058 DEBUG EVALUATE /range(6, 1, 8, 10, 18).
2059 DEBUG EVALUATE /range(8, 1, 8, 10, 18).
2060 DEBUG EVALUATE /range(9, 1, 8, 10, 18).
2061 DEBUG EVALUATE /range(10, 1, 8, 10, 18).
2062 DEBUG EVALUATE /range(13, 1, 8, 10, 18).
2063 DEBUG EVALUATE /range(16, 1, 8, 10, 18).
2064 DEBUG EVALUATE /range(18, 1, 8, 10, 18).
2065 DEBUG EVALUATE /range(20, 1, 8, 10, 18).
2066 DEBUG EVALUATE /range(1).
2067 DEBUG EVALUATE /range(1, 2).
2068 DEBUG EVALUATE /range(1, 2, 3, 4).
2069 DEBUG EVALUATE /range(1, 2, 3, 4, 5, 6).
2070 DEBUG EVALUATE /range('1', 2, 3).
2071 DEBUG EVALUATE /range(1, '2', 3).
2072 DEBUG EVALUATE /range(1, 2, '3').
2074 DEBUG EVALUATE /range('123', '111', '888').
2075 DEBUG EVALUATE /range('111', '111', '888').
2076 DEBUG EVALUATE /range('888', '111', '888').
2077 DEBUG EVALUATE /range('110', '111', '888').
2078 DEBUG EVALUATE /range('889', '111', '888').
2079 DEBUG EVALUATE /range('000', '111', '888').
2080 DEBUG EVALUATE /range('999', '111', '888').
2082 DEBUG EVALUATE /range('123 ', '111', '888').
2083 DEBUG EVALUATE /range('123', '111 ', '888').
2084 DEBUG EVALUATE /range('123', '111', '888 ').
2085 DEBUG EVALUATE /range('123', '111 ', '888 ').
2087 DEBUG EVALUATE /range('00', '01', '08', '10', '18').
2088 DEBUG EVALUATE /range('01', '01', '08', '10', '18').
2089 DEBUG EVALUATE /range('06', '01', '08', '10', '18').
2090 DEBUG EVALUATE /range('08', '01', '08', '10', '18').
2091 DEBUG EVALUATE /range('09', '01', '08', '10', '18').
2092 DEBUG EVALUATE /range('10', '01', '08', '10', '18').
2093 DEBUG EVALUATE /range('15', '01', '08', '10', '18').
2094 DEBUG EVALUATE /range('18', '01', '08', '10', '18').
2095 DEBUG EVALUATE /range('19', '01', '08', '10', '18').
2097 DEBUG EVALUATE /range('07', '01', '08', '18', '10').
2098 DEBUG EVALUATE /range('12', '08', '01', '10', '18').
2100 DEBUG EVALUATE /range('1').
2101 DEBUG EVALUATE /range('1', '2').
2102 DEBUG EVALUATE /range('1', '2', '3', '4').
2103 DEBUG EVALUATE /range('1', '2', '3', '4', '5', '6').
2104 DEBUG EVALUATE /range(1, '2', '3').
2105 DEBUG EVALUATE /range('1', 2, '3').
2106 DEBUG EVALUATE /range('1', '2', 3).
2109 for opt in OPT NOOPT; do
2111 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
2112 AT_CHECK([pspp --testing-mode evaluate.sps], [1],
2113 [[range(5, 1, 10) => true
2115 range(1, 1, 10) => true
2117 range(10, 1, 10) => true
2119 range(-1, 1, 10) => false
2121 range(12, 1, 10) => false
2123 range(5, $sysmis, 6, 1, 10) => true
2125 range(5, $sysmis, $sysmis, 1, 10) => true
2127 range(1, 1, 10, 6, $sysmis) => true
2129 range(1, 1, 10, $sysmis, $sysmis) => true
2131 range(5, 5, 10, 3, 7) => true
2133 range(5, 10, 5, 3, 7) => sysmis
2135 range(5, 3, 7, 5, 10) => true
2137 range(5, 3, 7, 10, 5) => sysmis
2139 range($sysmis, 1, 10) => sysmis
2141 range(5, 1, $sysmis) => sysmis
2143 range(5, $sysmis, 10) => sysmis
2145 range(1, 1, $sysmis) => sysmis
2147 range(10, $sysmis, 10) => sysmis
2149 range(5, 10, 5) => sysmis
2151 range($sysmis, $sysmis, 10) => sysmis
2153 range($sysmis, 1, $sysmis) => sysmis
2155 range($sysmis, $sysmis, $sysmis) => sysmis
2157 range(0, 1, 8, 10, 18) => false
2159 range(1, 1, 8, 10, 18) => true
2161 range(6, 1, 8, 10, 18) => true
2163 range(8, 1, 8, 10, 18) => true
2165 range(9, 1, 8, 10, 18) => false
2167 range(10, 1, 8, 10, 18) => true
2169 range(13, 1, 8, 10, 18) => true
2171 range(16, 1, 8, 10, 18) => true
2173 range(18, 1, 8, 10, 18) => true
2175 range(20, 1, 8, 10, 18) => false
2177 evaluate.sps:40.17-40.24: error: DEBUG EVALUATE: Function invocation
2178 range(number) does not match any known function. Candidates are:
2179 RANGE(number, number, number[, number, number]...)
2180 RANGE(string, string, string[, string, string]...).
2181 40 | DEBUG EVALUATE /range(1).
2186 evaluate.sps:41.17-41.27: error: DEBUG EVALUATE: RANGE(number, number, number[,
2187 number, number]...) must have an odd number of arguments.
2188 41 | DEBUG EVALUATE /range(1, 2).
2191 range(1, 2) => error
2193 evaluate.sps:42.17-42.33: error: DEBUG EVALUATE: RANGE(number, number, number[,
2194 number, number]...) must have an odd number of arguments.
2195 42 | DEBUG EVALUATE /range(1, 2, 3, 4).
2198 range(1, 2, 3, 4) => error
2200 evaluate.sps:43.17-43.39: error: DEBUG EVALUATE: RANGE(number, number, number[,
2201 number, number]...) must have an odd number of arguments.
2202 43 | DEBUG EVALUATE /range(1, 2, 3, 4, 5, 6).
2203 | ^~~~~~~~~~~~~~~~~~~~~~~
2205 range(1, 2, 3, 4, 5, 6) => error
2207 evaluate.sps:44.17-44.32: error: DEBUG EVALUATE: Function invocation
2208 range(string, number, number) does not match any known function. Candidates
2210 RANGE(number, number, number[, number, number]...)
2211 RANGE(string, string, string[, string, string]...).
2212 44 | DEBUG EVALUATE /range('1', 2, 3).
2215 range('1', 2, 3) => error
2217 evaluate.sps:45.17-45.32: error: DEBUG EVALUATE: Function invocation
2218 range(number, string, number) does not match any known function. Candidates
2220 RANGE(number, number, number[, number, number]...)
2221 RANGE(string, string, string[, string, string]...).
2222 45 | DEBUG EVALUATE /range(1, '2', 3).
2225 range(1, '2', 3) => error
2227 evaluate.sps:46.17-46.32: error: DEBUG EVALUATE: Function invocation
2228 range(number, number, string) does not match any known function. Candidates
2230 RANGE(number, number, number[, number, number]...)
2231 RANGE(string, string, string[, string, string]...).
2232 46 | DEBUG EVALUATE /range(1, 2, '3').
2235 range(1, 2, '3') => error
2237 range('123', '111', '888') => true
2239 range('111', '111', '888') => true
2241 range('888', '111', '888') => true
2243 range('110', '111', '888') => false
2245 range('889', '111', '888') => false
2247 range('000', '111', '888') => false
2249 range('999', '111', '888') => false
2251 range('123 ', '111', '888') => true
2253 range('123', '111 ', '888') => true
2255 range('123', '111', '888 ') => true
2257 range('123', '111 ', '888 ') => true
2259 range('00', '01', '08', '10', '18') => false
2261 range('01', '01', '08', '10', '18') => true
2263 range('06', '01', '08', '10', '18') => true
2265 range('08', '01', '08', '10', '18') => true
2267 range('09', '01', '08', '10', '18') => false
2269 range('10', '01', '08', '10', '18') => true
2271 range('15', '01', '08', '10', '18') => true
2273 range('18', '01', '08', '10', '18') => true
2275 range('19', '01', '08', '10', '18') => false
2277 range('07', '01', '08', '18', '10') => sysmis
2279 range('12', '08', '01', '10', '18') => sysmis
2281 evaluate.sps:74.17-74.26: error: DEBUG EVALUATE: Function invocation
2282 range(string) does not match any known function. Candidates are:
2283 RANGE(number, number, number[, number, number]...)
2284 RANGE(string, string, string[, string, string]...).
2285 74 | DEBUG EVALUATE /range('1').
2290 evaluate.sps:75.17-75.31: error: DEBUG EVALUATE: RANGE(string, string, string[,
2291 string, string]...) must have an odd number of arguments.
2292 75 | DEBUG EVALUATE /range('1', '2').
2295 range('1', '2') => error
2297 evaluate.sps:76.17-76.41: error: DEBUG EVALUATE: RANGE(string, string, string[,
2298 string, string]...) must have an odd number of arguments.
2299 76 | DEBUG EVALUATE /range('1', '2', '3', '4').
2300 | ^~~~~~~~~~~~~~~~~~~~~~~~~
2302 range('1', '2', '3', '4') => error
2304 evaluate.sps:77.17-77.51: error: DEBUG EVALUATE: RANGE(string, string, string[,
2305 string, string]...) must have an odd number of arguments.
2306 77 | DEBUG EVALUATE /range('1', '2', '3', '4', '5', '6').
2307 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2309 range('1', '2', '3', '4', '5', '6') => error
2311 evaluate.sps:78.17-78.34: error: DEBUG EVALUATE: Function invocation
2312 range(number, string, string) does not match any known function. Candidates
2314 RANGE(number, number, number[, number, number]...)
2315 RANGE(string, string, string[, string, string]...).
2316 78 | DEBUG EVALUATE /range(1, '2', '3').
2317 | ^~~~~~~~~~~~~~~~~~
2319 range(1, '2', '3') => error
2321 evaluate.sps:79.17-79.34: error: DEBUG EVALUATE: Function invocation
2322 range(string, number, string) does not match any known function. Candidates
2324 RANGE(number, number, number[, number, number]...)
2325 RANGE(string, string, string[, string, string]...).
2326 79 | DEBUG EVALUATE /range('1', 2, '3').
2327 | ^~~~~~~~~~~~~~~~~~
2329 range('1', 2, '3') => error
2331 evaluate.sps:80.17-80.34: error: DEBUG EVALUATE: Function invocation
2332 range(string, string, number) does not match any known function. Candidates
2334 RANGE(number, number, number[, number, number]...)
2335 RANGE(string, string, string[, string, string]...).
2336 80 | DEBUG EVALUATE /range('1', '2', 3).
2337 | ^~~~~~~~~~~~~~~~~~
2339 range('1', '2', 3) => error
2344 AT_SETUP([expressions - MAX MIN])
2345 AT_KEYWORDS([expression expressions evaluate])
2346 AT_DATA([evaluate-base.sps], [dnl
2348 DEBUG EVALUATE SET opt.
2349 DEBUG EVALUATE /max(1, 2, 3, 4, 5).
2350 DEBUG EVALUATE /max(1, $sysmis, 2, 3, $sysmis, 4, 5).
2351 DEBUG EVALUATE /max(1, 2).
2352 DEBUG EVALUATE /max().
2353 DEBUG EVALUATE /max(1).
2354 DEBUG EVALUATE /max(1, $sysmis).
2355 DEBUG EVALUATE /max(1, 2, 3, $sysmis).
2356 DEBUG EVALUATE /max.4(1, 2, 3, $sysmis).
2357 DEBUG EVALUATE /max.4(1, 2, 3).
2359 DEBUG EVALUATE /max("2", "3", "5", "1", "4").
2360 DEBUG EVALUATE /max("1", "2").
2361 DEBUG EVALUATE /max("1").
2363 DEBUG EVALUATE /min(1, 2, 3, 4, 5).
2364 DEBUG EVALUATE /min(1, $sysmis, 2, 3, $sysmis, 4, 5).
2365 DEBUG EVALUATE /min(1, 2).
2366 DEBUG EVALUATE /min().
2367 DEBUG EVALUATE /min(1).
2368 DEBUG EVALUATE /min(1, $sysmis).
2369 DEBUG EVALUATE /min(1, 2, 3, $sysmis).
2370 DEBUG EVALUATE /min.4(1, 2, 3, $sysmis).
2371 DEBUG EVALUATE /min.4(1, 2, 3).
2373 DEBUG EVALUATE /min("2", "3", "5", "1", "4").
2374 DEBUG EVALUATE /min("1", "2").
2375 DEBUG EVALUATE /min("1").
2378 for opt in OPT NOOPT; do
2380 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
2381 AT_CHECK([pspp --testing-mode evaluate.sps], [1],
2382 [[max(1, 2, 3, 4, 5) => 5.00
2384 max(1, $sysmis, 2, 3, $sysmis, 4, 5) => 5.00
2388 evaluate.sps:6.17-6.20: error: DEBUG EVALUATE: Function invocation max() does
2389 not match any known function. Candidates are:
2390 MAX(number[, number]...)
2391 MAX(string[, string]...).
2392 6 | DEBUG EVALUATE /max().
2399 max(1, $sysmis) => 1.00
2401 max(1, 2, 3, $sysmis) => 3.00
2403 max.4(1, 2, 3, $sysmis) => sysmis
2405 evaluate.sps:11.17-11.30: error: DEBUG EVALUATE: For MAX(number[, number]...)
2406 with 3 arguments, at most 3 (not 4) may be required to be valid.
2407 11 | DEBUG EVALUATE /max.4(1, 2, 3).
2410 max.4(1, 2, 3) => error
2412 max("2", "3", "5", "1", "4") => "5"
2414 max("1", "2") => "2"
2418 min(1, 2, 3, 4, 5) => 1.00
2420 min(1, $sysmis, 2, 3, $sysmis, 4, 5) => 1.00
2424 evaluate.sps:20.17-20.20: error: DEBUG EVALUATE: Function invocation min() does
2425 not match any known function. Candidates are:
2426 MIN(number[, number]...)
2427 MIN(string[, string]...).
2428 20 | DEBUG EVALUATE /min().
2435 min(1, $sysmis) => 1.00
2437 min(1, 2, 3, $sysmis) => 1.00
2439 min.4(1, 2, 3, $sysmis) => sysmis
2441 evaluate.sps:25.17-25.30: error: DEBUG EVALUATE: For MIN(number[, number]...)
2442 with 3 arguments, at most 3 (not 4) may be required to be valid.
2443 25 | DEBUG EVALUATE /min.4(1, 2, 3).
2446 min.4(1, 2, 3) => error
2448 min("2", "3", "5", "1", "4") => "1"
2450 min("1", "2") => "1"
2457 AT_SETUP([expressions - CFVAR MEAN MEDIAN])
2458 AT_KEYWORDS([expression expressions evaluate])
2459 AT_DATA([evaluate-base.sps], [dnl
2461 DEBUG EVALUATE SET opt.
2463 DEBUG EVALUATE /cfvar(1, 2, 3, 4, 5).
2464 DEBUG EVALUATE /cfvar(1, $sysmis, 2, 3, $sysmis, 4, 5).
2465 DEBUG EVALUATE /cfvar(1, 2).
2466 DEBUG EVALUATE /cfvar(1).
2467 DEBUG EVALUATE /cfvar(1, $sysmis).
2468 DEBUG EVALUATE /cfvar(1, 2, 3, $sysmis).
2469 DEBUG EVALUATE /cfvar.4(1, 2, 3, $sysmis).
2470 DEBUG EVALUATE /cfvar.4(1, 2, 3).
2471 DEBUG EVALUATE /cfvar('x').
2472 DEBUG EVALUATE /cfvar('x', 1, 2, 3).
2474 DEBUG EVALUATE /mean(1, 2, 3, 4, 5).
2475 DEBUG EVALUATE /mean(1, $sysmis, 2, 3, $sysmis, 4, 5).
2476 DEBUG EVALUATE /mean(1, 2).
2477 DEBUG EVALUATE /mean().
2478 DEBUG EVALUATE /mean(1).
2479 DEBUG EVALUATE /mean(1, $sysmis).
2480 DEBUG EVALUATE /mean(1, 2, 3, $sysmis).
2481 DEBUG EVALUATE /mean.4(1, 2, 3, $sysmis).
2482 DEBUG EVALUATE /mean.4(1, 2, 3).
2484 DEBUG EVALUATE /median(1, 2, 3, 4, 5).
2485 DEBUG EVALUATE /median(2, 3, 4, 5, 1).
2486 DEBUG EVALUATE /median(2, 3, 4, 1, 5).
2487 DEBUG EVALUATE /median(2, 1, 4, 5, 3).
2488 DEBUG EVALUATE /median(1, 2, 3, 4).
2489 DEBUG EVALUATE /median(2, 3, 1, 4).
2490 DEBUG EVALUATE /median(2, 3, 4, 1).
2491 DEBUG EVALUATE /median(2, 1, 4, 3).
2492 DEBUG EVALUATE /median(1, $sysmis, 3, 4, 5).
2493 DEBUG EVALUATE /median(2, 3, 4, 5, $sysmis, 1).
2494 DEBUG EVALUATE /median($sysmis, $sysmis, $sysmis, 2, 3, 4, 1, 5).
2495 DEBUG EVALUATE /median(1, 2, 3).
2496 DEBUG EVALUATE /median(1).
2497 DEBUG EVALUATE /median(1, 2).
2498 DEBUG EVALUATE /median(1, 2, $sysmis).
2499 DEBUG EVALUATE /median(1, $sysmis, $sysmis).
2500 DEBUG EVALUATE /median($sysmis, $sysmis, $sysmis).
2501 DEBUG EVALUATE /median.3(1, 2, $sysmis).
2502 DEBUG EVALUATE /median.2(1, $sysmis).
2505 for opt in OPT NOOPT; do
2507 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
2508 AT_CHECK([pspp --testing-mode evaluate.sps], [1],
2509 [[cfvar(1, 2, 3, 4, 5) => 0.53
2511 cfvar(1, $sysmis, 2, 3, $sysmis, 4, 5) => 0.53
2515 evaluate.sps:7.17-7.24: error: DEBUG EVALUATE: Type mismatch invoking
2516 CFVAR(number, number[, number]...) as cfvar(number).
2517 7 | DEBUG EVALUATE /cfvar(1).
2522 cfvar(1, $sysmis) => sysmis
2524 cfvar(1, 2, 3, $sysmis) => 0.50
2526 cfvar.4(1, 2, 3, $sysmis) => sysmis
2528 evaluate.sps:11.17-11.32: error: DEBUG EVALUATE: For CFVAR(number, number[,
2529 number]...) with 3 arguments, at most 3 (not 4) may be required to be valid.
2530 11 | DEBUG EVALUATE /cfvar.4(1, 2, 3).
2533 cfvar.4(1, 2, 3) => error
2535 evaluate.sps:12.17-12.26: error: DEBUG EVALUATE: Type mismatch invoking
2536 CFVAR(number, number[, number]...) as cfvar(string).
2537 12 | DEBUG EVALUATE /cfvar('x').
2540 evaluate.sps:12.23-12.25: note: DEBUG EVALUATE: This argument has type 'string'
2541 but 'number' is required.
2542 12 | DEBUG EVALUATE /cfvar('x').
2547 evaluate.sps:13.17-13.35: error: DEBUG EVALUATE: Type mismatch invoking
2548 CFVAR(number, number[, number]...) as cfvar(string, number, number, number).
2549 13 | DEBUG EVALUATE /cfvar('x', 1, 2, 3).
2550 | ^~~~~~~~~~~~~~~~~~~
2552 cfvar('x', 1, 2, 3) => error
2554 mean(1, 2, 3, 4, 5) => 3.00
2556 mean(1, $sysmis, 2, 3, $sysmis, 4, 5) => 3.00
2560 evaluate.sps:18.17-18.21: error: DEBUG EVALUATE: Type mismatch invoking
2561 MEAN(number[, number]...) as mean().
2562 18 | DEBUG EVALUATE /mean().
2569 mean(1, $sysmis) => 1.00
2571 mean(1, 2, 3, $sysmis) => 2.00
2573 mean.4(1, 2, 3, $sysmis) => sysmis
2575 evaluate.sps:23.17-23.31: error: DEBUG EVALUATE: For MEAN(number[, number]...)
2576 with 3 arguments, at most 3 (not 4) may be required to be valid.
2577 23 | DEBUG EVALUATE /mean.4(1, 2, 3).
2580 mean.4(1, 2, 3) => error
2582 median(1, 2, 3, 4, 5) => 3.00
2584 median(2, 3, 4, 5, 1) => 3.00
2586 median(2, 3, 4, 1, 5) => 3.00
2588 median(2, 1, 4, 5, 3) => 3.00
2590 median(1, 2, 3, 4) => 2.50
2592 median(2, 3, 1, 4) => 2.50
2594 median(2, 3, 4, 1) => 2.50
2596 median(2, 1, 4, 3) => 2.50
2598 median(1, $sysmis, 3, 4, 5) => 3.50
2600 median(2, 3, 4, 5, $sysmis, 1) => 3.00
2602 median($sysmis, $sysmis, $sysmis, 2, 3, 4, 1, 5) => 3.00
2604 median(1, 2, 3) => 2.00
2608 median(1, 2) => 1.50
2610 median(1, 2, $sysmis) => 1.50
2612 median(1, $sysmis, $sysmis) => 1.00
2614 median($sysmis, $sysmis, $sysmis) => sysmis
2616 median.3(1, 2, $sysmis) => sysmis
2618 median.2(1, $sysmis) => sysmis
2623 AT_SETUP([expressions - SD SUM VARIANCE])
2624 AT_KEYWORDS([expression expressions evaluate])
2625 AT_DATA([evaluate-base.sps], [dnl
2627 DEBUG EVALUATE SET opt.
2629 DEBUG EVALUATE /sd(1, 2, 3, 4, 5).
2630 DEBUG EVALUATE /sd(1, $sysmis, 2, 3, $sysmis, 4, 5).
2631 DEBUG EVALUATE /sd(1, 2).
2632 DEBUG EVALUATE /sd(1).
2633 DEBUG EVALUATE /sd(1, $sysmis).
2634 DEBUG EVALUATE /sd(1, 2, 3, $sysmis).
2635 DEBUG EVALUATE /sd.4(1, 2, 3, $sysmis).
2636 DEBUG EVALUATE /sd.4(1, 2, 3).
2637 DEBUG EVALUATE /sd('x').
2638 DEBUG EVALUATE /sd('x', 1, 2, 3).
2639 DEBUG EVALUATE (a=1)(b=2)(c=3)(d=4)(e=5)(f=6)(g=7)/sd(a TO c).
2641 DEBUG EVALUATE /sum(1, 2, 3, 4, 5).
2642 DEBUG EVALUATE /sum(1, $sysmis, 2, 3, $sysmis, 4, 5).
2643 DEBUG EVALUATE /sum(1, 2).
2644 DEBUG EVALUATE /sum().
2645 DEBUG EVALUATE /sum(1).
2646 DEBUG EVALUATE /sum(1, $sysmis).
2647 DEBUG EVALUATE /sum(1, 2, 3, $sysmis).
2648 DEBUG EVALUATE /sum.4(1, 2, 3, $sysmis).
2649 DEBUG EVALUATE /sum.4(1, 2, 3).
2650 DEBUG EVALUATE (a=1)(b=2)(c=3)(d=4)(e=5)(f=6)(g=7)/sum(b TO F).
2652 DEBUG EVALUATE /variance(1, 2, 3, 4, 5).
2653 DEBUG EVALUATE /variance(1, $sysmis, 2, 3, $sysmis, 4, 5).
2654 DEBUG EVALUATE /variance(1, 2).
2655 DEBUG EVALUATE /variance(1).
2656 DEBUG EVALUATE /variance(1, $sysmis).
2657 DEBUG EVALUATE /variance(1, 2, 3, $sysmis).
2658 DEBUG EVALUATE /variance.4(1, 2, 3, $sysmis).
2659 DEBUG EVALUATE /variance.4(1, 2, 3).
2660 DEBUG EVALUATE /variance('x').
2661 DEBUG EVALUATE /variance('x', 1, 2, 3).
2662 DEBUG EVALUATE (a=1)(b=2)(c=3)(d=4)(e=5)(f=6)(g=7)/variance(a TO e).
2665 for opt in OPT NOOPT; do
2667 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
2668 AT_CHECK([pspp --testing-mode evaluate.sps], [1],
2669 [[sd(1, 2, 3, 4, 5) => 1.58
2671 sd(1, $sysmis, 2, 3, $sysmis, 4, 5) => 1.58
2675 evaluate.sps:7.17-7.21: error: DEBUG EVALUATE: Type mismatch invoking
2676 SD(number, number[, number]...) as sd(number).
2677 7 | DEBUG EVALUATE /sd(1).
2682 sd(1, $sysmis) => sysmis
2684 sd(1, 2, 3, $sysmis) => 1.00
2686 sd.4(1, 2, 3, $sysmis) => sysmis
2688 evaluate.sps:11.17-11.29: error: DEBUG EVALUATE: For SD(number, number[,
2689 number]...) with 3 arguments, at most 3 (not 4) may be required to be valid.
2690 11 | DEBUG EVALUATE /sd.4(1, 2, 3).
2693 sd.4(1, 2, 3) => error
2695 evaluate.sps:12.17-12.23: error: DEBUG EVALUATE: Type mismatch invoking
2696 SD(number, number[, number]...) as sd(string).
2697 12 | DEBUG EVALUATE /sd('x').
2700 evaluate.sps:12.20-12.22: note: DEBUG EVALUATE: This argument has type 'string'
2701 but 'number' is required.
2702 12 | DEBUG EVALUATE /sd('x').
2707 evaluate.sps:13.17-13.32: error: DEBUG EVALUATE: Type mismatch invoking
2708 SD(number, number[, number]...) as sd(string, number, number, number).
2709 13 | DEBUG EVALUATE /sd('x', 1, 2, 3).
2712 sd('x', 1, 2, 3) => error
2716 sum(1, 2, 3, 4, 5) => 15.00
2718 sum(1, $sysmis, 2, 3, $sysmis, 4, 5) => 15.00
2722 evaluate.sps:19.17-19.20: error: DEBUG EVALUATE: Type mismatch invoking
2723 SUM(number[, number]...) as sum().
2724 19 | DEBUG EVALUATE /sum().
2731 sum(1, $sysmis) => 1.00
2733 sum(1, 2, 3, $sysmis) => 6.00
2735 sum.4(1, 2, 3, $sysmis) => sysmis
2737 evaluate.sps:24.17-24.30: error: DEBUG EVALUATE: For SUM(number[, number]...)
2738 with 3 arguments, at most 3 (not 4) may be required to be valid.
2739 24 | DEBUG EVALUATE /sum.4(1, 2, 3).
2742 sum.4(1, 2, 3) => error
2744 sum(b TO F) => 20.00
2746 variance(1, 2, 3, 4, 5) => 2.50
2748 variance(1, $sysmis, 2, 3, $sysmis, 4, 5) => 2.50
2750 variance(1, 2) => 0.50
2752 evaluate.sps:30.17-30.27: error: DEBUG EVALUATE: Type mismatch invoking
2753 VARIANCE(number, number[, number]...) as variance(number).
2754 30 | DEBUG EVALUATE /variance(1).
2757 variance(1) => error
2759 variance(1, $sysmis) => sysmis
2761 variance(1, 2, 3, $sysmis) => 1.00
2763 variance.4(1, 2, 3, $sysmis) => sysmis
2765 evaluate.sps:34.17-34.35: error: DEBUG EVALUATE: For VARIANCE(number, number[,
2766 number]...) with 3 arguments, at most 3 (not 4) may be required to be valid.
2767 34 | DEBUG EVALUATE /variance.4(1, 2, 3).
2768 | ^~~~~~~~~~~~~~~~~~~
2770 variance.4(1, 2, 3) => error
2772 evaluate.sps:35.17-35.29: error: DEBUG EVALUATE: Type mismatch invoking
2773 VARIANCE(number, number[, number]...) as variance(string).
2774 35 | DEBUG EVALUATE /variance('x').
2777 evaluate.sps:35.26-35.28: note: DEBUG EVALUATE: This argument has type 'string'
2778 but 'number' is required.
2779 35 | DEBUG EVALUATE /variance('x').
2782 variance('x') => error
2784 evaluate.sps:36.17-36.38: error: DEBUG EVALUATE: Type mismatch invoking
2785 VARIANCE(number, number[, number]...) as variance(string, number, number,
2787 36 | DEBUG EVALUATE /variance('x', 1, 2, 3).
2788 | ^~~~~~~~~~~~~~~~~~~~~~
2790 variance('x', 1, 2, 3) => error
2792 variance(a TO e) => 2.50
2797 AT_SETUP([expressions - CONCAT])
2798 AT_KEYWORDS([expression expressions evaluate])
2799 AT_DATA([evaluate-base.sps], [dnl
2801 DEBUG EVALUATE SET opt.
2803 DEBUG EVALUATE /concat('').
2804 DEBUG EVALUATE /concat('a', 'b').
2805 DEBUG EVALUATE /concat('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h').
2806 DEBUG EVALUATE /concat('abcdefgh', 'ijklmnopq').
2807 DEBUG EVALUATE /concat('a', 1).
2808 DEBUG EVALUATE /concat(1, 2).
2811 for opt in OPT NOOPT; do
2813 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
2814 AT_CHECK([pspp --testing-mode evaluate.sps], [1],
2817 concat('a', 'b') => "ab"
2819 concat('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h') => "abcdefgh"
2821 concat('abcdefgh', 'ijklmnopq') => "abcdefghijklmnopq"
2823 evaluate.sps:8.17-8.30: error: DEBUG EVALUATE: Type mismatch invoking
2824 CONCAT(string[, string]...) as concat(string, number).
2825 8 | DEBUG EVALUATE /concat('a', 1).
2828 concat('a', 1) => error
2830 evaluate.sps:9.17-9.28: error: DEBUG EVALUATE: Type mismatch invoking
2831 CONCAT(string[, string]...) as concat(number, number).
2832 9 | DEBUG EVALUATE /concat(1, 2).
2835 concat(1, 2) => error
2840 AT_SETUP([expressions - INDEX])
2841 AT_KEYWORDS([expression expressions evaluate])
2842 AT_DATA([evaluate-base.sps], [dnl
2844 DEBUG EVALUATE SET opt.
2846 DEBUG EVALUATE /index('abcbcde', 'bc').
2847 DEBUG EVALUATE /index('abcbcde', 'bcd').
2848 DEBUG EVALUATE /index('abcbcde', 'bcbc').
2849 DEBUG EVALUATE /index('abcdefgh', 'abc').
2850 DEBUG EVALUATE /index('abcdefgh', 'bcd').
2851 DEBUG EVALUATE /index('abcdefgh', 'cde').
2852 DEBUG EVALUATE /index('abcdefgh', 'def').
2853 DEBUG EVALUATE /index('abcdefgh', 'efg').
2854 DEBUG EVALUATE /index('abcdefgh', 'fgh').
2855 DEBUG EVALUATE /index('abcdefgh', 'fghi').
2856 DEBUG EVALUATE /index('abcdefgh', 'x').
2857 DEBUG EVALUATE /index('abcdefgh', 'abch').
2858 DEBUG EVALUATE /index('banana', 'na').
2859 DEBUG EVALUATE /index('banana', 'ana').
2860 DEBUG EVALUATE /index('', 'x').
2861 DEBUG EVALUATE /index('x', '').
2862 DEBUG EVALUATE /index('', '').
2863 DEBUG EVALUATE /index('abcdefgh', '').
2864 DEBUG EVALUATE /index('abcdefgh', 'alkjsfdjlskalkjfa').
2866 DEBUG EVALUATE /index('abcbcde', 'bc', 1).
2867 DEBUG EVALUATE /index('abcbcde', 'dc', 1).
2868 DEBUG EVALUATE /index('abcbcde', 'abc', 1).
2869 DEBUG EVALUATE /index('abcbcde', 'bc', 2).
2870 DEBUG EVALUATE /index('abcbcde', 'dc', 2).
2871 DEBUG EVALUATE /index('abcbcde', 'abc', 1).
2872 DEBUG EVALUATE /index('abcbcde', 'bccb', 2).
2873 DEBUG EVALUATE /index('abcbcde', 'bcbc', 2).
2874 DEBUG EVALUATE /index('abcbcde', 'bcbc', $sysmis).
2875 DEBUG EVALUATE /index('abcbcde', 'bcbc', 3).
2876 DEBUG EVALUATE /index('abcbcde', '', 1).
2877 DEBUG EVALUATE /index('', '', 1).
2880 for opt in OPT NOOPT; do
2882 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
2883 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
2884 index('abcbcde', 'bc') => 2.00
2886 index('abcbcde', 'bcd') => 4.00
2888 index('abcbcde', 'bcbc') => 2.00
2890 index('abcdefgh', 'abc') => 1.00
2892 index('abcdefgh', 'bcd') => 2.00
2894 index('abcdefgh', 'cde') => 3.00
2896 index('abcdefgh', 'def') => 4.00
2898 index('abcdefgh', 'efg') => 5.00
2900 index('abcdefgh', 'fgh') => 6.00
2902 index('abcdefgh', 'fghi') => 0.00
2904 index('abcdefgh', 'x') => 0.00
2906 index('abcdefgh', 'abch') => 0.00
2908 index('banana', 'na') => 3.00
2910 index('banana', 'ana') => 2.00
2912 index('', 'x') => 0.00
2914 index('x', '') => 1.00
2916 index('', '') => 1.00
2918 index('abcdefgh', '') => 1.00
2920 index('abcdefgh', 'alkjsfdjlskalkjfa') => 0.00
2922 index('abcbcde', 'bc', 1) => 2.00
2924 index('abcbcde', 'dc', 1) => 3.00
2926 index('abcbcde', 'abc', 1) => 1.00
2928 index('abcbcde', 'bc', 2) => 2.00
2930 index('abcbcde', 'dc', 2) => 0.00
2932 index('abcbcde', 'abc', 1) => 1.00
2934 index('abcbcde', 'bccb', 2) => 2.00
2936 index('abcbcde', 'bcbc', 2) => 2.00
2938 index('abcbcde', 'bcbc', $sysmis) => sysmis
2940 evaluate.sps:33.17-33.43: error: DEBUG EVALUATE: INDEX needle length argument
2941 must evenly divide the length of the needles argument.
2942 33 | DEBUG EVALUATE /index('abcbcde', 'bcbc', 3).
2943 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
2945 evaluate.sps:33.34-33.39: note: DEBUG EVALUATE: The needles argument has length
2947 33 | DEBUG EVALUATE /index('abcbcde', 'bcbc', 3).
2950 evaluate.sps:33.42: note: DEBUG EVALUATE: The needle length argument has value
2952 33 | DEBUG EVALUATE /index('abcbcde', 'bcbc', 3).
2955 index('abcbcde', 'bcbc', 3) => sysmis
2957 index('abcbcde', '', 1) => 0.00
2959 index('', '', 1) => 0.00
2964 AT_SETUP([expressions - RINDEX])
2965 AT_KEYWORDS([expression expressions evaluate])
2966 AT_DATA([evaluate-base.sps], [dnl
2968 DEBUG EVALUATE SET opt.
2970 DEBUG EVALUATE /rindex('abcbcde', 'bc').
2971 DEBUG EVALUATE /rindex('abcbcde', 'bcd').
2972 DEBUG EVALUATE /rindex('abcbcde', 'bcbc').
2973 DEBUG EVALUATE /rindex('abcdefgh', 'abc').
2974 DEBUG EVALUATE /rindex('abcdefgh', 'bcd').
2975 DEBUG EVALUATE /rindex('abcdefgh', 'cde').
2976 DEBUG EVALUATE /rindex('abcdefgh', 'def').
2977 DEBUG EVALUATE /rindex('abcdefgh', 'efg').
2978 DEBUG EVALUATE /rindex('abcdefgh', 'fgh').
2979 DEBUG EVALUATE /rindex('abcdefgh', 'fghi').
2980 DEBUG EVALUATE /rindex('abcdefgh', 'x').
2981 DEBUG EVALUATE /rindex('abcdefgh', 'abch').
2982 DEBUG EVALUATE /rindex('banana', 'na').
2983 DEBUG EVALUATE /rindex('banana', 'ana').
2984 DEBUG EVALUATE /rindex('', 'x').
2985 DEBUG EVALUATE /rindex('x', '').
2986 DEBUG EVALUATE /rindex('', '').
2987 DEBUG EVALUATE /rindex('abcdefgh', '').
2988 DEBUG EVALUATE /rindex('abcdefgh', 'alkjsfdjlskalkjfa').
2990 DEBUG EVALUATE /rindex('abcbcde', 'bc', 1).
2991 DEBUG EVALUATE /rindex('abcbcde', 'dc', 1).
2992 DEBUG EVALUATE /rindex('abcbcde', 'abc', 1).
2993 DEBUG EVALUATE /rindex('abcbcde', 'bc', 2).
2994 DEBUG EVALUATE /rindex('abcbcde', 'dc', 2).
2995 DEBUG EVALUATE /rindex('abcbcde', 'abc', 1).
2996 DEBUG EVALUATE /rindex('abcbcde', 'bccb', 2).
2997 DEBUG EVALUATE /rindex('abcbcde', 'bcbc', 2).
2998 DEBUG EVALUATE /rindex('abcbcde', 'bcbc', 0).
2999 DEBUG EVALUATE /rindex('abcbcde', 'bcbc', $sysmis).
3000 DEBUG EVALUATE /rindex('abcbcde', 'bcbcg', 2).
3001 DEBUG EVALUATE /rindex('abcbcde', 'bcbcg', $sysmis).
3002 DEBUG EVALUATE /rindex('abcbcde', 'bcbcg', 'x').
3003 DEBUG EVALUATE /rindex(1, 'bcdfkjl', 2).
3004 DEBUG EVALUATE /rindex('aksj', 2, 2).
3005 DEBUG EVALUATE /rindex(1, 2, 3).
3006 DEBUG EVALUATE /rindex(1, 2, '3').
3007 DEBUG EVALUATE /rindex('abcbcde', '', 1).
3008 DEBUG EVALUATE /rindex('', '', 1).
3011 for opt in OPT NOOPT; do
3013 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3014 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3015 rindex('abcbcde', 'bc') => 4.00
3017 rindex('abcbcde', 'bcd') => 4.00
3019 rindex('abcbcde', 'bcbc') => 2.00
3021 rindex('abcdefgh', 'abc') => 1.00
3023 rindex('abcdefgh', 'bcd') => 2.00
3025 rindex('abcdefgh', 'cde') => 3.00
3027 rindex('abcdefgh', 'def') => 4.00
3029 rindex('abcdefgh', 'efg') => 5.00
3031 rindex('abcdefgh', 'fgh') => 6.00
3033 rindex('abcdefgh', 'fghi') => 0.00
3035 rindex('abcdefgh', 'x') => 0.00
3037 rindex('abcdefgh', 'abch') => 0.00
3039 rindex('banana', 'na') => 5.00
3041 rindex('banana', 'ana') => 4.00
3043 rindex('', 'x') => 0.00
3045 rindex('x', '') => 2.00
3047 rindex('', '') => 1.00
3049 rindex('abcdefgh', '') => 9.00
3051 rindex('abcdefgh', 'alkjsfdjlskalkjfa') => 0.00
3053 rindex('abcbcde', 'bc', 1) => 5.00
3055 rindex('abcbcde', 'dc', 1) => 6.00
3057 rindex('abcbcde', 'abc', 1) => 5.00
3059 rindex('abcbcde', 'bc', 2) => 4.00
3061 rindex('abcbcde', 'dc', 2) => 0.00
3063 rindex('abcbcde', 'abc', 1) => 5.00
3065 rindex('abcbcde', 'bccb', 2) => 4.00
3067 rindex('abcbcde', 'bcbc', 2) => 4.00
3069 evaluate.sps:32.17-32.44: error: DEBUG EVALUATE: RINDEX needle length argument
3070 must evenly divide the length of the needles argument.
3071 32 | DEBUG EVALUATE /rindex('abcbcde', 'bcbc', 0).
3072 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
3074 evaluate.sps:32.35-32.40: note: DEBUG EVALUATE: The needles argument has length
3076 32 | DEBUG EVALUATE /rindex('abcbcde', 'bcbc', 0).
3079 evaluate.sps:32.43: note: DEBUG EVALUATE: The needle length argument has value
3081 32 | DEBUG EVALUATE /rindex('abcbcde', 'bcbc', 0).
3084 rindex('abcbcde', 'bcbc', 0) => sysmis
3086 rindex('abcbcde', 'bcbc', $sysmis) => sysmis
3088 evaluate.sps:34.17-34.45: error: DEBUG EVALUATE: RINDEX needle length argument
3089 must evenly divide the length of the needles argument.
3090 34 | DEBUG EVALUATE /rindex('abcbcde', 'bcbcg', 2).
3091 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3093 evaluate.sps:34.35-34.41: note: DEBUG EVALUATE: The needles argument has length
3095 34 | DEBUG EVALUATE /rindex('abcbcde', 'bcbcg', 2).
3098 evaluate.sps:34.44: note: DEBUG EVALUATE: The needle length argument has value
3100 34 | DEBUG EVALUATE /rindex('abcbcde', 'bcbcg', 2).
3103 rindex('abcbcde', 'bcbcg', 2) => sysmis
3105 rindex('abcbcde', 'bcbcg', $sysmis) => sysmis
3107 evaluate.sps:36.17-36.47: error: DEBUG EVALUATE: Function invocation
3108 rindex(string, string, string) does not match any known function. Candidates
3110 RINDEX(string, string)
3111 RINDEX(string, string, integer).
3112 36 | DEBUG EVALUATE /rindex('abcbcde', 'bcbcg', 'x').
3113 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3115 rindex('abcbcde', 'bcbcg', 'x') => error
3117 evaluate.sps:37.17-37.39: error: DEBUG EVALUATE: Function invocation
3118 rindex(number, string, number) does not match any known function. Candidates
3120 RINDEX(string, string)
3121 RINDEX(string, string, integer).
3122 37 | DEBUG EVALUATE /rindex(1, 'bcdfkjl', 2).
3123 | ^~~~~~~~~~~~~~~~~~~~~~~
3125 rindex(1, 'bcdfkjl', 2) => error
3127 evaluate.sps:38.17-38.36: error: DEBUG EVALUATE: Function invocation
3128 rindex(string, number, number) does not match any known function. Candidates
3130 RINDEX(string, string)
3131 RINDEX(string, string, integer).
3132 38 | DEBUG EVALUATE /rindex('aksj', 2, 2).
3133 | ^~~~~~~~~~~~~~~~~~~~
3135 rindex('aksj', 2, 2) => error
3137 evaluate.sps:39.17-39.31: error: DEBUG EVALUATE: Function invocation
3138 rindex(number, number, number) does not match any known function. Candidates
3140 RINDEX(string, string)
3141 RINDEX(string, string, integer).
3142 39 | DEBUG EVALUATE /rindex(1, 2, 3).
3145 rindex(1, 2, 3) => error
3147 evaluate.sps:40.17-40.33: error: DEBUG EVALUATE: Function invocation
3148 rindex(number, number, string) does not match any known function. Candidates
3150 RINDEX(string, string)
3151 RINDEX(string, string, integer).
3152 40 | DEBUG EVALUATE /rindex(1, 2, '3').
3155 rindex(1, 2, '3') => error
3157 rindex('abcbcde', '', 1) => 0.00
3159 rindex('', '', 1) => 0.00
3164 AT_SETUP([expressions - LENGTH])
3165 AT_KEYWORDS([expression expressions evaluate])
3166 AT_DATA([evaluate-base.sps], [dnl
3168 DEBUG EVALUATE SET opt.
3170 DEBUG EVALUATE /length('').
3171 DEBUG EVALUATE /length('a').
3172 DEBUG EVALUATE /length('xy').
3173 DEBUG EVALUATE /length('adsf ').
3174 DEBUG EVALUATE /length('abcdefghijkl').
3175 DEBUG EVALUATE /length(0).
3176 DEBUG EVALUATE /length($sysmis).
3179 for opt in OPT NOOPT; do
3181 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3182 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3187 length('xy') => 2.00
3189 length('adsf ') => 8.00
3191 length('abcdefghijkl') => 12.00
3193 evaluate.sps:9.17-9.25: error: DEBUG EVALUATE: Type mismatch invoking
3194 LENGTH(string) as length(number).
3195 9 | DEBUG EVALUATE /length(0).
3198 evaluate.sps:9.24: note: DEBUG EVALUATE: This argument has type 'number' but
3199 'string' is required.
3200 9 | DEBUG EVALUATE /length(0).
3205 evaluate.sps:10.17-10.31: error: DEBUG EVALUATE: Type mismatch invoking
3206 LENGTH(string) as length(number).
3207 10 | DEBUG EVALUATE /length($sysmis).
3210 evaluate.sps:10.24-10.30: note: DEBUG EVALUATE: This argument has type 'number'
3211 but 'string' is required.
3212 10 | DEBUG EVALUATE /length($sysmis).
3215 length($sysmis) => error
3220 AT_SETUP([expressions - LOWER])
3221 AT_KEYWORDS([expression expressions evaluate])
3222 AT_DATA([evaluate-base.sps], [dnl
3224 DEBUG EVALUATE SET opt.
3226 DEBUG EVALUATE /lower('ABCDEFGHIJKLMNOPQRSTUVWXYZ!@%&*089').
3227 DEBUG EVALUATE /lower('').
3228 DEBUG EVALUATE /lower(1).
3231 for opt in OPT NOOPT; do
3233 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3234 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3235 lower('ABCDEFGHIJKLMNOPQRSTUVWXYZ!@%&*089') => "abcdefghijklmnopqrstuvwxyz!
3240 evaluate.sps:6.17-6.24: error: DEBUG EVALUATE: Type mismatch invoking
3241 LOWER(string) as lower(number).
3242 6 | DEBUG EVALUATE /lower(1).
3245 evaluate.sps:6.23: note: DEBUG EVALUATE: This argument has type 'number' but
3246 'string' is required.
3247 6 | DEBUG EVALUATE /lower(1).
3255 AT_SETUP([expressions - REPLACE])
3256 AT_KEYWORDS([expression expressions evaluate])
3257 AT_DATA([evaluate-base.sps], [dnl
3259 DEBUG EVALUATE SET opt.
3260 DEBUG EVALUATE /replace('banana', 'an', 'AN').
3261 DEBUG EVALUATE /replace('banana', 'an', 'a').
3262 DEBUG EVALUATE /replace('banana', 'an', '').
3263 DEBUG EVALUATE /replace('banana', 'na', '').
3264 DEBUG EVALUATE /replace('banana', 'ba', 'BA').
3265 DEBUG EVALUATE /replace('banana', 'na', 'xyzzy').
3266 DEBUG EVALUATE /replace('banana', 'an', 'xyzzy', 1).
3267 DEBUG EVALUATE /replace('banana', 'an', 'xyzzy', 1.5).
3268 DEBUG EVALUATE /replace('banana', 'bananana', 'xyzzy').
3269 DEBUG EVALUATE /replace('banana', '', 'xyzzy').
3270 DEBUG EVALUATE /replace('banana', 'ba', '', 0).
3271 DEBUG EVALUATE /replace('banana', 'ba', '', -1).
3272 DEBUG EVALUATE /replace('banana', 'ba', '', $sysmis).
3275 for opt in OPT NOOPT; do
3277 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3278 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3279 replace('banana', 'an', 'AN') => "bANANa"
3281 replace('banana', 'an', 'a') => "baaa"
3283 replace('banana', 'an', '') => "ba"
3285 replace('banana', 'na', '') => "ba"
3287 replace('banana', 'ba', 'BA') => "BAnana"
3289 replace('banana', 'na', 'xyzzy') => "baxyzzyxyzzy"
3291 replace('banana', 'an', 'xyzzy', 1) => "bxyzzyana"
3293 evaluate.sps:10.50-10.52: error: DEBUG EVALUATE: Treating unexpected non-
3294 integer value 1.5 as missing.
3295 10 | DEBUG EVALUATE /replace('banana', 'an', 'xyzzy', 1.5).
3298 replace('banana', 'an', 'xyzzy', 1.5) => "banana"
3300 replace('banana', 'bananana', 'xyzzy') => "banana"
3302 replace('banana', '', 'xyzzy') => "banana"
3304 replace('banana', 'ba', '', 0) => "banana"
3306 replace('banana', 'ba', '', -1) => "banana"
3308 replace('banana', 'ba', '', $sysmis) => "banana"
3313 AT_SETUP([expressions - LPAD])
3314 AT_KEYWORDS([expression expressions evaluate])
3315 AT_DATA([evaluate-base.sps], [dnl
3317 DEBUG EVALUATE SET opt.
3319 DEBUG EVALUATE /lpad('abc', 0).
3320 DEBUG EVALUATE /lpad('abc', 2).
3321 DEBUG EVALUATE /lpad('abc', 3).
3322 DEBUG EVALUATE /lpad('abc', 10).
3324 DEBUG EVALUATE /lpad('abc', -1).
3325 DEBUG EVALUATE /lpad('abc', 32768).
3326 DEBUG EVALUATE /lpad('abc', $sysmis).
3328 DEBUG EVALUATE /lpad('abc', -1, '*').
3329 DEBUG EVALUATE /lpad('abc', 0, '*').
3330 DEBUG EVALUATE /lpad('abc', 2, '*').
3331 DEBUG EVALUATE /lpad('abc', 3, '*').
3332 DEBUG EVALUATE /lpad('abc', 10, '*').
3334 DEBUG EVALUATE /lpad('abc', 5, 'de').
3335 DEBUG EVALUATE /lpad('abc', 6, 'de').
3336 DEBUG EVALUATE /lpad('abc', 7, 'de').
3337 DEBUG EVALUATE /lpad('abc', 8, 'de').
3338 DEBUG EVALUATE /lpad('abc', 9, 'de').
3340 DEBUG EVALUATE /lpad('abc', 32768, '*').
3341 DEBUG EVALUATE /lpad('abc', $sysmis, '*').
3342 DEBUG EVALUATE /lpad('abc', $sysmis, '').
3343 DEBUG EVALUATE /lpad('abc', $sysmis, 'xy').
3344 DEBUG EVALUATE /lpad(0, 10).
3345 DEBUG EVALUATE /lpad('abc', 'def').
3346 DEBUG EVALUATE /lpad(0, 10, ' ').
3347 DEBUG EVALUATE /lpad('abc', 'def', ' ').
3348 DEBUG EVALUATE /lpad('x', 5, 0).
3349 DEBUG EVALUATE /lpad('x', 5, 2).
3352 for opt in OPT NOOPT; do
3354 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3355 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3356 lpad('abc', 0) => "abc"
3358 lpad('abc', 2) => "abc"
3360 lpad('abc', 3) => "abc"
3362 lpad('abc', 10) => " abc"
3364 evaluate.sps:9.17-9.31: error: DEBUG EVALUATE: The length argument to LPAD must
3365 be between 0 and 32767.
3366 9 | DEBUG EVALUATE /lpad('abc', -1).
3369 evaluate.sps:9.29-9.30: note: DEBUG EVALUATE: The length argument is -1.
3370 9 | DEBUG EVALUATE /lpad('abc', -1).
3373 lpad('abc', -1) => "abc"
3375 evaluate.sps:10.17-10.34: error: DEBUG EVALUATE: The length argument to LPAD
3376 must be between 0 and 32767.
3377 10 | DEBUG EVALUATE /lpad('abc', 32768).
3378 | ^~~~~~~~~~~~~~~~~~
3380 evaluate.sps:10.29-10.33: note: DEBUG EVALUATE: The length argument is 32768.
3381 10 | DEBUG EVALUATE /lpad('abc', 32768).
3384 lpad('abc', 32768) => "abc"
3386 lpad('abc', $sysmis) => "abc"
3388 evaluate.sps:13.17-13.36: error: DEBUG EVALUATE: The length argument to LPAD
3389 must be between 0 and 32767.
3390 13 | DEBUG EVALUATE /lpad('abc', -1, '*').
3391 | ^~~~~~~~~~~~~~~~~~~~
3393 evaluate.sps:13.29-13.30: note: DEBUG EVALUATE: The length argument is -1.
3394 13 | DEBUG EVALUATE /lpad('abc', -1, '*').
3397 lpad('abc', -1, '*') => "abc"
3399 lpad('abc', 0, '*') => "abc"
3401 lpad('abc', 2, '*') => "abc"
3403 lpad('abc', 3, '*') => "abc"
3405 lpad('abc', 10, '*') => "*******abc"
3407 lpad('abc', 5, 'de') => "deabc"
3409 lpad('abc', 6, 'de') => "deabc"
3411 lpad('abc', 7, 'de') => "dedeabc"
3413 lpad('abc', 8, 'de') => "dedeabc"
3415 lpad('abc', 9, 'de') => "dededeabc"
3417 evaluate.sps:25.17-25.39: error: DEBUG EVALUATE: The length argument to LPAD
3418 must be between 0 and 32767.
3419 25 | DEBUG EVALUATE /lpad('abc', 32768, '*').
3420 | ^~~~~~~~~~~~~~~~~~~~~~~
3422 evaluate.sps:25.29-25.33: note: DEBUG EVALUATE: The length argument is 32768.
3423 25 | DEBUG EVALUATE /lpad('abc', 32768, '*').
3426 lpad('abc', 32768, '*') => "abc"
3428 lpad('abc', $sysmis, '*') => "abc"
3430 lpad('abc', $sysmis, '') => "abc"
3432 lpad('abc', $sysmis, 'xy') => "abc"
3434 evaluate.sps:29.17-29.27: error: DEBUG EVALUATE: Function invocation
3435 lpad(number, number) does not match any known function. Candidates are:
3436 LPAD(string, integer)
3437 LPAD(string, integer, string).
3438 29 | DEBUG EVALUATE /lpad(0, 10).
3441 lpad(0, 10) => error
3443 evaluate.sps:30.17-30.34: error: DEBUG EVALUATE: Function invocation
3444 lpad(string, string) does not match any known function. Candidates are:
3445 LPAD(string, integer)
3446 LPAD(string, integer, string).
3447 30 | DEBUG EVALUATE /lpad('abc', 'def').
3448 | ^~~~~~~~~~~~~~~~~~
3450 lpad('abc', 'def') => error
3452 evaluate.sps:31.17-31.32: error: DEBUG EVALUATE: Function invocation
3453 lpad(number, number, string) does not match any known function. Candidates
3455 LPAD(string, integer)
3456 LPAD(string, integer, string).
3457 31 | DEBUG EVALUATE /lpad(0, 10, ' ').
3460 lpad(0, 10, ' ') => error
3462 evaluate.sps:32.17-32.39: error: DEBUG EVALUATE: Function invocation
3463 lpad(string, string, string) does not match any known function. Candidates
3465 LPAD(string, integer)
3466 LPAD(string, integer, string).
3467 32 | DEBUG EVALUATE /lpad('abc', 'def', ' ').
3468 | ^~~~~~~~~~~~~~~~~~~~~~~
3470 lpad('abc', 'def', ' ') => error
3472 evaluate.sps:33.17-33.31: error: DEBUG EVALUATE: Function invocation
3473 lpad(string, number, number) does not match any known function. Candidates
3475 LPAD(string, integer)
3476 LPAD(string, integer, string).
3477 33 | DEBUG EVALUATE /lpad('x', 5, 0).
3480 lpad('x', 5, 0) => error
3482 evaluate.sps:34.17-34.31: error: DEBUG EVALUATE: Function invocation
3483 lpad(string, number, number) does not match any known function. Candidates
3485 LPAD(string, integer)
3486 LPAD(string, integer, string).
3487 34 | DEBUG EVALUATE /lpad('x', 5, 2).
3490 lpad('x', 5, 2) => error
3495 AT_SETUP([expressions - NUMBER])
3496 AT_KEYWORDS([expression expressions evaluate])
3497 AT_DATA([evaluate-base.sps], [dnl
3499 DEBUG EVALUATE SET opt.
3500 DEBUG EVALUATE /number("123", f3.0).
3501 DEBUG EVALUATE /number(" 123", f3.0).
3502 DEBUG EVALUATE /number("123", f3.1).
3503 DEBUG EVALUATE /number(" ", f3.1).
3504 DEBUG EVALUATE /number("123", a8).
3505 dnl CCA is not an input format:
3506 DEBUG EVALUATE /number("123", cca1.2).
3509 for opt in OPT NOOPT; do
3511 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3512 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3513 number("123", f3.0) => 123.00
3515 number(" 123", f3.0) => 12.00
3517 number("123", f3.1) => 12.30
3519 number(" ", f3.1) => sysmis
3521 evaluate.sps:7.17-7.33: error: DEBUG EVALUATE: Type mismatch invoking
3522 NUMBER(string, num_input_format) as number(string, format).
3523 7 | DEBUG EVALUATE /number("123", a8).
3526 evaluate.sps:7.31-7.32: note: DEBUG EVALUATE: Numeric variables are not
3527 compatible with string format A8.
3528 7 | DEBUG EVALUATE /number("123", a8).
3531 number("123", a8) => error
3533 evaluate.sps:8.17-8.37: error: DEBUG EVALUATE: Type mismatch invoking
3534 NUMBER(string, num_input_format) as number(string, format).
3535 8 | DEBUG EVALUATE /number("123", cca1.2).
3536 | ^~~~~~~~~~~~~~~~~~~~~
3538 evaluate.sps:8.31-8.36: note: DEBUG EVALUATE: Format CCA1.2 may not be used for
3540 8 | DEBUG EVALUATE /number("123", cca1.2).
3543 number("123", cca1.2) => error
3548 AT_SETUP([expressions - LTRIM])
3549 AT_KEYWORDS([expression expressions evaluate])
3550 AT_DATA([evaluate-base.sps], [dnl
3552 DEBUG EVALUATE SET opt.
3553 DEBUG EVALUATE /ltrim(' abc').
3554 DEBUG EVALUATE /rtrim(' abc ').
3555 DEBUG EVALUATE /ltrim('abc').
3556 * The following string contains a tab.
3557 DEBUG EVALUATE /ltrim(' abc').
3558 DEBUG EVALUATE /ltrim(' ').
3559 DEBUG EVALUATE /ltrim('').
3560 DEBUG EVALUATE /ltrim(8).
3562 DEBUG EVALUATE /ltrim('***abc', '*').
3563 DEBUG EVALUATE /ltrim('abc', '*').
3564 DEBUG EVALUATE /ltrim('*abc', '*').
3565 DEBUG EVALUATE /ltrim('', '*').
3567 DEBUG EVALUATE /ltrim('abc', 'xy').
3568 DEBUG EVALUATE /ltrim('xyabc', 'xy').
3569 DEBUG EVALUATE /ltrim('xyxyabc', 'xy').
3571 DEBUG EVALUATE /ltrim(8, '*').
3572 DEBUG EVALUATE /ltrim(' x', 8).
3573 DEBUG EVALUATE /ltrim(8, 9).
3576 for opt in OPT NOOPT; do
3578 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3579 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3580 ltrim(' abc') => "abc"
3582 rtrim(' abc ') => " abc"
3584 ltrim('abc') => "abc"
3586 ltrim(' abc') => " abc"
3592 evaluate.sps:10.17-10.24: error: DEBUG EVALUATE: Function invocation
3593 ltrim(number) does not match any known function. Candidates are:
3595 LTRIM(string, string).
3596 10 | DEBUG EVALUATE /ltrim(8).
3601 ltrim('***abc', '*') => "abc"
3603 ltrim('abc', '*') => "abc"
3605 ltrim('*abc', '*') => "abc"
3607 ltrim('', '*') => ""
3609 ltrim('abc', 'xy') => "abc"
3611 ltrim('xyabc', 'xy') => "abc"
3613 ltrim('xyxyabc', 'xy') => "abc"
3615 evaluate.sps:21.17-21.29: error: DEBUG EVALUATE: Function invocation
3616 ltrim(number, string) does not match any known function. Candidates are:
3618 LTRIM(string, string).
3619 21 | DEBUG EVALUATE /ltrim(8, '*').
3622 ltrim(8, '*') => error
3624 evaluate.sps:22.17-22.30: error: DEBUG EVALUATE: Function invocation
3625 ltrim(string, number) does not match any known function. Candidates are:
3627 LTRIM(string, string).
3628 22 | DEBUG EVALUATE /ltrim(' x', 8).
3631 ltrim(' x', 8) => error
3633 evaluate.sps:23.17-23.27: error: DEBUG EVALUATE: Function invocation
3634 ltrim(number, number) does not match any known function. Candidates are:
3636 LTRIM(string, string).
3637 23 | DEBUG EVALUATE /ltrim(8, 9).
3640 ltrim(8, 9) => error
3645 AT_SETUP([expressions - RPAD])
3646 AT_KEYWORDS([expression expressions evaluate])
3647 AT_DATA([evaluate-base.sps], [dnl
3649 DEBUG EVALUATE SET opt.
3651 DEBUG EVALUATE /rpad('abc', 0).
3652 DEBUG EVALUATE /rpad('abc', 2).
3653 DEBUG EVALUATE /rpad('abc', 3).
3654 DEBUG EVALUATE /rpad('abc', 10).
3656 DEBUG EVALUATE /rpad('abc', -1).
3657 DEBUG EVALUATE /rpad('abc', 32768).
3658 DEBUG EVALUATE /rpad('abc', $sysmis).
3660 DEBUG EVALUATE /rpad('abc', -1, '*').
3661 DEBUG EVALUATE /rpad('abc', 0, '*').
3662 DEBUG EVALUATE /rpad('abc', 2, '*').
3663 DEBUG EVALUATE /rpad('abc', 3, '*').
3664 DEBUG EVALUATE /rpad('abc', 10, '*').
3666 DEBUG EVALUATE /rpad('abc', 5, 'de').
3667 DEBUG EVALUATE /rpad('abc', 6, 'de').
3668 DEBUG EVALUATE /rpad('abc', 7, 'de').
3669 DEBUG EVALUATE /rpad('abc', 8, 'de').
3670 DEBUG EVALUATE /rpad('abc', 9, 'de').
3672 DEBUG EVALUATE /rpad('abc', 32768, '*').
3673 DEBUG EVALUATE /rpad('abc', $sysmis, '*').
3674 DEBUG EVALUATE /rpad('abc', $sysmis, '').
3675 DEBUG EVALUATE /rpad('abc', $sysmis, 'xy').
3676 DEBUG EVALUATE /rpad(0, 10).
3677 DEBUG EVALUATE /rpad('abc', 'def').
3678 DEBUG EVALUATE /rpad(0, 10, ' ').
3679 DEBUG EVALUATE /rpad('abc', 'def', ' ').
3680 DEBUG EVALUATE /rpad('x', 5, 0).
3681 DEBUG EVALUATE /rpad('x', 5, 2).
3684 for opt in OPT NOOPT; do
3686 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3687 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3688 rpad('abc', 0) => "abc"
3690 rpad('abc', 2) => "abc"
3692 rpad('abc', 3) => "abc"
3694 rpad('abc', 10) => "abc "
3696 evaluate.sps:9.17-9.31: error: DEBUG EVALUATE: The length argument to RPAD must
3697 be between 0 and 32767.
3698 9 | DEBUG EVALUATE /rpad('abc', -1).
3701 evaluate.sps:9.29-9.30: note: DEBUG EVALUATE: The length argument is -1.
3702 9 | DEBUG EVALUATE /rpad('abc', -1).
3705 rpad('abc', -1) => "abc"
3707 evaluate.sps:10.17-10.34: error: DEBUG EVALUATE: The length argument to RPAD
3708 must be between 0 and 32767.
3709 10 | DEBUG EVALUATE /rpad('abc', 32768).
3710 | ^~~~~~~~~~~~~~~~~~
3712 evaluate.sps:10.29-10.33: note: DEBUG EVALUATE: The length argument is 32768.
3713 10 | DEBUG EVALUATE /rpad('abc', 32768).
3716 rpad('abc', 32768) => "abc"
3718 rpad('abc', $sysmis) => "abc"
3720 evaluate.sps:13.17-13.36: error: DEBUG EVALUATE: The length argument to RPAD
3721 must be between 0 and 32767.
3722 13 | DEBUG EVALUATE /rpad('abc', -1, '*').
3723 | ^~~~~~~~~~~~~~~~~~~~
3725 evaluate.sps:13.29-13.30: note: DEBUG EVALUATE: The length argument is -1.
3726 13 | DEBUG EVALUATE /rpad('abc', -1, '*').
3729 rpad('abc', -1, '*') => "abc"
3731 rpad('abc', 0, '*') => "abc"
3733 rpad('abc', 2, '*') => "abc"
3735 rpad('abc', 3, '*') => "abc"
3737 rpad('abc', 10, '*') => "abc*******"
3739 rpad('abc', 5, 'de') => "abcde"
3741 rpad('abc', 6, 'de') => "abcde"
3743 rpad('abc', 7, 'de') => "abcdede"
3745 rpad('abc', 8, 'de') => "abcdede"
3747 rpad('abc', 9, 'de') => "abcdedede"
3749 evaluate.sps:25.17-25.39: error: DEBUG EVALUATE: The length argument to RPAD
3750 must be between 0 and 32767.
3751 25 | DEBUG EVALUATE /rpad('abc', 32768, '*').
3752 | ^~~~~~~~~~~~~~~~~~~~~~~
3754 evaluate.sps:25.29-25.33: note: DEBUG EVALUATE: The length argument is 32768.
3755 25 | DEBUG EVALUATE /rpad('abc', 32768, '*').
3758 rpad('abc', 32768, '*') => "abc"
3760 rpad('abc', $sysmis, '*') => "abc"
3762 rpad('abc', $sysmis, '') => "abc"
3764 rpad('abc', $sysmis, 'xy') => "abc"
3766 evaluate.sps:29.17-29.27: error: DEBUG EVALUATE: Function invocation
3767 rpad(number, number) does not match any known function. Candidates are:
3768 RPAD(string, integer)
3769 RPAD(string, integer, string).
3770 29 | DEBUG EVALUATE /rpad(0, 10).
3773 rpad(0, 10) => error
3775 evaluate.sps:30.17-30.34: error: DEBUG EVALUATE: Function invocation
3776 rpad(string, string) does not match any known function. Candidates are:
3777 RPAD(string, integer)
3778 RPAD(string, integer, string).
3779 30 | DEBUG EVALUATE /rpad('abc', 'def').
3780 | ^~~~~~~~~~~~~~~~~~
3782 rpad('abc', 'def') => error
3784 evaluate.sps:31.17-31.32: error: DEBUG EVALUATE: Function invocation
3785 rpad(number, number, string) does not match any known function. Candidates
3787 RPAD(string, integer)
3788 RPAD(string, integer, string).
3789 31 | DEBUG EVALUATE /rpad(0, 10, ' ').
3792 rpad(0, 10, ' ') => error
3794 evaluate.sps:32.17-32.39: error: DEBUG EVALUATE: Function invocation
3795 rpad(string, string, string) does not match any known function. Candidates
3797 RPAD(string, integer)
3798 RPAD(string, integer, string).
3799 32 | DEBUG EVALUATE /rpad('abc', 'def', ' ').
3800 | ^~~~~~~~~~~~~~~~~~~~~~~
3802 rpad('abc', 'def', ' ') => error
3804 evaluate.sps:33.17-33.31: error: DEBUG EVALUATE: Function invocation
3805 rpad(string, number, number) does not match any known function. Candidates
3807 RPAD(string, integer)
3808 RPAD(string, integer, string).
3809 33 | DEBUG EVALUATE /rpad('x', 5, 0).
3812 rpad('x', 5, 0) => error
3814 evaluate.sps:34.17-34.31: error: DEBUG EVALUATE: Function invocation
3815 rpad(string, number, number) does not match any known function. Candidates
3817 RPAD(string, integer)
3818 RPAD(string, integer, string).
3819 34 | DEBUG EVALUATE /rpad('x', 5, 2).
3822 rpad('x', 5, 2) => error
3827 AT_SETUP([expressions - RTRIM])
3828 AT_KEYWORDS([expression expressions evaluate])
3829 AT_DATA([evaluate-base.sps], [dnl
3831 DEBUG EVALUATE SET opt.
3832 DEBUG EVALUATE /rtrim('abc ').
3833 DEBUG EVALUATE /rtrim(' abc ').
3834 DEBUG EVALUATE /rtrim('abc').
3835 * The following string contains a tab.
3836 DEBUG EVALUATE /rtrim('abc ').
3837 DEBUG EVALUATE /rtrim(' ').
3838 DEBUG EVALUATE /rtrim('').
3839 DEBUG EVALUATE /rtrim(8).
3841 DEBUG EVALUATE /rtrim('abc***', '*').
3842 DEBUG EVALUATE /rtrim('abc', '*').
3843 DEBUG EVALUATE /rtrim('abc*', '*').
3844 DEBUG EVALUATE /rtrim('', '*').
3846 DEBUG EVALUATE /rtrim('abc', 'xy').
3847 DEBUG EVALUATE /rtrim('abcxy', 'xy').
3848 DEBUG EVALUATE /rtrim('abcxyxy', 'xy').
3850 DEBUG EVALUATE /rtrim(8, '*').
3851 DEBUG EVALUATE /rtrim('x ', 8).
3852 DEBUG EVALUATE /rtrim(8, 9).
3855 for opt in OPT NOOPT; do
3857 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3858 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3859 rtrim('abc ') => "abc"
3861 rtrim(' abc ') => " abc"
3863 rtrim('abc') => "abc"
3865 rtrim('abc ') => "abc "
3871 evaluate.sps:10.17-10.24: error: DEBUG EVALUATE: Function invocation
3872 rtrim(number) does not match any known function. Candidates are:
3874 RTRIM(string, string).
3875 10 | DEBUG EVALUATE /rtrim(8).
3880 rtrim('abc***', '*') => "abc"
3882 rtrim('abc', '*') => "abc"
3884 rtrim('abc*', '*') => "abc"
3886 rtrim('', '*') => ""
3888 rtrim('abc', 'xy') => "abc"
3890 rtrim('abcxy', 'xy') => "abc"
3892 rtrim('abcxyxy', 'xy') => "abc"
3894 evaluate.sps:21.17-21.29: error: DEBUG EVALUATE: Function invocation
3895 rtrim(number, string) does not match any known function. Candidates are:
3897 RTRIM(string, string).
3898 21 | DEBUG EVALUATE /rtrim(8, '*').
3901 rtrim(8, '*') => error
3903 evaluate.sps:22.17-22.30: error: DEBUG EVALUATE: Function invocation
3904 rtrim(string, number) does not match any known function. Candidates are:
3906 RTRIM(string, string).
3907 22 | DEBUG EVALUATE /rtrim('x ', 8).
3910 rtrim('x ', 8) => error
3912 evaluate.sps:23.17-23.27: error: DEBUG EVALUATE: Function invocation
3913 rtrim(number, number) does not match any known function. Candidates are:
3915 RTRIM(string, string).
3916 23 | DEBUG EVALUATE /rtrim(8, 9).
3919 rtrim(8, 9) => error
3924 AT_SETUP([expressions - STRING])
3925 AT_KEYWORDS([expression expressions evaluate])
3926 AT_DATA([evaluate-base.sps], [dnl
3928 DEBUG EVALUATE SET opt.
3929 DEBUG EVALUATE /string(123.56, f5.1).
3930 DEBUG EVALUATE /string($sysmis, f5.1).
3931 DEBUG EVALUATE /string("abc", A5).
3932 dnl E has a minimum width of 6 on output:
3933 DEBUG EVALUATE /string(123, e1).
3934 DEBUG EVALUATE /string(123, e6.0).
3937 for opt in OPT NOOPT; do
3939 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
3940 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
3941 string(123.56, f5.1) => "123.6"
3943 string($sysmis, f5.1) => " . "
3945 evaluate.sps:5.17-5.33: error: DEBUG EVALUATE: Type mismatch invoking
3946 STRING(number, num_output_format) as string(string, format).
3947 5 | DEBUG EVALUATE /string("abc", A5).
3950 evaluate.sps:5.24-5.28: note: DEBUG EVALUATE: This argument has type 'string'
3951 but 'number' is required.
3952 5 | DEBUG EVALUATE /string("abc", A5).
3955 evaluate.sps:5.31-5.32: note: DEBUG EVALUATE: Numeric variables are not
3956 compatible with string format A5.
3957 5 | DEBUG EVALUATE /string("abc", A5).
3960 string("abc", A5) => error
3962 evaluate.sps:6.17-6.31: error: DEBUG EVALUATE: Type mismatch invoking
3963 STRING(number, num_output_format) as string(number, format).
3964 6 | DEBUG EVALUATE /string(123, e1).
3967 evaluate.sps:6.29-6.30: note: DEBUG EVALUATE: Output format E1.0 specifies
3968 width 1, but E requires a width between 6 and 40.
3969 6 | DEBUG EVALUATE /string(123, e1).
3972 string(123, e1) => error
3974 string(123, e6.0) => "1E+002"
3979 AT_SETUP([expressions - STRUNC])
3980 AT_KEYWORDS([expression expressions evaluate])
3981 AT_DATA([evaluate-base.sps], [dnl
3983 DEBUG EVALUATE SET opt.
3984 DEBUG EVALUATE /strunc('a c ', 9).
3985 DEBUG EVALUATE /strunc('a c ', 7).
3986 DEBUG EVALUATE /strunc('a c ', 6).
3987 DEBUG EVALUATE /strunc('a c ', 5).
3988 DEBUG EVALUATE /strunc('a c ', 4).
3989 DEBUG EVALUATE /strunc('a c ', 3).
3990 DEBUG EVALUATE /strunc('a c ', 2).
3991 DEBUG EVALUATE /strunc('a c ', 1).
3992 DEBUG EVALUATE /strunc('a c ', 0).
3994 DEBUG EVALUATE /strunc('a c ', 0.75).
3995 DEBUG EVALUATE /strunc('a c ', -1).
3996 DEBUG EVALUATE /strunc('a c ', $sysmis).
3998 DEBUG EVALUATE /strunc(' abc ', 9).
3999 DEBUG EVALUATE /strunc(' abc ', 8).
4000 DEBUG EVALUATE /strunc(' abc ', 7).
4001 DEBUG EVALUATE /strunc(' abc ', 6).
4002 DEBUG EVALUATE /strunc(' abc ', 5).
4003 DEBUG EVALUATE /strunc(' abc ', 4).
4004 DEBUG EVALUATE /strunc(' abc ', 3).
4005 DEBUG EVALUATE /strunc(' abc ', 2).
4006 DEBUG EVALUATE /strunc(' abc ', 1).
4008 DEBUG EVALUATE /strunc(' abc ', 1.5).
4009 DEBUG EVALUATE /strunc(' abc ', -1).
4010 DEBUG EVALUATE /strunc(' abc ', $sysmis).
4013 for opt in OPT NOOPT; do
4015 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
4016 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
4017 strunc('a c ', 9) => "a c"
4019 strunc('a c ', 7) => "a c"
4021 strunc('a c ', 6) => "a c"
4023 strunc('a c ', 5) => "a c"
4025 strunc('a c ', 4) => "a c"
4027 strunc('a c ', 3) => "a c"
4029 strunc('a c ', 2) => "a"
4031 strunc('a c ', 1) => "a"
4033 strunc('a c ', 0) => ""
4035 evaluate.sps:13.34-13.37: error: DEBUG EVALUATE: Treating unexpected non-
4036 integer value 0.75 as missing.
4037 13 | DEBUG EVALUATE /strunc('a c ', 0.75).
4040 strunc('a c ', 0.75) => "a c "
4042 strunc('a c ', -1) => ""
4044 strunc('a c ', $sysmis) => "a c "
4046 strunc(' abc ', 9) => " abc"
4048 strunc(' abc ', 8) => " abc"
4050 strunc(' abc ', 7) => " abc"
4052 strunc(' abc ', 6) => " abc"
4054 strunc(' abc ', 5) => " abc"
4056 strunc(' abc ', 4) => " ab"
4058 strunc(' abc ', 3) => " a"
4060 strunc(' abc ', 2) => ""
4062 strunc(' abc ', 1) => ""
4064 evaluate.sps:27.35-27.37: error: DEBUG EVALUATE: Treating unexpected non-
4065 integer value 1.5 as missing.
4066 27 | DEBUG EVALUATE /strunc(' abc ', 1.5).
4069 strunc(' abc ', 1.5) => " abc "
4071 strunc(' abc ', -1) => ""
4073 strunc(' abc ', $sysmis) => " abc "
4078 AT_SETUP([expressions - SUBSTR])
4079 AT_KEYWORDS([expression expressions evaluate])
4080 AT_DATA([evaluate-base.sps], [dnl
4081 DEBUG EVALUATE SET opt.
4082 DEBUG EVALUATE /substr('abcdefgh', 1).
4083 DEBUG EVALUATE /substr('abcdefgh', 3).
4084 DEBUG EVALUATE /substr('abcdefgh', 5).
4085 DEBUG EVALUATE /substr('abcdefgh', 6).
4086 DEBUG EVALUATE /substr('abcdefgh', 7).
4087 DEBUG EVALUATE /substr('abcdefgh', 8).
4088 DEBUG EVALUATE /substr('abcdefgh', 9).
4089 DEBUG EVALUATE /substr('abcdefgh', 10).
4090 DEBUG EVALUATE /substr('abcdefgh', 20).
4091 DEBUG EVALUATE /substr('abcdefgh', $sysmis).
4092 DEBUG EVALUATE /substr('abcdefgh', -5).
4093 DEBUG EVALUATE /substr('abcdefgh', 0).
4094 DEBUG EVALUATE /substr(0, 10).
4095 DEBUG EVALUATE /substr('abcd', 'abc').
4096 DEBUG EVALUATE /substr(0, 'abc').
4098 DEBUG EVALUATE /substr('abcdefgh', 0, 0).
4099 DEBUG EVALUATE /substr('abcdefgh', 3, 0).
4100 DEBUG EVALUATE /substr('abcdefgh', 5, 0).
4101 DEBUG EVALUATE /substr('abcdefgh', 9, 0).
4102 DEBUG EVALUATE /substr('abcdefgh', 0, 1).
4103 DEBUG EVALUATE /substr('abcdefgh', 0, 5).
4104 DEBUG EVALUATE /substr('abcdefgh', 1, 8).
4105 DEBUG EVALUATE /substr('abcdefgh', 1, 10).
4106 DEBUG EVALUATE /substr('abcdefgh', 1, 20).
4107 DEBUG EVALUATE /substr('abcdefgh', 3, 4).
4108 DEBUG EVALUATE /substr('abcdefgh', 5, 2).
4109 DEBUG EVALUATE /substr('abcdefgh', 6, 1).
4110 DEBUG EVALUATE /substr('abcdefgh', 7, 10).
4111 DEBUG EVALUATE /substr('abcdefgh', 8, 1).
4112 DEBUG EVALUATE /substr('abcdefgh', 8, 2).
4113 DEBUG EVALUATE /substr('abcdefgh', 9, 11).
4114 DEBUG EVALUATE /substr('abcdefgh', 10, 52).
4115 DEBUG EVALUATE /substr('abcdefgh', 20, 1).
4116 DEBUG EVALUATE /substr('abcdefgh', $sysmis, 2).
4117 DEBUG EVALUATE /substr('abcdefgh', 9, $sysmis).
4118 DEBUG EVALUATE /substr('abcdefgh', $sysmis, $sysmis).
4119 DEBUG EVALUATE /substr('abc', 1, 'x').
4120 DEBUG EVALUATE /substr(0, 10, 1).
4121 DEBUG EVALUATE /substr(0, 10, 'x').
4122 DEBUG EVALUATE /substr('abcd', 'abc', 0).
4123 DEBUG EVALUATE /substr('abcd', 'abc', 'j').
4124 DEBUG EVALUATE /substr(0, 'abc', 4).
4125 DEBUG EVALUATE /substr(0, 'abc', 'k').
4128 for opt in OPT NOOPT; do
4130 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
4131 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
4132 substr('abcdefgh', 1) => "abcdefgh"
4134 substr('abcdefgh', 3) => "cdefgh"
4136 substr('abcdefgh', 5) => "efgh"
4138 substr('abcdefgh', 6) => "fgh"
4140 substr('abcdefgh', 7) => "gh"
4142 substr('abcdefgh', 8) => "h"
4144 substr('abcdefgh', 9) => ""
4146 substr('abcdefgh', 10) => ""
4148 substr('abcdefgh', 20) => ""
4150 substr('abcdefgh', $sysmis) => ""
4152 substr('abcdefgh', -5) => ""
4154 substr('abcdefgh', 0) => ""
4156 evaluate.sps:14.17-14.29: error: DEBUG EVALUATE: Function invocation
4157 substr(number, number) does not match any known function. Candidates are:
4158 SUBSTR(string, integer)
4159 SUBSTR(string, integer, integer).
4160 14 | DEBUG EVALUATE /substr(0, 10).
4163 substr(0, 10) => error
4165 evaluate.sps:15.17-15.37: error: DEBUG EVALUATE: Function invocation
4166 substr(string, string) does not match any known function. Candidates are:
4167 SUBSTR(string, integer)
4168 SUBSTR(string, integer, integer).
4169 15 | DEBUG EVALUATE /substr('abcd', 'abc').
4170 | ^~~~~~~~~~~~~~~~~~~~~
4172 substr('abcd', 'abc') => error
4174 evaluate.sps:16.17-16.32: error: DEBUG EVALUATE: Function invocation
4175 substr(number, string) does not match any known function. Candidates are:
4176 SUBSTR(string, integer)
4177 SUBSTR(string, integer, integer).
4178 16 | DEBUG EVALUATE /substr(0, 'abc').
4181 substr(0, 'abc') => error
4183 substr('abcdefgh', 0, 0) => ""
4185 substr('abcdefgh', 3, 0) => ""
4187 substr('abcdefgh', 5, 0) => ""
4189 substr('abcdefgh', 9, 0) => ""
4191 substr('abcdefgh', 0, 1) => ""
4193 substr('abcdefgh', 0, 5) => ""
4195 substr('abcdefgh', 1, 8) => "abcdefgh"
4197 substr('abcdefgh', 1, 10) => "abcdefgh"
4199 substr('abcdefgh', 1, 20) => "abcdefgh"
4201 substr('abcdefgh', 3, 4) => "cdef"
4203 substr('abcdefgh', 5, 2) => "ef"
4205 substr('abcdefgh', 6, 1) => "f"
4207 substr('abcdefgh', 7, 10) => "gh"
4209 substr('abcdefgh', 8, 1) => "h"
4211 substr('abcdefgh', 8, 2) => "h"
4213 substr('abcdefgh', 9, 11) => ""
4215 substr('abcdefgh', 10, 52) => ""
4217 substr('abcdefgh', 20, 1) => ""
4219 substr('abcdefgh', $sysmis, 2) => ""
4221 substr('abcdefgh', 9, $sysmis) => ""
4223 substr('abcdefgh', $sysmis, $sysmis) => ""
4225 evaluate.sps:39.17-39.37: error: DEBUG EVALUATE: Function invocation
4226 substr(string, number, string) does not match any known function. Candidates
4228 SUBSTR(string, integer)
4229 SUBSTR(string, integer, integer).
4230 39 | DEBUG EVALUATE /substr('abc', 1, 'x').
4231 | ^~~~~~~~~~~~~~~~~~~~~
4233 substr('abc', 1, 'x') => error
4235 evaluate.sps:40.17-40.32: error: DEBUG EVALUATE: Function invocation
4236 substr(number, number, number) does not match any known function. Candidates
4238 SUBSTR(string, integer)
4239 SUBSTR(string, integer, integer).
4240 40 | DEBUG EVALUATE /substr(0, 10, 1).
4243 substr(0, 10, 1) => error
4245 evaluate.sps:41.17-41.34: error: DEBUG EVALUATE: Function invocation
4246 substr(number, number, string) does not match any known function. Candidates
4248 SUBSTR(string, integer)
4249 SUBSTR(string, integer, integer).
4250 41 | DEBUG EVALUATE /substr(0, 10, 'x').
4251 | ^~~~~~~~~~~~~~~~~~
4253 substr(0, 10, 'x') => error
4255 evaluate.sps:42.17-42.40: error: DEBUG EVALUATE: Function invocation
4256 substr(string, string, number) does not match any known function. Candidates
4258 SUBSTR(string, integer)
4259 SUBSTR(string, integer, integer).
4260 42 | DEBUG EVALUATE /substr('abcd', 'abc', 0).
4261 | ^~~~~~~~~~~~~~~~~~~~~~~~
4263 substr('abcd', 'abc', 0) => error
4265 evaluate.sps:43.17-43.42: error: DEBUG EVALUATE: Function invocation
4266 substr(string, string, string) does not match any known function. Candidates
4268 SUBSTR(string, integer)
4269 SUBSTR(string, integer, integer).
4270 43 | DEBUG EVALUATE /substr('abcd', 'abc', 'j').
4271 | ^~~~~~~~~~~~~~~~~~~~~~~~~~
4273 substr('abcd', 'abc', 'j') => error
4275 evaluate.sps:44.17-44.35: error: DEBUG EVALUATE: Function invocation
4276 substr(number, string, number) does not match any known function. Candidates
4278 SUBSTR(string, integer)
4279 SUBSTR(string, integer, integer).
4280 44 | DEBUG EVALUATE /substr(0, 'abc', 4).
4281 | ^~~~~~~~~~~~~~~~~~~
4283 substr(0, 'abc', 4) => error
4285 evaluate.sps:45.17-45.37: error: DEBUG EVALUATE: Function invocation
4286 substr(number, string, string) does not match any known function. Candidates
4288 SUBSTR(string, integer)
4289 SUBSTR(string, integer, integer).
4290 45 | DEBUG EVALUATE /substr(0, 'abc', 'k').
4291 | ^~~~~~~~~~~~~~~~~~~~~
4293 substr(0, 'abc', 'k') => error
4298 AT_SETUP([expressions - UPCASE])
4299 AT_KEYWORDS([expression expressions evaluate])
4300 AT_DATA([evaluate-base.sps], [dnl
4301 DEBUG EVALUATE SET opt.
4302 DEBUG EVALUATE /upcase('abcdefghijklmnopqrstuvwxyz!@%&*089').
4303 DEBUG EVALUATE /upcase('').
4304 DEBUG EVALUATE /upcase(1).
4307 for opt in OPT NOOPT; do
4309 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
4310 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
4311 upcase('abcdefghijklmnopqrstuvwxyz!@%&*089') => "ABCDEFGHIJKLMNOPQRSTUVWXYZ!
4316 evaluate.sps:4.17-4.25: error: DEBUG EVALUATE: Type mismatch invoking
4317 UPCASE(string) as upcase(number).
4318 4 | DEBUG EVALUATE /upcase(1).
4321 evaluate.sps:4.24: note: DEBUG EVALUATE: This argument has type 'number' but
4322 'string' is required.
4323 4 | DEBUG EVALUATE /upcase(1).
4331 AT_SETUP([expressions - TIME.DAYS])
4332 AT_KEYWORDS([expression expressions evaluate])
4333 AT_DATA([evaluate-base.sps], [dnl
4335 DEBUG EVALUATE SET opt.
4336 DEBUG EVALUATE /time.days(1).
4337 DEBUG EVALUATE /time.days(-1).
4338 DEBUG EVALUATE /time.days(0.5).
4339 DEBUG EVALUATE /time.days('x').
4340 DEBUG EVALUATE /time.days($sysmis).
4343 for opt in OPT NOOPT; do
4345 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
4346 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
4347 time.days(1) => 86400.00
4349 time.days(-1) => -86400.00
4351 time.days(0.5) => 43200.00
4353 evaluate.sps:6.17-6.30: error: DEBUG EVALUATE: Type mismatch invoking TIME.
4354 DAYS(number) as time.days(string).
4355 6 | DEBUG EVALUATE /time.days('x').
4358 evaluate.sps:6.27-6.29: note: DEBUG EVALUATE: This argument has type 'string'
4359 but 'number' is required.
4360 6 | DEBUG EVALUATE /time.days('x').
4363 time.days('x') => error
4365 time.days($sysmis) => sysmis
4370 AT_SETUP([expressions - TIME.HMS])
4371 AT_KEYWORDS([expression expressions evaluate])
4372 AT_DATA([evaluate-base.sps], [dnl
4374 DEBUG EVALUATE SET opt.
4375 DEBUG EVALUATE /time.hms(4,50,38).
4376 DEBUG EVALUATE /time.hms(12,31,35).
4377 DEBUG EVALUATE /time.hms(12,47,53).
4378 DEBUG EVALUATE /time.hms(1,26,0).
4379 DEBUG EVALUATE /time.hms(20,58,11).
4380 DEBUG EVALUATE /time.hms(7,36,5).
4381 DEBUG EVALUATE /time.hms(15,43,49).
4382 DEBUG EVALUATE /time.hms(4,25,9).
4383 DEBUG EVALUATE /time.hms(6,49,27).
4384 DEBUG EVALUATE /time.hms(2,57,52).
4385 DEBUG EVALUATE /time.hms(16,45,44).
4386 DEBUG EVALUATE /time.hms(21,30,57).
4387 DEBUG EVALUATE /time.hms(22,30,4).
4388 DEBUG EVALUATE /time.hms(1,56,51).
4389 DEBUG EVALUATE /time.hms(5, 6, 7).
4390 DEBUG EVALUATE /time.hms(5, 6, 0).
4391 DEBUG EVALUATE /time.hms(5, 0, 7).
4392 DEBUG EVALUATE /time.hms(0, 6, 7).
4393 DEBUG EVALUATE /time.hms(-5, 6, -7).
4394 DEBUG EVALUATE /time.hms(-5, 5, -7).
4395 DEBUG EVALUATE /time.hms($sysmis, 6, 7).
4396 DEBUG EVALUATE /time.hms(5, $sysmis, 7).
4397 DEBUG EVALUATE /time.hms(5, $sysmis, 7).
4398 DEBUG EVALUATE /time.hms($sysmis, $sysmis, 7).
4399 DEBUG EVALUATE /time.hms(5, $sysmis, $sysmis).
4400 DEBUG EVALUATE /time.hms($sysmis, $sysmis, 7).
4401 DEBUG EVALUATE /time.hms($sysmis, $sysmis, $sysmis).
4404 for opt in OPT NOOPT; do
4406 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
4407 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
4408 time.hms(4,50,38) => 17438.00
4410 time.hms(12,31,35) => 45095.00
4412 time.hms(12,47,53) => 46073.00
4414 time.hms(1,26,0) => 5160.00
4416 time.hms(20,58,11) => 75491.00
4418 time.hms(7,36,5) => 27365.00
4420 time.hms(15,43,49) => 56629.00
4422 time.hms(4,25,9) => 15909.00
4424 time.hms(6,49,27) => 24567.00
4426 time.hms(2,57,52) => 10672.00
4428 time.hms(16,45,44) => 60344.00
4430 time.hms(21,30,57) => 77457.00
4432 time.hms(22,30,4) => 81004.00
4434 time.hms(1,56,51) => 7011.00
4436 time.hms(5, 6, 7) => 18367.00
4438 time.hms(5, 6, 0) => 18360.00
4440 time.hms(5, 0, 7) => 18007.00
4442 time.hms(0, 6, 7) => 367.00
4444 evaluate.sps:21.17-21.35: warning: DEBUG EVALUATE: TIME.HMS cannot accept a mix
4445 of positive and negative arguments.
4446 21 | DEBUG EVALUATE /time.hms(-5, 6, -7).
4447 | ^~~~~~~~~~~~~~~~~~~
4449 evaluate.sps:21.26-21.27: note: DEBUG EVALUATE: This argument has negative
4451 21 | DEBUG EVALUATE /time.hms(-5, 6, -7).
4454 evaluate.sps:21.30: note: DEBUG EVALUATE: This argument has positive value 6.
4455 21 | DEBUG EVALUATE /time.hms(-5, 6, -7).
4458 evaluate.sps:21.33-21.34: note: DEBUG EVALUATE: This argument has negative
4460 21 | DEBUG EVALUATE /time.hms(-5, 6, -7).
4463 time.hms(-5, 6, -7) => sysmis
4465 evaluate.sps:22.17-22.35: warning: DEBUG EVALUATE: TIME.HMS cannot accept a mix
4466 of positive and negative arguments.
4467 22 | DEBUG EVALUATE /time.hms(-5, 5, -7).
4468 | ^~~~~~~~~~~~~~~~~~~
4470 evaluate.sps:22.26-22.27: note: DEBUG EVALUATE: This argument has negative
4472 22 | DEBUG EVALUATE /time.hms(-5, 5, -7).
4475 evaluate.sps:22.30: note: DEBUG EVALUATE: This argument has positive value 5.
4476 22 | DEBUG EVALUATE /time.hms(-5, 5, -7).
4479 evaluate.sps:22.33-22.34: note: DEBUG EVALUATE: This argument has negative
4481 22 | DEBUG EVALUATE /time.hms(-5, 5, -7).
4484 time.hms(-5, 5, -7) => sysmis
4486 time.hms($sysmis, 6, 7) => sysmis
4488 time.hms(5, $sysmis, 7) => sysmis
4490 time.hms(5, $sysmis, 7) => sysmis
4492 time.hms($sysmis, $sysmis, 7) => sysmis
4494 time.hms(5, $sysmis, $sysmis) => sysmis
4496 time.hms($sysmis, $sysmis, 7) => sysmis
4498 time.hms($sysmis, $sysmis, $sysmis) => sysmis
4503 AT_SETUP([expressions - CTIME.*])
4504 AT_KEYWORDS([expression expressions evaluate ctime])
4505 AT_DATA([evaluate-base.sps], [dnl
4507 DEBUG EVALUATE SET opt.
4508 DEBUG EVALUATE /ctime.days(106272).
4509 DEBUG EVALUATE /ctime.hours(106272).
4510 DEBUG EVALUATE /ctime.minutes(106272).
4511 DEBUG EVALUATE /ctime.seconds(106272).
4512 DEBUG EVALUATE /ctime.days(-106272).
4513 DEBUG EVALUATE /ctime.hours(-106272).
4514 DEBUG EVALUATE /ctime.minutes(-106272).
4515 DEBUG EVALUATE /ctime.seconds(-106272).
4516 DEBUG EVALUATE /ctime.days($sysmis).
4517 DEBUG EVALUATE /ctime.hours($sysmis).
4518 DEBUG EVALUATE /ctime.minutes($sysmis).
4519 DEBUG EVALUATE /ctime.seconds($sysmis).
4520 DEBUG EVALUATE /ctime.days('a').
4521 DEBUG EVALUATE /ctime.hours('b').
4522 DEBUG EVALUATE /ctime.minutes('c').
4523 DEBUG EVALUATE /ctime.seconds('d').
4525 DEBUG EVALUATE /ctime.days(date.dmy(15,10,1582)).
4526 DEBUG EVALUATE /ctime.days(date.dmy(6,9,1719)).
4527 DEBUG EVALUATE /ctime.days(date.dmy(24,1,1583)).
4528 DEBUG EVALUATE /ctime.days(date.dmy(14,12,1585)).
4529 DEBUG EVALUATE /ctime.days(date.dmy(26,11,1621)).
4530 DEBUG EVALUATE /ctime.days(date.dmy(25,12,1821)).
4531 DEBUG EVALUATE /ctime.days(date.dmy(3,12,1882)).
4532 DEBUG EVALUATE /ctime.days(date.dmy(6,4,2002)).
4533 DEBUG EVALUATE /ctime.days(date.dmy(19,12,1999)).
4534 DEBUG EVALUATE /ctime.days(date.dmy(1,10,1978)).
4535 DEBUG EVALUATE /ctime.days(date.dmy(0,10,1978)).
4536 DEBUG EVALUATE /ctime.days(date.dmy(32,10,1978)).
4537 DEBUG EVALUATE /ctime.days(date.dmy(31,0,1978)).
4538 DEBUG EVALUATE /ctime.days(date.dmy(31,13,1978)).
4539 DEBUG EVALUATE /ctime.days(date.dmy($sysmis,10,1978)).
4540 DEBUG EVALUATE /ctime.days(date.dmy(31,$sysmis,1978)).
4541 DEBUG EVALUATE /ctime.days(date.dmy(31,10,$sysmis)).
4542 DEBUG EVALUATE /ctime.days(date.dmy($sysmis,$sysmis,1978)).
4543 DEBUG EVALUATE /ctime.days(date.dmy(31,$sysmis,$sysmis)).
4544 DEBUG EVALUATE /ctime.days(date.dmy($sysmis,10,$sysmis)).
4545 DEBUG EVALUATE /ctime.days(date.dmy($sysmis,$sysmis,$sysmis)).
4548 for opt in OPT NOOPT; do
4550 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
4551 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
4552 ctime.days(106272) => 1.23
4554 ctime.hours(106272) => 29.52
4556 ctime.minutes(106272) => 1771.20
4558 ctime.seconds(106272) => 106272.00
4560 ctime.days(-106272) => -1.23
4562 ctime.hours(-106272) => -29.52
4564 ctime.minutes(-106272) => -1771.20
4566 ctime.seconds(-106272) => -106272.00
4568 ctime.days($sysmis) => sysmis
4570 ctime.hours($sysmis) => sysmis
4572 ctime.minutes($sysmis) => sysmis
4574 ctime.seconds($sysmis) => sysmis
4576 evaluate.sps:15.17-15.31: error: DEBUG EVALUATE: Type mismatch invoking CTIME.
4577 DAYS(number) as ctime.days(string).
4578 15 | DEBUG EVALUATE /ctime.days('a').
4581 evaluate.sps:15.28-15.30: note: DEBUG EVALUATE: This argument has type 'string'
4582 but 'number' is required.
4583 15 | DEBUG EVALUATE /ctime.days('a').
4586 ctime.days('a') => error
4588 evaluate.sps:16.17-16.32: error: DEBUG EVALUATE: Type mismatch invoking CTIME.
4589 HOURS(number) as ctime.hours(string).
4590 16 | DEBUG EVALUATE /ctime.hours('b').
4593 evaluate.sps:16.29-16.31: note: DEBUG EVALUATE: This argument has type 'string'
4594 but 'number' is required.
4595 16 | DEBUG EVALUATE /ctime.hours('b').
4598 ctime.hours('b') => error
4600 evaluate.sps:17.17-17.34: error: DEBUG EVALUATE: Type mismatch invoking CTIME.
4601 MINUTES(number) as ctime.minutes(string).
4602 17 | DEBUG EVALUATE /ctime.minutes('c').
4603 | ^~~~~~~~~~~~~~~~~~
4605 evaluate.sps:17.31-17.33: note: DEBUG EVALUATE: This argument has type 'string'
4606 but 'number' is required.
4607 17 | DEBUG EVALUATE /ctime.minutes('c').
4610 ctime.minutes('c') => error
4612 evaluate.sps:18.17-18.34: error: DEBUG EVALUATE: Type mismatch invoking CTIME.
4613 SECONDS(number) as ctime.seconds(string).
4614 18 | DEBUG EVALUATE /ctime.seconds('d').
4615 | ^~~~~~~~~~~~~~~~~~
4617 evaluate.sps:18.31-18.33: note: DEBUG EVALUATE: This argument has type 'string'
4618 but 'number' is required.
4619 18 | DEBUG EVALUATE /ctime.seconds('d').
4622 ctime.seconds('d') => error
4624 ctime.days(date.dmy(15,10,1582)) => 1.00
4626 ctime.days(date.dmy(6,9,1719)) => 50000.00
4628 ctime.days(date.dmy(24,1,1583)) => 102.00
4630 ctime.days(date.dmy(14,12,1585)) => 1157.00
4632 ctime.days(date.dmy(26,11,1621)) => 14288.00
4634 ctime.days(date.dmy(25,12,1821)) => 87365.00
4636 ctime.days(date.dmy(3,12,1882)) => 109623.00
4638 ctime.days(date.dmy(6,4,2002)) => 153211.00
4640 ctime.days(date.dmy(19,12,1999)) => 152372.00
4642 ctime.days(date.dmy(1,10,1978)) => 144623.00
4644 ctime.days(date.dmy(0,10,1978)) => 144622.00
4646 evaluate.sps:31.28-31.47: error: DEBUG EVALUATE: Invalid arguments to DATE.DMY
4648 31 | DEBUG EVALUATE /ctime.days(date.dmy(32,10,1978)).
4649 | ^~~~~~~~~~~~~~~~~~~~
4651 evaluate.sps:31.37-31.38: note: DEBUG EVALUATE: Day 32 is not in the acceptable
4653 31 | DEBUG EVALUATE /ctime.days(date.dmy(32,10,1978)).
4656 ctime.days(date.dmy(32,10,1978)) => sysmis
4658 ctime.days(date.dmy(31,0,1978)) => 144349.00
4660 ctime.days(date.dmy(31,13,1978)) => 144745.00
4662 ctime.days(date.dmy($sysmis,10,1978)) => sysmis
4664 ctime.days(date.dmy(31,$sysmis,1978)) => sysmis
4666 ctime.days(date.dmy(31,10,$sysmis)) => sysmis
4668 ctime.days(date.dmy($sysmis,$sysmis,1978)) => sysmis
4670 ctime.days(date.dmy(31,$sysmis,$sysmis)) => sysmis
4672 ctime.days(date.dmy($sysmis,10,$sysmis)) => sysmis
4674 ctime.days(date.dmy($sysmis,$sysmis,$sysmis)) => sysmis
4679 AT_SETUP([expressions - DATE.DMY])
4680 AT_KEYWORDS([expression expressions evaluate])
4681 AT_DATA([evaluate-base.sps], [dnl
4683 DEBUG EVALUATE SET opt.
4684 DEBUG EVALUATE /date.dmy('a',1,2).
4685 DEBUG EVALUATE /date.dmy(1,'a',2).
4686 DEBUG EVALUATE /date.dmy(1,2,'a').
4689 for opt in OPT NOOPT; do
4691 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
4692 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
4693 evaluate.sps:3.17-3.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
4694 DMY(integer, integer, integer) as date.dmy(string, number, number).
4695 3 | DEBUG EVALUATE /date.dmy('a',1,2).
4698 evaluate.sps:3.26-3.28: note: DEBUG EVALUATE: This argument has type 'string'
4699 but 'integer' is required.
4700 3 | DEBUG EVALUATE /date.dmy('a',1,2).
4703 date.dmy('a',1,2) => error
4705 evaluate.sps:4.17-4.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
4706 DMY(integer, integer, integer) as date.dmy(number, string, number).
4707 4 | DEBUG EVALUATE /date.dmy(1,'a',2).
4710 evaluate.sps:4.28-4.30: note: DEBUG EVALUATE: This argument has type 'string'
4711 but 'integer' is required.
4712 4 | DEBUG EVALUATE /date.dmy(1,'a',2).
4715 date.dmy(1,'a',2) => error
4717 evaluate.sps:5.17-5.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
4718 DMY(integer, integer, integer) as date.dmy(number, number, string).
4719 5 | DEBUG EVALUATE /date.dmy(1,2,'a').
4722 evaluate.sps:5.30-5.32: note: DEBUG EVALUATE: This argument has type 'string'
4723 but 'integer' is required.
4724 5 | DEBUG EVALUATE /date.dmy(1,2,'a').
4727 date.dmy(1,2,'a') => error
4732 AT_SETUP([expressions - YRMODA])
4733 AT_KEYWORDS([expression expressions evaluate])
4734 AT_DATA([evaluate-base.sps], [dnl
4736 DEBUG EVALUATE SET opt.
4737 dnl FIXME: check out-of-range and nearly out-of-range values
4738 DEBUG EVALUATE /yrmoda(1582,10,15).
4739 DEBUG EVALUATE /yrmoda(1719,9,6).
4740 DEBUG EVALUATE /yrmoda(1583,1,24).
4741 DEBUG EVALUATE /yrmoda(1585,12,14).
4742 DEBUG EVALUATE /yrmoda(1621,11,26).
4743 DEBUG EVALUATE /yrmoda(1821,12,25).
4744 DEBUG EVALUATE /yrmoda(1882,12,3).
4745 DEBUG EVALUATE /yrmoda(2002,4,6).
4746 DEBUG EVALUATE /yrmoda(1999,12,19).
4747 DEBUG EVALUATE /yrmoda(1978,10,1).
4748 DEBUG EVALUATE /yrmoda(1978,10,0).
4749 DEBUG EVALUATE /yrmoda(1978,10,32).
4750 DEBUG EVALUATE /yrmoda(1978,0,31).
4751 DEBUG EVALUATE /yrmoda(1978,13,31).
4752 DEBUG EVALUATE /yrmoda(1978,10,$sysmis).
4753 DEBUG EVALUATE /yrmoda(1978,$sysmis,31).
4754 DEBUG EVALUATE /yrmoda($sysmis,10,31).
4755 DEBUG EVALUATE /yrmoda(1978,$sysmis,$sysmis).
4756 DEBUG EVALUATE /yrmoda($sysmis,$sysmis,31).
4757 DEBUG EVALUATE /yrmoda($sysmis,10,$sysmis).
4758 DEBUG EVALUATE /yrmoda($sysmis,$sysmis,$sysmis).
4759 DEBUG EVALUATE /yrmoda('a',1,2).
4760 DEBUG EVALUATE /yrmoda(1,'a',2).
4761 DEBUG EVALUATE /yrmoda(1,2,'a').
4764 for opt in OPT NOOPT; do
4766 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
4767 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
4768 yrmoda(1582,10,15) => 1.00
4770 yrmoda(1719,9,6) => 50000.00
4772 yrmoda(1583,1,24) => 102.00
4774 yrmoda(1585,12,14) => 1157.00
4776 yrmoda(1621,11,26) => 14288.00
4778 yrmoda(1821,12,25) => 87365.00
4780 yrmoda(1882,12,3) => 109623.00
4782 yrmoda(2002,4,6) => 153211.00
4784 yrmoda(1999,12,19) => 152372.00
4786 yrmoda(1978,10,1) => 144623.00
4788 yrmoda(1978,10,0) => 144622.00
4790 evaluate.sps:14.17-14.34: error: DEBUG EVALUATE: Invalid arguments to YRMODA
4792 14 | DEBUG EVALUATE /yrmoda(1978,10,32).
4793 | ^~~~~~~~~~~~~~~~~~
4795 evaluate.sps:14.32-14.33: note: DEBUG EVALUATE: Day 32 is not in the acceptable
4797 14 | DEBUG EVALUATE /yrmoda(1978,10,32).
4800 yrmoda(1978,10,32) => sysmis
4802 yrmoda(1978,0,31) => 144349.00
4804 yrmoda(1978,13,31) => 144745.00
4806 yrmoda(1978,10,$sysmis) => sysmis
4808 yrmoda(1978,$sysmis,31) => sysmis
4810 yrmoda($sysmis,10,31) => sysmis
4812 yrmoda(1978,$sysmis,$sysmis) => sysmis
4814 yrmoda($sysmis,$sysmis,31) => sysmis
4816 yrmoda($sysmis,10,$sysmis) => sysmis
4818 yrmoda($sysmis,$sysmis,$sysmis) => sysmis
4820 evaluate.sps:24.17-24.31: error: DEBUG EVALUATE: Type mismatch invoking
4821 YRMODA(integer, integer, integer) as yrmoda(string, number, number).
4822 24 | DEBUG EVALUATE /yrmoda('a',1,2).
4825 evaluate.sps:24.24-24.26: note: DEBUG EVALUATE: This argument has type 'string'
4826 but 'integer' is required.
4827 24 | DEBUG EVALUATE /yrmoda('a',1,2).
4830 yrmoda('a',1,2) => error
4832 evaluate.sps:25.17-25.31: error: DEBUG EVALUATE: Type mismatch invoking
4833 YRMODA(integer, integer, integer) as yrmoda(number, string, number).
4834 25 | DEBUG EVALUATE /yrmoda(1,'a',2).
4837 evaluate.sps:25.26-25.28: note: DEBUG EVALUATE: This argument has type 'string'
4838 but 'integer' is required.
4839 25 | DEBUG EVALUATE /yrmoda(1,'a',2).
4842 yrmoda(1,'a',2) => error
4844 evaluate.sps:26.17-26.31: error: DEBUG EVALUATE: Type mismatch invoking
4845 YRMODA(integer, integer, integer) as yrmoda(number, number, string).
4846 26 | DEBUG EVALUATE /yrmoda(1,2,'a').
4849 evaluate.sps:26.28-26.30: note: DEBUG EVALUATE: This argument has type 'string'
4850 but 'integer' is required.
4851 26 | DEBUG EVALUATE /yrmoda(1,2,'a').
4854 yrmoda(1,2,'a') => error
4859 AT_SETUP([expressions - DATE.MDY])
4860 AT_KEYWORDS([expression expressions evaluate])
4861 AT_DATA([evaluate-base.sps], [dnl
4863 DEBUG EVALUATE SET opt.
4865 dnl FIXME: check out-of-range and nearly out-of-range values
4866 DEBUG EVALUATE /ctime.days(date.mdy(6,10,1648)) + 577735.
4867 DEBUG EVALUATE /ctime.days(date.mdy(6,30,1680)) + 577735.
4868 DEBUG EVALUATE /ctime.days(date.mdy(7,24,1716)) + 577735.
4869 DEBUG EVALUATE /ctime.days(date.mdy(6,19,1768)) + 577735.
4870 DEBUG EVALUATE /ctime.days(date.mdy(8,2,1819)) + 577735.
4871 DEBUG EVALUATE /ctime.days(date.mdy(3,27,1839)) + 577735.
4872 DEBUG EVALUATE /ctime.days(date.mdy(4,19,1903)) + 577735.
4873 DEBUG EVALUATE /ctime.days(date.mdy(8,25,1929)) + 577735.
4874 DEBUG EVALUATE /ctime.days(date.mdy(9,29,1941)) + 577735.
4875 DEBUG EVALUATE /ctime.days(date.mdy(4,19,1943)) + 577735.
4876 DEBUG EVALUATE /ctime.days(date.mdy(10,7,1943)) + 577735.
4877 DEBUG EVALUATE /ctime.days(date.mdy(3,17,1992)) + 577735.
4878 DEBUG EVALUATE /ctime.days(date.mdy(2,25,1996)) + 577735.
4879 DEBUG EVALUATE /ctime.days(date.mdy(11,10,2038)) + 577735.
4880 DEBUG EVALUATE /ctime.days(date.mdy(7,18,2094)) + 577735.
4882 dnl FIXME: check out-of-range and nearly out-of-range values
4883 DEBUG EVALUATE /ctime.days(date.mdy(10,15,1582)).
4884 DEBUG EVALUATE /ctime.days(date.mdy(9,6,1719)).
4885 DEBUG EVALUATE /ctime.days(date.mdy(1,24,1583)).
4886 DEBUG EVALUATE /ctime.days(date.mdy(12,14,1585)).
4887 DEBUG EVALUATE /ctime.days(date.mdy(11,26,1621)).
4888 DEBUG EVALUATE /ctime.days(date.mdy(12,25,1821)).
4889 DEBUG EVALUATE /ctime.days(date.mdy(12,3,1882)).
4890 DEBUG EVALUATE /ctime.days(date.mdy(4,6,2002)).
4891 DEBUG EVALUATE /ctime.days(date.mdy(12,19,1999)).
4892 DEBUG EVALUATE /ctime.days(date.mdy(10,1,1978)).
4893 DEBUG EVALUATE /ctime.days(date.mdy(10,0,1978)).
4894 DEBUG EVALUATE /ctime.days(date.mdy(10,32,1978)).
4895 DEBUG EVALUATE /ctime.days(date.mdy(0,31,1978)).
4896 DEBUG EVALUATE /ctime.days(date.mdy(13,31,1978)).
4897 DEBUG EVALUATE /ctime.days(date.mdy(10,$sysmis,1978)).
4898 DEBUG EVALUATE /ctime.days(date.mdy($sysmis,31,1978)).
4899 DEBUG EVALUATE /ctime.days(date.mdy(10,31,$sysmis)).
4900 DEBUG EVALUATE /ctime.days(date.mdy($sysmis,$sysmis,1978)).
4901 DEBUG EVALUATE /ctime.days(date.mdy($sysmis,31,$sysmis)).
4902 DEBUG EVALUATE /ctime.days(date.mdy(10,$sysmis,$sysmis)).
4903 DEBUG EVALUATE /ctime.days(date.mdy($sysmis,$sysmis,$sysmis)).
4904 DEBUG EVALUATE /date.mdy('a',1,2).
4905 DEBUG EVALUATE /date.mdy(1,'a',2).
4906 DEBUG EVALUATE /date.mdy(1,2,'a').
4907 DEBUG EVALUATE /ctime.days(date.mdy(0,0,0)).
4908 DEBUG EVALUATE /ctime.days(date.mdy(0,0,999)).
4909 DEBUG EVALUATE /date.mdy(1,1,1582).
4910 DEBUG EVALUATE /date.mdy(10,14,1582).
4911 DEBUG EVALUATE /date.mdy(10,15,1582).
4914 for opt in OPT NOOPT; do
4916 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
4917 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
4918 ctime.days(date.mdy(6,10,1648)) + 577735 => 601716.00
4920 ctime.days(date.mdy(6,30,1680)) + 577735 => 613424.00
4922 ctime.days(date.mdy(7,24,1716)) + 577735 => 626596.00
4924 ctime.days(date.mdy(6,19,1768)) + 577735 => 645554.00
4926 ctime.days(date.mdy(8,2,1819)) + 577735 => 664224.00
4928 ctime.days(date.mdy(3,27,1839)) + 577735 => 671401.00
4930 ctime.days(date.mdy(4,19,1903)) + 577735 => 694799.00
4932 ctime.days(date.mdy(8,25,1929)) + 577735 => 704424.00
4934 ctime.days(date.mdy(9,29,1941)) + 577735 => 708842.00
4936 ctime.days(date.mdy(4,19,1943)) + 577735 => 709409.00
4938 ctime.days(date.mdy(10,7,1943)) + 577735 => 709580.00
4940 ctime.days(date.mdy(3,17,1992)) + 577735 => 727274.00
4942 ctime.days(date.mdy(2,25,1996)) + 577735 => 728714.00
4944 ctime.days(date.mdy(11,10,2038)) + 577735 => 744313.00
4946 ctime.days(date.mdy(7,18,2094)) + 577735 => 764652.00
4948 ctime.days(date.mdy(10,15,1582)) => 1.00
4950 ctime.days(date.mdy(9,6,1719)) => 50000.00
4952 ctime.days(date.mdy(1,24,1583)) => 102.00
4954 ctime.days(date.mdy(12,14,1585)) => 1157.00
4956 ctime.days(date.mdy(11,26,1621)) => 14288.00
4958 ctime.days(date.mdy(12,25,1821)) => 87365.00
4960 ctime.days(date.mdy(12,3,1882)) => 109623.00
4962 ctime.days(date.mdy(4,6,2002)) => 153211.00
4964 ctime.days(date.mdy(12,19,1999)) => 152372.00
4966 ctime.days(date.mdy(10,1,1978)) => 144623.00
4968 ctime.days(date.mdy(10,0,1978)) => 144622.00
4970 evaluate.sps:31.28-31.47: error: DEBUG EVALUATE: Invalid arguments to DATE.MDY
4972 31 | DEBUG EVALUATE /ctime.days(date.mdy(10,32,1978)).
4973 | ^~~~~~~~~~~~~~~~~~~~
4975 evaluate.sps:31.40-31.41: note: DEBUG EVALUATE: Day 32 is not in the acceptable
4977 31 | DEBUG EVALUATE /ctime.days(date.mdy(10,32,1978)).
4980 ctime.days(date.mdy(10,32,1978)) => sysmis
4982 ctime.days(date.mdy(0,31,1978)) => 144349.00
4984 ctime.days(date.mdy(13,31,1978)) => 144745.00
4986 ctime.days(date.mdy(10,$sysmis,1978)) => sysmis
4988 ctime.days(date.mdy($sysmis,31,1978)) => sysmis
4990 ctime.days(date.mdy(10,31,$sysmis)) => sysmis
4992 ctime.days(date.mdy($sysmis,$sysmis,1978)) => sysmis
4994 ctime.days(date.mdy($sysmis,31,$sysmis)) => sysmis
4996 ctime.days(date.mdy(10,$sysmis,$sysmis)) => sysmis
4998 ctime.days(date.mdy($sysmis,$sysmis,$sysmis)) => sysmis
5000 evaluate.sps:41.17-41.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5001 MDY(integer, integer, integer) as date.mdy(string, number, number).
5002 41 | DEBUG EVALUATE /date.mdy('a',1,2).
5005 evaluate.sps:41.26-41.28: note: DEBUG EVALUATE: This argument has type 'string'
5006 but 'integer' is required.
5007 41 | DEBUG EVALUATE /date.mdy('a',1,2).
5010 date.mdy('a',1,2) => error
5012 evaluate.sps:42.17-42.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5013 MDY(integer, integer, integer) as date.mdy(number, string, number).
5014 42 | DEBUG EVALUATE /date.mdy(1,'a',2).
5017 evaluate.sps:42.28-42.30: note: DEBUG EVALUATE: This argument has type 'string'
5018 but 'integer' is required.
5019 42 | DEBUG EVALUATE /date.mdy(1,'a',2).
5022 date.mdy(1,'a',2) => error
5024 evaluate.sps:43.17-43.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5025 MDY(integer, integer, integer) as date.mdy(number, number, string).
5026 43 | DEBUG EVALUATE /date.mdy(1,2,'a').
5029 evaluate.sps:43.30-43.32: note: DEBUG EVALUATE: This argument has type 'string'
5030 but 'integer' is required.
5031 43 | DEBUG EVALUATE /date.mdy(1,2,'a').
5034 date.mdy(1,2,'a') => error
5036 ctime.days(date.mdy(0,0,0)) => 152353.00
5038 evaluate.sps:45.28-45.44: error: DEBUG EVALUATE: Invalid arguments to DATE.MDY
5040 45 | DEBUG EVALUATE /ctime.days(date.mdy(0,0,999)).
5043 evaluate.sps:45.41-45.43: note: DEBUG EVALUATE: Date 0998-12-0 is before the
5044 earliest supported date 1582-10-15.
5045 45 | DEBUG EVALUATE /ctime.days(date.mdy(0,0,999)).
5048 ctime.days(date.mdy(0,0,999)) => sysmis
5050 evaluate.sps:46.17-46.34: error: DEBUG EVALUATE: Invalid arguments to DATE.MDY
5052 46 | DEBUG EVALUATE /date.mdy(1,1,1582).
5053 | ^~~~~~~~~~~~~~~~~~
5055 evaluate.sps:46.17-46.34: note: DEBUG EVALUATE: Date 1582-1-1 is before the
5056 earliest supported date 1582-10-15.
5057 46 | DEBUG EVALUATE /date.mdy(1,1,1582).
5058 | ^~~~~~~~~~~~~~~~~~
5060 date.mdy(1,1,1582) => sysmis
5062 evaluate.sps:47.17-47.36: error: DEBUG EVALUATE: Invalid arguments to DATE.MDY
5064 47 | DEBUG EVALUATE /date.mdy(10,14,1582).
5065 | ^~~~~~~~~~~~~~~~~~~~
5067 evaluate.sps:47.17-47.36: note: DEBUG EVALUATE: Date 1582-10-14 is before the
5068 earliest supported date 1582-10-15.
5069 47 | DEBUG EVALUATE /date.mdy(10,14,1582).
5070 | ^~~~~~~~~~~~~~~~~~~~
5072 date.mdy(10,14,1582) => sysmis
5074 date.mdy(10,15,1582) => 86400.00
5079 AT_SETUP([expressions - DATE.MOYR])
5080 AT_KEYWORDS([expression expressions evaluate])
5081 AT_DATA([evaluate-base.sps], [dnl
5083 DEBUG EVALUATE SET opt.
5084 DEBUG EVALUATE /ctime.days(date.moyr(1,2000)).
5085 DEBUG EVALUATE /ctime.days(date.moyr(2,2000)).
5086 DEBUG EVALUATE /ctime.days(date.moyr(3,2000)).
5087 DEBUG EVALUATE /ctime.days(date.moyr(4,2000)).
5088 DEBUG EVALUATE /ctime.days(date.moyr(5,2000)).
5089 DEBUG EVALUATE /ctime.days(date.moyr(13,2000)).
5090 DEBUG EVALUATE /ctime.days(date.moyr(14,2000)).
5091 DEBUG EVALUATE /ctime.days(date.moyr($sysmis,2000)).
5092 DEBUG EVALUATE /ctime.days(date.moyr(1,$sysmis)).
5093 DEBUG EVALUATE /ctime.days(date.moyr($sysmis,$sysmis)).
5094 DEBUG EVALUATE /date.moyr('a',2000).
5095 DEBUG EVALUATE /date.moyr(5,'a').
5096 DEBUG EVALUATE /date.moyr('a','b').
5099 for opt in OPT NOOPT; do
5101 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5102 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
5103 ctime.days(date.moyr(1,2000)) => 152385.00
5105 ctime.days(date.moyr(2,2000)) => 152416.00
5107 ctime.days(date.moyr(3,2000)) => 152445.00
5109 ctime.days(date.moyr(4,2000)) => 152476.00
5111 ctime.days(date.moyr(5,2000)) => 152506.00
5113 ctime.days(date.moyr(13,2000)) => 152751.00
5115 evaluate.sps:9.28-9.45: error: DEBUG EVALUATE: Invalid arguments to DATE.MOYR
5117 9 | DEBUG EVALUATE /ctime.days(date.moyr(14,2000)).
5118 | ^~~~~~~~~~~~~~~~~~
5120 evaluate.sps:9.38-9.39: note: DEBUG EVALUATE: Month 14 is not in the acceptable
5122 9 | DEBUG EVALUATE /ctime.days(date.moyr(14,2000)).
5125 ctime.days(date.moyr(14,2000)) => sysmis
5127 ctime.days(date.moyr($sysmis,2000)) => sysmis
5129 ctime.days(date.moyr(1,$sysmis)) => sysmis
5131 ctime.days(date.moyr($sysmis,$sysmis)) => sysmis
5133 evaluate.sps:13.17-13.35: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5134 MOYR(integer, integer) as date.moyr(string, number).
5135 13 | DEBUG EVALUATE /date.moyr('a',2000).
5136 | ^~~~~~~~~~~~~~~~~~~
5138 evaluate.sps:13.27-13.29: note: DEBUG EVALUATE: This argument has type 'string'
5139 but 'integer' is required.
5140 13 | DEBUG EVALUATE /date.moyr('a',2000).
5143 date.moyr('a',2000) => error
5145 evaluate.sps:14.17-14.32: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5146 MOYR(integer, integer) as date.moyr(number, string).
5147 14 | DEBUG EVALUATE /date.moyr(5,'a').
5150 evaluate.sps:14.29-14.31: note: DEBUG EVALUATE: This argument has type 'string'
5151 but 'integer' is required.
5152 14 | DEBUG EVALUATE /date.moyr(5,'a').
5155 date.moyr(5,'a') => error
5157 evaluate.sps:15.17-15.34: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5158 MOYR(integer, integer) as date.moyr(string, string).
5159 15 | DEBUG EVALUATE /date.moyr('a','b').
5160 | ^~~~~~~~~~~~~~~~~~
5162 evaluate.sps:15.27-15.29: note: DEBUG EVALUATE: This argument has type 'string'
5163 but 'integer' is required.
5164 15 | DEBUG EVALUATE /date.moyr('a','b').
5167 evaluate.sps:15.31-15.33: note: DEBUG EVALUATE: This argument has type 'string'
5168 but 'integer' is required.
5169 15 | DEBUG EVALUATE /date.moyr('a','b').
5172 date.moyr('a','b') => error
5177 AT_SETUP([expressions - DATE.QYR])
5178 AT_KEYWORDS([expression expressions evaluate])
5179 AT_DATA([evaluate-base.sps], [dnl
5181 DEBUG EVALUATE SET opt.
5182 DEBUG EVALUATE /ctime.days(date.qyr(1,2000)).
5183 DEBUG EVALUATE /ctime.days(date.qyr(2,2000)).
5184 DEBUG EVALUATE /ctime.days(date.qyr(5,2000)).
5185 DEBUG EVALUATE /ctime.days(date.qyr(6,2000)).
5186 DEBUG EVALUATE /ctime.days(date.qyr($sysmis,2000)).
5187 DEBUG EVALUATE /ctime.days(date.qyr(1,$sysmis)).
5188 DEBUG EVALUATE /ctime.days(date.qyr($sysmis,$sysmis)).
5189 DEBUG EVALUATE /date.qyr('a',2000).
5190 DEBUG EVALUATE /date.qyr(5,'a').
5191 DEBUG EVALUATE /date.qyr('a','b').
5194 for opt in OPT NOOPT; do
5196 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5197 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
5198 ctime.days(date.qyr(1,2000)) => 152385.00
5200 ctime.days(date.qyr(2,2000)) => 152476.00
5202 evaluate.sps:5.37: warning: DEBUG EVALUATE: Argument 1 to DATE.QYR must be 1,
5204 5 | DEBUG EVALUATE /ctime.days(date.qyr(5,2000)).
5207 ctime.days(date.qyr(5,2000)) => sysmis
5209 evaluate.sps:6.37: warning: DEBUG EVALUATE: Argument 1 to DATE.QYR must be 1,
5211 6 | DEBUG EVALUATE /ctime.days(date.qyr(6,2000)).
5214 ctime.days(date.qyr(6,2000)) => sysmis
5216 ctime.days(date.qyr($sysmis,2000)) => sysmis
5218 ctime.days(date.qyr(1,$sysmis)) => sysmis
5220 ctime.days(date.qyr($sysmis,$sysmis)) => sysmis
5222 evaluate.sps:10.17-10.34: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5223 QYR(integer, integer) as date.qyr(string, number).
5224 10 | DEBUG EVALUATE /date.qyr('a',2000).
5225 | ^~~~~~~~~~~~~~~~~~
5227 evaluate.sps:10.26-10.28: note: DEBUG EVALUATE: This argument has type 'string'
5228 but 'integer' is required.
5229 10 | DEBUG EVALUATE /date.qyr('a',2000).
5232 date.qyr('a',2000) => error
5234 evaluate.sps:11.17-11.31: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5235 QYR(integer, integer) as date.qyr(number, string).
5236 11 | DEBUG EVALUATE /date.qyr(5,'a').
5239 evaluate.sps:11.28-11.30: note: DEBUG EVALUATE: This argument has type 'string'
5240 but 'integer' is required.
5241 11 | DEBUG EVALUATE /date.qyr(5,'a').
5244 date.qyr(5,'a') => error
5246 evaluate.sps:12.17-12.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5247 QYR(integer, integer) as date.qyr(string, string).
5248 12 | DEBUG EVALUATE /date.qyr('a','b').
5251 evaluate.sps:12.26-12.28: note: DEBUG EVALUATE: This argument has type 'string'
5252 but 'integer' is required.
5253 12 | DEBUG EVALUATE /date.qyr('a','b').
5256 evaluate.sps:12.30-12.32: note: DEBUG EVALUATE: This argument has type 'string'
5257 but 'integer' is required.
5258 12 | DEBUG EVALUATE /date.qyr('a','b').
5261 date.qyr('a','b') => error
5266 AT_SETUP([expressions - DATE.WKYR])
5267 AT_KEYWORDS([expression expressions evaluate])
5268 AT_DATA([evaluate-base.sps], [dnl
5270 DEBUG EVALUATE SET opt.
5271 DEBUG EVALUATE /ctime.days(date.wkyr(1,2000)).
5272 DEBUG EVALUATE /ctime.days(date.wkyr(15,1999)).
5273 DEBUG EVALUATE /ctime.days(date.wkyr(36,1999)).
5274 DEBUG EVALUATE /ctime.days(date.wkyr(54,1999)).
5275 DEBUG EVALUATE /ctime.days(date.wkyr($sysmis,1999)).
5276 DEBUG EVALUATE /ctime.days(date.wkyr(1,$sysmis)).
5277 DEBUG EVALUATE /ctime.days(date.wkyr($sysmis,$sysmis)).
5278 DEBUG EVALUATE /date.wkyr('a',1999).
5279 DEBUG EVALUATE /date.wkyr(5,'a').
5280 DEBUG EVALUATE /date.wkyr('a','b').
5283 for opt in OPT NOOPT; do
5285 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5286 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
5287 ctime.days(date.wkyr(1,2000)) => 152385.00
5289 ctime.days(date.wkyr(15,1999)) => 152118.00
5291 ctime.days(date.wkyr(36,1999)) => 152265.00
5293 evaluate.sps:6.38-6.39: error: DEBUG EVALUATE: The week argument to DATE.WKYR
5294 is outside the acceptable range of 1 to 53. The result will be system-missing.
5295 6 | DEBUG EVALUATE /ctime.days(date.wkyr(54,1999)).
5298 ctime.days(date.wkyr(54,1999)) => sysmis
5300 ctime.days(date.wkyr($sysmis,1999)) => sysmis
5302 ctime.days(date.wkyr(1,$sysmis)) => sysmis
5304 ctime.days(date.wkyr($sysmis,$sysmis)) => sysmis
5306 evaluate.sps:10.17-10.35: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5307 WKYR(integer, integer) as date.wkyr(string, number).
5308 10 | DEBUG EVALUATE /date.wkyr('a',1999).
5309 | ^~~~~~~~~~~~~~~~~~~
5311 evaluate.sps:10.27-10.29: note: DEBUG EVALUATE: This argument has type 'string'
5312 but 'integer' is required.
5313 10 | DEBUG EVALUATE /date.wkyr('a',1999).
5316 date.wkyr('a',1999) => error
5318 evaluate.sps:11.17-11.32: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5319 WKYR(integer, integer) as date.wkyr(number, string).
5320 11 | DEBUG EVALUATE /date.wkyr(5,'a').
5323 evaluate.sps:11.29-11.31: note: DEBUG EVALUATE: This argument has type 'string'
5324 but 'integer' is required.
5325 11 | DEBUG EVALUATE /date.wkyr(5,'a').
5328 date.wkyr(5,'a') => error
5330 evaluate.sps:12.17-12.34: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5331 WKYR(integer, integer) as date.wkyr(string, string).
5332 12 | DEBUG EVALUATE /date.wkyr('a','b').
5333 | ^~~~~~~~~~~~~~~~~~
5335 evaluate.sps:12.27-12.29: note: DEBUG EVALUATE: This argument has type 'string'
5336 but 'integer' is required.
5337 12 | DEBUG EVALUATE /date.wkyr('a','b').
5340 evaluate.sps:12.31-12.33: note: DEBUG EVALUATE: This argument has type 'string'
5341 but 'integer' is required.
5342 12 | DEBUG EVALUATE /date.wkyr('a','b').
5345 date.wkyr('a','b') => error
5350 AT_SETUP([expressions - DATE.YRDAY])
5351 AT_KEYWORDS([expression expressions evaluate])
5352 AT_DATA([evaluate-base.sps], [dnl
5354 DEBUG EVALUATE SET opt.
5355 DEBUG EVALUATE /ctime.days(date.yrday(2000,1)).
5356 DEBUG EVALUATE /ctime.days(date.yrday(2000,100)).
5357 DEBUG EVALUATE /ctime.days(date.yrday(2000,253)).
5358 DEBUG EVALUATE /ctime.days(date.yrday(2000,500)).
5359 DEBUG EVALUATE /ctime.days(date.yrday(2000,-100)).
5360 DEBUG EVALUATE /ctime.days(date.yrday(1999,$sysmis)).
5361 DEBUG EVALUATE /ctime.days(date.yrday($sysmis,1)).
5362 DEBUG EVALUATE /ctime.days(date.yrday($sysmis,$sysmis)).
5363 DEBUG EVALUATE /date.yrday(1999,'a').
5364 DEBUG EVALUATE /date.yrday('a',5).
5365 DEBUG EVALUATE /date.yrday('a','b').
5368 for opt in OPT NOOPT; do
5370 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5371 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
5372 ctime.days(date.yrday(2000,1)) => 152385.00
5374 ctime.days(date.yrday(2000,100)) => 152484.00
5376 ctime.days(date.yrday(2000,253)) => 152637.00
5378 evaluate.sps:6.44-6.46: error: DEBUG EVALUATE: The value 500 as day argument to
5379 DATE.YRDAY is outside the acceptable range of 1 to 366. The result will be
5381 6 | DEBUG EVALUATE /ctime.days(date.yrday(2000,500)).
5384 ctime.days(date.yrday(2000,500)) => sysmis
5386 evaluate.sps:7.44-7.47: error: DEBUG EVALUATE: The value -100 as day argument
5387 to DATE.YRDAY is outside the acceptable range of 1 to 366. The result will be
5389 7 | DEBUG EVALUATE /ctime.days(date.yrday(2000,-100)).
5392 ctime.days(date.yrday(2000,-100)) => sysmis
5394 ctime.days(date.yrday(1999,$sysmis)) => sysmis
5396 ctime.days(date.yrday($sysmis,1)) => sysmis
5398 ctime.days(date.yrday($sysmis,$sysmis)) => sysmis
5400 evaluate.sps:11.17-11.36: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5401 YRDAY(integer, integer) as date.yrday(number, string).
5402 11 | DEBUG EVALUATE /date.yrday(1999,'a').
5403 | ^~~~~~~~~~~~~~~~~~~~
5405 evaluate.sps:11.33-11.35: note: DEBUG EVALUATE: This argument has type 'string'
5406 but 'integer' is required.
5407 11 | DEBUG EVALUATE /date.yrday(1999,'a').
5410 date.yrday(1999,'a') => error
5412 evaluate.sps:12.17-12.33: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5413 YRDAY(integer, integer) as date.yrday(string, number).
5414 12 | DEBUG EVALUATE /date.yrday('a',5).
5417 evaluate.sps:12.28-12.30: note: DEBUG EVALUATE: This argument has type 'string'
5418 but 'integer' is required.
5419 12 | DEBUG EVALUATE /date.yrday('a',5).
5422 date.yrday('a',5) => error
5424 evaluate.sps:13.17-13.35: error: DEBUG EVALUATE: Type mismatch invoking DATE.
5425 YRDAY(integer, integer) as date.yrday(string, string).
5426 13 | DEBUG EVALUATE /date.yrday('a','b').
5427 | ^~~~~~~~~~~~~~~~~~~
5429 evaluate.sps:13.28-13.30: note: DEBUG EVALUATE: This argument has type 'string'
5430 but 'integer' is required.
5431 13 | DEBUG EVALUATE /date.yrday('a','b').
5434 evaluate.sps:13.32-13.34: note: DEBUG EVALUATE: This argument has type 'string'
5435 but 'integer' is required.
5436 13 | DEBUG EVALUATE /date.yrday('a','b').
5439 date.yrday('a','b') => error
5444 AT_SETUP([expressions - XDATE.DATE])
5445 AT_KEYWORDS([expression expressions evaluate])
5446 AT_DATA([evaluate-base.sps], [dnl
5448 DEBUG EVALUATE SET opt.
5449 DEBUG EVALUATE /xdate.date(date.mdy(6,10,1648) + time.hms(0,0,0)) / 86400.
5450 DEBUG EVALUATE /xdate.date(date.mdy(6,30,1680) + time.hms(4,50,38)) / 86400.
5451 DEBUG EVALUATE /xdate.date(date.mdy(7,24,1716) + time.hms(12,31,35)) / 86400.
5452 DEBUG EVALUATE /xdate.date(date.mdy(6,19,1768) + time.hms(12,47,53)) / 86400.
5453 DEBUG EVALUATE /xdate.date(date.mdy(8,2,1819) + time.hms(1,26,0)) / 86400.
5454 DEBUG EVALUATE /xdate.date(date.mdy(3,27,1839) + time.hms(20,58,11)) / 86400.
5455 DEBUG EVALUATE /xdate.date(date.mdy(4,19,1903) + time.hms(7,36,5)) / 86400.
5456 DEBUG EVALUATE /xdate.date(date.mdy(8,25,1929) + time.hms(15,43,49)) / 86400.
5457 DEBUG EVALUATE /xdate.date(date.mdy(9,29,1941) + time.hms(4,25,9)) / 86400.
5458 DEBUG EVALUATE /xdate.date(date.mdy(4,19,1943) + time.hms(6,49,27)) / 86400.
5459 DEBUG EVALUATE /xdate.date(date.mdy(10,7,1943) + time.hms(2,57,52)) / 86400.
5460 DEBUG EVALUATE /xdate.date(date.mdy(3,17,1992) + time.hms(16,45,44)) / 86400.
5461 DEBUG EVALUATE /xdate.date(date.mdy(2,25,1996) + time.hms(21,30,57)) / 86400.
5462 DEBUG EVALUATE /xdate.date(date.mdy(9,29,1941) + time.hms(4,25,9)) / 86400.
5463 DEBUG EVALUATE /xdate.date(date.mdy(4,19,43) + time.hms(6,49,27)) / 86400.
5464 DEBUG EVALUATE /xdate.date(date.mdy(10,7,43) + time.hms(2,57,52)) / 86400.
5465 DEBUG EVALUATE /xdate.date(date.mdy(3,17,92) + time.hms(16,45,44)) / 86400.
5466 DEBUG EVALUATE /xdate.date(date.mdy(2,25,96) + time.hms(21,30,57)) / 86400.
5467 DEBUG EVALUATE /xdate.date(date.mdy(11,10,2038) + time.hms(22,30,4)) / 86400.
5468 DEBUG EVALUATE /xdate.date(date.mdy(7,18,2094) + time.hms(1,56,51)) / 86400.
5469 DEBUG EVALUATE /xdate.date(123.4).
5470 DEBUG EVALUATE /xdate.date('').
5473 for opt in OPT NOOPT; do
5475 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5476 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
5477 xdate.date(date.mdy(6,10,1648) + time.hms(0,0,0)) / 86400 => 23981.00
5479 xdate.date(date.mdy(6,30,1680) + time.hms(4,50,38)) / 86400 => 35689.00
5481 xdate.date(date.mdy(7,24,1716) + time.hms(12,31,35)) / 86400 => 48861.00
5483 xdate.date(date.mdy(6,19,1768) + time.hms(12,47,53)) / 86400 => 67819.00
5485 xdate.date(date.mdy(8,2,1819) + time.hms(1,26,0)) / 86400 => 86489.00
5487 xdate.date(date.mdy(3,27,1839) + time.hms(20,58,11)) / 86400 => 93666.00
5489 xdate.date(date.mdy(4,19,1903) + time.hms(7,36,5)) / 86400 => 117064.00
5491 xdate.date(date.mdy(8,25,1929) + time.hms(15,43,49)) / 86400 => 126689.00
5493 xdate.date(date.mdy(9,29,1941) + time.hms(4,25,9)) / 86400 => 131107.00
5495 xdate.date(date.mdy(4,19,1943) + time.hms(6,49,27)) / 86400 => 131674.00
5497 xdate.date(date.mdy(10,7,1943) + time.hms(2,57,52)) / 86400 => 131845.00
5499 xdate.date(date.mdy(3,17,1992) + time.hms(16,45,44)) / 86400 => 149539.00
5501 xdate.date(date.mdy(2,25,1996) + time.hms(21,30,57)) / 86400 => 150979.00
5503 xdate.date(date.mdy(9,29,1941) + time.hms(4,25,9)) / 86400 => 131107.00
5505 xdate.date(date.mdy(4,19,43) + time.hms(6,49,27)) / 86400 => 131674.00
5507 xdate.date(date.mdy(10,7,43) + time.hms(2,57,52)) / 86400 => 131845.00
5509 xdate.date(date.mdy(3,17,92) + time.hms(16,45,44)) / 86400 => 149539.00
5511 xdate.date(date.mdy(2,25,96) + time.hms(21,30,57)) / 86400 => 150979.00
5513 xdate.date(date.mdy(11,10,2038) + time.hms(22,30,4)) / 86400 => 166578.00
5515 xdate.date(date.mdy(7,18,2094) + time.hms(1,56,51)) / 86400 => 186917.00
5517 xdate.date(123.4) => 0.00
5519 evaluate.sps:24.17-24.30: error: DEBUG EVALUATE: Type mismatch invoking XDATE.
5520 DATE(number) as xdate.date(string).
5521 24 | DEBUG EVALUATE /xdate.date('').
5524 evaluate.sps:24.28-24.29: note: DEBUG EVALUATE: This argument has type 'string'
5525 but 'number' is required.
5526 24 | DEBUG EVALUATE /xdate.date('').
5529 xdate.date('') => error
5534 AT_SETUP([expressions - XDATE.HOUR])
5535 AT_KEYWORDS([expression expressions evaluate])
5536 AT_DATA([evaluate-base.sps], [dnl
5538 DEBUG EVALUATE SET opt.
5539 DEBUG EVALUATE /xdate.hour(date.mdy(6,10,1648) + time.hms(0,0,0)).
5540 DEBUG EVALUATE /xdate.hour(date.mdy(6,30,1680) + time.hms(4,50,38)).
5541 DEBUG EVALUATE /xdate.hour(date.mdy(7,24,1716) + time.hms(12,31,35)).
5542 DEBUG EVALUATE /xdate.hour(date.mdy(6,19,1768) + time.hms(12,47,53)).
5543 DEBUG EVALUATE /xdate.hour(date.mdy(8,2,1819) + time.hms(1,26,0)).
5544 DEBUG EVALUATE /xdate.hour(date.mdy(3,27,1839) + time.hms(20,58,11)).
5545 DEBUG EVALUATE /xdate.hour(date.mdy(4,19,1903) + time.hms(7,36,5)).
5546 DEBUG EVALUATE /xdate.hour(date.mdy(8,25,1929) + time.hms(15,43,49)).
5547 DEBUG EVALUATE /xdate.hour(date.mdy(9,29,1941) + time.hms(4,25,9)).
5548 DEBUG EVALUATE /xdate.hour(date.mdy(4,19,1943) + time.hms(6,49,27)).
5549 DEBUG EVALUATE /xdate.hour(date.mdy(10,7,1943) + time.hms(2,57,52)).
5550 DEBUG EVALUATE /xdate.hour(date.mdy(3,17,1992) + time.hms(16,45,44)).
5551 DEBUG EVALUATE /xdate.hour(date.mdy(2,25,1996) + time.hms(21,30,57)).
5552 DEBUG EVALUATE /xdate.hour(date.mdy(9,29,1941) + time.hms(4,25,9)).
5553 DEBUG EVALUATE /xdate.hour(date.mdy(4,19,43) + time.hms(6,49,27)).
5554 DEBUG EVALUATE /xdate.hour(date.mdy(10,7,43) + time.hms(2,57,52)).
5555 DEBUG EVALUATE /xdate.hour(date.mdy(3,17,92) + time.hms(16,45,44)).
5556 DEBUG EVALUATE /xdate.hour(date.mdy(2,25,96) + time.hms(21,30,57)).
5557 DEBUG EVALUATE /xdate.hour(date.mdy(11,10,2038) + time.hms(22,30,4)).
5558 DEBUG EVALUATE /xdate.hour(date.mdy(7,18,2094) + time.hms(1,56,51)).
5559 DEBUG EVALUATE /xdate.hour(-1).
5560 DEBUG EVALUATE /xdate.hour(1).
5561 DEBUG EVALUATE /xdate.hour($sysmis).
5562 DEBUG EVALUATE /xdate.hour('').
5565 for opt in OPT NOOPT; do
5567 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5568 AT_CHECK([pspp --testing-mode evaluate.sps], [1], [dnl
5569 xdate.hour(date.mdy(6,10,1648) + time.hms(0,0,0)) => 0.00
5571 xdate.hour(date.mdy(6,30,1680) + time.hms(4,50,38)) => 4.00
5573 xdate.hour(date.mdy(7,24,1716) + time.hms(12,31,35)) => 12.00
5575 xdate.hour(date.mdy(6,19,1768) + time.hms(12,47,53)) => 12.00
5577 xdate.hour(date.mdy(8,2,1819) + time.hms(1,26,0)) => 1.00
5579 xdate.hour(date.mdy(3,27,1839) + time.hms(20,58,11)) => 20.00
5581 xdate.hour(date.mdy(4,19,1903) + time.hms(7,36,5)) => 7.00
5583 xdate.hour(date.mdy(8,25,1929) + time.hms(15,43,49)) => 15.00
5585 xdate.hour(date.mdy(9,29,1941) + time.hms(4,25,9)) => 4.00
5587 xdate.hour(date.mdy(4,19,1943) + time.hms(6,49,27)) => 6.00
5589 xdate.hour(date.mdy(10,7,1943) + time.hms(2,57,52)) => 2.00
5591 xdate.hour(date.mdy(3,17,1992) + time.hms(16,45,44)) => 16.00
5593 xdate.hour(date.mdy(2,25,1996) + time.hms(21,30,57)) => 21.00
5595 xdate.hour(date.mdy(9,29,1941) + time.hms(4,25,9)) => 4.00
5597 xdate.hour(date.mdy(4,19,43) + time.hms(6,49,27)) => 6.00
5599 xdate.hour(date.mdy(10,7,43) + time.hms(2,57,52)) => 2.00
5601 xdate.hour(date.mdy(3,17,92) + time.hms(16,45,44)) => 16.00
5603 xdate.hour(date.mdy(2,25,96) + time.hms(21,30,57)) => 21.00
5605 xdate.hour(date.mdy(11,10,2038) + time.hms(22,30,4)) => 22.00
5607 xdate.hour(date.mdy(7,18,2094) + time.hms(1,56,51)) => 1.00
5609 xdate.hour(-1) => -1.00
5611 xdate.hour(1) => 0.00
5613 xdate.hour($sysmis) => sysmis
5615 evaluate.sps:26.17-26.30: error: DEBUG EVALUATE: Type mismatch invoking XDATE.
5616 HOUR(number) as xdate.hour(string).
5617 26 | DEBUG EVALUATE /xdate.hour('').
5620 evaluate.sps:26.28-26.29: note: DEBUG EVALUATE: This argument has type 'string'
5621 but 'number' is required.
5622 26 | DEBUG EVALUATE /xdate.hour('').
5625 xdate.hour('') => error
5630 AT_SETUP([expressions - XDATE.JDAY])
5631 AT_KEYWORDS([expression expressions evaluate])
5632 AT_DATA([evaluate-base.sps], [dnl
5634 DEBUG EVALUATE SET opt.
5635 DEBUG EVALUATE /xdate.jday(date.mdy(6,10,1648) + time.hms(0,0,0)).
5636 DEBUG EVALUATE /xdate.jday(date.mdy(6,30,1680) + time.hms(4,50,38)).
5637 DEBUG EVALUATE /xdate.jday(date.mdy(7,24,1716) + time.hms(12,31,35)).
5638 DEBUG EVALUATE /xdate.jday(date.mdy(6,19,1768) + time.hms(12,47,53)).
5639 DEBUG EVALUATE /xdate.jday(date.mdy(8,2,1819) + time.hms(1,26,0)).
5640 DEBUG EVALUATE /xdate.jday(date.mdy(3,27,1839) + time.hms(20,58,11)).
5641 DEBUG EVALUATE /xdate.jday(date.mdy(4,19,1903) + time.hms(7,36,5)).
5642 DEBUG EVALUATE /xdate.jday(date.mdy(8,25,1929) + time.hms(15,43,49)).
5643 DEBUG EVALUATE /xdate.jday(date.mdy(9,29,1941) + time.hms(4,25,9)).
5644 DEBUG EVALUATE /xdate.jday(date.mdy(4,19,1943) + time.hms(6,49,27)).
5645 DEBUG EVALUATE /xdate.jday(date.mdy(10,7,1943) + time.hms(2,57,52)).
5646 DEBUG EVALUATE /xdate.jday(date.mdy(3,17,1992) + time.hms(16,45,44)).
5647 DEBUG EVALUATE /xdate.jday(date.mdy(2,25,1996) + time.hms(21,30,57)).
5648 DEBUG EVALUATE /xdate.jday(date.mdy(9,29,1941) + time.hms(4,25,9)).
5649 DEBUG EVALUATE /xdate.jday(date.mdy(4,19,43) + time.hms(6,49,27)).
5650 DEBUG EVALUATE /xdate.jday(date.mdy(10,7,43) + time.hms(2,57,52)).
5651 DEBUG EVALUATE /xdate.jday(date.mdy(3,17,92) + time.hms(16,45,44)).
5652 DEBUG EVALUATE /xdate.jday(date.mdy(2,25,96) + time.hms(21,30,57)).
5653 DEBUG EVALUATE /xdate.jday(date.mdy(11,10,2038) + time.hms(22,30,4)).
5654 DEBUG EVALUATE /xdate.jday(date.mdy(7,18,2094) + time.hms(1,56,51)).
5655 DEBUG EVALUATE /xdate.jday(0).
5656 DEBUG EVALUATE /xdate.jday(1).
5657 DEBUG EVALUATE /xdate.jday(86400).
5660 for opt in OPT NOOPT; do
5662 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5663 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
5664 xdate.jday(date.mdy(6,10,1648) + time.hms(0,0,0)) => 162.00
5666 xdate.jday(date.mdy(6,30,1680) + time.hms(4,50,38)) => 182.00
5668 xdate.jday(date.mdy(7,24,1716) + time.hms(12,31,35)) => 206.00
5670 xdate.jday(date.mdy(6,19,1768) + time.hms(12,47,53)) => 171.00
5672 xdate.jday(date.mdy(8,2,1819) + time.hms(1,26,0)) => 214.00
5674 xdate.jday(date.mdy(3,27,1839) + time.hms(20,58,11)) => 86.00
5676 xdate.jday(date.mdy(4,19,1903) + time.hms(7,36,5)) => 109.00
5678 xdate.jday(date.mdy(8,25,1929) + time.hms(15,43,49)) => 237.00
5680 xdate.jday(date.mdy(9,29,1941) + time.hms(4,25,9)) => 272.00
5682 xdate.jday(date.mdy(4,19,1943) + time.hms(6,49,27)) => 109.00
5684 xdate.jday(date.mdy(10,7,1943) + time.hms(2,57,52)) => 280.00
5686 xdate.jday(date.mdy(3,17,1992) + time.hms(16,45,44)) => 77.00
5688 xdate.jday(date.mdy(2,25,1996) + time.hms(21,30,57)) => 56.00
5690 xdate.jday(date.mdy(9,29,1941) + time.hms(4,25,9)) => 272.00
5692 xdate.jday(date.mdy(4,19,43) + time.hms(6,49,27)) => 109.00
5694 xdate.jday(date.mdy(10,7,43) + time.hms(2,57,52)) => 280.00
5696 xdate.jday(date.mdy(3,17,92) + time.hms(16,45,44)) => 77.00
5698 xdate.jday(date.mdy(2,25,96) + time.hms(21,30,57)) => 56.00
5700 xdate.jday(date.mdy(11,10,2038) + time.hms(22,30,4)) => 314.00
5702 xdate.jday(date.mdy(7,18,2094) + time.hms(1,56,51)) => 199.00
5704 xdate.jday(0) => sysmis
5706 xdate.jday(1) => sysmis
5708 xdate.jday(86400) => 288.00
5713 AT_SETUP([expressions - XDATE.MDAY])
5714 AT_KEYWORDS([expression expressions evaluate])
5715 AT_DATA([evaluate-base.sps], [dnl
5717 DEBUG EVALUATE SET opt.
5718 DEBUG EVALUATE /xdate.mday(date.mdy(6,10,1648) + time.hms(0,0,0)).
5719 DEBUG EVALUATE /xdate.mday(date.mdy(6,30,1680) + time.hms(4,50,38)).
5720 DEBUG EVALUATE /xdate.mday(date.mdy(7,24,1716) + time.hms(12,31,35)).
5721 DEBUG EVALUATE /xdate.mday(date.mdy(6,19,1768) + time.hms(12,47,53)).
5722 DEBUG EVALUATE /xdate.mday(date.mdy(8,2,1819) + time.hms(1,26,0)).
5723 DEBUG EVALUATE /xdate.mday(date.mdy(3,27,1839) + time.hms(20,58,11)).
5724 DEBUG EVALUATE /xdate.mday(date.mdy(4,19,1903) + time.hms(7,36,5)).
5725 DEBUG EVALUATE /xdate.mday(date.mdy(8,25,1929) + time.hms(15,43,49)).
5726 DEBUG EVALUATE /xdate.mday(date.mdy(9,29,1941) + time.hms(4,25,9)).
5727 DEBUG EVALUATE /xdate.mday(date.mdy(4,19,1943) + time.hms(6,49,27)).
5728 DEBUG EVALUATE /xdate.mday(date.mdy(10,7,1943) + time.hms(2,57,52)).
5729 DEBUG EVALUATE /xdate.mday(date.mdy(3,17,1992) + time.hms(16,45,44)).
5730 DEBUG EVALUATE /xdate.mday(date.mdy(2,25,1996) + time.hms(21,30,57)).
5731 DEBUG EVALUATE /xdate.mday(date.mdy(9,29,1941) + time.hms(4,25,9)).
5732 DEBUG EVALUATE /xdate.mday(date.mdy(4,19,43) + time.hms(6,49,27)).
5733 DEBUG EVALUATE /xdate.mday(date.mdy(10,7,43) + time.hms(2,57,52)).
5734 DEBUG EVALUATE /xdate.mday(date.mdy(3,17,92) + time.hms(16,45,44)).
5735 DEBUG EVALUATE /xdate.mday(date.mdy(2,25,96) + time.hms(21,30,57)).
5736 DEBUG EVALUATE /xdate.mday(date.mdy(11,10,2038) + time.hms(22,30,4)).
5737 DEBUG EVALUATE /xdate.mday(date.mdy(7,18,2094) + time.hms(1,56,51)).
5740 for opt in OPT NOOPT; do
5742 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5743 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
5744 xdate.mday(date.mdy(6,10,1648) + time.hms(0,0,0)) => 10.00
5746 xdate.mday(date.mdy(6,30,1680) + time.hms(4,50,38)) => 30.00
5748 xdate.mday(date.mdy(7,24,1716) + time.hms(12,31,35)) => 24.00
5750 xdate.mday(date.mdy(6,19,1768) + time.hms(12,47,53)) => 19.00
5752 xdate.mday(date.mdy(8,2,1819) + time.hms(1,26,0)) => 2.00
5754 xdate.mday(date.mdy(3,27,1839) + time.hms(20,58,11)) => 27.00
5756 xdate.mday(date.mdy(4,19,1903) + time.hms(7,36,5)) => 19.00
5758 xdate.mday(date.mdy(8,25,1929) + time.hms(15,43,49)) => 25.00
5760 xdate.mday(date.mdy(9,29,1941) + time.hms(4,25,9)) => 29.00
5762 xdate.mday(date.mdy(4,19,1943) + time.hms(6,49,27)) => 19.00
5764 xdate.mday(date.mdy(10,7,1943) + time.hms(2,57,52)) => 7.00
5766 xdate.mday(date.mdy(3,17,1992) + time.hms(16,45,44)) => 17.00
5768 xdate.mday(date.mdy(2,25,1996) + time.hms(21,30,57)) => 25.00
5770 xdate.mday(date.mdy(9,29,1941) + time.hms(4,25,9)) => 29.00
5772 xdate.mday(date.mdy(4,19,43) + time.hms(6,49,27)) => 19.00
5774 xdate.mday(date.mdy(10,7,43) + time.hms(2,57,52)) => 7.00
5776 xdate.mday(date.mdy(3,17,92) + time.hms(16,45,44)) => 17.00
5778 xdate.mday(date.mdy(2,25,96) + time.hms(21,30,57)) => 25.00
5780 xdate.mday(date.mdy(11,10,2038) + time.hms(22,30,4)) => 10.00
5782 xdate.mday(date.mdy(7,18,2094) + time.hms(1,56,51)) => 18.00
5787 AT_SETUP([expressions - XDATE.MINUTE])
5788 AT_KEYWORDS([expression expressions evaluate])
5789 AT_DATA([evaluate-base.sps], [dnl
5791 DEBUG EVALUATE SET opt.
5792 DEBUG EVALUATE /xdate.minute(date.mdy(6,10,1648) + time.hms(0,0,0)).
5793 DEBUG EVALUATE /xdate.minute(date.mdy(6,30,1680) + time.hms(4,50,38)).
5794 DEBUG EVALUATE /xdate.minute(date.mdy(7,24,1716) + time.hms(12,31,35)).
5795 DEBUG EVALUATE /xdate.minute(date.mdy(6,19,1768) + time.hms(12,47,53)).
5796 DEBUG EVALUATE /xdate.minute(date.mdy(8,2,1819) + time.hms(1,26,0)).
5797 DEBUG EVALUATE /xdate.minute(date.mdy(3,27,1839) + time.hms(20,58,11)).
5798 DEBUG EVALUATE /xdate.minute(date.mdy(4,19,1903) + time.hms(7,36,5)).
5799 DEBUG EVALUATE /xdate.minute(date.mdy(8,25,1929) + time.hms(15,43,49)).
5800 DEBUG EVALUATE /xdate.minute(date.mdy(9,29,1941) + time.hms(4,25,9)).
5801 DEBUG EVALUATE /xdate.minute(date.mdy(4,19,1943) + time.hms(6,49,27)).
5802 DEBUG EVALUATE /xdate.minute(date.mdy(10,7,1943) + time.hms(2,57,52)).
5803 DEBUG EVALUATE /xdate.minute(date.mdy(3,17,1992) + time.hms(16,45,44)).
5804 DEBUG EVALUATE /xdate.minute(date.mdy(2,25,1996) + time.hms(21,30,57)).
5805 DEBUG EVALUATE /xdate.minute(date.mdy(9,29,1941) + time.hms(4,25,9)).
5806 DEBUG EVALUATE /xdate.minute(date.mdy(4,19,43) + time.hms(6,49,27)).
5807 DEBUG EVALUATE /xdate.minute(date.mdy(10,7,43) + time.hms(2,57,52)).
5808 DEBUG EVALUATE /xdate.minute(date.mdy(3,17,92) + time.hms(16,45,44)).
5809 DEBUG EVALUATE /xdate.minute(date.mdy(2,25,96) + time.hms(21,30,57)).
5810 DEBUG EVALUATE /xdate.minute(date.mdy(11,10,2038) + time.hms(22,30,4)).
5811 DEBUG EVALUATE /xdate.minute(date.mdy(7,18,2094) + time.hms(1,56,51)).
5814 for opt in OPT NOOPT; do
5816 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5817 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
5818 xdate.minute(date.mdy(6,10,1648) + time.hms(0,0,0)) => 0.00
5820 xdate.minute(date.mdy(6,30,1680) + time.hms(4,50,38)) => 50.00
5822 xdate.minute(date.mdy(7,24,1716) + time.hms(12,31,35)) => 31.00
5824 xdate.minute(date.mdy(6,19,1768) + time.hms(12,47,53)) => 47.00
5826 xdate.minute(date.mdy(8,2,1819) + time.hms(1,26,0)) => 26.00
5828 xdate.minute(date.mdy(3,27,1839) + time.hms(20,58,11)) => 58.00
5830 xdate.minute(date.mdy(4,19,1903) + time.hms(7,36,5)) => 36.00
5832 xdate.minute(date.mdy(8,25,1929) + time.hms(15,43,49)) => 43.00
5834 xdate.minute(date.mdy(9,29,1941) + time.hms(4,25,9)) => 25.00
5836 xdate.minute(date.mdy(4,19,1943) + time.hms(6,49,27)) => 49.00
5838 xdate.minute(date.mdy(10,7,1943) + time.hms(2,57,52)) => 57.00
5840 xdate.minute(date.mdy(3,17,1992) + time.hms(16,45,44)) => 45.00
5842 xdate.minute(date.mdy(2,25,1996) + time.hms(21,30,57)) => 30.00
5844 xdate.minute(date.mdy(9,29,1941) + time.hms(4,25,9)) => 25.00
5846 xdate.minute(date.mdy(4,19,43) + time.hms(6,49,27)) => 49.00
5848 xdate.minute(date.mdy(10,7,43) + time.hms(2,57,52)) => 57.00
5850 xdate.minute(date.mdy(3,17,92) + time.hms(16,45,44)) => 45.00
5852 xdate.minute(date.mdy(2,25,96) + time.hms(21,30,57)) => 30.00
5854 xdate.minute(date.mdy(11,10,2038) + time.hms(22,30,4)) => 30.00
5856 xdate.minute(date.mdy(7,18,2094) + time.hms(1,56,51)) => 56.00
5861 AT_SETUP([expressions - XDATE.MONTH])
5862 AT_KEYWORDS([expression expressions evaluate])
5863 AT_DATA([evaluate-base.sps], [dnl
5865 DEBUG EVALUATE SET opt.
5866 DEBUG EVALUATE /xdate.month(date.mdy(6,10,1648) + time.hms(0,0,0)).
5867 DEBUG EVALUATE /xdate.month(date.mdy(6,30,1680) + time.hms(4,50,38)).
5868 DEBUG EVALUATE /xdate.month(date.mdy(7,24,1716) + time.hms(12,31,35)).
5869 DEBUG EVALUATE /xdate.month(date.mdy(6,19,1768) + time.hms(12,47,53)).
5870 DEBUG EVALUATE /xdate.month(date.mdy(8,2,1819) + time.hms(1,26,0)).
5871 DEBUG EVALUATE /xdate.month(date.mdy(3,27,1839) + time.hms(20,58,11)).
5872 DEBUG EVALUATE /xdate.month(date.mdy(4,19,1903) + time.hms(7,36,5)).
5873 DEBUG EVALUATE /xdate.month(date.mdy(8,25,1929) + time.hms(15,43,49)).
5874 DEBUG EVALUATE /xdate.month(date.mdy(9,29,1941) + time.hms(4,25,9)).
5875 DEBUG EVALUATE /xdate.month(date.mdy(4,19,1943) + time.hms(6,49,27)).
5876 DEBUG EVALUATE /xdate.month(date.mdy(10,7,1943) + time.hms(2,57,52)).
5877 DEBUG EVALUATE /xdate.month(date.mdy(3,17,1992) + time.hms(16,45,44)).
5878 DEBUG EVALUATE /xdate.month(date.mdy(2,25,1996) + time.hms(21,30,57)).
5879 DEBUG EVALUATE /xdate.month(date.mdy(9,29,1941) + time.hms(4,25,9)).
5880 DEBUG EVALUATE /xdate.month(date.mdy(4,19,43) + time.hms(6,49,27)).
5881 DEBUG EVALUATE /xdate.month(date.mdy(10,7,43) + time.hms(2,57,52)).
5882 DEBUG EVALUATE /xdate.month(date.mdy(3,17,92) + time.hms(16,45,44)).
5883 DEBUG EVALUATE /xdate.month(date.mdy(2,25,96) + time.hms(21,30,57)).
5884 DEBUG EVALUATE /xdate.month(date.mdy(11,10,2038) + time.hms(22,30,4)).
5885 DEBUG EVALUATE /xdate.month(date.mdy(7,18,2094) + time.hms(1,56,51)).
5888 for opt in OPT NOOPT; do
5890 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5891 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
5892 xdate.month(date.mdy(6,10,1648) + time.hms(0,0,0)) => 6.00
5894 xdate.month(date.mdy(6,30,1680) + time.hms(4,50,38)) => 6.00
5896 xdate.month(date.mdy(7,24,1716) + time.hms(12,31,35)) => 7.00
5898 xdate.month(date.mdy(6,19,1768) + time.hms(12,47,53)) => 6.00
5900 xdate.month(date.mdy(8,2,1819) + time.hms(1,26,0)) => 8.00
5902 xdate.month(date.mdy(3,27,1839) + time.hms(20,58,11)) => 3.00
5904 xdate.month(date.mdy(4,19,1903) + time.hms(7,36,5)) => 4.00
5906 xdate.month(date.mdy(8,25,1929) + time.hms(15,43,49)) => 8.00
5908 xdate.month(date.mdy(9,29,1941) + time.hms(4,25,9)) => 9.00
5910 xdate.month(date.mdy(4,19,1943) + time.hms(6,49,27)) => 4.00
5912 xdate.month(date.mdy(10,7,1943) + time.hms(2,57,52)) => 10.00
5914 xdate.month(date.mdy(3,17,1992) + time.hms(16,45,44)) => 3.00
5916 xdate.month(date.mdy(2,25,1996) + time.hms(21,30,57)) => 2.00
5918 xdate.month(date.mdy(9,29,1941) + time.hms(4,25,9)) => 9.00
5920 xdate.month(date.mdy(4,19,43) + time.hms(6,49,27)) => 4.00
5922 xdate.month(date.mdy(10,7,43) + time.hms(2,57,52)) => 10.00
5924 xdate.month(date.mdy(3,17,92) + time.hms(16,45,44)) => 3.00
5926 xdate.month(date.mdy(2,25,96) + time.hms(21,30,57)) => 2.00
5928 xdate.month(date.mdy(11,10,2038) + time.hms(22,30,4)) => 11.00
5930 xdate.month(date.mdy(7,18,2094) + time.hms(1,56,51)) => 7.00
5935 AT_SETUP([expressions - XDATE.QUARTER])
5936 AT_KEYWORDS([expression expressions evaluate])
5937 AT_DATA([evaluate-base.sps], [dnl
5939 DEBUG EVALUATE SET opt.
5940 DEBUG EVALUATE /xdate.quarter(date.mdy(6,10,1648) + time.hms(0,0,0)).
5941 DEBUG EVALUATE /xdate.quarter(date.mdy(6,30,1680) + time.hms(4,50,38)).
5942 DEBUG EVALUATE /xdate.quarter(date.mdy(7,24,1716) + time.hms(12,31,35)).
5943 DEBUG EVALUATE /xdate.quarter(date.mdy(6,19,1768) + time.hms(12,47,53)).
5944 DEBUG EVALUATE /xdate.quarter(date.mdy(8,2,1819) + time.hms(1,26,0)).
5945 DEBUG EVALUATE /xdate.quarter(date.mdy(3,27,1839) + time.hms(20,58,11)).
5946 DEBUG EVALUATE /xdate.quarter(date.mdy(4,19,1903) + time.hms(7,36,5)).
5947 DEBUG EVALUATE /xdate.quarter(date.mdy(8,25,1929) + time.hms(15,43,49)).
5948 DEBUG EVALUATE /xdate.quarter(date.mdy(9,29,1941) + time.hms(4,25,9)).
5949 DEBUG EVALUATE /xdate.quarter(date.mdy(4,19,1943) + time.hms(6,49,27)).
5950 DEBUG EVALUATE /xdate.quarter(date.mdy(10,7,1943) + time.hms(2,57,52)).
5951 DEBUG EVALUATE /xdate.quarter(date.mdy(3,17,1992) + time.hms(16,45,44)).
5952 DEBUG EVALUATE /xdate.quarter(date.mdy(2,25,1996) + time.hms(21,30,57)).
5953 DEBUG EVALUATE /xdate.quarter(date.mdy(9,29,1941) + time.hms(4,25,9)).
5954 DEBUG EVALUATE /xdate.quarter(date.mdy(4,19,43) + time.hms(6,49,27)).
5955 DEBUG EVALUATE /xdate.quarter(date.mdy(10,7,43) + time.hms(2,57,52)).
5956 DEBUG EVALUATE /xdate.quarter(date.mdy(3,17,92) + time.hms(16,45,44)).
5957 DEBUG EVALUATE /xdate.quarter(date.mdy(2,25,96) + time.hms(21,30,57)).
5958 DEBUG EVALUATE /xdate.quarter(date.mdy(11,10,2038) + time.hms(22,30,4)).
5959 DEBUG EVALUATE /xdate.quarter(date.mdy(7,18,2094) + time.hms(1,56,51)).
5962 for opt in OPT NOOPT; do
5964 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
5965 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
5966 xdate.quarter(date.mdy(6,10,1648) + time.hms(0,0,0)) => 2.00
5968 xdate.quarter(date.mdy(6,30,1680) + time.hms(4,50,38)) => 2.00
5970 xdate.quarter(date.mdy(7,24,1716) + time.hms(12,31,35)) => 3.00
5972 xdate.quarter(date.mdy(6,19,1768) + time.hms(12,47,53)) => 2.00
5974 xdate.quarter(date.mdy(8,2,1819) + time.hms(1,26,0)) => 3.00
5976 xdate.quarter(date.mdy(3,27,1839) + time.hms(20,58,11)) => 1.00
5978 xdate.quarter(date.mdy(4,19,1903) + time.hms(7,36,5)) => 2.00
5980 xdate.quarter(date.mdy(8,25,1929) + time.hms(15,43,49)) => 3.00
5982 xdate.quarter(date.mdy(9,29,1941) + time.hms(4,25,9)) => 3.00
5984 xdate.quarter(date.mdy(4,19,1943) + time.hms(6,49,27)) => 2.00
5986 xdate.quarter(date.mdy(10,7,1943) + time.hms(2,57,52)) => 4.00
5988 xdate.quarter(date.mdy(3,17,1992) + time.hms(16,45,44)) => 1.00
5990 xdate.quarter(date.mdy(2,25,1996) + time.hms(21,30,57)) => 1.00
5992 xdate.quarter(date.mdy(9,29,1941) + time.hms(4,25,9)) => 3.00
5994 xdate.quarter(date.mdy(4,19,43) + time.hms(6,49,27)) => 2.00
5996 xdate.quarter(date.mdy(10,7,43) + time.hms(2,57,52)) => 4.00
5998 xdate.quarter(date.mdy(3,17,92) + time.hms(16,45,44)) => 1.00
6000 xdate.quarter(date.mdy(2,25,96) + time.hms(21,30,57)) => 1.00
6002 xdate.quarter(date.mdy(11,10,2038) + time.hms(22,30,4)) => 4.00
6004 xdate.quarter(date.mdy(7,18,2094) + time.hms(1,56,51)) => 3.00
6009 AT_SETUP([expressions - XDATE.SECOND])
6010 AT_KEYWORDS([expression expressions evaluate])
6011 AT_DATA([evaluate-base.sps], [dnl
6013 DEBUG EVALUATE SET opt.
6014 DEBUG EVALUATE /xdate.second(date.mdy(6,10,1648) + time.hms(0,0,0)).
6015 DEBUG EVALUATE /xdate.second(date.mdy(6,30,1680) + time.hms(4,50,38)).
6016 DEBUG EVALUATE /xdate.second(date.mdy(7,24,1716) + time.hms(12,31,35)).
6017 DEBUG EVALUATE /xdate.second(date.mdy(6,19,1768) + time.hms(12,47,53)).
6018 DEBUG EVALUATE /xdate.second(date.mdy(8,2,1819) + time.hms(1,26,0)).
6019 DEBUG EVALUATE /xdate.second(date.mdy(3,27,1839) + time.hms(20,58,11)).
6020 DEBUG EVALUATE /xdate.second(date.mdy(4,19,1903) + time.hms(7,36,5)).
6021 DEBUG EVALUATE /xdate.second(date.mdy(8,25,1929) + time.hms(15,43,49)).
6022 DEBUG EVALUATE /xdate.second(date.mdy(9,29,1941) + time.hms(4,25,9)).
6023 DEBUG EVALUATE /xdate.second(date.mdy(4,19,1943) + time.hms(6,49,27)).
6024 DEBUG EVALUATE /xdate.second(date.mdy(10,7,1943) + time.hms(2,57,52)).
6025 DEBUG EVALUATE /xdate.second(date.mdy(3,17,1992) + time.hms(16,45,44)).
6026 DEBUG EVALUATE /xdate.second(date.mdy(2,25,1996) + time.hms(21,30,57)).
6027 DEBUG EVALUATE /xdate.second(date.mdy(9,29,1941) + time.hms(4,25,9)).
6028 DEBUG EVALUATE /xdate.second(date.mdy(4,19,43) + time.hms(6,49,27)).
6029 DEBUG EVALUATE /xdate.second(date.mdy(10,7,43) + time.hms(2,57,52)).
6030 DEBUG EVALUATE /xdate.second(date.mdy(3,17,92) + time.hms(16,45,44)).
6031 DEBUG EVALUATE /xdate.second(date.mdy(2,25,96) + time.hms(21,30,57)).
6032 DEBUG EVALUATE /xdate.second(date.mdy(11,10,2038) + time.hms(22,30,4)).
6033 DEBUG EVALUATE /xdate.second(date.mdy(7,18,2094) + time.hms(1,56,51)).
6036 for opt in OPT NOOPT; do
6038 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6039 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6040 xdate.second(date.mdy(6,10,1648) + time.hms(0,0,0)) => 0.00
6042 xdate.second(date.mdy(6,30,1680) + time.hms(4,50,38)) => 38.00
6044 xdate.second(date.mdy(7,24,1716) + time.hms(12,31,35)) => 35.00
6046 xdate.second(date.mdy(6,19,1768) + time.hms(12,47,53)) => 53.00
6048 xdate.second(date.mdy(8,2,1819) + time.hms(1,26,0)) => 0.00
6050 xdate.second(date.mdy(3,27,1839) + time.hms(20,58,11)) => 11.00
6052 xdate.second(date.mdy(4,19,1903) + time.hms(7,36,5)) => 5.00
6054 xdate.second(date.mdy(8,25,1929) + time.hms(15,43,49)) => 49.00
6056 xdate.second(date.mdy(9,29,1941) + time.hms(4,25,9)) => 9.00
6058 xdate.second(date.mdy(4,19,1943) + time.hms(6,49,27)) => 27.00
6060 xdate.second(date.mdy(10,7,1943) + time.hms(2,57,52)) => 52.00
6062 xdate.second(date.mdy(3,17,1992) + time.hms(16,45,44)) => 44.00
6064 xdate.second(date.mdy(2,25,1996) + time.hms(21,30,57)) => 57.00
6066 xdate.second(date.mdy(9,29,1941) + time.hms(4,25,9)) => 9.00
6068 xdate.second(date.mdy(4,19,43) + time.hms(6,49,27)) => 27.00
6070 xdate.second(date.mdy(10,7,43) + time.hms(2,57,52)) => 52.00
6072 xdate.second(date.mdy(3,17,92) + time.hms(16,45,44)) => 44.00
6074 xdate.second(date.mdy(2,25,96) + time.hms(21,30,57)) => 57.00
6076 xdate.second(date.mdy(11,10,2038) + time.hms(22,30,4)) => 4.00
6078 xdate.second(date.mdy(7,18,2094) + time.hms(1,56,51)) => 51.00
6083 AT_SETUP([expressions - XDATE.TDAY])
6084 AT_KEYWORDS([expression expressions evaluate])
6085 AT_DATA([evaluate-base.sps], [dnl
6087 DEBUG EVALUATE SET opt.
6088 DEBUG EVALUATE /xdate.tday(date.mdy(6,10,1648) + time.hms(0,0,0)).
6089 DEBUG EVALUATE /xdate.tday(date.mdy(6,30,1680) + time.hms(4,50,38)).
6090 DEBUG EVALUATE /xdate.tday(date.mdy(7,24,1716) + time.hms(12,31,35)).
6091 DEBUG EVALUATE /xdate.tday(date.mdy(6,19,1768) + time.hms(12,47,53)).
6092 DEBUG EVALUATE /xdate.tday(date.mdy(8,2,1819) + time.hms(1,26,0)).
6093 DEBUG EVALUATE /xdate.tday(date.mdy(3,27,1839) + time.hms(20,58,11)).
6094 DEBUG EVALUATE /xdate.tday(date.mdy(4,19,1903) + time.hms(7,36,5)).
6095 DEBUG EVALUATE /xdate.tday(date.mdy(8,25,1929) + time.hms(15,43,49)).
6096 DEBUG EVALUATE /xdate.tday(date.mdy(9,29,1941) + time.hms(4,25,9)).
6097 DEBUG EVALUATE /xdate.tday(date.mdy(4,19,1943) + time.hms(6,49,27)).
6098 DEBUG EVALUATE /xdate.tday(date.mdy(10,7,1943) + time.hms(2,57,52)).
6099 DEBUG EVALUATE /xdate.tday(date.mdy(3,17,1992) + time.hms(16,45,44)).
6100 DEBUG EVALUATE /xdate.tday(date.mdy(2,25,1996) + time.hms(21,30,57)).
6101 DEBUG EVALUATE /xdate.tday(date.mdy(9,29,1941) + time.hms(4,25,9)).
6102 DEBUG EVALUATE /xdate.tday(date.mdy(4,19,43) + time.hms(6,49,27)).
6103 DEBUG EVALUATE /xdate.tday(date.mdy(10,7,43) + time.hms(2,57,52)).
6104 DEBUG EVALUATE /xdate.tday(date.mdy(3,17,92) + time.hms(16,45,44)).
6105 DEBUG EVALUATE /xdate.tday(date.mdy(2,25,96) + time.hms(21,30,57)).
6106 DEBUG EVALUATE /xdate.tday(date.mdy(11,10,2038) + time.hms(22,30,4)).
6107 DEBUG EVALUATE /xdate.tday(date.mdy(7,18,2094) + time.hms(1,56,51)).
6110 for opt in OPT NOOPT; do
6112 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6113 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6114 xdate.tday(date.mdy(6,10,1648) + time.hms(0,0,0)) => 23981.00
6116 xdate.tday(date.mdy(6,30,1680) + time.hms(4,50,38)) => 35689.00
6118 xdate.tday(date.mdy(7,24,1716) + time.hms(12,31,35)) => 48861.00
6120 xdate.tday(date.mdy(6,19,1768) + time.hms(12,47,53)) => 67819.00
6122 xdate.tday(date.mdy(8,2,1819) + time.hms(1,26,0)) => 86489.00
6124 xdate.tday(date.mdy(3,27,1839) + time.hms(20,58,11)) => 93666.00
6126 xdate.tday(date.mdy(4,19,1903) + time.hms(7,36,5)) => 117064.00
6128 xdate.tday(date.mdy(8,25,1929) + time.hms(15,43,49)) => 126689.00
6130 xdate.tday(date.mdy(9,29,1941) + time.hms(4,25,9)) => 131107.00
6132 xdate.tday(date.mdy(4,19,1943) + time.hms(6,49,27)) => 131674.00
6134 xdate.tday(date.mdy(10,7,1943) + time.hms(2,57,52)) => 131845.00
6136 xdate.tday(date.mdy(3,17,1992) + time.hms(16,45,44)) => 149539.00
6138 xdate.tday(date.mdy(2,25,1996) + time.hms(21,30,57)) => 150979.00
6140 xdate.tday(date.mdy(9,29,1941) + time.hms(4,25,9)) => 131107.00
6142 xdate.tday(date.mdy(4,19,43) + time.hms(6,49,27)) => 131674.00
6144 xdate.tday(date.mdy(10,7,43) + time.hms(2,57,52)) => 131845.00
6146 xdate.tday(date.mdy(3,17,92) + time.hms(16,45,44)) => 149539.00
6148 xdate.tday(date.mdy(2,25,96) + time.hms(21,30,57)) => 150979.00
6150 xdate.tday(date.mdy(11,10,2038) + time.hms(22,30,4)) => 166578.00
6152 xdate.tday(date.mdy(7,18,2094) + time.hms(1,56,51)) => 186917.00
6157 AT_SETUP([expressions - XDATE.TIME])
6158 AT_KEYWORDS([expression expressions evaluate])
6159 AT_DATA([evaluate-base.sps], [dnl
6161 DEBUG EVALUATE SET opt.
6162 DEBUG EVALUATE /xdate.time(date.mdy(6,10,1648) + time.hms(0,0,0)).
6163 DEBUG EVALUATE /xdate.time(date.mdy(6,30,1680) + time.hms(4,50,38)).
6164 DEBUG EVALUATE /xdate.time(date.mdy(7,24,1716) + time.hms(12,31,35)).
6165 DEBUG EVALUATE /xdate.time(date.mdy(6,19,1768) + time.hms(12,47,53)).
6166 DEBUG EVALUATE /xdate.time(date.mdy(8,2,1819) + time.hms(1,26,0)).
6167 DEBUG EVALUATE /xdate.time(date.mdy(3,27,1839) + time.hms(20,58,11)).
6168 DEBUG EVALUATE /xdate.time(date.mdy(4,19,1903) + time.hms(7,36,5)).
6169 DEBUG EVALUATE /xdate.time(date.mdy(8,25,1929) + time.hms(15,43,49)).
6170 DEBUG EVALUATE /xdate.time(date.mdy(9,29,1941) + time.hms(4,25,9)).
6171 DEBUG EVALUATE /xdate.time(date.mdy(4,19,1943) + time.hms(6,49,27)).
6172 DEBUG EVALUATE /xdate.time(date.mdy(10,7,1943) + time.hms(2,57,52)).
6173 DEBUG EVALUATE /xdate.time(date.mdy(3,17,1992) + time.hms(16,45,44)).
6174 DEBUG EVALUATE /xdate.time(date.mdy(2,25,1996) + time.hms(21,30,57)).
6175 DEBUG EVALUATE /xdate.time(date.mdy(9,29,1941) + time.hms(4,25,9)).
6176 DEBUG EVALUATE /xdate.time(date.mdy(4,19,43) + time.hms(6,49,27)).
6177 DEBUG EVALUATE /xdate.time(date.mdy(10,7,43) + time.hms(2,57,52)).
6178 DEBUG EVALUATE /xdate.time(date.mdy(3,17,92) + time.hms(16,45,44)).
6179 DEBUG EVALUATE /xdate.time(date.mdy(2,25,96) + time.hms(21,30,57)).
6180 DEBUG EVALUATE /xdate.time(date.mdy(11,10,2038) + time.hms(22,30,4)).
6181 DEBUG EVALUATE /xdate.time(date.mdy(7,18,2094) + time.hms(1,56,51)).
6184 for opt in OPT NOOPT; do
6186 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6187 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6188 xdate.time(date.mdy(6,10,1648) + time.hms(0,0,0)) => 0.00
6190 xdate.time(date.mdy(6,30,1680) + time.hms(4,50,38)) => 17438.00
6192 xdate.time(date.mdy(7,24,1716) + time.hms(12,31,35)) => 45095.00
6194 xdate.time(date.mdy(6,19,1768) + time.hms(12,47,53)) => 46073.00
6196 xdate.time(date.mdy(8,2,1819) + time.hms(1,26,0)) => 5160.00
6198 xdate.time(date.mdy(3,27,1839) + time.hms(20,58,11)) => 75491.00
6200 xdate.time(date.mdy(4,19,1903) + time.hms(7,36,5)) => 27365.00
6202 xdate.time(date.mdy(8,25,1929) + time.hms(15,43,49)) => 56629.00
6204 xdate.time(date.mdy(9,29,1941) + time.hms(4,25,9)) => 15909.00
6206 xdate.time(date.mdy(4,19,1943) + time.hms(6,49,27)) => 24567.00
6208 xdate.time(date.mdy(10,7,1943) + time.hms(2,57,52)) => 10672.00
6210 xdate.time(date.mdy(3,17,1992) + time.hms(16,45,44)) => 60344.00
6212 xdate.time(date.mdy(2,25,1996) + time.hms(21,30,57)) => 77457.00
6214 xdate.time(date.mdy(9,29,1941) + time.hms(4,25,9)) => 15909.00
6216 xdate.time(date.mdy(4,19,43) + time.hms(6,49,27)) => 24567.00
6218 xdate.time(date.mdy(10,7,43) + time.hms(2,57,52)) => 10672.00
6220 xdate.time(date.mdy(3,17,92) + time.hms(16,45,44)) => 60344.00
6222 xdate.time(date.mdy(2,25,96) + time.hms(21,30,57)) => 77457.00
6224 xdate.time(date.mdy(11,10,2038) + time.hms(22,30,4)) => 81004.00
6226 xdate.time(date.mdy(7,18,2094) + time.hms(1,56,51)) => 7011.00
6231 AT_SETUP([expressions - XDATE.WEEK])
6232 AT_KEYWORDS([expression expressions evaluate])
6233 AT_DATA([evaluate-base.sps], [dnl
6235 DEBUG EVALUATE SET opt.
6236 DEBUG EVALUATE /xdate.week(date.mdy(6,10,1648) + time.hms(0,0,0)).
6237 DEBUG EVALUATE /xdate.week(date.mdy(6,30,1680) + time.hms(4,50,38)).
6238 DEBUG EVALUATE /xdate.week(date.mdy(7,24,1716) + time.hms(12,31,35)).
6239 DEBUG EVALUATE /xdate.week(date.mdy(6,19,1768) + time.hms(12,47,53)).
6240 DEBUG EVALUATE /xdate.week(date.mdy(8,2,1819) + time.hms(1,26,0)).
6241 DEBUG EVALUATE /xdate.week(date.mdy(3,27,1839) + time.hms(20,58,11)).
6242 DEBUG EVALUATE /xdate.week(date.mdy(4,19,1903) + time.hms(7,36,5)).
6243 DEBUG EVALUATE /xdate.week(date.mdy(8,25,1929) + time.hms(15,43,49)).
6244 DEBUG EVALUATE /xdate.week(date.mdy(9,29,1941) + time.hms(4,25,9)).
6245 DEBUG EVALUATE /xdate.week(date.mdy(4,19,1943) + time.hms(6,49,27)).
6246 DEBUG EVALUATE /xdate.week(date.mdy(10,7,1943) + time.hms(2,57,52)).
6247 DEBUG EVALUATE /xdate.week(date.mdy(3,17,1992) + time.hms(16,45,44)).
6248 DEBUG EVALUATE /xdate.week(date.mdy(2,25,1996) + time.hms(21,30,57)).
6249 DEBUG EVALUATE /xdate.week(date.mdy(9,29,1941) + time.hms(4,25,9)).
6250 DEBUG EVALUATE /xdate.week(date.mdy(4,19,43) + time.hms(6,49,27)).
6251 DEBUG EVALUATE /xdate.week(date.mdy(10,7,43) + time.hms(2,57,52)).
6252 DEBUG EVALUATE /xdate.week(date.mdy(3,17,92) + time.hms(16,45,44)).
6253 DEBUG EVALUATE /xdate.week(date.mdy(2,25,96) + time.hms(21,30,57)).
6254 DEBUG EVALUATE /xdate.week(date.mdy(11,10,2038) + time.hms(22,30,4)).
6255 DEBUG EVALUATE /xdate.week(date.mdy(7,18,2094) + time.hms(1,56,51)).
6258 for opt in OPT NOOPT; do
6260 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6261 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6262 xdate.week(date.mdy(6,10,1648) + time.hms(0,0,0)) => 24.00
6264 xdate.week(date.mdy(6,30,1680) + time.hms(4,50,38)) => 26.00
6266 xdate.week(date.mdy(7,24,1716) + time.hms(12,31,35)) => 30.00
6268 xdate.week(date.mdy(6,19,1768) + time.hms(12,47,53)) => 25.00
6270 xdate.week(date.mdy(8,2,1819) + time.hms(1,26,0)) => 31.00
6272 xdate.week(date.mdy(3,27,1839) + time.hms(20,58,11)) => 13.00
6274 xdate.week(date.mdy(4,19,1903) + time.hms(7,36,5)) => 16.00
6276 xdate.week(date.mdy(8,25,1929) + time.hms(15,43,49)) => 34.00
6278 xdate.week(date.mdy(9,29,1941) + time.hms(4,25,9)) => 39.00
6280 xdate.week(date.mdy(4,19,1943) + time.hms(6,49,27)) => 16.00
6282 xdate.week(date.mdy(10,7,1943) + time.hms(2,57,52)) => 40.00
6284 xdate.week(date.mdy(3,17,1992) + time.hms(16,45,44)) => 11.00
6286 xdate.week(date.mdy(2,25,1996) + time.hms(21,30,57)) => 8.00
6288 xdate.week(date.mdy(9,29,1941) + time.hms(4,25,9)) => 39.00
6290 xdate.week(date.mdy(4,19,43) + time.hms(6,49,27)) => 16.00
6292 xdate.week(date.mdy(10,7,43) + time.hms(2,57,52)) => 40.00
6294 xdate.week(date.mdy(3,17,92) + time.hms(16,45,44)) => 11.00
6296 xdate.week(date.mdy(2,25,96) + time.hms(21,30,57)) => 8.00
6298 xdate.week(date.mdy(11,10,2038) + time.hms(22,30,4)) => 45.00
6300 xdate.week(date.mdy(7,18,2094) + time.hms(1,56,51)) => 29.00
6305 AT_SETUP([expressions - XDATE.WKDAY])
6306 AT_KEYWORDS([expression expressions evaluate])
6307 AT_DATA([evaluate-base.sps], [dnl
6309 DEBUG EVALUATE SET opt.
6310 DEBUG EVALUATE /xdate.wkday(date.mdy(6,10,1648)).
6311 DEBUG EVALUATE /xdate.wkday(date.mdy(6,30,1680)).
6312 DEBUG EVALUATE /xdate.wkday(date.mdy(7,24,1716)).
6313 DEBUG EVALUATE /xdate.wkday(date.mdy(6,19,1768)).
6314 DEBUG EVALUATE /xdate.wkday(date.mdy(8,2,1819)).
6315 DEBUG EVALUATE /xdate.wkday(date.mdy(3,27,1839)).
6316 DEBUG EVALUATE /xdate.wkday(date.mdy(4,19,1903)).
6317 DEBUG EVALUATE /xdate.wkday(date.mdy(8,25,1929)).
6318 DEBUG EVALUATE /xdate.wkday(date.mdy(9,29,1941)).
6319 DEBUG EVALUATE /xdate.wkday(date.mdy(4,19,1943)).
6320 DEBUG EVALUATE /xdate.wkday(date.mdy(10,7,1943)).
6321 DEBUG EVALUATE /xdate.wkday(date.mdy(3,17,1992)).
6322 DEBUG EVALUATE /xdate.wkday(date.mdy(2,25,1996)).
6323 DEBUG EVALUATE /xdate.wkday(date.mdy(9,29,1941)).
6324 DEBUG EVALUATE /xdate.wkday(date.mdy(4,19,43)).
6325 DEBUG EVALUATE /xdate.wkday(date.mdy(10,7,43)).
6326 DEBUG EVALUATE /xdate.wkday(date.mdy(3,17,92)).
6327 DEBUG EVALUATE /xdate.wkday(date.mdy(2,25,96)).
6328 DEBUG EVALUATE /xdate.wkday(date.mdy(11,10,2038)).
6329 DEBUG EVALUATE /xdate.wkday(date.mdy(7,18,2094)).
6332 for opt in OPT NOOPT; do
6334 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6335 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6336 xdate.wkday(date.mdy(6,10,1648)) => 4.00
6338 xdate.wkday(date.mdy(6,30,1680)) => 1.00
6340 xdate.wkday(date.mdy(7,24,1716)) => 6.00
6342 xdate.wkday(date.mdy(6,19,1768)) => 1.00
6344 xdate.wkday(date.mdy(8,2,1819)) => 2.00
6346 xdate.wkday(date.mdy(3,27,1839)) => 4.00
6348 xdate.wkday(date.mdy(4,19,1903)) => 1.00
6350 xdate.wkday(date.mdy(8,25,1929)) => 1.00
6352 xdate.wkday(date.mdy(9,29,1941)) => 2.00
6354 xdate.wkday(date.mdy(4,19,1943)) => 2.00
6356 xdate.wkday(date.mdy(10,7,1943)) => 5.00
6358 xdate.wkday(date.mdy(3,17,1992)) => 3.00
6360 xdate.wkday(date.mdy(2,25,1996)) => 1.00
6362 xdate.wkday(date.mdy(9,29,1941)) => 2.00
6364 xdate.wkday(date.mdy(4,19,43)) => 2.00
6366 xdate.wkday(date.mdy(10,7,43)) => 5.00
6368 xdate.wkday(date.mdy(3,17,92)) => 3.00
6370 xdate.wkday(date.mdy(2,25,96)) => 1.00
6372 xdate.wkday(date.mdy(11,10,2038)) => 4.00
6374 xdate.wkday(date.mdy(7,18,2094)) => 1.00
6379 AT_SETUP([expressions - XDATE.YEAR])
6380 AT_KEYWORDS([expression expressions evaluate])
6381 AT_DATA([evaluate-base.sps], [dnl
6383 DEBUG EVALUATE SET opt.
6384 DEBUG EVALUATE /xdate.year(date.mdy(6,10,1648) + time.hms(0,0,0)).
6385 DEBUG EVALUATE /xdate.year(date.mdy(6,30,1680) + time.hms(4,50,38)).
6386 DEBUG EVALUATE /xdate.year(date.mdy(7,24,1716) + time.hms(12,31,35)).
6387 DEBUG EVALUATE /xdate.year(date.mdy(6,19,1768) + time.hms(12,47,53)).
6388 DEBUG EVALUATE /xdate.year(date.mdy(8,2,1819) + time.hms(1,26,0)).
6389 DEBUG EVALUATE /xdate.year(date.mdy(3,27,1839) + time.hms(20,58,11)).
6390 DEBUG EVALUATE /xdate.year(date.mdy(4,19,1903) + time.hms(7,36,5)).
6391 DEBUG EVALUATE /xdate.year(date.mdy(8,25,1929) + time.hms(15,43,49)).
6392 DEBUG EVALUATE /xdate.year(date.mdy(9,29,1941) + time.hms(4,25,9)).
6393 DEBUG EVALUATE /xdate.year(date.mdy(4,19,1943) + time.hms(6,49,27)).
6394 DEBUG EVALUATE /xdate.year(date.mdy(10,7,1943) + time.hms(2,57,52)).
6395 DEBUG EVALUATE /xdate.year(date.mdy(3,17,1992) + time.hms(16,45,44)).
6396 DEBUG EVALUATE /xdate.year(date.mdy(2,25,1996) + time.hms(21,30,57)).
6397 DEBUG EVALUATE /xdate.year(date.mdy(9,29,1941) + time.hms(4,25,9)).
6398 DEBUG EVALUATE /xdate.year(date.mdy(4,19,43) + time.hms(6,49,27)).
6399 DEBUG EVALUATE /xdate.year(date.mdy(10,7,43) + time.hms(2,57,52)).
6400 DEBUG EVALUATE /xdate.year(date.mdy(3,17,92) + time.hms(16,45,44)).
6401 DEBUG EVALUATE /xdate.year(date.mdy(2,25,96) + time.hms(21,30,57)).
6402 DEBUG EVALUATE /xdate.year(date.mdy(11,10,2038) + time.hms(22,30,4)).
6403 DEBUG EVALUATE /xdate.year(date.mdy(7,18,2094) + time.hms(1,56,51)).
6406 for opt in OPT NOOPT; do
6408 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6409 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6410 xdate.year(date.mdy(6,10,1648) + time.hms(0,0,0)) => 1648.00
6412 xdate.year(date.mdy(6,30,1680) + time.hms(4,50,38)) => 1680.00
6414 xdate.year(date.mdy(7,24,1716) + time.hms(12,31,35)) => 1716.00
6416 xdate.year(date.mdy(6,19,1768) + time.hms(12,47,53)) => 1768.00
6418 xdate.year(date.mdy(8,2,1819) + time.hms(1,26,0)) => 1819.00
6420 xdate.year(date.mdy(3,27,1839) + time.hms(20,58,11)) => 1839.00
6422 xdate.year(date.mdy(4,19,1903) + time.hms(7,36,5)) => 1903.00
6424 xdate.year(date.mdy(8,25,1929) + time.hms(15,43,49)) => 1929.00
6426 xdate.year(date.mdy(9,29,1941) + time.hms(4,25,9)) => 1941.00
6428 xdate.year(date.mdy(4,19,1943) + time.hms(6,49,27)) => 1943.00
6430 xdate.year(date.mdy(10,7,1943) + time.hms(2,57,52)) => 1943.00
6432 xdate.year(date.mdy(3,17,1992) + time.hms(16,45,44)) => 1992.00
6434 xdate.year(date.mdy(2,25,1996) + time.hms(21,30,57)) => 1996.00
6436 xdate.year(date.mdy(9,29,1941) + time.hms(4,25,9)) => 1941.00
6438 xdate.year(date.mdy(4,19,43) + time.hms(6,49,27)) => 1943.00
6440 xdate.year(date.mdy(10,7,43) + time.hms(2,57,52)) => 1943.00
6442 xdate.year(date.mdy(3,17,92) + time.hms(16,45,44)) => 1992.00
6444 xdate.year(date.mdy(2,25,96) + time.hms(21,30,57)) => 1996.00
6446 xdate.year(date.mdy(11,10,2038) + time.hms(22,30,4)) => 2038.00
6448 xdate.year(date.mdy(7,18,2094) + time.hms(1,56,51)) => 2094.00
6453 AT_SETUP([expressions - DATEDIFF years])
6454 AT_KEYWORDS([expression expressions evaluate])
6455 AT_DATA([evaluate-base.sps], [dnl
6457 DEBUG EVALUATE SET opt.
6459 DEBUG EVALUATE /datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'years').
6460 DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'years').
6461 DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'years').
6462 DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'years').
6463 DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'years').
6464 DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'years').
6465 DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'years').
6466 DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'years').
6467 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'years').
6468 DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'years').
6469 DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'years').
6470 DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'years').
6471 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'years').
6472 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'years').
6473 DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'years').
6474 DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'years').
6475 DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'years').
6476 DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'years').
6477 DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'years').
6478 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'years').
6479 DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'years').
6480 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'years').
6482 DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'years').
6483 DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'years').
6484 DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'years').
6485 DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'years').
6486 DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'years').
6487 DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'years').
6488 DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'years').
6489 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'years').
6490 DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'years').
6491 DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'years').
6492 DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'years').
6493 DEBUG EVALUATE /datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'years').
6494 DEBUG EVALUATE /datediff(date.mdy(2,25,1996), date.mdy(9,29,1941), 'years').
6495 DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(9,29,1941), 'years').
6496 DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'years').
6497 DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'years').
6498 DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'years').
6499 DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(2,25,96), 'years').
6500 DEBUG EVALUATE /datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'years').
6501 DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'years').
6502 DEBUG EVALUATE /datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'years').
6503 DEBUG EVALUATE /datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'years').
6506 for opt in OPT NOOPT; do
6508 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6509 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6510 datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'years') => -32.00
6512 datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'years') => -36.00
6514 datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'years') => -51.00
6516 datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'years') => -51.00
6518 datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'years') => -19.00
6520 datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'years') => -64.00
6522 datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'years') => -26.00
6524 datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'years') => -12.00
6526 datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'years') => -1.00
6528 datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'years') => 0.00
6530 datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'years') => -48.00
6532 datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'years') => -3.00
6534 datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'years') => -54.00
6536 datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'years') => -1.00
6538 datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'years') => 0.00
6540 datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'years') => -48.00
6542 datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'years') => -3.00
6544 datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'years') => -42.00
6546 datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'years') => -55.00
6548 datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'years') => -3.00
6550 datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'years') => -4.00
6552 datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'years') => -2.00
6554 datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'years') => 32.00
6556 datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'years') => 36.00
6558 datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'years') => 51.00
6560 datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'years') => 51.00
6562 datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'years') => 19.00
6564 datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'years') => 64.00
6566 datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'years') => 26.00
6568 datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'years') => 12.00
6570 datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'years') => 1.00
6572 datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'years') => 0.00
6574 datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'years') => 48.00
6576 datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'years') => 3.00
6578 datediff(date.mdy(2,25,1996), date.mdy(9,29,1941), 'years') => 54.00
6580 datediff(date.mdy(4,19,43), date.mdy(9,29,1941), 'years') => 1.00
6582 datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'years') => 0.00
6584 datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'years') => 48.00
6586 datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'years') => 3.00
6588 datediff(date.mdy(11,10,2038), date.mdy(2,25,96), 'years') => 42.00
6590 datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'years') => 55.00
6592 datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'years') => 3.00
6594 datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'years') => 4.00
6596 datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'years') => 2.00
6601 AT_SETUP([expressions - DATEDIFF quarters])
6602 AT_KEYWORDS([expression expressions evaluate])
6603 AT_DATA([evaluate-base.sps], [dnl
6605 DEBUG EVALUATE SET opt.
6606 DEBUG EVALUATE /datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'quarters').
6607 DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'quarters').
6608 DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'quarters').
6609 DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'quarters').
6610 DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'quarters').
6611 DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'quarters').
6612 DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'quarters').
6613 DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'quarters').
6614 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'quarters').
6615 DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'quarters').
6616 DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'quarters').
6617 DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'quarters').
6618 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'quarters').
6619 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'quarters').
6620 DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'quarters').
6621 DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'quarters').
6622 DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'quarters').
6623 DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'quarters').
6624 DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'quarters').
6625 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'quarters').
6626 DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'quarters').
6627 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'quarters').
6629 DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'quarters').
6630 DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'quarters').
6631 DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'quarters').
6632 DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'quarters').
6633 DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'quarters').
6634 DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'quarters').
6635 DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'quarters').
6636 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'quarters').
6637 DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'quarters').
6638 DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'quarters').
6639 DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'quarters').
6640 DEBUG EVALUATE /datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'quarters').
6641 DEBUG EVALUATE /datediff(date.mdy(2,25,1996), date.mdy(9,29,1941), 'quarters').
6642 DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(9,29,1941), 'quarters').
6643 DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'quarters').
6644 DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'quarters').
6645 DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'quarters').
6646 DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(2,25,96), 'quarters').
6647 DEBUG EVALUATE /datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'quarters').
6648 DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'quarters').
6649 DEBUG EVALUATE /datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'quarters').
6650 DEBUG EVALUATE /datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'quarters').
6653 for opt in OPT NOOPT; do
6655 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6656 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6657 datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'quarters') => -128.00
6659 datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'quarters') => -144.00
6661 datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'quarters') => -207.00
6663 datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'quarters') => -204.00
6665 datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'quarters') => -78.00
6667 datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'quarters') => -256.00
6669 datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'quarters') => -105.00
6671 datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'quarters') => -48.00
6673 datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'quarters') => -6.00
6675 datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'quarters') => -1.00
6677 datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'quarters') => -193.00
6679 datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'quarters') => -15.00
6681 datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'quarters') => -217.00
6683 datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'quarters') => -6.00
6685 datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'quarters') => -1.00
6687 datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'quarters') => -193.00
6689 datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'quarters') => -15.00
6691 datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'quarters') => -170.00
6693 datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'quarters') => -222.00
6695 datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'quarters') => -15.00
6697 datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'quarters') => -16.00
6699 datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'quarters') => -11.00
6701 datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'quarters') => 128.00
6703 datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'quarters') => 144.00
6705 datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'quarters') => 207.00
6707 datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'quarters') => 204.00
6709 datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'quarters') => 78.00
6711 datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'quarters') => 256.00
6713 datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'quarters') => 105.00
6715 datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'quarters') => 48.00
6717 datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'quarters') => 6.00
6719 datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'quarters') => 1.00
6721 datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'quarters') => 193.00
6723 datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'quarters') => 15.00
6725 datediff(date.mdy(2,25,1996), date.mdy(9,29,1941), 'quarters') => 217.00
6727 datediff(date.mdy(4,19,43), date.mdy(9,29,1941), 'quarters') => 6.00
6729 datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'quarters') => 1.00
6731 datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'quarters') => 193.00
6733 datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'quarters') => 15.00
6735 datediff(date.mdy(11,10,2038), date.mdy(2,25,96), 'quarters') => 170.00
6737 datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'quarters') => 222.00
6739 datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'quarters') => 15.00
6741 datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'quarters') => 16.00
6743 datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'quarters') => 11.00
6748 AT_SETUP([expressions - DATEDIFF months])
6749 AT_KEYWORDS([expression expressions evaluate])
6750 AT_DATA([evaluate-base.sps], [dnl
6752 DEBUG EVALUATE SET opt.
6753 DEBUG EVALUATE /datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'months').
6754 DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'months').
6755 DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'months').
6756 DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'months').
6757 DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'months').
6758 DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'months').
6759 DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'months').
6760 DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'months').
6761 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'months').
6762 DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'months').
6763 DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'months').
6764 DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'months').
6765 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'months').
6766 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'months').
6767 DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'months').
6768 DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'months').
6769 DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'months').
6770 DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'months').
6771 DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'months').
6772 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'months').
6773 DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'months').
6774 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'months').
6776 DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'months').
6777 DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'months').
6778 DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'months').
6779 DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'months').
6780 DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'months').
6781 DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'months').
6782 DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'months').
6783 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'months').
6784 DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'months').
6785 DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'months').
6786 DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'months').
6787 DEBUG EVALUATE /datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'months').
6788 DEBUG EVALUATE /datediff(date.mdy(2,25,1996), date.mdy(9,29,1941), 'months').
6789 DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(9,29,1941), 'months').
6790 DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'months').
6791 DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'months').
6792 DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'months').
6793 DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(2,25,96), 'months').
6794 DEBUG EVALUATE /datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'months').
6795 DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'months').
6796 DEBUG EVALUATE /datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'months').
6797 DEBUG EVALUATE /datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'months').
6800 for opt in OPT NOOPT; do
6802 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6803 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6804 datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'months') => -384.00
6806 datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'months') => -432.00
6808 datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'months') => -622.00
6810 datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'months') => -613.00
6812 datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'months') => -235.00
6814 datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'months') => -768.00
6816 datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'months') => -316.00
6818 datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'months') => -145.00
6820 datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'months') => -18.00
6822 datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'months') => -5.00
6824 datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'months') => -581.00
6826 datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'months') => -47.00
6828 datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'months') => -652.00
6830 datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'months') => -18.00
6832 datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'months') => -5.00
6834 datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'months') => -581.00
6836 datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'months') => -47.00
6838 datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'months') => -512.00
6840 datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'months') => -668.00
6842 datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'months') => -47.00
6844 datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'months') => -48.00
6846 datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'months') => -35.00
6848 datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'months') => 384.00
6850 datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'months') => 432.00
6852 datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'months') => 622.00
6854 datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'months') => 613.00
6856 datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'months') => 235.00
6858 datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'months') => 768.00
6860 datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'months') => 316.00
6862 datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'months') => 145.00
6864 datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'months') => 18.00
6866 datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'months') => 5.00
6868 datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'months') => 581.00
6870 datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'months') => 47.00
6872 datediff(date.mdy(2,25,1996), date.mdy(9,29,1941), 'months') => 652.00
6874 datediff(date.mdy(4,19,43), date.mdy(9,29,1941), 'months') => 18.00
6876 datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'months') => 5.00
6878 datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'months') => 581.00
6880 datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'months') => 47.00
6882 datediff(date.mdy(11,10,2038), date.mdy(2,25,96), 'months') => 512.00
6884 datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'months') => 668.00
6886 datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'months') => 47.00
6888 datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'months') => 48.00
6890 datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'months') => 35.00
6895 AT_SETUP([expressions - DATEDIFF weeks])
6896 AT_KEYWORDS([expression expressions evaluate])
6897 AT_DATA([evaluate-base.sps], [dnl
6899 DEBUG EVALUATE SET opt.
6900 DEBUG EVALUATE /datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'weeks').
6901 DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'weeks').
6902 DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'weeks').
6903 DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'weeks').
6904 DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'weeks').
6905 DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'weeks').
6906 DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'weeks').
6907 DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'weeks').
6908 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'weeks').
6909 DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'weeks').
6910 DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'weeks').
6911 DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'weeks').
6912 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'weeks').
6913 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'weeks').
6914 DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'weeks').
6915 DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'weeks').
6916 DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'weeks').
6917 DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'weeks').
6918 DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'weeks').
6919 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'weeks').
6920 DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'weeks').
6921 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'weeks').
6924 for opt in OPT NOOPT; do
6926 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
6927 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
6928 datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'weeks') => -1672.00
6930 datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'weeks') => -1881.00
6932 datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'weeks') => -2708.00
6934 datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'weeks') => -2667.00
6936 datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'weeks') => -1025.00
6938 datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'weeks') => -3342.00
6940 datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'weeks') => -1375.00
6942 datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'weeks') => -631.00
6944 datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'weeks') => -81.00
6946 datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'weeks') => -24.00
6948 datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'weeks') => -2527.00
6950 datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'weeks') => -205.00
6952 datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'weeks') => -2838.00
6954 datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'weeks') => -81.00
6956 datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'weeks') => -24.00
6958 datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'weeks') => -2527.00
6960 datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'weeks') => -205.00
6962 datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'weeks') => -2228.00
6964 datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'weeks') => -2905.00
6966 datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'weeks') => -208.00
6968 datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'weeks') => -208.00
6970 datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'weeks') => -156.00
6975 AT_SETUP([expressions - DATEDIFF days])
6976 AT_KEYWORDS([expression expressions evaluate])
6977 AT_DATA([evaluate-base.sps], [dnl
6979 DEBUG EVALUATE SET opt.
6980 DEBUG EVALUATE /datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'days').
6981 DEBUG EVALUATE /datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'days').
6982 DEBUG EVALUATE /datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'days').
6983 DEBUG EVALUATE /datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'days').
6984 DEBUG EVALUATE /datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'days').
6985 DEBUG EVALUATE /datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'days').
6986 DEBUG EVALUATE /datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'days').
6987 DEBUG EVALUATE /datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'days').
6988 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'days').
6989 DEBUG EVALUATE /datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'days').
6990 DEBUG EVALUATE /datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'days').
6991 DEBUG EVALUATE /datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'days').
6992 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'days').
6993 DEBUG EVALUATE /datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'days').
6994 DEBUG EVALUATE /datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'days').
6995 DEBUG EVALUATE /datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'days').
6996 DEBUG EVALUATE /datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'days').
6997 DEBUG EVALUATE /datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'days').
6998 DEBUG EVALUATE /datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'days').
6999 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'days').
7000 DEBUG EVALUATE /datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'days').
7001 DEBUG EVALUATE /datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'days').
7004 for opt in OPT NOOPT; do
7006 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
7007 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
7008 datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'days') => -11708.00
7010 datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'days') => -13172.00
7012 datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'days') => -18958.00
7014 datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'days') => -18670.00
7016 datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'days') => -7177.00
7018 datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'days') => -23398.00
7020 datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'days') => -9625.00
7022 datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'days') => -4418.00
7024 datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'days') => -567.00
7026 datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'days') => -171.00
7028 datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'days') => -17694.00
7030 datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'days') => -1440.00
7032 datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'days') => -19872.00
7034 datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'days') => -567.00
7036 datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'days') => -171.00
7038 datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'days') => -17694.00
7040 datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'days') => -1440.00
7042 datediff(date.mdy(2,25,96), date.mdy(11,10,2038), 'days') => -15599.00
7044 datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'days') => -20339.00
7046 datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'days') => -1460.00
7048 datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'days') => -1461.00
7050 datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'days') => -1094.00
7055 dnl time of day is significant for DATEDIFF
7056 AT_SETUP([expressions - DATEDIFF time of day])
7057 AT_KEYWORDS([expression expressions evaluate])
7058 AT_DATA([evaluate-base.sps], [dnl
7060 DEBUG EVALUATE SET opt.
7061 DEBUG EVALUATE /datediff(date.mdy(10,15,1910) + 234, date.mdy(10,10,1910) + 123, 'days').
7062 DEBUG EVALUATE /datediff(date.mdy(10,15,1910) + 123, date.mdy(10,10,1910) + 234, 'days').
7063 DEBUG EVALUATE /datediff(date.mdy(10,24,1910) + 234, date.mdy(10,10,1910) + 123, 'weeks').
7064 DEBUG EVALUATE /datediff(date.mdy(10,24,1910) + 123, date.mdy(10,10,1910) + 234, 'weeks').
7065 DEBUG EVALUATE /datediff(date.mdy(10,10,1910) + 234, date.mdy(5,10,1910) + 123, 'months').
7066 DEBUG EVALUATE /datediff(date.mdy(10,10,1910) + 123, date.mdy(5,10,1910) + 234, 'months').
7067 DEBUG EVALUATE /datediff(date.mdy(5,10,1919) + 234, date.mdy(5,10,1910) + 123, 'years').
7068 DEBUG EVALUATE /datediff(date.mdy(5,10,1919) + 123, date.mdy(5,10,1910) + 234, 'years').
7070 DEBUG EVALUATE /datediff(date.mdy(10,10,1910) + 123, date.mdy(10,15,1910) + 234, 'days').
7071 DEBUG EVALUATE /datediff(date.mdy(10,10,1910) + 234, date.mdy(10,15,1910) + 123, 'days').
7072 DEBUG EVALUATE /datediff(date.mdy(10,10,1910) + 123, date.mdy(10,24,1910) + 234, 'weeks').
7073 DEBUG EVALUATE /datediff(date.mdy(10,10,1910) + 234, date.mdy(10,24,1910) + 123, 'weeks').
7074 DEBUG EVALUATE /datediff(date.mdy(5,10,1910) + 123, date.mdy(10,10,1910) + 234, 'months').
7075 DEBUG EVALUATE /datediff(date.mdy(5,10,1910) + 234, date.mdy(10,10,1910) + 123, 'months').
7076 DEBUG EVALUATE /datediff(date.mdy(5,10,1910) + 123, date.mdy(5,10,1919) + 234, 'years').
7077 DEBUG EVALUATE /datediff(date.mdy(5,10,1910) + 234, date.mdy(5,10,1919) + 123, 'years').
7080 for opt in OPT NOOPT; do
7082 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
7083 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
7084 datediff(date.mdy(10,15,1910) + 234, date.mdy(10,10,1910) + 123, 'days') =>
7087 datediff(date.mdy(10,15,1910) + 123, date.mdy(10,10,1910) + 234, 'days') =>
7090 datediff(date.mdy(10,24,1910) + 234, date.mdy(10,10,1910) + 123, 'weeks') =>
7093 datediff(date.mdy(10,24,1910) + 123, date.mdy(10,10,1910) + 234, 'weeks') =>
7096 datediff(date.mdy(10,10,1910) + 234, date.mdy(5,10,1910) + 123, 'months') =>
7099 datediff(date.mdy(10,10,1910) + 123, date.mdy(5,10,1910) + 234, 'months') =>
7102 datediff(date.mdy(5,10,1919) + 234, date.mdy(5,10,1910) + 123, 'years') => 9.00
7104 datediff(date.mdy(5,10,1919) + 123, date.mdy(5,10,1910) + 234, 'years') => 8.00
7106 datediff(date.mdy(10,10,1910) + 123, date.mdy(10,15,1910) + 234, 'days') =>
7109 datediff(date.mdy(10,10,1910) + 234, date.mdy(10,15,1910) + 123, 'days') =>
7112 datediff(date.mdy(10,10,1910) + 123, date.mdy(10,24,1910) + 234, 'weeks') =>
7115 datediff(date.mdy(10,10,1910) + 234, date.mdy(10,24,1910) + 123, 'weeks') =>
7118 datediff(date.mdy(5,10,1910) + 123, date.mdy(10,10,1910) + 234, 'months') =>
7121 datediff(date.mdy(5,10,1910) + 234, date.mdy(10,10,1910) + 123, 'months') =>
7124 datediff(date.mdy(5,10,1910) + 123, date.mdy(5,10,1919) + 234, 'years') =>
7127 datediff(date.mdy(5,10,1910) + 234, date.mdy(5,10,1919) + 123, 'years') =>
7133 AT_SETUP([expressions - DATESUM with non-leap year])
7134 AT_KEYWORDS([expression expressions evaluate])
7135 AT_DATA([evaluate-base.sps], [dnl
7137 DEBUG EVALUATE SET opt.
7138 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 1, 'months') - date.mdy(1,1,1900)).
7139 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 2, 'months') - date.mdy(1,1,1900)).
7140 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 3, 'months') - date.mdy(1,1,1900)).
7141 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 4, 'months') - date.mdy(1,1,1900)).
7142 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 5.4, 'months') - date.mdy(1,1,1900)).
7143 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 6, 'months') - date.mdy(1,1,1900)).
7144 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 7, 'months') - date.mdy(1,1,1900)).
7145 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 8, 'months') - date.mdy(1,1,1900)).
7146 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 9, 'months') - date.mdy(1,1,1900)).
7147 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 10, 'months') - date.mdy(1,1,1900)).
7148 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 11, 'months') - date.mdy(1,1,1900)).
7149 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 12, 'months') - date.mdy(1,1,1900)).
7150 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 13.9, 'months') - date.mdy(1,1,1900)).
7151 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 1, 'months', 'rollover') - date.mdy(1,1,1900)).
7152 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 2, 'months', 'rollover') - date.mdy(1,1,1900)).
7153 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 3.2, 'months', 'rollover') - date.mdy(1,1,1900)).
7154 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 4, 'months', 'rollover') - date.mdy(1,1,1900)).
7155 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 5, 'months', 'rollover') - date.mdy(1,1,1900)).
7156 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 6, 'months', 'rollover') - date.mdy(1,1,1900)).
7157 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 7, 'months', 'rollover') - date.mdy(1,1,1900)).
7158 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 8, 'months', 'rollover') - date.mdy(1,1,1900)).
7159 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 9, 'months', 'rollover') - date.mdy(1,1,1900)).
7160 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 10, 'months', 'rollover') - date.mdy(1,1,1900)).
7161 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 11, 'months', 'rollover') - date.mdy(1,1,1900)).
7162 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 12, 'months', 'rollover') - date.mdy(1,1,1900)).
7163 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1900), 13, 'months', 'rollover') - date.mdy(1,1,1900)).
7166 for opt in OPT NOOPT; do
7168 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
7169 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
7170 ctime.days(datesum(date.mdy(1,31,1900), 1, 'months') - date.mdy(1,1,1900)) =>
7173 ctime.days(datesum(date.mdy(1,31,1900), 2, 'months') - date.mdy(1,1,1900)) =>
7176 ctime.days(datesum(date.mdy(1,31,1900), 3, 'months') - date.mdy(1,1,1900)) =>
7179 ctime.days(datesum(date.mdy(1,31,1900), 4, 'months') - date.mdy(1,1,1900)) =>
7182 ctime.days(datesum(date.mdy(1,31,1900), 5.4, 'months') - date.mdy(1,1,1900)) =>
7185 ctime.days(datesum(date.mdy(1,31,1900), 6, 'months') - date.mdy(1,1,1900)) =>
7188 ctime.days(datesum(date.mdy(1,31,1900), 7, 'months') - date.mdy(1,1,1900)) =>
7191 ctime.days(datesum(date.mdy(1,31,1900), 8, 'months') - date.mdy(1,1,1900)) =>
7194 ctime.days(datesum(date.mdy(1,31,1900), 9, 'months') - date.mdy(1,1,1900)) =>
7197 ctime.days(datesum(date.mdy(1,31,1900), 10, 'months') - date.mdy(1,1,1900)) =>
7200 ctime.days(datesum(date.mdy(1,31,1900), 11, 'months') - date.mdy(1,1,1900)) =>
7203 ctime.days(datesum(date.mdy(1,31,1900), 12, 'months') - date.mdy(1,1,1900)) =>
7206 ctime.days(datesum(date.mdy(1,31,1900), 13.9, 'months') - date.mdy(1,1,1900))
7209 ctime.days(datesum(date.mdy(1,31,1900), 1, 'months', 'rollover') - date.
7210 mdy(1,1,1900)) => 61.00
7212 ctime.days(datesum(date.mdy(1,31,1900), 2, 'months', 'rollover') - date.
7213 mdy(1,1,1900)) => 89.00
7215 ctime.days(datesum(date.mdy(1,31,1900), 3.2, 'months', 'rollover') - date.
7216 mdy(1,1,1900)) => 120.00
7218 ctime.days(datesum(date.mdy(1,31,1900), 4, 'months', 'rollover') - date.
7219 mdy(1,1,1900)) => 150.00
7221 ctime.days(datesum(date.mdy(1,31,1900), 5, 'months', 'rollover') - date.
7222 mdy(1,1,1900)) => 181.00
7224 ctime.days(datesum(date.mdy(1,31,1900), 6, 'months', 'rollover') - date.
7225 mdy(1,1,1900)) => 211.00
7227 ctime.days(datesum(date.mdy(1,31,1900), 7, 'months', 'rollover') - date.
7228 mdy(1,1,1900)) => 242.00
7230 ctime.days(datesum(date.mdy(1,31,1900), 8, 'months', 'rollover') - date.
7231 mdy(1,1,1900)) => 273.00
7233 ctime.days(datesum(date.mdy(1,31,1900), 9, 'months', 'rollover') - date.
7234 mdy(1,1,1900)) => 303.00
7236 ctime.days(datesum(date.mdy(1,31,1900), 10, 'months', 'rollover') - date.
7237 mdy(1,1,1900)) => 334.00
7239 ctime.days(datesum(date.mdy(1,31,1900), 11, 'months', 'rollover') - date.
7240 mdy(1,1,1900)) => 364.00
7242 ctime.days(datesum(date.mdy(1,31,1900), 12, 'months', 'rollover') - date.
7243 mdy(1,1,1900)) => 395.00
7245 ctime.days(datesum(date.mdy(1,31,1900), 13, 'months', 'rollover') - date.
7246 mdy(1,1,1900)) => 426.00
7251 AT_SETUP([expressions - DATESUM with leap year])
7252 AT_KEYWORDS([expression expressions evaluate])
7253 AT_DATA([evaluate-base.sps], [dnl
7255 DEBUG EVALUATE SET opt.
7256 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 1, 'months') - date.mdy(1,1,1904)).
7257 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 2.5, 'months') - date.mdy(1,1,1904)).
7258 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 3, 'months') - date.mdy(1,1,1904)).
7259 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 4.9, 'months') - date.mdy(1,1,1904)).
7260 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 5.1, 'months') - date.mdy(1,1,1904)).
7261 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 6, 'months') - date.mdy(1,1,1904)).
7262 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 7, 'months') - date.mdy(1,1,1904)).
7263 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 8, 'months') - date.mdy(1,1,1904)).
7264 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 9, 'months') - date.mdy(1,1,1904)).
7265 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 10, 'months') - date.mdy(1,1,1904)).
7266 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 11, 'months') - date.mdy(1,1,1904)).
7267 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 12, 'months') - date.mdy(1,1,1904)).
7268 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 13, 'months') - date.mdy(1,1,1904)).
7269 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 1, 'months', 'rollover') - date.mdy(1,1,1904)).
7270 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 2, 'months', 'rollover') - date.mdy(1,1,1904)).
7271 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 3, 'months', 'rollover') - date.mdy(1,1,1904)).
7272 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 4, 'months', 'rollover') - date.mdy(1,1,1904)).
7273 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 5, 'months', 'rollover') - date.mdy(1,1,1904)).
7274 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 6, 'months', 'rollover') - date.mdy(1,1,1904)).
7275 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 7, 'months', 'rollover') - date.mdy(1,1,1904)).
7276 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 8, 'months', 'rollover') - date.mdy(1,1,1904)).
7277 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 9, 'months', 'rollover') - date.mdy(1,1,1904)).
7278 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 10, 'months', 'rollover') - date.mdy(1,1,1904)).
7279 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 11, 'months', 'rollover') - date.mdy(1,1,1904)).
7280 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 12, 'months', 'rollover') - date.mdy(1,1,1904)).
7281 DEBUG EVALUATE /ctime.days(datesum(date.mdy(1,31,1904), 13, 'months', 'rollover') - date.mdy(1,1,1904)).
7284 for opt in OPT NOOPT; do
7286 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
7287 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
7288 ctime.days(datesum(date.mdy(1,31,1904), 1, 'months') - date.mdy(1,1,1904)) =>
7291 ctime.days(datesum(date.mdy(1,31,1904), 2.5, 'months') - date.mdy(1,1,1904)) =>
7294 ctime.days(datesum(date.mdy(1,31,1904), 3, 'months') - date.mdy(1,1,1904)) =>
7297 ctime.days(datesum(date.mdy(1,31,1904), 4.9, 'months') - date.mdy(1,1,1904)) =>
7300 ctime.days(datesum(date.mdy(1,31,1904), 5.1, 'months') - date.mdy(1,1,1904)) =>
7303 ctime.days(datesum(date.mdy(1,31,1904), 6, 'months') - date.mdy(1,1,1904)) =>
7306 ctime.days(datesum(date.mdy(1,31,1904), 7, 'months') - date.mdy(1,1,1904)) =>
7309 ctime.days(datesum(date.mdy(1,31,1904), 8, 'months') - date.mdy(1,1,1904)) =>
7312 ctime.days(datesum(date.mdy(1,31,1904), 9, 'months') - date.mdy(1,1,1904)) =>
7315 ctime.days(datesum(date.mdy(1,31,1904), 10, 'months') - date.mdy(1,1,1904)) =>
7318 ctime.days(datesum(date.mdy(1,31,1904), 11, 'months') - date.mdy(1,1,1904)) =>
7321 ctime.days(datesum(date.mdy(1,31,1904), 12, 'months') - date.mdy(1,1,1904)) =>
7324 ctime.days(datesum(date.mdy(1,31,1904), 13, 'months') - date.mdy(1,1,1904)) =>
7327 ctime.days(datesum(date.mdy(1,31,1904), 1, 'months', 'rollover') - date.
7328 mdy(1,1,1904)) => 61.00
7330 ctime.days(datesum(date.mdy(1,31,1904), 2, 'months', 'rollover') - date.
7331 mdy(1,1,1904)) => 90.00
7333 ctime.days(datesum(date.mdy(1,31,1904), 3, 'months', 'rollover') - date.
7334 mdy(1,1,1904)) => 121.00
7336 ctime.days(datesum(date.mdy(1,31,1904), 4, 'months', 'rollover') - date.
7337 mdy(1,1,1904)) => 151.00
7339 ctime.days(datesum(date.mdy(1,31,1904), 5, 'months', 'rollover') - date.
7340 mdy(1,1,1904)) => 182.00
7342 ctime.days(datesum(date.mdy(1,31,1904), 6, 'months', 'rollover') - date.
7343 mdy(1,1,1904)) => 212.00
7345 ctime.days(datesum(date.mdy(1,31,1904), 7, 'months', 'rollover') - date.
7346 mdy(1,1,1904)) => 243.00
7348 ctime.days(datesum(date.mdy(1,31,1904), 8, 'months', 'rollover') - date.
7349 mdy(1,1,1904)) => 274.00
7351 ctime.days(datesum(date.mdy(1,31,1904), 9, 'months', 'rollover') - date.
7352 mdy(1,1,1904)) => 304.00
7354 ctime.days(datesum(date.mdy(1,31,1904), 10, 'months', 'rollover') - date.
7355 mdy(1,1,1904)) => 335.00
7357 ctime.days(datesum(date.mdy(1,31,1904), 11, 'months', 'rollover') - date.
7358 mdy(1,1,1904)) => 365.00
7360 ctime.days(datesum(date.mdy(1,31,1904), 12, 'months', 'rollover') - date.
7361 mdy(1,1,1904)) => 396.00
7363 ctime.days(datesum(date.mdy(1,31,1904), 13, 'months', 'rollover') - date.
7364 mdy(1,1,1904)) => 427.00
7369 AT_SETUP([expressions - DATESUM])
7370 AT_KEYWORDS([expression expressions evaluate])
7371 AT_DATA([evaluate-base.sps], [dnl
7373 DEBUG EVALUATE SET opt.
7374 DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,10,1648), 1, 'weeks') - date.mdy(6,10,1648)).
7375 DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'weeks') - date.mdy(6,30,1680)).
7376 DEBUG EVALUATE /ctime.days(datesum(date.mdy(7,24,1716), -3, 'weeks') - date.mdy(7,24,1716)).
7377 DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,19,1768), 4, 'weeks') - date.mdy(6,19,1768)).
7378 DEBUG EVALUATE /ctime.days(datesum(date.mdy(8,2,1819), 5, 'weeks') - date.mdy(8,2,1819)).
7380 DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,10,1648), 1, 'days') - date.mdy(6,10,1648)).
7381 DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'days') - date.mdy(6,30,1680)).
7382 DEBUG EVALUATE /ctime.days(datesum(date.mdy(7,24,1716), -3, 'days') - date.mdy(7,24,1716)).
7383 DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,19,1768), 4, 'days') - date.mdy(6,19,1768)).
7384 DEBUG EVALUATE /ctime.days(datesum(date.mdy(8,2,1819), 5, 'days') - date.mdy(8,2,1819)).
7385 DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,10,1648), 1, 'hours') - date.mdy(6,10,1648)).
7386 DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'hours') - date.mdy(6,30,1680)).
7387 DEBUG EVALUATE /ctime.days(datesum(date.mdy(6,19,1768), -4, 'hours') - date.mdy(6,19,1768)).
7388 DEBUG EVALUATE /ctime.days(datesum(date.mdy(8,2,1819), 5, 'hours') - date.mdy(8,2,1819)).
7391 for opt in OPT NOOPT; do
7393 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
7394 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
7395 ctime.days(datesum(date.mdy(6,10,1648), 1, 'weeks') - date.mdy(6,10,1648)) =>
7398 ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'weeks') - date.mdy(6,30,1680)) =>
7401 ctime.days(datesum(date.mdy(7,24,1716), -3, 'weeks') - date.mdy(7,24,1716)) =>
7404 ctime.days(datesum(date.mdy(6,19,1768), 4, 'weeks') - date.mdy(6,19,1768)) =>
7407 ctime.days(datesum(date.mdy(8,2,1819), 5, 'weeks') - date.mdy(8,2,1819)) =>
7410 ctime.days(datesum(date.mdy(6,10,1648), 1, 'days') - date.mdy(6,10,1648)) =>
7413 ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'days') - date.mdy(6,30,1680)) =>
7416 ctime.days(datesum(date.mdy(7,24,1716), -3, 'days') - date.mdy(7,24,1716)) =>
7419 ctime.days(datesum(date.mdy(6,19,1768), 4, 'days') - date.mdy(6,19,1768)) =>
7422 ctime.days(datesum(date.mdy(8,2,1819), 5, 'days') - date.mdy(8,2,1819)) => 5.00
7424 ctime.days(datesum(date.mdy(6,10,1648), 1, 'hours') - date.mdy(6,10,1648)) =>
7427 ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'hours') - date.mdy(6,30,1680)) =>
7430 ctime.days(datesum(date.mdy(6,19,1768), -4, 'hours') - date.mdy(6,19,1768)) =>
7433 ctime.days(datesum(date.mdy(8,2,1819), 5, 'hours') - date.mdy(8,2,1819)) =>
7439 AT_SETUP([expressions - DATESUM preserves time of day for units of days and longer])
7440 AT_KEYWORDS([expression expressions evaluate])
7441 AT_DATA([evaluate-base.sps], [dnl
7443 DEBUG EVALUATE SET opt.
7444 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))).
7445 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))).
7446 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))).
7447 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))).
7450 for opt in OPT NOOPT; do
7452 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
7453 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
7454 ctime.days(datesum(date.mdy(8,2,1819) + time.hms(1,2,3), 5, 'days') - (date.
7455 mdy(8,2,1819) + time.hms(1,2,3))) => 5.00
7457 ctime.days(datesum(date.mdy(8,2,1819) + time.hms(1,2,3), 5, 'weeks') - (date.
7458 mdy(8,2,1819) + time.hms(1,2,3))) => 35.00
7460 ctime.days(datesum(date.mdy(8,2,1819) + time.hms(1,2,3), 5, 'months') - (date.
7461 mdy(8,2,1819) + time.hms(1,2,3))) => 153.00
7463 ctime.days(datesum(date.mdy(8,2,1819) + time.hms(1,2,3), 5, 'years') - (date.
7464 mdy(8,2,1819) + time.hms(1,2,3))) => 1827.00
7469 dnl These test values are from Applied Statistics, Algorithm AS 310.
7470 AT_SETUP([expressions - NCDF.BETA])
7471 AT_KEYWORDS([expression expressions evaluate])
7472 AT_DATA([evaluate-base.sps], [dnl
7474 DEBUG EVALUATE SET opt.
7475 DEBUG EVALUATE /1000 * ncdf.beta(.868,10,20,150).
7476 DEBUG EVALUATE /1000 * ncdf.beta(.9,10,10,120).
7477 DEBUG EVALUATE /1000 * ncdf.beta(.88,15,5,80).
7478 DEBUG EVALUATE /1000 * ncdf.beta(.85,20,10,110).
7479 DEBUG EVALUATE /1000 * ncdf.beta(.66,20,30,65).
7480 DEBUG EVALUATE /1000 * ncdf.beta(.72,20,50,130).
7481 DEBUG EVALUATE /1000 * ncdf.beta(.72,30,20,80).
7482 DEBUG EVALUATE /1000 * ncdf.beta(.8,30,40,130).
7485 for opt in OPT NOOPT; do
7487 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
7488 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
7489 1000 * ncdf.beta(.868,10,20,150) => 937.66
7491 1000 * ncdf.beta(.9,10,10,120) => 730.68
7493 1000 * ncdf.beta(.88,15,5,80) => 160.43
7495 1000 * ncdf.beta(.85,20,10,110) => 186.75
7497 1000 * ncdf.beta(.66,20,30,65) => 655.94
7499 1000 * ncdf.beta(.72,20,50,130) => 979.69
7501 1000 * ncdf.beta(.72,30,20,80) => 116.24
7503 1000 * ncdf.beta(.8,30,40,130) => 993.04
7510 [[X], [1.00], [], [(X = 1.00)]],
7512 dnl FIXME: out-of-range and nearly out-of-range values on dates
7514 dnl Tests correctness of generic optimizations in optimize_tree().
7515 AT_SETUP([expressions - generic tree optimizations])
7516 AT_KEYWORDS([expression expressions evaluate])
7517 AT_DATA([evaluate-base.sps], [dnl
7519 DEBUG EVALUATE SET opt.
7520 DEBUG EVALUATE (x=10) /x + 0.
7521 DEBUG EVALUATE (x=-3) /x - 0.
7522 DEBUG EVALUATE (x=5) /0 + x.
7523 DEBUG EVALUATE (x=10) /x * 1.
7524 DEBUG EVALUATE (x=-3) /1 * x.
7525 DEBUG EVALUATE (x=5) /x / 1.
7526 DEBUG EVALUATE (x=10) /0 * x.
7527 DEBUG EVALUATE (x=-3) /x * 0.
7528 DEBUG EVALUATE (x=5) /0 / x.
7529 DEBUG EVALUATE (x=5) /mod(0, x).
7530 DEBUG EVALUATE (x=5) /x ** 1.
7531 DEBUG EVALUATE (x=5) /x ** 2.
7534 for opt in OPT NOOPT; do
7536 sed "s/opt/$opt/" < evaluate-base.sps > evaluate.sps
7537 AT_CHECK([pspp --testing-mode evaluate.sps], [0], [dnl
7565 AT_SETUP([expressions - LAG])
7566 AT_DATA([lag.sps], [dnl
7581 AT_CHECK([pspp -o pspp.csv lag.sps])
7582 AT_CHECK([cat pspp.csv], [0], [dnl
7583 Table: Reading 1 record from INLINE.
7584 Variable,Record,Columns,Format
7597 AT_SETUP([expression - LAG crash])
7598 AT_DATA([lag.sps], [dnl
7605 DO IF (x <> LAG(x) ).
7611 AT_CHECK([pspp -o pspp.csv lag.sps])
7612 AT_CHECK([cat pspp.csv], [0], [dnl
7613 Table: Reading free-form data from INLINE.
7621 dnl Tests for a bug which caused UNIFORM(x) to always return zero.
7622 AT_SETUP([expressions - UNIFORM])
7623 AT_DATA([uniform.sps], [dnl
7626 + loop #i = 1 to 20.
7627 + do repeat response=R1.
7628 + compute response = uniform(10).
7637 AT_CHECK([pspp -o pspp.csv uniform.sps])
7638 AT_CHECK([cat pspp.csv], [0], [dnl
7664 AT_SETUP([expressions - VALUELABEL])
7665 AT_DATA([valuelabel.sps], [dnl
7666 DATA LIST notable /n 1 s 2(a).
7667 VALUE LABELS /n 0 'Very dissatisfied'
7669 1.5 'Slightly Peeved'
7673 VALUE LABELS /s 'a' 'Wouldn''t buy again'
7678 STRING nlabel slabel(a10).
7679 COMPUTE nlabel = VALUELABEL(n).
7680 COMPUTE slabel = VALUELABEL(s).
7693 AT_CHECK([pspp -o pspp.csv valuelabel.sps])
7694 AT_CHECK([cat pspp.csv], [0], [dnl
7698 0,a,Very dissa,Wouldn't b
7699 1,b,Dissatisfi,Unhappy
7701 3,d,Satisfied,Satiated
7702 4,e,Very satis,Elated
7708 AT_SETUP([expressions - variables])
7709 AT_DATA([variables.sps], [dnl
7710 DATA LIST NOTABLE/N1 TO N5 1-5.
7711 MISSING VALUES N1 TO N5 (3 THRU 5, 1).
7723 COMPUTE MC=NMISS(N1 TO N5).
7724 COMPUTE VC=NVALID(N1 TO N5).
7726 COMPUTE S1=SYSMIS(N1).
7727 COMPUTE S2=SYSMIS(N2).
7728 COMPUTE S3=SYSMIS(N3).
7729 COMPUTE S4=SYSMIS(N4).
7730 COMPUTE S5=SYSMIS(N5).
7732 COMPUTE M1=MISSING(N1).
7733 COMPUTE M2=MISSING(N2).
7734 COMPUTE M3=MISSING(N3).
7735 COMPUTE M4=MISSING(N4).
7736 COMPUTE M5=MISSING(N5).
7738 COMPUTE V1=VALUE(N1).
7739 COMPUTE V2=VALUE(N2).
7740 COMPUTE V3=VALUE(N3).
7741 COMPUTE V4=VALUE(N4).
7742 COMPUTE V5=VALUE(N5).
7748 AT_CHECK([pspp -o pspp.csv variables.sps])
7749 AT_CHECK([cat pspp.csv], [0], [dnl
7751 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
7752 1,2,3,4,5,.,2,.,.,.,4,1,0,0,0,0,0,1,0,1,1,1,1,2,3,4,5
7753 6,7,8,9,.,6,7,8,9,.,1,4,0,0,0,0,1,0,0,0,0,1,6,7,8,9,.
7757 AT_SETUP([expressions - vectors])
7758 AT_DATA([vectors.sps], [dnl
7759 DATA LIST NOTABLE /N1 TO N5 1-5.
7760 MISSING VALUES N1 TO N5 (3 THRU 5, 1).
7769 COMPUTE X(I)=N(I) + 1.
7776 AT_CHECK([pspp -o pspp.csv vectors.sps])
7777 AT_CHECK([cat pspp.csv], [0], [dnl
7779 N1,N2,N3,N4,N5,X1,X2,X3,X4,X5,I
7780 1,2,3,4,5,.,3,.,.,.,5
7781 6,7,8,9,.,7,8,9,10,.,5