AT_CAPTURE_FILE([evaluate.sps])
m4_pushdef([i], [2])
AT_CHECK([pspp --testing-mode --error-file=- --no-output evaluate.sps],
- [m4_if(m4_bregexp([m4_foreach([check], [m4_shift($@)], [m4_argn(3, check)])], [error:]), [-1], [0], [1])],
+ [m4_if(m4_bregexp([m4_foreach([check], [m4_shift($@)], [m4_argn(3, check)])], [error:]), [-1], [0], [1])],
+ [stdout])
+ # Use sed to transform "file:line.column:" into plain "file:line:",
+ # because column numbers change between opt and noopt versions.
+ AT_CHECK([[sed 's/\(evaluate.sps:[0-9]\{1,\}\)\.[0-9]\{1,\}:/\1:/' stdout]],
+ [0],
[m4_foreach([check], [m4_shift($@)],
[m4_define([i], m4_incr(i))dnl
m4_if(m4_argn(3, check), [], [], [evaluate.sps:[]i[]: m4_argn(3, check)
[['asdfj ' ne 'asdf'], [true]],
dnl <> token can't be split:
[[1 < > 1], [error],
- [error: DEBUG EVALUATE: Syntax error at `GT'.]],
+ [error: DEBUG EVALUATE: Syntax error at `>'.]],
dnl # ~= token can't be split:
[[1 ~ = 1], [error],
- [error: DEBUG EVALUATE: Syntax error at `NOT': expecting end of command.]])
+ [error: DEBUG EVALUATE: Syntax error at `~': expecting end of command.]])
CHECK_EXPR_EVAL([exp lg10 ln sqrt abs mod mod10 rnd trunc],
[[exp(10)], [22026.47]],
[[xdate.date(date.mdy(10,7,1943) + time.hms(2,57,52)) / 86400], [131845.00]],
[[xdate.date(date.mdy(3,17,1992) + time.hms(16,45,44)) / 86400], [149539.00]],
[[xdate.date(date.mdy(2,25,1996) + time.hms(21,30,57)) / 86400], [150979.00]],
- [[xdate.date(date.mdy(9,29,41) + time.hms(4,25,9)) / 86400], [131107.00]],
+ [[xdate.date(date.mdy(9,29,1941) + time.hms(4,25,9)) / 86400], [131107.00]],
[[xdate.date(date.mdy(4,19,43) + time.hms(6,49,27)) / 86400], [131674.00]],
[[xdate.date(date.mdy(10,7,43) + time.hms(2,57,52)) / 86400], [131845.00]],
[[xdate.date(date.mdy(3,17,92) + time.hms(16,45,44)) / 86400], [149539.00]],
[[xdate.hour(date.mdy(10,7,1943) + time.hms(2,57,52))], [2.00]],
[[xdate.hour(date.mdy(3,17,1992) + time.hms(16,45,44))], [16.00]],
[[xdate.hour(date.mdy(2,25,1996) + time.hms(21,30,57))], [21.00]],
- [[xdate.hour(date.mdy(9,29,41) + time.hms(4,25,9))], [4.00]],
+ [[xdate.hour(date.mdy(9,29,1941) + time.hms(4,25,9))], [4.00]],
[[xdate.hour(date.mdy(4,19,43) + time.hms(6,49,27))], [6.00]],
[[xdate.hour(date.mdy(10,7,43) + time.hms(2,57,52))], [2.00]],
[[xdate.hour(date.mdy(3,17,92) + time.hms(16,45,44))], [16.00]],
[[xdate.jday(date.mdy(10,7,1943) + time.hms(2,57,52))], [280.00]],
[[xdate.jday(date.mdy(3,17,1992) + time.hms(16,45,44))], [77.00]],
[[xdate.jday(date.mdy(2,25,1996) + time.hms(21,30,57))], [56.00]],
- [[xdate.jday(date.mdy(9,29,41) + time.hms(4,25,9))], [272.00]],
+ [[xdate.jday(date.mdy(9,29,1941) + time.hms(4,25,9))], [272.00]],
[[xdate.jday(date.mdy(4,19,43) + time.hms(6,49,27))], [109.00]],
[[xdate.jday(date.mdy(10,7,43) + time.hms(2,57,52))], [280.00]],
[[xdate.jday(date.mdy(3,17,92) + time.hms(16,45,44))], [77.00]],
[[xdate.mday(date.mdy(10,7,1943) + time.hms(2,57,52))], [7.00]],
[[xdate.mday(date.mdy(3,17,1992) + time.hms(16,45,44))], [17.00]],
[[xdate.mday(date.mdy(2,25,1996) + time.hms(21,30,57))], [25.00]],
- [[xdate.mday(date.mdy(9,29,41) + time.hms(4,25,9))], [29.00]],
+ [[xdate.mday(date.mdy(9,29,1941) + time.hms(4,25,9))], [29.00]],
[[xdate.mday(date.mdy(4,19,43) + time.hms(6,49,27))], [19.00]],
[[xdate.mday(date.mdy(10,7,43) + time.hms(2,57,52))], [7.00]],
[[xdate.mday(date.mdy(3,17,92) + time.hms(16,45,44))], [17.00]],
[[xdate.minute(date.mdy(10,7,1943) + time.hms(2,57,52))], [57.00]],
[[xdate.minute(date.mdy(3,17,1992) + time.hms(16,45,44))], [45.00]],
[[xdate.minute(date.mdy(2,25,1996) + time.hms(21,30,57))], [30.00]],
- [[xdate.minute(date.mdy(9,29,41) + time.hms(4,25,9))], [25.00]],
+ [[xdate.minute(date.mdy(9,29,1941) + time.hms(4,25,9))], [25.00]],
[[xdate.minute(date.mdy(4,19,43) + time.hms(6,49,27))], [49.00]],
[[xdate.minute(date.mdy(10,7,43) + time.hms(2,57,52))], [57.00]],
[[xdate.minute(date.mdy(3,17,92) + time.hms(16,45,44))], [45.00]],
[[xdate.month(date.mdy(10,7,1943) + time.hms(2,57,52))], [10.00]],
[[xdate.month(date.mdy(3,17,1992) + time.hms(16,45,44))], [3.00]],
[[xdate.month(date.mdy(2,25,1996) + time.hms(21,30,57))], [2.00]],
- [[xdate.month(date.mdy(9,29,41) + time.hms(4,25,9))], [9.00]],
+ [[xdate.month(date.mdy(9,29,1941) + time.hms(4,25,9))], [9.00]],
[[xdate.month(date.mdy(4,19,43) + time.hms(6,49,27))], [4.00]],
[[xdate.month(date.mdy(10,7,43) + time.hms(2,57,52))], [10.00]],
[[xdate.month(date.mdy(3,17,92) + time.hms(16,45,44))], [3.00]],
[[xdate.quarter(date.mdy(10,7,1943) + time.hms(2,57,52))], [4.00]],
[[xdate.quarter(date.mdy(3,17,1992) + time.hms(16,45,44))], [1.00]],
[[xdate.quarter(date.mdy(2,25,1996) + time.hms(21,30,57))], [1.00]],
- [[xdate.quarter(date.mdy(9,29,41) + time.hms(4,25,9))], [3.00]],
+ [[xdate.quarter(date.mdy(9,29,1941) + time.hms(4,25,9))], [3.00]],
[[xdate.quarter(date.mdy(4,19,43) + time.hms(6,49,27))], [2.00]],
[[xdate.quarter(date.mdy(10,7,43) + time.hms(2,57,52))], [4.00]],
[[xdate.quarter(date.mdy(3,17,92) + time.hms(16,45,44))], [1.00]],
[[xdate.second(date.mdy(10,7,1943) + time.hms(2,57,52))], [52.00]],
[[xdate.second(date.mdy(3,17,1992) + time.hms(16,45,44))], [44.00]],
[[xdate.second(date.mdy(2,25,1996) + time.hms(21,30,57))], [57.00]],
- [[xdate.second(date.mdy(9,29,41) + time.hms(4,25,9))], [9.00]],
+ [[xdate.second(date.mdy(9,29,1941) + time.hms(4,25,9))], [9.00]],
[[xdate.second(date.mdy(4,19,43) + time.hms(6,49,27))], [27.00]],
[[xdate.second(date.mdy(10,7,43) + time.hms(2,57,52))], [52.00]],
[[xdate.second(date.mdy(3,17,92) + time.hms(16,45,44))], [44.00]],
[[xdate.tday(date.mdy(10,7,1943) + time.hms(2,57,52))], [131845.00]],
[[xdate.tday(date.mdy(3,17,1992) + time.hms(16,45,44))], [149539.00]],
[[xdate.tday(date.mdy(2,25,1996) + time.hms(21,30,57))], [150979.00]],
- [[xdate.tday(date.mdy(9,29,41) + time.hms(4,25,9))], [131107.00]],
+ [[xdate.tday(date.mdy(9,29,1941) + time.hms(4,25,9))], [131107.00]],
[[xdate.tday(date.mdy(4,19,43) + time.hms(6,49,27))], [131674.00]],
[[xdate.tday(date.mdy(10,7,43) + time.hms(2,57,52))], [131845.00]],
[[xdate.tday(date.mdy(3,17,92) + time.hms(16,45,44))], [149539.00]],
[[xdate.time(date.mdy(10,7,1943) + time.hms(2,57,52))], [10672.00]],
[[xdate.time(date.mdy(3,17,1992) + time.hms(16,45,44))], [60344.00]],
[[xdate.time(date.mdy(2,25,1996) + time.hms(21,30,57))], [77457.00]],
- [[xdate.time(date.mdy(9,29,41) + time.hms(4,25,9))], [15909.00]],
+ [[xdate.time(date.mdy(9,29,1941) + time.hms(4,25,9))], [15909.00]],
[[xdate.time(date.mdy(4,19,43) + time.hms(6,49,27))], [24567.00]],
[[xdate.time(date.mdy(10,7,43) + time.hms(2,57,52))], [10672.00]],
[[xdate.time(date.mdy(3,17,92) + time.hms(16,45,44))], [60344.00]],
[[xdate.week(date.mdy(10,7,1943) + time.hms(2,57,52))], [40.00]],
[[xdate.week(date.mdy(3,17,1992) + time.hms(16,45,44))], [11.00]],
[[xdate.week(date.mdy(2,25,1996) + time.hms(21,30,57))], [8.00]],
- [[xdate.week(date.mdy(9,29,41) + time.hms(4,25,9))], [39.00]],
+ [[xdate.week(date.mdy(9,29,1941) + time.hms(4,25,9))], [39.00]],
[[xdate.week(date.mdy(4,19,43) + time.hms(6,49,27))], [16.00]],
[[xdate.week(date.mdy(10,7,43) + time.hms(2,57,52))], [40.00]],
[[xdate.week(date.mdy(3,17,92) + time.hms(16,45,44))], [11.00]],
[[xdate.wkday(date.mdy(10,7,1943))], [5.00]],
[[xdate.wkday(date.mdy(3,17,1992))], [3.00]],
[[xdate.wkday(date.mdy(2,25,1996))], [1.00]],
- [[xdate.wkday(date.mdy(9,29,41))], [2.00]],
+ [[xdate.wkday(date.mdy(9,29,1941))], [2.00]],
[[xdate.wkday(date.mdy(4,19,43))], [2.00]],
[[xdate.wkday(date.mdy(10,7,43))], [5.00]],
[[xdate.wkday(date.mdy(3,17,92))], [3.00]],
[[xdate.year(date.mdy(10,7,1943) + time.hms(2,57,52))], [1943.00]],
[[xdate.year(date.mdy(3,17,1992) + time.hms(16,45,44))], [1992.00]],
[[xdate.year(date.mdy(2,25,1996) + time.hms(21,30,57))], [1996.00]],
- [[xdate.year(date.mdy(9,29,41) + time.hms(4,25,9))], [1941.00]],
+ [[xdate.year(date.mdy(9,29,1941) + time.hms(4,25,9))], [1941.00]],
[[xdate.year(date.mdy(4,19,43) + time.hms(6,49,27))], [1943.00]],
[[xdate.year(date.mdy(10,7,43) + time.hms(2,57,52))], [1943.00]],
[[xdate.year(date.mdy(3,17,92) + time.hms(16,45,44))], [1992.00]],
[[datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'years')], [0.00]],
[[datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'years')], [-48.00]],
[[datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'years')], [-3.00]],
- [[datediff(date.mdy(9,29,41), date.mdy(2,25,1996), 'years')], [-54.00]],
- [[datediff(date.mdy(9,29,41), date.mdy(4,19,43), 'years')], [-1.00]],
+ [[datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'years')], [-54.00]],
+ [[datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'years')], [-1.00]],
[[datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'years')], [0.00]],
[[datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'years')], [-48.00]],
[[datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'years')], [-3.00]],
[[datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'quarters')], [-1.00]],
[[datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'quarters')], [-193.00]],
[[datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'quarters')], [-15.00]],
- [[datediff(date.mdy(9,29,41), date.mdy(2,25,1996), 'quarters')], [-217.00]],
- [[datediff(date.mdy(9,29,41), date.mdy(4,19,43), 'quarters')], [-6.00]],
+ [[datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'quarters')], [-217.00]],
+ [[datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'quarters')], [-6.00]],
[[datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'quarters')], [-1.00]],
[[datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'quarters')], [-193.00]],
[[datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'quarters')], [-15.00]],
[[datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'months')], [-5.00]],
[[datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'months')], [-581.00]],
[[datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'months')], [-47.00]],
- [[datediff(date.mdy(9,29,41), date.mdy(2,25,1996), 'months')], [-652.00]],
- [[datediff(date.mdy(9,29,41), date.mdy(4,19,43), 'months')], [-18.00]],
+ [[datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'months')], [-652.00]],
+ [[datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'months')], [-18.00]],
[[datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'months')], [-5.00]],
[[datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'months')], [-581.00]],
[[datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'months')], [-47.00]],
[[datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'weeks')], [-24.00]],
[[datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'weeks')], [-2527.00]],
[[datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'weeks')], [-205.00]],
- [[datediff(date.mdy(9,29,41), date.mdy(2,25,1996), 'weeks')], [-2838.00]],
- [[datediff(date.mdy(9,29,41), date.mdy(4,19,43), 'weeks')], [-81.00]],
+ [[datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'weeks')], [-2838.00]],
+ [[datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'weeks')], [-81.00]],
[[datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'weeks')], [-24.00]],
[[datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'weeks')], [-2527.00]],
[[datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'weeks')], [-205.00]],
[[datediff(date.mdy(4,19,1943), date.mdy(10,7,1943), 'days')], [-171.00]],
[[datediff(date.mdy(10,7,1943), date.mdy(3,17,1992), 'days')], [-17694.00]],
[[datediff(date.mdy(3,17,1992), date.mdy(2,25,1996), 'days')], [-1440.00]],
- [[datediff(date.mdy(9,29,41), date.mdy(2,25,1996), 'days')], [-19872.00]],
- [[datediff(date.mdy(9,29,41), date.mdy(4,19,43), 'days')], [-567.00]],
+ [[datediff(date.mdy(9,29,1941), date.mdy(2,25,1996), 'days')], [-19872.00]],
+ [[datediff(date.mdy(9,29,1941), date.mdy(4,19,43), 'days')], [-567.00]],
[[datediff(date.mdy(4,19,43), date.mdy(10,7,43), 'days')], [-171.00]],
[[datediff(date.mdy(10,7,43), date.mdy(3,17,92), 'days')], [-17694.00]],
[[datediff(date.mdy(3,17,92), date.mdy(2,25,96), 'days')], [-1440.00]],
[[datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'years')], [0.00]],
[[datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'years')], [48.00]],
[[datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'years')], [3.00]],
- [[datediff(date.mdy(2,25,1996), date.mdy(9,29,41), 'years')], [54.00]],
- [[datediff(date.mdy(4,19,43), date.mdy(9,29,41), 'years')], [1.00]],
+ [[datediff(date.mdy(2,25,1996), date.mdy(9,29,1941), 'years')], [54.00]],
+ [[datediff(date.mdy(4,19,43), date.mdy(9,29,1941), 'years')], [1.00]],
[[datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'years')], [0.00]],
[[datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'years')], [48.00]],
[[datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'years')], [3.00]],
[[datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'months')], [5.00]],
[[datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'months')], [581.00]],
[[datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'months')], [47.00]],
- [[datediff(date.mdy(2,25,1996), date.mdy(9,29,41), 'months')], [652.00]],
- [[datediff(date.mdy(4,19,43), date.mdy(9,29,41), 'months')], [18.00]],
+ [[datediff(date.mdy(2,25,1996), date.mdy(9,29,1941), 'months')], [652.00]],
+ [[datediff(date.mdy(4,19,43), date.mdy(9,29,1941), 'months')], [18.00]],
[[datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'months')], [5.00]],
[[datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'months')], [581.00]],
[[datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'months')], [47.00]],
[[datediff(date.mdy(10,7,1943), date.mdy(4,19,1943), 'quarters')], [1.00]],
[[datediff(date.mdy(3,17,1992), date.mdy(10,7,1943), 'quarters')], [193.00]],
[[datediff(date.mdy(2,25,1996), date.mdy(3,17,1992), 'quarters')], [15.00]],
- [[datediff(date.mdy(2,25,1996), date.mdy(9,29,41), 'quarters')], [217.00]],
- [[datediff(date.mdy(4,19,43), date.mdy(9,29,41), 'quarters')], [6.00]],
+ [[datediff(date.mdy(2,25,1996), date.mdy(9,29,1941), 'quarters')], [217.00]],
+ [[datediff(date.mdy(4,19,43), date.mdy(9,29,1941), 'quarters')], [6.00]],
[[datediff(date.mdy(10,7,43), date.mdy(4,19,43), 'quarters')], [1.00]],
[[datediff(date.mdy(3,17,92), date.mdy(10,7,43), 'quarters')], [193.00]],
[[datediff(date.mdy(2,25,96), date.mdy(3,17,92), 'quarters')], [15.00]],
6,g,,
])
AT_CLEANUP
+
+AT_SETUP([variables in expressions])
+AT_DATA([variables.sps], [dnl
+DATA LIST NOTABLE/N1 TO N5 1-5.
+MISSING VALUES N1 TO N5 (3 THRU 5, 1).
+BEGIN DATA.
+12345
+6789
+END DATA.
+
+COMPUTE P1=N1.
+COMPUTE P2=N2.
+COMPUTE P3=N3.
+COMPUTE P4=N4.
+COMPUTE P5=N5.
+
+COMPUTE MC=NMISS(N1 TO N5).
+COMPUTE VC=NVALID(N1 TO N5).
+
+COMPUTE S1=SYSMIS(N1).
+COMPUTE S2=SYSMIS(N2).
+COMPUTE S3=SYSMIS(N3).
+COMPUTE S4=SYSMIS(N4).
+COMPUTE S5=SYSMIS(N5).
+
+COMPUTE M1=MISSING(N1).
+COMPUTE M2=MISSING(N2).
+COMPUTE M3=MISSING(N3).
+COMPUTE M4=MISSING(N4).
+COMPUTE M5=MISSING(N5).
+
+COMPUTE V1=VALUE(N1).
+COMPUTE V2=VALUE(N2).
+COMPUTE V3=VALUE(N3).
+COMPUTE V4=VALUE(N4).
+COMPUTE V5=VALUE(N5).
+
+FORMATS ALL (F1).
+
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv variables.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+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
+1,2,3,4,5,.,2,.,.,.,4,1,0,0,0,0,0,1,0,1,1,1,1,2,3,4,5
+6,7,8,9,.,6,7,8,9,.,1,4,0,0,0,0,1,0,0,0,0,1,6,7,8,9,.
+])
+AT_CLEANUP
+
+AT_SETUP([vectors in expressions])
+AT_DATA([vectors.sps], [dnl
+DATA LIST NOTABLE /N1 TO N5 1-5.
+MISSING VALUES N1 TO N5 (3 THRU 5, 1).
+BEGIN DATA.
+12345
+6789
+END DATA.
+
+VECTOR N=N1 TO N5.
+VECTOR X(5).
+LOOP I=1 TO 5.
+COMPUTE X(I)=N(I) + 1.
+END LOOP.
+
+FORMATS ALL (F2).
+
+LIST.
+])
+AT_CHECK([pspp -o pspp.csv vectors.sps])
+AT_CHECK([cat pspp.csv], [0], [dnl
+Table: Data List
+N1,N2,N3,N4,N5,X1,X2,X3,X4,X5,I
+1,2,3,4,5,.,3,.,.,.,5
+6,7,8,9,.,7,8,9,10,.,5
+])
+AT_CLEANUP