Fix missing @clicksequence problem with older Texinfo versions.
[pspp-builds.git] / tests / expressions / expressions.sh
index 4cac5571bd75550b98afa771c7425a33e9530306..339abed4dd90318ffb4fb8a27d5f6103f2c69f0b 100755 (executable)
@@ -4,18 +4,27 @@
 
 TEMPDIR=/tmp/pspp-tst-$$
 
-here=`pwd`;
+# ensure that top_builddir  are absolute
+if [ -z "$top_builddir" ] ; then top_builddir=. ; fi
+if [ -z "$top_srcdir" ] ; then top_srcdir=. ; fi
+top_builddir=`cd $top_builddir; pwd`
+PSPP=$top_builddir/src/ui/terminal/pspp
 
 # ensure that top_srcdir is absolute
-cd $top_srcdir; top_srcdir=`pwd`
+top_srcdir=`cd $top_srcdir; pwd`
 
-export STAT_CONFIG_PATH=$top_srcdir/config
+STAT_CONFIG_PATH=$top_srcdir/config
+export STAT_CONFIG_PATH
 
 
 cleanup()
 {
+     if [ x"$PSPP_TEST_NO_CLEANUP" != x ] ; then 
+       echo "NOT cleaning $TEMPDIR" 
+       return ; 
+     fi
+     cd /
      rm -rf $TEMPDIR
-     :
 }
 
 
@@ -643,14 +652,14 @@ lpad('abc', 0) => "abc"
 lpad('abc', 2) => "abc"
 lpad('abc', 3) => "abc"
 lpad('abc', 10) => "       abc"
-lpad('abc', 256) => ""
+lpad('abc', 32768) => ""
 lpad('abc', $sysmis) => ""
 lpad('abc', -1, '*') => ""
 lpad('abc', 0, '*') => "abc"
 lpad('abc', 2, '*') => "abc"
 lpad('abc', 3, '*') => "abc"
 lpad('abc', 10, '*') => "*******abc"
-lpad('abc', 256, '*') => ""
+lpad('abc', 32768, '*') => ""
 lpad('abc', $sysmis, '*') => ""
 lpad('abc', $sysmis, '') => ""
 lpad('abc', $sysmis, 'xy') => ""
@@ -665,6 +674,7 @@ number("123", f3.0) => 123.00
 number(" 123", f3.0) => 12.00
 number("123", f3.1) => 12.30
 number("   ", f3.1) => sysmis
+number("123", a8) => error
 number("123", cca1.2) => error # CCA is not an input format
 
 ltrim('   abc') => "abc"
@@ -687,14 +697,14 @@ rpad('abc', 0) => "abc"
 rpad('abc', 2) => "abc"
 rpad('abc', 3) => "abc"
 rpad('abc', 10) => "abc       "
-rpad('abc', 256) => ""
+rpad('abc', 32768) => ""
 rpad('abc', $sysmis) => ""
 rpad('abc', -1, '*') => ""
 rpad('abc', 0, '*') => "abc"
 rpad('abc', 2, '*') => "abc"
 rpad('abc', 3, '*') => "abc"
 rpad('abc', 10, '*') => "abc*******"
-rpad('abc', 256, '*') => ""
+rpad('abc', 32768, '*') => ""
 rpad('abc', $sysmis, '*') => ""
 rpad('abc', $sysmis, '') => ""
 rpad('abc', $sysmis, 'xy') => ""
@@ -724,7 +734,7 @@ string(123.56, f5.1) => "123.6"
 string($sysmis, f5.1) => "   . "
 string("abc", A5) => error
 string(123, e1) => error       # E has a minimum width of 6 on output.
-string(123, e6.0) => " 1E+02"
+string(123, e6.0) => "1E+002"
 
 substr('abcdefgh', -5) => ""
 substr('abcdefgh', 0) => ""
@@ -1255,6 +1265,263 @@ xdate.year(date.mdy(2,25,96) + time.hms(21,30,57)) => 1996.00
 xdate.year(date.mdy(11,10,2038) + time.hms(22,30,4)) => 2038.00
 xdate.year(date.mdy(7,18,2094) + time.hms(1,56,51)) => 2094.00
 
+datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'years') => -32.00
+datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'years') => -36.00
+datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'years') => -51.00
+datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'years') => -51.00
+datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'years') => -19.00
+datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'years') => -64.00
+datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'years') => -26.00
+datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'years') => -12.00
+datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'years') => -1.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(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(2,25,96), date.mdy(11,10,2038), 'years') => -42.00
+datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'years') => -55.00
+datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'years') => -3.00
+datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'years') => -4.00
+datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'years') => -2.00
+
+datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'quarters') => -128.00
+datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'quarters') => -144.00
+datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'quarters') => -207.00
+datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'quarters') => -204.00
+datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'quarters') => -78.00
+datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'quarters') => -256.00
+datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'quarters') => -105.00
+datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'quarters') => -48.00
+datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'quarters') => -6.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(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(2,25,96), date.mdy(11,10,2038), 'quarters') => -170.00
+datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'quarters') => -222.00
+datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'quarters') => -15.00
+datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'quarters') => -16.00
+datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'quarters') => -11.00
+
+datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'months') => -384.00
+datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'months') => -432.00
+datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'months') => -622.00
+datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'months') => -613.00
+datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'months') => -235.00
+datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'months') => -768.00
+datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'months') => -316.00
+datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'months') => -145.00
+datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'months') => -18.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(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(2,25,96), date.mdy(11,10,2038), 'months') => -512.00
+datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'months') => -668.00
+datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'months') => -47.00
+datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'months') => -48.00
+datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'months') => -35.00
+
+datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'weeks') => -1672.00
+datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'weeks') => -1881.00
+datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'weeks') => -2708.00
+datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'weeks') => -2667.00
+datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'weeks') => -1025.00
+datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'weeks') => -3342.00
+datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'weeks') => -1375.00
+datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'weeks') => -631.00
+datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'weeks') => -81.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(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(2,25,96), date.mdy(11,10,2038), 'weeks') => -2228.00
+datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'weeks') => -2905.00
+datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'weeks') => -208.00
+datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'weeks') => -208.00
+datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'weeks') => -156.00
+
+datediff(date.mdy(6,10,1648), date.mdy(6,30,1680), 'days') => -11708.00
+datediff(date.mdy(6,30,1680), date.mdy(7,24,1716), 'days') => -13172.00
+datediff(date.mdy(7,24,1716), date.mdy(6,19,1768), 'days') => -18958.00
+datediff(date.mdy(6,19,1768), date.mdy(8,2,1819), 'days') => -18670.00
+datediff(date.mdy(8,2,1819), date.mdy(3,27,1839), 'days') => -7177.00
+datediff(date.mdy(3,27,1839), date.mdy(4,19,1903), 'days') => -23398.00
+datediff(date.mdy(4,19,1903), date.mdy(8,25,1929), 'days') => -9625.00
+datediff(date.mdy(8,25,1929), date.mdy(9,29,1941), 'days') => -4418.00
+datediff(date.mdy(9,29,1941), date.mdy(4,19,1943), 'days') => -567.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(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(2,25,96), date.mdy(11,10,2038), 'days') => -15599.00
+datediff(date.mdy(11,10,2038), date.mdy(7,18,2094), 'days') => -20339.00
+datediff(date.mdy(2,29,1900), date.mdy(2,29,1904), 'days') => -1460.00
+datediff(date.mdy(2,29,1904), date.mdy(2,29,1908), 'days') => -1461.00
+datediff(date.mdy(2,29,1900), date.mdy(2,28,1903), 'days') => -1094.00
+
+datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'years') => 32.00
+datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'years') => 36.00
+datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'years') => 51.00
+datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'years') => 51.00
+datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'years') => 19.00
+datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'years') => 64.00
+datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'years') => 26.00
+datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'years') => 12.00
+datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'years') => 1.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(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(11,10,2038), date.mdy(2,25,96), 'years') => 42.00
+datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'years') => 55.00
+datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'years') => 3.00
+datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'years') => 4.00
+datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'years') => 2.00
+
+datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'months') => 384.00
+datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'months') => 432.00
+datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'months') => 622.00
+datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'months') => 613.00
+datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'months') => 235.00
+datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'months') => 768.00
+datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'months') => 316.00
+datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'months') => 145.00
+datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'months') => 18.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(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(11,10,2038), date.mdy(2,25,96), 'months') => 512.00
+datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'months') => 668.00
+datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'months') => 47.00
+datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'months') => 48.00
+datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'months') => 35.00
+
+datediff(date.mdy(6,30,1680), date.mdy(6,10,1648), 'quarters') => 128.00
+datediff(date.mdy(7,24,1716), date.mdy(6,30,1680), 'quarters') => 144.00
+datediff(date.mdy(6,19,1768), date.mdy(7,24,1716), 'quarters') => 207.00
+datediff(date.mdy(8,2,1819), date.mdy(6,19,1768), 'quarters') => 204.00
+datediff(date.mdy(3,27,1839), date.mdy(8,2,1819), 'quarters') => 78.00
+datediff(date.mdy(4,19,1903), date.mdy(3,27,1839), 'quarters') => 256.00
+datediff(date.mdy(8,25,1929), date.mdy(4,19,1903), 'quarters') => 105.00
+datediff(date.mdy(9,29,1941), date.mdy(8,25,1929), 'quarters') => 48.00
+datediff(date.mdy(4,19,1943), date.mdy(9,29,1941), 'quarters') => 6.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(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
+datediff(date.mdy(11,10,2038), date.mdy(2,25,96), 'quarters') => 170.00
+datediff(date.mdy(7,18,2094), date.mdy(11,10,2038), 'quarters') => 222.00
+datediff(date.mdy(2,29,1904), date.mdy(2,29,1900), 'quarters') => 15.00
+datediff(date.mdy(2,29,1908), date.mdy(2,29,1904), 'quarters') => 16.00
+datediff(date.mdy(2,28,1903), date.mdy(2,29,1900), 'quarters') => 11.00
+
+# DATESUM with non-leap year
+ctime.days(datesum(date.mdy(1,31,1900), 1, 'months') - date.mdy(1,1,1900)) => 58.00
+ctime.days(datesum(date.mdy(1,31,1900), 2, 'months') - date.mdy(1,1,1900)) => 89.00
+ctime.days(datesum(date.mdy(1,31,1900), 3, 'months') - date.mdy(1,1,1900)) => 119.00
+ctime.days(datesum(date.mdy(1,31,1900), 4, 'months') - date.mdy(1,1,1900)) => 150.00
+ctime.days(datesum(date.mdy(1,31,1900), 5.4, 'months') - date.mdy(1,1,1900)) => 180.00
+ctime.days(datesum(date.mdy(1,31,1900), 6, 'months') - date.mdy(1,1,1900)) => 211.00
+ctime.days(datesum(date.mdy(1,31,1900), 7, 'months') - date.mdy(1,1,1900)) => 242.00
+ctime.days(datesum(date.mdy(1,31,1900), 8, 'months') - date.mdy(1,1,1900)) => 272.00
+ctime.days(datesum(date.mdy(1,31,1900), 9, 'months') - date.mdy(1,1,1900)) => 303.00
+ctime.days(datesum(date.mdy(1,31,1900), 10, 'months') - date.mdy(1,1,1900)) => 333.00
+ctime.days(datesum(date.mdy(1,31,1900), 11, 'months') - date.mdy(1,1,1900)) => 364.00
+ctime.days(datesum(date.mdy(1,31,1900), 12, 'months') - date.mdy(1,1,1900)) => 395.00
+ctime.days(datesum(date.mdy(1,31,1900), 13.9, 'months') - date.mdy(1,1,1900)) => 423.00
+ctime.days(datesum(date.mdy(1,31,1900), 1, 'months', 'rollover') - date.mdy(1,1,1900)) => 61.00
+ctime.days(datesum(date.mdy(1,31,1900), 2, 'months', 'rollover') - date.mdy(1,1,1900)) => 89.00
+ctime.days(datesum(date.mdy(1,31,1900), 3.2, 'months', 'rollover') - date.mdy(1,1,1900)) => 120.00
+ctime.days(datesum(date.mdy(1,31,1900), 4, 'months', 'rollover') - date.mdy(1,1,1900)) => 150.00
+ctime.days(datesum(date.mdy(1,31,1900), 5, 'months', 'rollover') - date.mdy(1,1,1900)) => 181.00
+ctime.days(datesum(date.mdy(1,31,1900), 6, 'months', 'rollover') - date.mdy(1,1,1900)) => 211.00
+ctime.days(datesum(date.mdy(1,31,1900), 7, 'months', 'rollover') - date.mdy(1,1,1900)) => 242.00
+ctime.days(datesum(date.mdy(1,31,1900), 8, 'months', 'rollover') - date.mdy(1,1,1900)) => 273.00
+ctime.days(datesum(date.mdy(1,31,1900), 9, 'months', 'rollover') - date.mdy(1,1,1900)) => 303.00
+ctime.days(datesum(date.mdy(1,31,1900), 10, 'months', 'rollover') - date.mdy(1,1,1900)) => 334.00
+ctime.days(datesum(date.mdy(1,31,1900), 11, 'months', 'rollover') - date.mdy(1,1,1900)) => 364.00
+ctime.days(datesum(date.mdy(1,31,1900), 12, 'months', 'rollover') - date.mdy(1,1,1900)) => 395.00
+ctime.days(datesum(date.mdy(1,31,1900), 13, 'months', 'rollover') - date.mdy(1,1,1900)) => 426.00
+
+# DATESUM with leap year
+ctime.days(datesum(date.mdy(1,31,1904), 1, 'months') - date.mdy(1,1,1904)) => 59.00
+ctime.days(datesum(date.mdy(1,31,1904), 2.5, 'months') - date.mdy(1,1,1904)) => 90.00
+ctime.days(datesum(date.mdy(1,31,1904), 3, 'months') - date.mdy(1,1,1904)) => 120.00
+ctime.days(datesum(date.mdy(1,31,1904), 4.9, 'months') - date.mdy(1,1,1904)) => 151.00
+ctime.days(datesum(date.mdy(1,31,1904), 5.1, 'months') - date.mdy(1,1,1904)) => 181.00
+ctime.days(datesum(date.mdy(1,31,1904), 6, 'months') - date.mdy(1,1,1904)) => 212.00
+ctime.days(datesum(date.mdy(1,31,1904), 7, 'months') - date.mdy(1,1,1904)) => 243.00
+ctime.days(datesum(date.mdy(1,31,1904), 8, 'months') - date.mdy(1,1,1904)) => 273.00
+ctime.days(datesum(date.mdy(1,31,1904), 9, 'months') - date.mdy(1,1,1904)) => 304.00
+ctime.days(datesum(date.mdy(1,31,1904), 10, 'months') - date.mdy(1,1,1904)) => 334.00
+ctime.days(datesum(date.mdy(1,31,1904), 11, 'months') - date.mdy(1,1,1904)) => 365.00
+ctime.days(datesum(date.mdy(1,31,1904), 12, 'months') - date.mdy(1,1,1904)) => 396.00
+ctime.days(datesum(date.mdy(1,31,1904), 13, 'months') - date.mdy(1,1,1904)) => 424.00
+ctime.days(datesum(date.mdy(1,31,1904), 1, 'months', 'rollover') - date.mdy(1,1,1904)) => 61.00
+ctime.days(datesum(date.mdy(1,31,1904), 2, 'months', 'rollover') - date.mdy(1,1,1904)) => 90.00
+ctime.days(datesum(date.mdy(1,31,1904), 3, 'months', 'rollover') - date.mdy(1,1,1904)) => 121.00
+ctime.days(datesum(date.mdy(1,31,1904), 4, 'months', 'rollover') - date.mdy(1,1,1904)) => 151.00
+ctime.days(datesum(date.mdy(1,31,1904), 5, 'months', 'rollover') - date.mdy(1,1,1904)) => 182.00
+ctime.days(datesum(date.mdy(1,31,1904), 6, 'months', 'rollover') - date.mdy(1,1,1904)) => 212.00
+ctime.days(datesum(date.mdy(1,31,1904), 7, 'months', 'rollover') - date.mdy(1,1,1904)) => 243.00
+ctime.days(datesum(date.mdy(1,31,1904), 8, 'months', 'rollover') - date.mdy(1,1,1904)) => 274.00
+ctime.days(datesum(date.mdy(1,31,1904), 9, 'months', 'rollover') - date.mdy(1,1,1904)) => 304.00
+ctime.days(datesum(date.mdy(1,31,1904), 10, 'months', 'rollover') - date.mdy(1,1,1904)) => 335.00
+ctime.days(datesum(date.mdy(1,31,1904), 11, 'months', 'rollover') - date.mdy(1,1,1904)) => 365.00
+ctime.days(datesum(date.mdy(1,31,1904), 12, 'months', 'rollover') - date.mdy(1,1,1904)) => 396.00
+ctime.days(datesum(date.mdy(1,31,1904), 13, 'months', 'rollover') - date.mdy(1,1,1904)) => 427.00
+
+ctime.days(datesum(date.mdy(6,10,1648), 1, 'weeks') - date.mdy(6,10,1648)) => 7.00
+ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'weeks') - date.mdy(6,30,1680)) => 17.50
+ctime.days(datesum(date.mdy(7,24,1716), -3, 'weeks') - date.mdy(7,24,1716)) => -21.00
+ctime.days(datesum(date.mdy(6,19,1768), 4, 'weeks') - date.mdy(6,19,1768)) => 28.00
+ctime.days(datesum(date.mdy(8,2,1819), 5, 'weeks') - date.mdy(8,2,1819)) => 35.00
+
+ctime.days(datesum(date.mdy(6,10,1648), 1, 'days') - date.mdy(6,10,1648)) => 1.00
+ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'days') - date.mdy(6,30,1680)) => 2.50
+ctime.days(datesum(date.mdy(7,24,1716), -3, 'days') - date.mdy(7,24,1716)) => -3.00
+ctime.days(datesum(date.mdy(6,19,1768), 4, 'days') - date.mdy(6,19,1768)) => 4.00
+ctime.days(datesum(date.mdy(8,2,1819), 5, 'days') - date.mdy(8,2,1819)) => 5.00
+
+ctime.days(datesum(date.mdy(6,10,1648), 1, 'hours') - date.mdy(6,10,1648)) => 0.04
+ctime.days(datesum(date.mdy(6,30,1680), 2.5, 'hours') - date.mdy(6,30,1680)) => 0.10
+ctime.days(datesum(date.mdy(6,19,1768), -4, 'hours') - date.mdy(6,19,1768)) => -0.17
+ctime.days(datesum(date.mdy(8,2,1819), 5, 'hours') - date.mdy(8,2,1819)) => 0.21
+
 # These test values are from Applied Statistics, Algorithm AS 310.
 1000 * ncdf.beta(.868,10,20,150) => 937.66
 1000 * ncdf.beta(.9,10,10,120) => 730.68
@@ -1296,14 +1563,14 @@ set mxerr 1000.' > $TEMPDIR/expr-opt.stat
 sed < $TEMPDIR/expr-list >> $TEMPDIR/expr-opt.stat \
        -e 's#^\(\(.*\); \)*\(.*\) => .*$#DEBUG EVALUATE\2/\3.#'
 if [ $? -ne 0 ] ; then no_result ; fi
-cp $TEMPDIR/expr-opt.stat ~/foo
 
 activity="run optimizing program"
-$SUPERVISOR $here/../src/pspp --testing-mode -o raw-ascii \
+$SUPERVISOR $PSPP --testing-mode \
         $TEMPDIR/expr-opt.stat >$TEMPDIR/expr-opt.err 2> $TEMPDIR/expr-opt.out
 
 activity="compare optimizing output"
-diff -B -b $TEMPDIR/expr-list $TEMPDIR/expr-opt.out
+perl -pi -e 's/^\s*$//g' $TEMPDIR/expr-list $TEMPDIR/expr-opt.out
+diff -b $TEMPDIR/expr-list $TEMPDIR/expr-opt.out
 if [ $? -ne 0 ] ; then fail ; fi
 
 activity="create non-optimizing input"
@@ -1314,11 +1581,12 @@ sed < $TEMPDIR/expr-list >> $TEMPDIR/expr-noopt.stat \
 if [ $? -ne 0 ] ; then no_result ; fi
 
 activity="run non-optimizing program"
-$SUPERVISOR $here/../src/pspp --testing-mode -o raw-ascii \
+$SUPERVISOR $PSPP --testing-mode \
        $TEMPDIR/expr-noopt.stat >$TEMPDIR/expr-noopt.err 2> $TEMPDIR/expr-noopt.out
 
 activity="compare non-optimizing output"
-diff -B -b $TEMPDIR/expr-list $TEMPDIR/expr-noopt.out
+perl -pi -e 's/^\s*$//g' $TEMPDIR/expr-list $TEMPDIR/expr-noopt.out
+diff -b $TEMPDIR/expr-list $TEMPDIR/expr-noopt.out
 if [ $? -ne 0 ] ; then fail ; fi
 
 activity="create optimizing postfix input"
@@ -1329,7 +1597,7 @@ sed < $TEMPDIR/expr-list >> $TEMPDIR/expr-opt-pos.stat \
 if [ $? -ne 0 ] ; then no_result ; fi
 
 activity="run optimizing postfix program"
-$SUPERVISOR $here/../src/pspp --testing-mode -o raw-ascii \
+$SUPERVISOR $PSPP --testing-mode \
         $TEMPDIR/expr-opt-pos.stat >$TEMPDIR/expr-opt-pos.err 2> $TEMPDIR/expr-opt-pos.out
 if [ $? -eq 0 ] ; then no_result ; fi
 
@@ -1341,7 +1609,7 @@ sed < $TEMPDIR/expr-list >> $TEMPDIR/expr-noopt-pos.stat \
 if [ $? -ne 0 ] ; then no_result ; fi
 
 activity="run non-optimizing postfix program"
-$SUPERVISOR $here/../src/pspp --testing-mode -o raw-ascii \
+$SUPERVISOR $PSPP --testing-mode \
        $TEMPDIR/expr-noopt-pos.stat >$TEMPDIR/expr-noopt-pos.err 2> $TEMPDIR/expr-noopt-pos.out
 if [ $? -eq 0 ] ; then no_result ; fi