OSDN Git Service

Sorry, forgot the new files.
authorMichael Meskes <meskes@postgresql.org>
Tue, 15 Aug 2006 06:48:24 +0000 (06:48 +0000)
committerMichael Meskes <meskes@postgresql.org>
Tue, 15 Aug 2006 06:48:24 +0000 (06:48 +0000)
16 files changed:
src/interfaces/ecpg/test/compat_informix/charfuncs.pgc [new file with mode: 0644]
src/interfaces/ecpg/test/compat_informix/dec_test.pgc [new file with mode: 0644]
src/interfaces/ecpg/test/compat_informix/rfmtdate.pgc [new file with mode: 0644]
src/interfaces/ecpg/test/compat_informix/rfmtlong.pgc [new file with mode: 0644]
src/interfaces/ecpg/test/expected/compat_informix-charfuncs.c [new file with mode: 0644]
src/interfaces/ecpg/test/expected/compat_informix-charfuncs.stderr [new file with mode: 0644]
src/interfaces/ecpg/test/expected/compat_informix-charfuncs.stdout [new file with mode: 0644]
src/interfaces/ecpg/test/expected/compat_informix-dec_test.c [new file with mode: 0644]
src/interfaces/ecpg/test/expected/compat_informix-dec_test.stderr [new file with mode: 0644]
src/interfaces/ecpg/test/expected/compat_informix-dec_test.stdout [new file with mode: 0644]
src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c [new file with mode: 0644]
src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.stderr [new file with mode: 0644]
src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.stdout [new file with mode: 0644]
src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c [new file with mode: 0644]
src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.stderr [new file with mode: 0644]
src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.stdout [new file with mode: 0644]

diff --git a/src/interfaces/ecpg/test/compat_informix/charfuncs.pgc b/src/interfaces/ecpg/test/compat_informix/charfuncs.pgc
new file mode 100644 (file)
index 0000000..3605c9d
--- /dev/null
@@ -0,0 +1,31 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <sqltypes.h>
+
+int main(void)
+{
+       char t1[] = "abc  def  ghi  ";
+                 /* 123456789012345 */
+       char buf[50];
+       int k;
+
+       printf("t1: _%s_\n", t1);
+       rupshift(t1);
+       printf("t1: _%s_\n", t1);
+
+       k = 2;
+       ldchar(t1, k, buf);
+       printf("byleng(t1, %d): %d, ldchar: _%s_\n", k, byleng(t1, k), buf);
+       k = 5;
+       ldchar(t1, k, buf);
+       printf("byleng(t1, %d): %d, ldchar: _%s_\n", k, byleng(t1, k), buf);
+       k = 9;
+       ldchar(t1, k, buf);
+       printf("byleng(t1, %d): %d, ldchar: _%s_\n", k, byleng(t1, k), buf);
+       k = 15;
+       ldchar(t1, k, buf);
+       printf("byleng(t1, %d): %d, ldchar: _%s_\n", k, byleng(t1, k), buf);
+
+
+       return 0;
+}
diff --git a/src/interfaces/ecpg/test/compat_informix/dec_test.pgc b/src/interfaces/ecpg/test/compat_informix/dec_test.pgc
new file mode 100644 (file)
index 0000000..8f6f109
--- /dev/null
@@ -0,0 +1,240 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <pgtypes_numeric.h>
+#include <pgtypes_error.h>
+#include <decimal.h>
+#include <sqltypes.h>
+
+exec sql include ../regression;
+
+/*
+TODO:
+       deccmp => DECUNKNOWN
+       decimal point: , and/or . ?
+       ECPG_INFORMIX_BAD_EXPONENT ?
+*/
+
+char* decs[] = { "2E394", "-2", ".794", "3.44", "592.49E21", "-32.84e4",
+                                "2E-394", ".1E-2", "+.0", "-592.49E-07", "+32.84e-4",
+                                ".500001", "-.5000001",
+                                "1234567890123456789012345678.91", /* 30 digits should fit
+                                                                      into decimal */
+                                "1234567890123456789012345678.921", /* 31 digits should NOT
+                                                                       fit into decimal */
+                                "not a number",
+                                NULL};
+
+
+static void
+check_errno(void);
+
+#define BUFSIZE 200
+
+int
+main(void)
+{
+       decimal *dec, *din;
+       char buf[BUFSIZE];
+       long l;
+       int i, j, k, q, r, count = 0;
+       double dbl;
+       decimal **decarr = (decimal **) malloc(1);
+
+       ECPGdebug(1, stderr);
+
+       for (i = 0; decs[i]; i++)
+       {
+               dec = PGTYPESdecimal_new();
+               r = deccvasc(decs[i], strlen(decs[i]), dec);
+               if (r)
+               {
+                       check_errno();
+                       printf("dec[%d,0]: r: %d\n", i, r);
+                       continue;
+               }
+               decarr = realloc(decarr, sizeof(decimal *) * (count + 1));
+               decarr[count++] = dec;
+
+               r = dectoasc(dec, buf, BUFSIZE-1, -1);
+               if (r < 0) check_errno();
+               printf("dec[%d,1]: r: %d, %s\n", i, r, buf);
+
+               r = dectoasc(dec, buf, BUFSIZE-1, 0);
+               if (r < 0) check_errno();
+               printf("dec[%d,2]: r: %d, %s\n", i, r, buf);
+               r = dectoasc(dec, buf, BUFSIZE-1, 1);
+               if (r < 0) check_errno();
+               printf("dec[%d,3]: r: %d, %s\n", i, r, buf);
+               r = dectoasc(dec, buf, BUFSIZE-1, 2);
+               if (r < 0) check_errno();
+               printf("dec[%d,4]: r: %d, %s\n", i, r, buf);
+
+               din = PGTYPESdecimal_new();
+               r = dectoasc(din, buf, BUFSIZE-1, 2);
+               if (!r < 0) check_errno();
+               printf("dec[%d,5]: r: %d, %s\n", i, r, buf);
+
+               r = dectolong(dec, &l);
+               if (r) check_errno();
+               printf("dec[%d,6]: %ld (r: %d)\n", i, r?0L:l, r);
+               if (r == 0)
+               {
+                       r = deccvlong(l, din);
+                       if (r) check_errno();
+                       dectoasc(din, buf, BUFSIZE-1, 2);
+                       q = deccmp(dec, din);
+                       printf("dec[%d,7]: %s (r: %d - cmp: %d)\n", i, buf, r, q);
+               }
+
+               r = dectoint(dec, &k);
+               if (r) check_errno();
+               printf("dec[%d,8]: %d (r: %d)\n", i, r?0:k, r);
+               if (r == 0)
+               {
+                       r = deccvint(k, din);
+                       if (r) check_errno();
+                       dectoasc(din, buf, BUFSIZE-1, 2);
+                       q = deccmp(dec, din);
+                       printf("dec[%d,9]: %s (r: %d - cmp: %d)\n", i, buf, r, q);
+               }
+
+               r = dectodbl(dec, &dbl);
+               if (r) check_errno();
+               printf("dec[%d,10]: %2.7f (r: %d)\n", i, r?0.0:dbl, r);
+               if (r == 0)
+               {
+                       r = deccvdbl(dbl, din);
+                       if (r)
+                       {
+                               check_errno();
+                               printf("dec[%d,11(f)]: - (r: %d)\n", i, r);
+                       }
+                       else
+                       {
+                               dectoasc(din, buf, BUFSIZE-1, 2);
+                               q = deccmp(dec, din);
+                               printf("dec[%d,11]: %s (r: %d - cmp: %d)\n", i, buf, r, q);
+                       }
+               }
+
+               PGTYPESdecimal_free(din);
+               printf("\n");
+       }
+
+       /* add a NULL value */
+       dec = PGTYPESdecimal_new();
+       decarr = realloc(decarr, sizeof(decimal *) * (count + 1));
+       decarr[count++] = dec;
+
+       rsetnull(CDECIMALTYPE, (char *) decarr[count-1]);
+       printf("dec[%d]: %sNULL\n", count-1,
+               risnull(CDECIMALTYPE, (char *) decarr[count-1]) ? "" : "NOT ");
+       printf("dec[0]: %sNULL\n",
+               risnull(CDECIMALTYPE, (char *) decarr[0]) ? "" : "NOT ");
+
+       r = dectoasc(decarr[3], buf, -1, -1);
+       check_errno(); printf("dectoasc with len == -1: r: %d\n", r);
+       r = dectoasc(decarr[3], buf, 0, -1);
+       check_errno(); printf("dectoasc with len == 0: r: %d\n", r);
+
+       for (i = 0; i < count; i++)
+       {
+               for (j = 0; j < count; j++)
+               {
+                       decimal a, s, m, d;
+                       int c;
+                       c = deccmp(decarr[i], decarr[j]);
+                       printf("dec[c,%d,%d]: %d\n", i, j, c);
+
+                       r = decadd(decarr[i], decarr[j], &a);
+                       if (r)
+                       {
+                               check_errno();
+                               printf("r: %d\n", r);
+                       }
+                       else
+                       {
+                               dectoasc(&a, buf, BUFSIZE-1, -1);
+                               printf("dec[a,%d,%d]: %s\n", i, j, buf);
+                       }
+
+                       r = decsub(decarr[i], decarr[j], &s);
+                       if (r)
+                       {
+                               check_errno();
+                               printf("r: %d\n", r);
+                       }
+                       else
+                       {
+                               dectoasc(&s, buf, BUFSIZE-1, -1);
+                               printf("dec[s,%d,%d]: %s\n", i, j, buf);
+                       }
+
+                       r = decmul(decarr[i], decarr[j], &m);
+                       if (r)
+                       {
+                               check_errno();
+                               printf("r: %d\n", r);
+                       }
+                       else
+                       {
+                               dectoasc(&m, buf, BUFSIZE-1, -1);
+                               printf("dec[m,%d,%d]: %s\n", i, j, buf);
+                       }
+
+                       r = decdiv(decarr[i], decarr[j], &d);
+                       if (r)
+                       {
+                               check_errno();
+                               printf("r: %d\n", r);
+                       }
+                       else
+                       {
+                               dectoasc(&d, buf, BUFSIZE-1, -1);
+                               printf("dec[d,%d,%d]: %s\n", i, j, buf);
+                       }
+               }
+       }
+
+       for (i = 0; i < count; i++)
+       {
+               dectoasc(decarr[i], buf, BUFSIZE-1, -1);
+               printf("%d: %s\n", i, buf);
+       }
+
+       return (0);
+}
+
+static void
+check_errno(void)
+{
+       switch(errno)
+       {
+               case 0:
+                       printf("(no errno set) - ");
+                       break;
+               case ECPG_INFORMIX_NUM_OVERFLOW:
+                       printf("(errno == ECPG_INFORMIX_NUM_OVERFLOW) - ");
+                       break;
+               case ECPG_INFORMIX_NUM_UNDERFLOW:
+                       printf("(errno == ECPG_INFORMIX_NUM_UNDERFLOW) - ");
+                       break;
+               case PGTYPES_NUM_OVERFLOW:
+                       printf("(errno == PGTYPES_NUM_OVERFLOW) - ");
+                       break;
+               case PGTYPES_NUM_UNDERFLOW:
+                       printf("(errno == PGTYPES_NUM_UNDERFLOW) - ");
+                       break;
+               case PGTYPES_NUM_BAD_NUMERIC:
+                       printf("(errno == PGTYPES_NUM_BAD_NUMERIC) - ");
+                       break;
+               case PGTYPES_NUM_DIVIDE_ZERO:
+                       printf("(errno == PGTYPES_NUM_DIVIDE_ZERO) - ");
+                       break;
+               default:
+                       printf("(unknown errno (%d))\n", errno);
+                       printf("(libc: (%s)) ", strerror(errno));
+                       break;
+       }
+
+}
diff --git a/src/interfaces/ecpg/test/compat_informix/rfmtdate.pgc b/src/interfaces/ecpg/test/compat_informix/rfmtdate.pgc
new file mode 100644 (file)
index 0000000..287acc3
--- /dev/null
@@ -0,0 +1,175 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <pgtypes_error.h>
+#include <sqltypes.h>
+
+/*
+ * This file tests various forms of date-input/output by means of
+ * rfmtdate / rdefmtdate / rstrdate
+ */
+
+
+static void
+check_return(int ret);
+
+static void
+date_test_strdate(char *input)
+{
+       static int i;
+       date d;
+       int r, q;
+       char dbuf[11];
+
+       r = rstrdate(input, &d);
+       printf("r: %d ", r);
+       if (r == 0)
+       {
+               q = rdatestr(d, dbuf);
+               printf("q: %d ", q);
+               if (q == 0)
+               {
+                       printf("date %d: %s\n", i++, dbuf);
+               }
+               else
+                       printf("\n");
+       }
+       else
+               check_return(r);
+}
+
+static void
+date_test_defmt(char *fmt, char *input)
+{
+       static int i;
+       char dbuf[11];
+       date d;
+       int q, r;
+
+       r = rdefmtdate(&d, fmt, input);
+       printf("r: %d ", r);
+       if (r == 0)
+       {
+               q = rdatestr(d, dbuf);
+               printf("q: %d ", q);
+               if (q == 0)
+               {
+                       printf("date %d: %s\n", i++, dbuf);
+               }
+               else
+                       printf("\n");
+       }
+       else
+               check_return(r);
+}
+
+static void
+date_test_fmt(date d, char *fmt)
+{
+       static int i;
+       char buf[200];
+       int r;
+
+       r = rfmtdate(d, fmt, buf);
+       printf("r: %d ", r);
+       if (r != 0)
+               check_return(r);
+       else
+               printf("date: %d: %s\n", i++, buf);
+}
+
+
+int
+main(void)
+{
+       short mdy[3] = { 11, 23, 1959 };
+       char dbuf[11];
+       date d;
+       int r;
+
+       ECPGdebug(1, stderr);
+
+       r = rmdyjul(mdy, &d);
+       printf("create: r: %d\n", r);
+       if (r == 0)
+       {
+               rdatestr(d, dbuf);
+               printf("date: %s\n", dbuf);
+       }
+
+       /* input mask is mmddyyyy */
+       date_test_strdate("12031994");
+       date_test_strdate("9.6.1994");
+
+       date_test_fmt(d, "mmddyy");
+       date_test_fmt(d, "ddmmyy");
+       date_test_fmt(d, "yymmdd");
+       date_test_fmt(d, "yy/mm/dd");
+       date_test_fmt(d, "yy mm dd");
+       date_test_fmt(d, "yy.mm.dd");
+       date_test_fmt(d, ".mm.yyyy.dd.");
+       date_test_fmt(d, "mmm. dd, yyyy");
+       date_test_fmt(d, "mmm dd yyyy");
+       date_test_fmt(d, "yyyy dd mm");
+       date_test_fmt(d, "ddd, mmm. dd, yyyy");
+       date_test_fmt(d, "(ddd) mmm. dd, yyyy");
+
+       date_test_defmt("ddmmyy", "21-2-54");
+       date_test_defmt("ddmmyy", "2-12-54");
+       date_test_defmt("ddmmyy", "20111954");
+       date_test_defmt("ddmmyy", "130464");
+       date_test_defmt("mmm.dd.yyyy", "MAR-12-1967");
+       date_test_defmt("yy/mm/dd", "1954, February 3rd");
+       date_test_defmt("mmm.dd.yyyy", "041269");
+       date_test_defmt("yy/mm/dd", "In the year 2525, in the month of July, mankind will be alive on the 28th day");
+       date_test_defmt("dd-mm-yy", "I said on the 28th of July in the year 2525");
+       date_test_defmt("mmm.dd.yyyy", "9/14/58");
+       date_test_defmt("yy/mm/dd", "47/03/29");
+       date_test_defmt("mmm.dd.yyyy", "oct 28 1975");
+       date_test_defmt("mmddyy", "Nov 14th, 1985");
+       /* ok: still contains dd mm yy */
+       date_test_defmt("bladdfoommbaryybong", "20/11/1954");
+       /* 1994 is not a leap year, it accepts the date as 01-03-1994 */
+       date_test_defmt("ddmmyy", "29-02-1994");
+
+       /* ECPG_INFORMIX_ENOTDMY, need "dd", "mm" and "yy" */
+       date_test_defmt("dmy", "20/11/1954");
+
+       /* ECPG_INFORMIX_ENOSHORTDATE */
+       date_test_defmt("ddmmyy", "21254");
+       date_test_defmt("ddmmyy", "    21254    ");
+
+       /* ECPG_INFORMIX_BAD_DAY */
+       date_test_defmt("ddmmyy", "320494");
+
+       /* ECPG_INFORMIX_BAD_MONTH */
+       date_test_defmt("mm-yyyy-dd", "13-1993-21");
+
+       /* ECPG_INFORMIX_BAD_YEAR */
+       /* ??? */
+
+       return (0);
+}
+
+static void
+check_return(ret)
+{
+       switch(ret)
+       {
+               case ECPG_INFORMIX_ENOTDMY:
+                       printf("(ECPG_INFORMIX_ENOTDMY)");
+                       break;
+               case ECPG_INFORMIX_ENOSHORTDATE:
+                       printf("(ECPG_INFORMIX_ENOSHORTDATE)");
+                       break;
+               case ECPG_INFORMIX_BAD_DAY:
+                       printf("(ECPG_INFORMIX_BAD_DAY)");
+                       break;
+               case ECPG_INFORMIX_BAD_MONTH:
+                       printf("(ECPG_INFORMIX_BAD_MONTH)");
+                       break;
+               default:
+                       printf("(unknown ret: %d)", ret);
+                       break;
+       }
+       printf("\n");
+}
diff --git a/src/interfaces/ecpg/test/compat_informix/rfmtlong.pgc b/src/interfaces/ecpg/test/compat_informix/rfmtlong.pgc
new file mode 100644 (file)
index 0000000..19f220f
--- /dev/null
@@ -0,0 +1,73 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <pgtypes_error.h>
+#include <sqltypes.h>
+
+/*
+ * This file tests various forms of long-input/output by means of
+ * rfmtlong
+ */
+
+
+static void
+check_return(int ret);
+
+static void
+fmtlong(long lng, char *fmt)
+{
+       static int i;
+       int r;
+       char buf[30];
+
+       r = rfmtlong(lng, fmt, buf);
+       printf("r: %d ", r);
+       if (r == 0)
+       {
+               printf("%d: %s (fmt was: %s)\n", i++, buf, fmt);
+       }
+       else
+               check_return(r);
+}
+
+int
+main(void)
+{
+       ECPGdebug(1, stderr);
+
+       fmtlong(-8494493, "-<<<<,<<<,<<<,<<<");
+       fmtlong(-8494493, "################");
+       fmtlong(-8494493, "+++$$$$$$$$$$$$$.##");
+       fmtlong(-8494493, "(&,&&&,&&&,&&&.)");
+       fmtlong(-8494493, "<<<<,<<<,<<<,<<<");
+       fmtlong(-8494493, "$************.**");
+       fmtlong(-8494493, "---$************.**");
+       fmtlong(-8494493, "+-+################");
+       fmtlong(-8494493, "abc: ################+-+");
+       fmtlong(-8494493, "+<<<<,<<<,<<<,<<<");
+
+       return (0);
+}
+
+static void
+check_return(ret)
+{
+       switch(ret)
+       {
+               case ECPG_INFORMIX_ENOTDMY:
+                       printf("(ECPG_INFORMIX_ENOTDMY)");
+                       break;
+               case ECPG_INFORMIX_ENOSHORTDATE:
+                       printf("(ECPG_INFORMIX_ENOSHORTDATE)");
+                       break;
+               case ECPG_INFORMIX_BAD_DAY:
+                       printf("(ECPG_INFORMIX_BAD_DAY)");
+                       break;
+               case ECPG_INFORMIX_BAD_MONTH:
+                       printf("(ECPG_INFORMIX_BAD_MONTH)");
+                       break;
+               default:
+                       printf("(unknown ret: %d)", ret);
+                       break;
+       }
+       printf("\n");
+}
diff --git a/src/interfaces/ecpg/test/expected/compat_informix-charfuncs.c b/src/interfaces/ecpg/test/expected/compat_informix-charfuncs.c
new file mode 100644 (file)
index 0000000..eddd580
--- /dev/null
@@ -0,0 +1,42 @@
+/* Processed by ecpg (4.2.1) */
+/* These include files are added by the preprocessor */
+#include <ecpgtype.h>
+#include <ecpglib.h>
+#include <ecpgerrno.h>
+#include <sqlca.h>
+/* Needed for informix compatibility */
+#include <ecpg_informix.h>
+/* End of automatic include section */
+
+#line 1 "charfuncs.pgc"
+#include <stdio.h>
+#include <stdlib.h>
+#include <sqltypes.h>
+
+int main(void)
+{
+       char t1[] = "abc  def  ghi  ";
+                 /* 123456789012345 */
+       char buf[50];
+       int k;
+
+       printf("t1: _%s_\n", t1);
+       rupshift(t1);
+       printf("t1: _%s_\n", t1);
+
+       k = 2;
+       ldchar(t1, k, buf);
+       printf("byleng(t1, %d): %d, ldchar: _%s_\n", k, byleng(t1, k), buf);
+       k = 5;
+       ldchar(t1, k, buf);
+       printf("byleng(t1, %d): %d, ldchar: _%s_\n", k, byleng(t1, k), buf);
+       k = 9;
+       ldchar(t1, k, buf);
+       printf("byleng(t1, %d): %d, ldchar: _%s_\n", k, byleng(t1, k), buf);
+       k = 15;
+       ldchar(t1, k, buf);
+       printf("byleng(t1, %d): %d, ldchar: _%s_\n", k, byleng(t1, k), buf);
+
+
+       return 0;
+}
diff --git a/src/interfaces/ecpg/test/expected/compat_informix-charfuncs.stderr b/src/interfaces/ecpg/test/expected/compat_informix-charfuncs.stderr
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/interfaces/ecpg/test/expected/compat_informix-charfuncs.stdout b/src/interfaces/ecpg/test/expected/compat_informix-charfuncs.stdout
new file mode 100644 (file)
index 0000000..a177579
--- /dev/null
@@ -0,0 +1,6 @@
+t1: _abc  def  ghi  _
+t1: _ABC  DEF  GHI  _
+byleng(t1, 2): 2, ldchar: _AB_
+byleng(t1, 5): 3, ldchar: _ABC_
+byleng(t1, 9): 8, ldchar: _ABC  DEF_
+byleng(t1, 15): 13, ldchar: _ABC  DEF  GHI_
diff --git a/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c b/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c
new file mode 100644 (file)
index 0000000..fd5d5c7
--- /dev/null
@@ -0,0 +1,260 @@
+/* Processed by ecpg (4.2.1) */
+/* These include files are added by the preprocessor */
+#include <ecpgtype.h>
+#include <ecpglib.h>
+#include <ecpgerrno.h>
+#include <sqlca.h>
+/* Needed for informix compatibility */
+#include <ecpg_informix.h>
+/* End of automatic include section */
+
+#line 1 "dec_test.pgc"
+#include <stdio.h>
+#include <stdlib.h>
+#include <pgtypes_numeric.h>
+#include <pgtypes_error.h>
+#include <decimal.h>
+#include <sqltypes.h>
+
+
+#line 1 "./../regression.h"
+
+
+
+
+
+
+#line 8 "dec_test.pgc"
+
+
+/*
+TODO:
+       deccmp => DECUNKNOWN
+       decimal point: , and/or . ?
+       ECPG_INFORMIX_BAD_EXPONENT ?
+*/
+
+char* decs[] = { "2E394", "-2", ".794", "3.44", "592.49E21", "-32.84e4",
+                                "2E-394", ".1E-2", "+.0", "-592.49E-07", "+32.84e-4",
+                                ".500001", "-.5000001",
+                                "1234567890123456789012345678.91", /* 30 digits should fit
+                                                                      into decimal */
+                                "1234567890123456789012345678.921", /* 31 digits should NOT
+                                                                       fit into decimal */
+                                "not a number",
+                                NULL};
+
+
+static void
+check_errno(void);
+
+#define BUFSIZE 200
+
+int
+main(void)
+{
+       decimal *dec, *din;
+       char buf[BUFSIZE];
+       long l;
+       int i, j, k, q, r, count = 0;
+       double dbl;
+       decimal **decarr = (decimal **) malloc(1);
+
+       ECPGdebug(1, stderr);
+
+       for (i = 0; decs[i]; i++)
+       {
+               dec = PGTYPESdecimal_new();
+               r = deccvasc(decs[i], strlen(decs[i]), dec);
+               if (r)
+               {
+                       check_errno();
+                       printf("dec[%d,0]: r: %d\n", i, r);
+                       continue;
+               }
+               decarr = realloc(decarr, sizeof(decimal *) * (count + 1));
+               decarr[count++] = dec;
+
+               r = dectoasc(dec, buf, BUFSIZE-1, -1);
+               if (r < 0) check_errno();
+               printf("dec[%d,1]: r: %d, %s\n", i, r, buf);
+
+               r = dectoasc(dec, buf, BUFSIZE-1, 0);
+               if (r < 0) check_errno();
+               printf("dec[%d,2]: r: %d, %s\n", i, r, buf);
+               r = dectoasc(dec, buf, BUFSIZE-1, 1);
+               if (r < 0) check_errno();
+               printf("dec[%d,3]: r: %d, %s\n", i, r, buf);
+               r = dectoasc(dec, buf, BUFSIZE-1, 2);
+               if (r < 0) check_errno();
+               printf("dec[%d,4]: r: %d, %s\n", i, r, buf);
+
+               din = PGTYPESdecimal_new();
+               r = dectoasc(din, buf, BUFSIZE-1, 2);
+               if (!r < 0) check_errno();
+               printf("dec[%d,5]: r: %d, %s\n", i, r, buf);
+
+               r = dectolong(dec, &l);
+               if (r) check_errno();
+               printf("dec[%d,6]: %ld (r: %d)\n", i, r?0L:l, r);
+               if (r == 0)
+               {
+                       r = deccvlong(l, din);
+                       if (r) check_errno();
+                       dectoasc(din, buf, BUFSIZE-1, 2);
+                       q = deccmp(dec, din);
+                       printf("dec[%d,7]: %s (r: %d - cmp: %d)\n", i, buf, r, q);
+               }
+
+               r = dectoint(dec, &k);
+               if (r) check_errno();
+               printf("dec[%d,8]: %d (r: %d)\n", i, r?0:k, r);
+               if (r == 0)
+               {
+                       r = deccvint(k, din);
+                       if (r) check_errno();
+                       dectoasc(din, buf, BUFSIZE-1, 2);
+                       q = deccmp(dec, din);
+                       printf("dec[%d,9]: %s (r: %d - cmp: %d)\n", i, buf, r, q);
+               }
+
+               r = dectodbl(dec, &dbl);
+               if (r) check_errno();
+               printf("dec[%d,10]: %2.7f (r: %d)\n", i, r?0.0:dbl, r);
+               if (r == 0)
+               {
+                       r = deccvdbl(dbl, din);
+                       if (r)
+                       {
+                               check_errno();
+                               printf("dec[%d,11(f)]: - (r: %d)\n", i, r);
+                       }
+                       else
+                       {
+                               dectoasc(din, buf, BUFSIZE-1, 2);
+                               q = deccmp(dec, din);
+                               printf("dec[%d,11]: %s (r: %d - cmp: %d)\n", i, buf, r, q);
+                       }
+               }
+
+               PGTYPESdecimal_free(din);
+               printf("\n");
+       }
+
+       /* add a NULL value */
+       dec = PGTYPESdecimal_new();
+       decarr = realloc(decarr, sizeof(decimal *) * (count + 1));
+       decarr[count++] = dec;
+
+       rsetnull(CDECIMALTYPE, (char *) decarr[count-1]);
+       printf("dec[%d]: %sNULL\n", count-1,
+               risnull(CDECIMALTYPE, (char *) decarr[count-1]) ? "" : "NOT ");
+       printf("dec[0]: %sNULL\n",
+               risnull(CDECIMALTYPE, (char *) decarr[0]) ? "" : "NOT ");
+
+       r = dectoasc(decarr[3], buf, -1, -1);
+       check_errno(); printf("dectoasc with len == -1: r: %d\n", r);
+       r = dectoasc(decarr[3], buf, 0, -1);
+       check_errno(); printf("dectoasc with len == 0: r: %d\n", r);
+
+       for (i = 0; i < count; i++)
+       {
+               for (j = 0; j < count; j++)
+               {
+                       decimal a, s, m, d;
+                       int c;
+                       c = deccmp(decarr[i], decarr[j]);
+                       printf("dec[c,%d,%d]: %d\n", i, j, c);
+
+                       r = decadd(decarr[i], decarr[j], &a);
+                       if (r)
+                       {
+                               check_errno();
+                               printf("r: %d\n", r);
+                       }
+                       else
+                       {
+                               dectoasc(&a, buf, BUFSIZE-1, -1);
+                               printf("dec[a,%d,%d]: %s\n", i, j, buf);
+                       }
+
+                       r = decsub(decarr[i], decarr[j], &s);
+                       if (r)
+                       {
+                               check_errno();
+                               printf("r: %d\n", r);
+                       }
+                       else
+                       {
+                               dectoasc(&s, buf, BUFSIZE-1, -1);
+                               printf("dec[s,%d,%d]: %s\n", i, j, buf);
+                       }
+
+                       r = decmul(decarr[i], decarr[j], &m);
+                       if (r)
+                       {
+                               check_errno();
+                               printf("r: %d\n", r);
+                       }
+                       else
+                       {
+                               dectoasc(&m, buf, BUFSIZE-1, -1);
+                               printf("dec[m,%d,%d]: %s\n", i, j, buf);
+                       }
+
+                       r = decdiv(decarr[i], decarr[j], &d);
+                       if (r)
+                       {
+                               check_errno();
+                               printf("r: %d\n", r);
+                       }
+                       else
+                       {
+                               dectoasc(&d, buf, BUFSIZE-1, -1);
+                               printf("dec[d,%d,%d]: %s\n", i, j, buf);
+                       }
+               }
+       }
+
+       for (i = 0; i < count; i++)
+       {
+               dectoasc(decarr[i], buf, BUFSIZE-1, -1);
+               printf("%d: %s\n", i, buf);
+       }
+
+       return (0);
+}
+
+static void
+check_errno(void)
+{
+       switch(errno)
+       {
+               case 0:
+                       printf("(no errno set) - ");
+                       break;
+               case ECPG_INFORMIX_NUM_OVERFLOW:
+                       printf("(errno == ECPG_INFORMIX_NUM_OVERFLOW) - ");
+                       break;
+               case ECPG_INFORMIX_NUM_UNDERFLOW:
+                       printf("(errno == ECPG_INFORMIX_NUM_UNDERFLOW) - ");
+                       break;
+               case PGTYPES_NUM_OVERFLOW:
+                       printf("(errno == PGTYPES_NUM_OVERFLOW) - ");
+                       break;
+               case PGTYPES_NUM_UNDERFLOW:
+                       printf("(errno == PGTYPES_NUM_UNDERFLOW) - ");
+                       break;
+               case PGTYPES_NUM_BAD_NUMERIC:
+                       printf("(errno == PGTYPES_NUM_BAD_NUMERIC) - ");
+                       break;
+               case PGTYPES_NUM_DIVIDE_ZERO:
+                       printf("(errno == PGTYPES_NUM_DIVIDE_ZERO) - ");
+                       break;
+               default:
+                       printf("(unknown errno (%d))\n", errno);
+                       printf("(libc: (%s)) ", strerror(errno));
+                       break;
+       }
+
+}
diff --git a/src/interfaces/ecpg/test/expected/compat_informix-dec_test.stderr b/src/interfaces/ecpg/test/expected/compat_informix-dec_test.stderr
new file mode 100644 (file)
index 0000000..1a3639d
--- /dev/null
@@ -0,0 +1,2 @@
+[NO_PID]: ECPGdebug: set to 1
+[NO_PID]: sqlca: code: 0, state: 00000
diff --git a/src/interfaces/ecpg/test/expected/compat_informix-dec_test.stdout b/src/interfaces/ecpg/test/expected/compat_informix-dec_test.stdout
new file mode 100644 (file)
index 0000000..87f008f
--- /dev/null
@@ -0,0 +1,1306 @@
+(no errno set) - dec[0,1]: r: -1, *
+(no errno set) - dec[0,2]: r: -1, *
+(no errno set) - dec[0,3]: r: -1, *
+(no errno set) - dec[0,4]: r: -1, *
+dec[0,5]: r: 0, 0.00
+(errno == PGTYPES_NUM_OVERFLOW) - dec[0,6]: 0 (r: -1)
+(errno == PGTYPES_NUM_OVERFLOW) - dec[0,8]: 0 (r: -1)
+(errno == PGTYPES_NUM_OVERFLOW) - dec[0,10]: 0.0000000 (r: -1)
+
+dec[1,1]: r: 0, -2
+dec[1,2]: r: 0, -2
+dec[1,3]: r: 0, -2.0
+dec[1,4]: r: 0, -2.00
+dec[1,5]: r: 0, 0.00
+dec[1,6]: -2 (r: 0)
+dec[1,7]: -2.00 (r: 0 - cmp: 0)
+dec[1,8]: -2 (r: 0)
+dec[1,9]: -2.00 (r: 0 - cmp: 0)
+dec[1,10]: -2.0000000 (r: 0)
+dec[1,11]: -2.00 (r: 0 - cmp: 0)
+
+dec[2,1]: r: 0, 0.794
+dec[2,2]: r: 0, 1
+dec[2,3]: r: 0, 0.8
+dec[2,4]: r: 0, 0.79
+dec[2,5]: r: 0, 0.00
+dec[2,6]: 1 (r: 0)
+dec[2,7]: 1.00 (r: 0 - cmp: -1)
+dec[2,8]: 1 (r: 0)
+dec[2,9]: 1.00 (r: 0 - cmp: -1)
+dec[2,10]: 0.7940000 (r: 0)
+dec[2,11]: 0.79 (r: 0 - cmp: 0)
+
+dec[3,1]: r: 0, 3.44
+dec[3,2]: r: 0, 3
+dec[3,3]: r: 0, 3.4
+dec[3,4]: r: 0, 3.44
+dec[3,5]: r: 0, 0.00
+dec[3,6]: 3 (r: 0)
+dec[3,7]: 3.00 (r: 0 - cmp: 1)
+dec[3,8]: 3 (r: 0)
+dec[3,9]: 3.00 (r: 0 - cmp: 1)
+dec[3,10]: 3.4400000 (r: 0)
+dec[3,11]: 3.44 (r: 0 - cmp: 0)
+
+dec[4,1]: r: 0, 592490000000000000000000
+dec[4,2]: r: 0, 592490000000000000000000
+dec[4,3]: r: 0, 592490000000000000000000.0
+dec[4,4]: r: 0, 592490000000000000000000.00
+dec[4,5]: r: 0, 0.00
+(errno == PGTYPES_NUM_OVERFLOW) - dec[4,6]: 0 (r: -1)
+(errno == PGTYPES_NUM_OVERFLOW) - dec[4,8]: 0 (r: -1)
+dec[4,10]: 592490000000000009961472.0000000 (r: 0)
+dec[4,11]: 592490000000000009961472.00 (r: 0 - cmp: -1)
+
+dec[5,1]: r: 0, -328400
+dec[5,2]: r: 0, -328400
+dec[5,3]: r: 0, -328400.0
+dec[5,4]: r: 0, -328400.00
+dec[5,5]: r: 0, 0.00
+dec[5,6]: -328400 (r: 0)
+dec[5,7]: -328400.00 (r: 0 - cmp: 0)
+dec[5,8]: -328400 (r: 0)
+dec[5,9]: -328400.00 (r: 0 - cmp: 0)
+dec[5,10]: -328400.0000000 (r: 0)
+dec[5,11]: -328400.00 (r: 0 - cmp: 0)
+
+(no errno set) - dec[6,1]: r: -1, *
+dec[6,2]: r: 0, 0
+dec[6,3]: r: 0, 0.0
+dec[6,4]: r: 0, 0.00
+dec[6,5]: r: 0, 0.00
+dec[6,6]: 0 (r: 0)
+dec[6,7]: 0.00 (r: 0 - cmp: 1)
+dec[6,8]: 0 (r: 0)
+dec[6,9]: 0.00 (r: 0 - cmp: 1)
+(errno == PGTYPES_NUM_UNDERFLOW) - dec[6,10]: 0.0000000 (r: -1)
+
+dec[7,1]: r: 0, 0.001
+dec[7,2]: r: 0, 0
+dec[7,3]: r: 0, 0.0
+dec[7,4]: r: 0, 0.00
+dec[7,5]: r: 0, 0.00
+dec[7,6]: 0 (r: 0)
+dec[7,7]: 0.00 (r: 0 - cmp: 1)
+dec[7,8]: 0 (r: 0)
+dec[7,9]: 0.00 (r: 0 - cmp: 1)
+dec[7,10]: 0.0010000 (r: 0)
+dec[7,11]: 0.00 (r: 0 - cmp: 0)
+
+dec[8,1]: r: 0, 0.0
+dec[8,2]: r: 0, 0
+dec[8,3]: r: 0, 0.0
+dec[8,4]: r: 0, 0.00
+dec[8,5]: r: 0, 0.00
+dec[8,6]: 0 (r: 0)
+dec[8,7]: 0.00 (r: 0 - cmp: 0)
+dec[8,8]: 0 (r: 0)
+dec[8,9]: 0.00 (r: 0 - cmp: 0)
+dec[8,10]: 0.0000000 (r: 0)
+dec[8,11]: 0.00 (r: 0 - cmp: 0)
+
+dec[9,1]: r: 0, -0.000059249
+dec[9,2]: r: 0, -0
+dec[9,3]: r: 0, -0.0
+dec[9,4]: r: 0, -0.00
+dec[9,5]: r: 0, 0.00
+dec[9,6]: 0 (r: 0)
+dec[9,7]: 0.00 (r: 0 - cmp: -1)
+dec[9,8]: 0 (r: 0)
+dec[9,9]: 0.00 (r: 0 - cmp: -1)
+dec[9,10]: -0.0000592 (r: 0)
+dec[9,11]: -0.00 (r: 0 - cmp: -1)
+
+dec[10,1]: r: 0, 0.003284
+dec[10,2]: r: 0, 0
+dec[10,3]: r: 0, 0.0
+dec[10,4]: r: 0, 0.00
+dec[10,5]: r: 0, 0.00
+dec[10,6]: 0 (r: 0)
+dec[10,7]: 0.00 (r: 0 - cmp: 1)
+dec[10,8]: 0 (r: 0)
+dec[10,9]: 0.00 (r: 0 - cmp: 1)
+dec[10,10]: 0.0032840 (r: 0)
+dec[10,11]: 0.00 (r: 0 - cmp: 0)
+
+dec[11,1]: r: 0, 0.500001
+dec[11,2]: r: 0, 1
+dec[11,3]: r: 0, 0.5
+dec[11,4]: r: 0, 0.50
+dec[11,5]: r: 0, 0.00
+dec[11,6]: 1 (r: 0)
+dec[11,7]: 1.00 (r: 0 - cmp: -1)
+dec[11,8]: 1 (r: 0)
+dec[11,9]: 1.00 (r: 0 - cmp: -1)
+dec[11,10]: 0.5000010 (r: 0)
+dec[11,11]: 0.50 (r: 0 - cmp: 0)
+
+dec[12,1]: r: 0, -0.5000001
+dec[12,2]: r: 0, -1
+dec[12,3]: r: 0, -0.5
+dec[12,4]: r: 0, -0.50
+dec[12,5]: r: 0, 0.00
+dec[12,6]: -1 (r: 0)
+dec[12,7]: -1.00 (r: 0 - cmp: 1)
+dec[12,8]: -1 (r: 0)
+dec[12,9]: -1.00 (r: 0 - cmp: 1)
+dec[12,10]: -0.5000001 (r: 0)
+dec[12,11]: -0.50 (r: 0 - cmp: -1)
+
+dec[13,1]: r: 0, 1234567890123456789012345678.91
+dec[13,2]: r: 0, 1234567890123456789012345679
+dec[13,3]: r: 0, 1234567890123456789012345678.9
+dec[13,4]: r: 0, 1234567890123456789012345678.91
+dec[13,5]: r: 0, 0.00
+(errno == PGTYPES_NUM_OVERFLOW) - dec[13,6]: 0 (r: -1)
+(errno == PGTYPES_NUM_OVERFLOW) - dec[13,8]: 0 (r: -1)
+dec[13,10]: 1234567890123456850245451776.0000000 (r: 0)
+(errno == PGTYPES_NUM_OVERFLOW) - dec[13,11(f)]: - (r: -1)
+
+(errno == PGTYPES_NUM_OVERFLOW) - dec[14,0]: r: -1200
+(errno == PGTYPES_NUM_BAD_NUMERIC) - dec[15,0]: r: -1213
+dec[14]: NULL
+dec[0]: NOT NULL
+(errno == PGTYPES_NUM_BAD_NUMERIC) - dectoasc with len == -1: r: -1
+(errno == PGTYPES_NUM_BAD_NUMERIC) - dectoasc with len == 0: r: -1
+dec[c,0,0]: 0
+dec[a,0,0]: *
+dec[s,0,0]: 0
+dec[m,0,0]: *
+dec[d,0,0]: 1.00000000000000000
+dec[c,0,1]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,0,1]: 
+dec[m,0,1]: *
+dec[d,0,1]: *
+dec[c,0,2]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,0,2]: 
+dec[m,0,2]: *
+dec[d,0,2]: 
+dec[c,0,3]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,0,3]: 
+dec[m,0,3]: *
+dec[d,0,3]: 
+dec[c,0,4]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,0,4]: 
+dec[m,0,4]: *
+dec[d,0,4]: 
+dec[c,0,5]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,0,5]: 
+dec[m,0,5]: *
+dec[d,0,5]: 
+dec[c,0,6]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,0,6]: 
+dec[m,0,6]: *
+dec[d,0,6]: *
+dec[c,0,7]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,0,7]: 
+dec[m,0,7]: *
+dec[d,0,7]: *
+dec[c,0,8]: 1
+dec[a,0,8]: *
+dec[s,0,8]: *
+dec[m,0,8]: 0.0
+(errno == PGTYPES_NUM_DIVIDE_ZERO) - r: -1202
+dec[c,0,9]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,0,9]: 
+dec[m,0,9]: *
+dec[d,0,9]: 
+dec[c,0,10]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,0,10]: 
+dec[m,0,10]: *
+dec[d,0,10]: 
+dec[c,0,11]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,0,11]: 
+dec[m,0,11]: *
+dec[d,0,11]: 
+dec[c,0,12]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,0,12]: 
+dec[m,0,12]: *
+dec[d,0,12]: 
+dec[c,0,13]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,0,13]: 
+dec[m,0,13]: *
+dec[d,0,13]: 
+dec[c,0,14]: 2147483647
+dec[a,0,14]: 
+dec[s,0,14]: 
+dec[m,0,14]: *
+dec[d,0,14]: 
+dec[c,1,0]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,1,0]: 
+dec[m,1,0]: *
+dec[d,1,0]: *
+dec[c,1,1]: 0
+dec[a,1,1]: -4
+dec[s,1,1]: 0
+dec[m,1,1]: 4
+dec[d,1,1]: 1.00000000000000000
+dec[c,1,2]: -1
+dec[a,1,2]: -1.206
+dec[s,1,2]: -2.794
+dec[m,1,2]: -1.588
+dec[d,1,2]: -2.5188916876574307
+dec[c,1,3]: -1
+dec[a,1,3]: 1.44
+dec[s,1,3]: -5.44
+dec[m,1,3]: -6.88
+dec[d,1,3]: -0.58139534883720930
+dec[c,1,4]: -1
+dec[a,1,4]: 592489999999999999999998
+dec[s,1,4]: -592490000000000000000002
+dec[m,1,4]: -1184980000000000000000000
+dec[d,1,4]: -0.0000000000000000000000033755843980489122
+dec[c,1,5]: 1
+dec[a,1,5]: -328402
+dec[s,1,5]: 328398
+dec[m,1,5]: 656800
+dec[d,1,5]: 0.0000060901339829476248
+dec[c,1,6]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,1,6]: 
+dec[m,1,6]: *
+dec[d,1,6]: *
+dec[c,1,7]: -1
+dec[a,1,7]: -1.999
+dec[s,1,7]: -2.001
+dec[m,1,7]: -0.002
+dec[d,1,7]: -2000.0000000000000
+dec[c,1,8]: -1
+dec[a,1,8]: -2.0
+dec[s,1,8]: -2.0
+dec[m,1,8]: 0.0
+(errno == PGTYPES_NUM_DIVIDE_ZERO) - r: -1202
+dec[c,1,9]: -1
+dec[a,1,9]: -2.000059249
+dec[s,1,9]: -1.999940751
+dec[m,1,9]: 0.000118498
+dec[d,1,9]: 33755.843980489122
+dec[c,1,10]: -1
+dec[a,1,10]: -1.996716
+dec[s,1,10]: -2.003284
+dec[m,1,10]: -0.006568
+dec[d,1,10]: -609.01339829476248
+dec[c,1,11]: -1
+dec[a,1,11]: -1.499999
+dec[s,1,11]: -2.500001
+dec[m,1,11]: -1.000002
+dec[d,1,11]: -3.9999920000160000
+dec[c,1,12]: -1
+dec[a,1,12]: -2.5000001
+dec[s,1,12]: -1.4999999
+dec[m,1,12]: 1.0000002
+dec[d,1,12]: 3.9999992000001600
+dec[c,1,13]: -1
+dec[a,1,13]: 1234567890123456789012345676.91
+dec[s,1,13]: -1234567890123456789012345680.91
+dec[m,1,13]: -2469135780246913578024691357.82
+dec[d,1,13]: -0.0000000000000000000000000016200000145800001
+dec[c,1,14]: 2147483647
+dec[a,1,14]: 1234567890123456789012345676.91
+dec[s,1,14]: -1234567890123456789012345680.91
+dec[m,1,14]: -2469135780246913578024691357.82
+dec[d,1,14]: -0.0000000000000000000000000016200000145800001
+dec[c,2,0]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,2,0]: 
+dec[m,2,0]: *
+dec[d,2,0]: *
+dec[c,2,1]: 1
+dec[a,2,1]: -1.206
+dec[s,2,1]: 2.794
+dec[m,2,1]: -1.588
+dec[d,2,1]: -0.39700000000000000
+dec[c,2,2]: 0
+dec[a,2,2]: 1.588
+dec[s,2,2]: 0.000
+dec[m,2,2]: 0.630436
+dec[d,2,2]: 1.00000000000000000
+dec[c,2,3]: -1
+dec[a,2,3]: 4.234
+dec[s,2,3]: -2.646
+dec[m,2,3]: 2.73136
+dec[d,2,3]: 0.23081395348837209
+dec[c,2,4]: -1
+dec[a,2,4]: 592490000000000000000000.794
+dec[s,2,4]: -592489999999999999999999.206
+dec[m,2,4]: 470437060000000000000000.000
+dec[d,2,4]: 0.0000000000000000000000013401070060254182
+dec[c,2,5]: 1
+dec[a,2,5]: -328399.206
+dec[s,2,5]: 328400.794
+dec[m,2,5]: -260749.600
+dec[d,2,5]: -0.0000024177831912302071
+dec[c,2,6]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,2,6]: 
+dec[m,2,6]: *
+dec[d,2,6]: *
+dec[c,2,7]: 1
+dec[a,2,7]: 0.795
+dec[s,2,7]: 0.793
+dec[m,2,7]: 0.000794
+dec[d,2,7]: 794.00000000000000
+dec[c,2,8]: 1
+dec[a,2,8]: 0.794
+dec[s,2,8]: 0.794
+dec[m,2,8]: 0.0000
+(errno == PGTYPES_NUM_DIVIDE_ZERO) - r: -1202
+dec[c,2,9]: 1
+dec[a,2,9]: 0.793940751
+dec[s,2,9]: 0.794059249
+dec[m,2,9]: -0.000047043706
+dec[d,2,9]: -13401.070060254182
+dec[c,2,10]: 1
+dec[a,2,10]: 0.797284
+dec[s,2,10]: 0.790716
+dec[m,2,10]: 0.002607496
+dec[d,2,10]: 241.77831912302071
+dec[c,2,11]: 1
+dec[a,2,11]: 1.294001
+dec[s,2,11]: 0.293999
+dec[m,2,11]: 0.397000794
+dec[d,2,11]: 1.5879968240063520
+dec[c,2,12]: 1
+dec[a,2,12]: 0.2939999
+dec[s,2,12]: 1.2940001
+dec[m,2,12]: -0.3970000794
+dec[d,2,12]: -1.5879996824000635
+dec[c,2,13]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,2,13]: 
+dec[m,2,13]: 
+dec[d,2,13]: 0.00000000000000000000000000064314000578826005
+dec[c,2,14]: 2147483647
+dec[a,2,14]: 
+dec[s,2,14]: 
+dec[m,2,14]: 
+dec[d,2,14]: 0.00000000000000000000000000064314000578826005
+dec[c,3,0]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,3,0]: 
+dec[m,3,0]: *
+dec[d,3,0]: *
+dec[c,3,1]: 1
+dec[a,3,1]: 1.44
+dec[s,3,1]: 5.44
+dec[m,3,1]: -6.88
+dec[d,3,1]: -1.7200000000000000
+dec[c,3,2]: 1
+dec[a,3,2]: 4.234
+dec[s,3,2]: 2.646
+dec[m,3,2]: 2.73136
+dec[d,3,2]: 4.3324937027707809
+dec[c,3,3]: 0
+dec[a,3,3]: 6.88
+dec[s,3,3]: 0.00
+dec[m,3,3]: 11.8336
+dec[d,3,3]: 1.00000000000000000
+dec[c,3,4]: -1
+dec[a,3,4]: 592490000000000000000003.44
+dec[s,3,4]: -592489999999999999999996.56
+dec[m,3,4]: 2038165600000000000000000.00
+dec[d,3,4]: 0.0000000000000000000000058060051646441290
+dec[c,3,5]: 1
+dec[a,3,5]: -328396.56
+dec[s,3,5]: 328403.44
+dec[m,3,5]: -1129696.00
+dec[d,3,5]: -0.0000104750304506699147
+dec[c,3,6]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,3,6]: 
+dec[m,3,6]: *
+dec[d,3,6]: *
+dec[c,3,7]: 1
+dec[a,3,7]: 3.441
+dec[s,3,7]: 3.439
+dec[m,3,7]: 0.00344
+dec[d,3,7]: 3440.0000000000000
+dec[c,3,8]: 1
+dec[a,3,8]: 3.44
+dec[s,3,8]: 3.44
+dec[m,3,8]: 0.000
+(errno == PGTYPES_NUM_DIVIDE_ZERO) - r: -1202
+dec[c,3,9]: 1
+dec[a,3,9]: 3.439940751
+dec[s,3,9]: 3.440059249
+dec[m,3,9]: -0.00020381656
+dec[d,3,9]: -58060.051646441290
+dec[c,3,10]: 1
+dec[a,3,10]: 3.443284
+dec[s,3,10]: 3.436716
+dec[m,3,10]: 0.01129696
+dec[d,3,10]: 1047.50304506699147
+dec[c,3,11]: 1
+dec[a,3,11]: 3.940001
+dec[s,3,11]: 2.939999
+dec[m,3,11]: 1.72000344
+dec[d,3,11]: 6.8799862400275199
+dec[c,3,12]: 1
+dec[a,3,12]: 2.9399999
+dec[s,3,12]: 3.9400001
+dec[m,3,12]: -1.720000344
+dec[d,3,12]: -6.8799986240002752
+dec[c,3,13]: -1
+dec[a,3,13]: 1234567890123456789012345682.35
+dec[s,3,13]: -1234567890123456789012345675.47
+dec[m,3,13]: 
+dec[d,3,13]: 0.0000000000000000000000000027864000250776002
+dec[c,3,14]: 2147483647
+dec[a,3,14]: 1234567890123456789012345682.35
+dec[s,3,14]: -1234567890123456789012345675.47
+dec[m,3,14]: 
+dec[d,3,14]: 0.0000000000000000000000000027864000250776002
+dec[c,4,0]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,4,0]: 
+dec[m,4,0]: *
+dec[d,4,0]: *
+dec[c,4,1]: 1
+dec[a,4,1]: 592489999999999999999998
+dec[s,4,1]: 592490000000000000000002
+dec[m,4,1]: -1184980000000000000000000
+dec[d,4,1]: -296245000000000000000000
+dec[c,4,2]: 1
+dec[a,4,2]: 592490000000000000000000.794
+dec[s,4,2]: 592489999999999999999999.206
+dec[m,4,2]: 470437060000000000000000.000
+dec[d,4,2]: 
+dec[c,4,3]: 1
+dec[a,4,3]: 592490000000000000000003.44
+dec[s,4,3]: 592489999999999999999996.56
+dec[m,4,3]: 2038165600000000000000000.00
+dec[d,4,3]: 172235465116279069767441.86
+dec[c,4,4]: 0
+dec[a,4,4]: 1184980000000000000000000
+dec[s,4,4]: 0
+dec[m,4,4]: 351044400100000000000000000000000000000000000000
+dec[d,4,4]: 1.00000000000000000
+dec[c,4,5]: 1
+dec[a,4,5]: 592489999999999999671600
+dec[s,4,5]: 592490000000000000328400
+dec[m,4,5]: -194573716000000000000000000000
+dec[d,4,5]: -1804171741778319123
+dec[c,4,6]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,4,6]: 
+dec[m,4,6]: *
+dec[d,4,6]: *
+dec[c,4,7]: 1
+dec[a,4,7]: 592490000000000000000000.001
+dec[s,4,7]: 592489999999999999999999.999
+dec[m,4,7]: 592490000000000000000.000
+dec[d,4,7]: 592490000000000000000000000.000
+dec[c,4,8]: 1
+dec[a,4,8]: 592490000000000000000000.0
+dec[s,4,8]: 592490000000000000000000.0
+dec[m,4,8]: 0.0
+(errno == PGTYPES_NUM_DIVIDE_ZERO) - r: -1202
+dec[c,4,9]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,4,9]: 
+dec[m,4,9]: -35104440010000000000.000000000
+dec[d,4,9]: -10000000000000000000000000000.000000000
+dec[c,4,10]: 1
+dec[a,4,10]: 592490000000000000000000.003284
+dec[s,4,10]: 592489999999999999999999.996716
+dec[m,4,10]: 1945737160000000000000.000000
+dec[d,4,10]: 
+dec[c,4,11]: 1
+dec[a,4,11]: 592490000000000000000000.500001
+dec[s,4,11]: 592489999999999999999999.499999
+dec[m,4,11]: 296245592490000000000000.000000
+dec[d,4,11]: 
+dec[c,4,12]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,4,12]: 
+dec[m,4,12]: -296245059249000000000000.0000000
+dec[d,4,12]: 
+dec[c,4,13]: -1
+dec[a,4,13]: 1235160380123456789012345678.91
+dec[s,4,13]: -1233975400123456789012345678.91
+dec[m,4,13]: 
+dec[d,4,13]: 0.00047991690431925214
+dec[c,4,14]: 2147483647
+dec[a,4,14]: 1235160380123456789012345678.91
+dec[s,4,14]: -1233975400123456789012345678.91
+dec[m,4,14]: 
+dec[d,4,14]: 0.00047991690431925214
+dec[c,5,0]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,5,0]: 
+dec[m,5,0]: *
+dec[d,5,0]: *
+dec[c,5,1]: -1
+dec[a,5,1]: -328402
+dec[s,5,1]: -328398
+dec[m,5,1]: 656800
+dec[d,5,1]: 164200.00000000000
+dec[c,5,2]: -1
+dec[a,5,2]: -328399.206
+dec[s,5,2]: -328400.794
+dec[m,5,2]: -260749.600
+dec[d,5,2]: -413602.01511335013
+dec[c,5,3]: -1
+dec[a,5,3]: -328396.56
+dec[s,5,3]: -328403.44
+dec[m,5,3]: -1129696.00
+dec[d,5,3]: -95465.116279069767
+dec[c,5,4]: -1
+dec[a,5,4]: 592489999999999999671600
+dec[s,5,4]: -592490000000000000328400
+dec[m,5,4]: -194573716000000000000000000000
+dec[d,5,4]: -0.00000000000000000055427095815963139
+dec[c,5,5]: 0
+dec[a,5,5]: -656800
+dec[s,5,5]: 0
+dec[m,5,5]: 107846560000
+dec[d,5,5]: 1.00000000000000000
+dec[c,5,6]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,5,6]: 
+dec[m,5,6]: *
+dec[d,5,6]: *
+dec[c,5,7]: -1
+dec[a,5,7]: -328399.999
+dec[s,5,7]: -328400.001
+dec[m,5,7]: -328.400
+dec[d,5,7]: -328400000.00000000
+dec[c,5,8]: -1
+dec[a,5,8]: -328400.0
+dec[s,5,8]: -328400.0
+dec[m,5,8]: 0.0
+(errno == PGTYPES_NUM_DIVIDE_ZERO) - r: -1202
+dec[c,5,9]: -1
+dec[a,5,9]: -328400.000059249
+dec[s,5,9]: -328399.999940751
+dec[m,5,9]: 19.457371600
+dec[d,5,9]: 5542709581.596313862
+dec[c,5,10]: -1
+dec[a,5,10]: -328399.996716
+dec[s,5,10]: -328400.003284
+dec[m,5,10]: -1078.465600
+dec[d,5,10]: -100000000.000000000
+dec[c,5,11]: -1
+dec[a,5,11]: -328399.499999
+dec[s,5,11]: -328400.500001
+dec[m,5,11]: -164200.328400
+dec[d,5,11]: -656798.68640262719
+dec[c,5,12]: -1
+dec[a,5,12]: -328400.5000001
+dec[s,5,12]: -328399.4999999
+dec[m,5,12]: 164200.0328400
+dec[d,5,12]: 656799.86864002627
+dec[c,5,13]: -1
+dec[a,5,13]: 1234567890123456789012017278.91
+dec[s,5,13]: -1234567890123456789012674078.91
+dec[m,5,13]: 
+dec[d,5,13]: -0.00000000000000000000026600400239403602
+dec[c,5,14]: 2147483647
+dec[a,5,14]: 1234567890123456789012017278.91
+dec[s,5,14]: -1234567890123456789012674078.91
+dec[m,5,14]: 
+dec[d,5,14]: -0.00000000000000000000026600400239403602
+dec[c,6,0]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,6,0]: 
+dec[m,6,0]: *
+dec[d,6,0]: *
+dec[c,6,1]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,6,1]: 
+dec[m,6,1]: *
+dec[d,6,1]: *
+dec[c,6,2]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,6,2]: 
+dec[m,6,2]: *
+dec[d,6,2]: *
+dec[c,6,3]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,6,3]: 
+dec[m,6,3]: *
+dec[d,6,3]: *
+dec[c,6,4]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,6,4]: 
+dec[m,6,4]: *
+dec[d,6,4]: *
+dec[c,6,5]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,6,5]: 
+dec[m,6,5]: *
+dec[d,6,5]: *
+dec[c,6,6]: 0
+dec[a,6,6]: *
+dec[s,6,6]: *
+dec[m,6,6]: *
+dec[d,6,6]: *
+dec[c,6,7]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,6,7]: 
+dec[m,6,7]: *
+dec[d,6,7]: *
+dec[c,6,8]: 1
+dec[a,6,8]: *
+dec[s,6,8]: *
+dec[m,6,8]: *
+(errno == PGTYPES_NUM_DIVIDE_ZERO) - r: -1202
+dec[c,6,9]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,6,9]: 
+dec[m,6,9]: *
+dec[d,6,9]: *
+dec[c,6,10]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,6,10]: 
+dec[m,6,10]: *
+dec[d,6,10]: *
+dec[c,6,11]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,6,11]: 
+dec[m,6,11]: *
+dec[d,6,11]: *
+dec[c,6,12]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,6,12]: 
+dec[m,6,12]: *
+dec[d,6,12]: *
+dec[c,6,13]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,6,13]: 
+dec[m,6,13]: *
+dec[d,6,13]: *
+dec[c,6,14]: 2147483647
+dec[a,6,14]: 
+dec[s,6,14]: 
+dec[m,6,14]: *
+dec[d,6,14]: *
+dec[c,7,0]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,7,0]: 
+dec[m,7,0]: *
+dec[d,7,0]: *
+dec[c,7,1]: 1
+dec[a,7,1]: -1.999
+dec[s,7,1]: 2.001
+dec[m,7,1]: -0.002
+dec[d,7,1]: -0.00050000000000000000
+dec[c,7,2]: -1
+dec[a,7,2]: 0.795
+dec[s,7,2]: -0.793
+dec[m,7,2]: 0.000794
+dec[d,7,2]: 0.0012594458438287154
+dec[c,7,3]: -1
+dec[a,7,3]: 3.441
+dec[s,7,3]: -3.439
+dec[m,7,3]: 0.00344
+dec[d,7,3]: 0.00029069767441860465
+dec[c,7,4]: -1
+dec[a,7,4]: 592490000000000000000000.001
+dec[s,7,4]: -592489999999999999999999.999
+dec[m,7,4]: 592490000000000000000.000
+dec[d,7,4]: 0.0000000000000000000000000016877921990244561
+dec[c,7,5]: 1
+dec[a,7,5]: -328399.999
+dec[s,7,5]: 328400.001
+dec[m,7,5]: -328.400
+dec[d,7,5]: -0.0000000030450669914738124
+dec[c,7,6]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,7,6]: 
+dec[m,7,6]: *
+dec[d,7,6]: *
+dec[c,7,7]: 0
+dec[a,7,7]: 0.002
+dec[s,7,7]: 0.000
+dec[m,7,7]: 0.000001
+dec[d,7,7]: 1.00000000000000000
+dec[c,7,8]: 1
+dec[a,7,8]: 0.001
+dec[s,7,8]: 0.001
+dec[m,7,8]: 0.0000
+(errno == PGTYPES_NUM_DIVIDE_ZERO) - r: -1202
+dec[c,7,9]: 1
+dec[a,7,9]: 0.000940751
+dec[s,7,9]: 0.001059249
+dec[m,7,9]: -0.000000059249
+dec[d,7,9]: -16.877921990244561
+dec[c,7,10]: -1
+dec[a,7,10]: 0.004284
+dec[s,7,10]: -0.002284
+dec[m,7,10]: 0.000003284
+dec[d,7,10]: 0.30450669914738124
+dec[c,7,11]: -1
+dec[a,7,11]: 0.501001
+dec[s,7,11]: -0.499001
+dec[m,7,11]: 0.000500001
+dec[d,7,11]: 0.0019999960000080000
+dec[c,7,12]: 1
+dec[a,7,12]: -0.4990001
+dec[s,7,12]: 0.5010001
+dec[m,7,12]: -0.0005000001
+dec[d,7,12]: -0.0019999996000000800
+dec[c,7,13]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,7,13]: 
+dec[m,7,13]: 1234567890123456789012345.67891
+dec[d,7,13]: 0.00000000000000000000000000000081000000729000007
+dec[c,7,14]: 2147483647
+dec[a,7,14]: 
+dec[s,7,14]: 
+dec[m,7,14]: 1234567890123456789012345.67891
+dec[d,7,14]: 0.00000000000000000000000000000081000000729000007
+dec[c,8,0]: -1
+dec[a,8,0]: *
+dec[s,8,0]: *
+dec[m,8,0]: 0.0
+dec[d,8,0]: 0
+dec[c,8,1]: 1
+dec[a,8,1]: -2.0
+dec[s,8,1]: 2.0
+dec[m,8,1]: 0.0
+dec[d,8,1]: 0
+dec[c,8,2]: -1
+dec[a,8,2]: 0.794
+dec[s,8,2]: -0.794
+dec[m,8,2]: 0.0000
+dec[d,8,2]: 0
+dec[c,8,3]: -1
+dec[a,8,3]: 3.44
+dec[s,8,3]: -3.44
+dec[m,8,3]: 0.000
+dec[d,8,3]: 0
+dec[c,8,4]: -1
+dec[a,8,4]: 592490000000000000000000.0
+dec[s,8,4]: -592490000000000000000000.0
+dec[m,8,4]: 0.0
+dec[d,8,4]: 0
+dec[c,8,5]: 1
+dec[a,8,5]: -328400.0
+dec[s,8,5]: 328400.0
+dec[m,8,5]: 0.0
+dec[d,8,5]: 0
+dec[c,8,6]: -1
+dec[a,8,6]: *
+dec[s,8,6]: *
+dec[m,8,6]: *
+dec[d,8,6]: 0
+dec[c,8,7]: -1
+dec[a,8,7]: 0.001
+dec[s,8,7]: -0.001
+dec[m,8,7]: 0.0000
+dec[d,8,7]: 0
+dec[c,8,8]: 0
+dec[a,8,8]: 0.0
+dec[s,8,8]: 0.0
+dec[m,8,8]: 0.00
+(errno == PGTYPES_NUM_DIVIDE_ZERO) - r: -1202
+dec[c,8,9]: 1
+dec[a,8,9]: -0.000059249
+dec[s,8,9]: 0.000059249
+dec[m,8,9]: 0.0000000000
+dec[d,8,9]: 0
+dec[c,8,10]: -1
+dec[a,8,10]: 0.003284
+dec[s,8,10]: -0.003284
+dec[m,8,10]: 0.0000000
+dec[d,8,10]: 0
+dec[c,8,11]: -1
+dec[a,8,11]: 0.500001
+dec[s,8,11]: -0.500001
+dec[m,8,11]: 0.0000000
+dec[d,8,11]: 0
+dec[c,8,12]: 1
+dec[a,8,12]: -0.5000001
+dec[s,8,12]: 0.5000001
+dec[m,8,12]: 0.00000000
+dec[d,8,12]: 0
+dec[c,8,13]: -1
+dec[a,8,13]: 1234567890123456789012345678.91
+dec[s,8,13]: -1234567890123456789012345678.91
+dec[m,8,13]: 0.000
+dec[d,8,13]: 0
+dec[c,8,14]: 2147483647
+dec[a,8,14]: 1234567890123456789012345678.91
+dec[s,8,14]: -1234567890123456789012345678.91
+dec[m,8,14]: 0.000
+dec[d,8,14]: 0
+dec[c,9,0]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,9,0]: 
+dec[m,9,0]: *
+dec[d,9,0]: *
+dec[c,9,1]: 1
+dec[a,9,1]: -2.000059249
+dec[s,9,1]: 1.999940751
+dec[m,9,1]: 0.000118498
+dec[d,9,1]: 0.000029624500000000000
+dec[c,9,2]: -1
+dec[a,9,2]: 0.793940751
+dec[s,9,2]: -0.794059249
+dec[m,9,2]: -0.000047043706
+dec[d,9,2]: -0.000074620906801007557
+dec[c,9,3]: -1
+dec[a,9,3]: 3.439940751
+dec[s,9,3]: -3.440059249
+dec[m,9,3]: -0.00020381656
+dec[d,9,3]: -0.000017223546511627907
+dec[c,9,4]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,9,4]: 
+dec[m,9,4]: -35104440010000000000.000000000
+dec[d,9,4]: -0.000000000000000000000000000100000000000000000
+dec[c,9,5]: 1
+dec[a,9,5]: -328400.000059249
+dec[s,9,5]: 328399.999940751
+dec[m,9,5]: 19.457371600
+dec[d,9,5]: 0.00000000018041717417783191
+dec[c,9,6]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,9,6]: 
+dec[m,9,6]: *
+dec[d,9,6]: *
+dec[c,9,7]: -1
+dec[a,9,7]: 0.000940751
+dec[s,9,7]: -0.001059249
+dec[m,9,7]: -0.000000059249
+dec[d,9,7]: -0.059249000000000000
+dec[c,9,8]: -1
+dec[a,9,8]: -0.000059249
+dec[s,9,8]: -0.000059249
+dec[m,9,8]: 0.0000000000
+(errno == PGTYPES_NUM_DIVIDE_ZERO) - r: -1202
+dec[c,9,9]: 0
+dec[a,9,9]: -0.000118498
+dec[s,9,9]: 0.000000000
+dec[m,9,9]: 0.000000003510444001
+dec[d,9,9]: 1.00000000000000000
+dec[c,9,10]: -1
+dec[a,9,10]: 0.003224751
+dec[s,9,10]: -0.003343249
+dec[m,9,10]: -0.000000194573716
+dec[d,9,10]: -0.018041717417783191
+dec[c,9,11]: -1
+dec[a,9,11]: 0.499941751
+dec[s,9,11]: -0.500060249
+dec[m,9,11]: -0.000029624559249
+dec[d,9,11]: -0.000118497763004473991
+dec[c,9,12]: 1
+dec[a,9,12]: -0.500059349
+dec[s,9,12]: 0.499940851
+dec[m,9,12]: 0.0000296245059249
+dec[d,9,12]: 0.000118497976300404740
+dec[c,9,13]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,9,13]: 
+dec[m,9,13]: 
+dec[d,9,13]: -0.000000000000000000000000000000047991690431925214
+dec[c,9,14]: 2147483647
+dec[a,9,14]: 
+dec[s,9,14]: 
+dec[m,9,14]: 
+dec[d,9,14]: -0.000000000000000000000000000000047991690431925214
+dec[c,10,0]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,10,0]: 
+dec[m,10,0]: *
+dec[d,10,0]: *
+dec[c,10,1]: 1
+dec[a,10,1]: -1.996716
+dec[s,10,1]: 2.003284
+dec[m,10,1]: -0.006568
+dec[d,10,1]: -0.0016420000000000000
+dec[c,10,2]: -1
+dec[a,10,2]: 0.797284
+dec[s,10,2]: -0.790716
+dec[m,10,2]: 0.002607496
+dec[d,10,2]: 0.0041360201511335013
+dec[c,10,3]: -1
+dec[a,10,3]: 3.443284
+dec[s,10,3]: -3.436716
+dec[m,10,3]: 0.01129696
+dec[d,10,3]: 0.00095465116279069767
+dec[c,10,4]: -1
+dec[a,10,4]: 592490000000000000000000.003284
+dec[s,10,4]: -592489999999999999999999.996716
+dec[m,10,4]: 1945737160000000000000.000000
+dec[d,10,4]: 0.0000000000000000000000000055427095815963139
+dec[c,10,5]: 1
+dec[a,10,5]: -328399.996716
+dec[s,10,5]: 328400.003284
+dec[m,10,5]: -1078.465600
+dec[d,10,5]: -0.0000000100000000000000000
+dec[c,10,6]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,10,6]: 
+dec[m,10,6]: *
+dec[d,10,6]: *
+dec[c,10,7]: 1
+dec[a,10,7]: 0.004284
+dec[s,10,7]: 0.002284
+dec[m,10,7]: 0.000003284
+dec[d,10,7]: 3.2840000000000000
+dec[c,10,8]: 1
+dec[a,10,8]: 0.003284
+dec[s,10,8]: 0.003284
+dec[m,10,8]: 0.0000000
+(errno == PGTYPES_NUM_DIVIDE_ZERO) - r: -1202
+dec[c,10,9]: 1
+dec[a,10,9]: 0.003224751
+dec[s,10,9]: 0.003343249
+dec[m,10,9]: -0.000000194573716
+dec[d,10,9]: -55.427095815963139
+dec[c,10,10]: 0
+dec[a,10,10]: 0.006568
+dec[s,10,10]: 0.000000
+dec[m,10,10]: 0.000010784656
+dec[d,10,10]: 1.00000000000000000
+dec[c,10,11]: -1
+dec[a,10,11]: 0.503285
+dec[s,10,11]: -0.496717
+dec[m,10,11]: 0.001642003284
+dec[d,10,11]: 0.0065679868640262719
+dec[c,10,12]: 1
+dec[a,10,12]: -0.4967161
+dec[s,10,12]: 0.5032841
+dec[m,10,12]: -0.0016420003284
+dec[d,10,12]: -0.0065679986864002627
+dec[c,10,13]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,10,13]: 
+dec[m,10,13]: 
+dec[d,10,13]: 0.0000000000000000000000000000026600400239403602
+dec[c,10,14]: 2147483647
+dec[a,10,14]: 
+dec[s,10,14]: 
+dec[m,10,14]: 
+dec[d,10,14]: 0.0000000000000000000000000000026600400239403602
+dec[c,11,0]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,11,0]: 
+dec[m,11,0]: *
+dec[d,11,0]: *
+dec[c,11,1]: 1
+dec[a,11,1]: -1.499999
+dec[s,11,1]: 2.500001
+dec[m,11,1]: -1.000002
+dec[d,11,1]: -0.25000050000000000
+dec[c,11,2]: -1
+dec[a,11,2]: 1.294001
+dec[s,11,2]: -0.293999
+dec[m,11,2]: 0.397000794
+dec[d,11,2]: 0.62972418136020151
+dec[c,11,3]: -1
+dec[a,11,3]: 3.940001
+dec[s,11,3]: -2.939999
+dec[m,11,3]: 1.72000344
+dec[d,11,3]: 0.14534912790697674
+dec[c,11,4]: -1
+dec[a,11,4]: 592490000000000000000000.500001
+dec[s,11,4]: -592489999999999999999999.499999
+dec[m,11,4]: 296245592490000000000000.000000
+dec[d,11,4]: 0.00000000000000000000000084389778730442708
+dec[c,11,5]: 1
+dec[a,11,5]: -328399.499999
+dec[s,11,5]: 328400.500001
+dec[m,11,5]: -164200.328400
+dec[d,11,5]: -0.0000015225365408038977
+dec[c,11,6]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,11,6]: 
+dec[m,11,6]: *
+dec[d,11,6]: *
+dec[c,11,7]: 1
+dec[a,11,7]: 0.501001
+dec[s,11,7]: 0.499001
+dec[m,11,7]: 0.000500001
+dec[d,11,7]: 500.00100000000000
+dec[c,11,8]: 1
+dec[a,11,8]: 0.500001
+dec[s,11,8]: 0.500001
+dec[m,11,8]: 0.0000000
+(errno == PGTYPES_NUM_DIVIDE_ZERO) - r: -1202
+dec[c,11,9]: 1
+dec[a,11,9]: 0.499941751
+dec[s,11,9]: 0.500060249
+dec[m,11,9]: -0.000029624559249
+dec[d,11,9]: -8438.9778730442708
+dec[c,11,10]: 1
+dec[a,11,10]: 0.503285
+dec[s,11,10]: 0.496717
+dec[m,11,10]: 0.001642003284
+dec[d,11,10]: 152.25365408038977
+dec[c,11,11]: 0
+dec[a,11,11]: 1.000002
+dec[s,11,11]: 0.000000
+dec[m,11,11]: 0.250001000001
+dec[d,11,11]: 1.00000000000000000
+dec[c,11,12]: 1
+dec[a,11,12]: 0.0000009
+dec[s,11,12]: 1.0000011
+dec[m,11,12]: -0.2500005500001
+dec[d,11,12]: -1.00000179999964000
+dec[c,11,13]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,11,13]: 
+dec[m,11,13]: 
+dec[d,11,13]: 0.00000000000000000000000000040500081364500732
+dec[c,11,14]: 2147483647
+dec[a,11,14]: 
+dec[s,11,14]: 
+dec[m,11,14]: 
+dec[d,11,14]: 0.00000000000000000000000000040500081364500732
+dec[c,12,0]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,12,0]: 
+dec[m,12,0]: *
+dec[d,12,0]: *
+dec[c,12,1]: 1
+dec[a,12,1]: -2.5000001
+dec[s,12,1]: 1.4999999
+dec[m,12,1]: 1.0000002
+dec[d,12,1]: 0.25000005000000000
+dec[c,12,2]: -1
+dec[a,12,2]: 0.2939999
+dec[s,12,2]: -1.2940001
+dec[m,12,2]: -0.3970000794
+dec[d,12,2]: -0.62972304785894207
+dec[c,12,3]: -1
+dec[a,12,3]: 2.9399999
+dec[s,12,3]: -3.9400001
+dec[m,12,3]: -1.720000344
+dec[d,12,3]: -0.14534886627906977
+dec[c,12,4]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,12,4]: 
+dec[m,12,4]: -296245059249000000000000.0000000
+dec[d,12,4]: -0.00000000000000000000000084389626829144796
+dec[c,12,5]: 1
+dec[a,12,5]: -328400.5000001
+dec[s,12,5]: 328399.4999999
+dec[m,12,5]: 164200.0328400
+dec[d,12,5]: 0.0000015225338002436054
+dec[c,12,6]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,12,6]: 
+dec[m,12,6]: *
+dec[d,12,6]: *
+dec[c,12,7]: -1
+dec[a,12,7]: -0.4990001
+dec[s,12,7]: -0.5010001
+dec[m,12,7]: -0.0005000001
+dec[d,12,7]: -500.00010000000000
+dec[c,12,8]: -1
+dec[a,12,8]: -0.5000001
+dec[s,12,8]: -0.5000001
+dec[m,12,8]: 0.00000000
+(errno == PGTYPES_NUM_DIVIDE_ZERO) - r: -1202
+dec[c,12,9]: -1
+dec[a,12,9]: -0.500059349
+dec[s,12,9]: -0.499940851
+dec[m,12,9]: 0.0000296245059249
+dec[d,12,9]: 8438.9626829144796
+dec[c,12,10]: -1
+dec[a,12,10]: -0.4967161
+dec[s,12,10]: -0.5032841
+dec[m,12,10]: -0.0016420003284
+dec[d,12,10]: -152.25338002436054
+dec[c,12,11]: -1
+dec[a,12,11]: 0.0000009
+dec[s,12,11]: -1.0000011
+dec[m,12,11]: -0.2500005500001
+dec[d,12,11]: -0.99999820000359999
+dec[c,12,12]: 0
+dec[a,12,12]: -1.0000002
+dec[s,12,12]: 0.0000000
+dec[m,12,12]: 0.25000010000001
+dec[d,12,12]: 1.00000000000000000
+dec[c,12,13]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,12,13]: 
+dec[m,12,13]: 
+dec[d,12,13]: -0.00000000000000000000000000040500008464500076
+dec[c,12,14]: 2147483647
+dec[a,12,14]: 
+dec[s,12,14]: 
+dec[m,12,14]: 
+dec[d,12,14]: -0.00000000000000000000000000040500008464500076
+dec[c,13,0]: -1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,13,0]: 
+dec[m,13,0]: *
+dec[d,13,0]: *
+dec[c,13,1]: 1
+dec[a,13,1]: 1234567890123456789012345676.91
+dec[s,13,1]: 1234567890123456789012345680.91
+dec[m,13,1]: -2469135780246913578024691357.82
+dec[d,13,1]: -617283945061728394506172839.46
+dec[c,13,2]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,13,2]: 
+dec[m,13,2]: 
+dec[d,13,2]: 
+dec[c,13,3]: 1
+dec[a,13,3]: 1234567890123456789012345682.35
+dec[s,13,3]: 1234567890123456789012345675.47
+dec[m,13,3]: 
+dec[d,13,3]: 
+dec[c,13,4]: 1
+dec[a,13,4]: 1235160380123456789012345678.91
+dec[s,13,4]: 1233975400123456789012345678.91
+dec[m,13,4]: 
+dec[d,13,4]: 2083.6940541164522
+dec[c,13,5]: 1
+dec[a,13,5]: 1234567890123456789012017278.91
+dec[s,13,5]: 1234567890123456789012674078.91
+dec[m,13,5]: 
+dec[d,13,5]: -3759341930948406787491.92
+dec[c,13,6]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,13,6]: 
+dec[m,13,6]: *
+dec[d,13,6]: *
+dec[c,13,7]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,13,7]: 
+dec[m,13,7]: 1234567890123456789012345.67891
+dec[d,13,7]: 1234567890123456789012345678910.000
+dec[c,13,8]: 1
+dec[a,13,8]: 1234567890123456789012345678.91
+dec[s,13,8]: 1234567890123456789012345678.91
+dec[m,13,8]: 0.000
+(errno == PGTYPES_NUM_DIVIDE_ZERO) - r: -1202
+dec[c,13,9]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,13,9]: 
+dec[m,13,9]: 
+dec[d,13,9]: 
+dec[c,13,10]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,13,10]: 
+dec[m,13,10]: 
+dec[d,13,10]: 
+dec[c,13,11]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,13,11]: 
+dec[m,13,11]: 
+dec[d,13,11]: 
+dec[c,13,12]: 1
+(errno == PGTYPES_NUM_OVERFLOW) - r: -1200
+dec[s,13,12]: 
+dec[m,13,12]: 
+dec[d,13,12]: 
+dec[c,13,13]: 0
+dec[a,13,13]: 2469135780246913578024691357.82
+dec[s,13,13]: 0.00
+dec[m,13,13]: 
+dec[d,13,13]: 1.00000000000000000
+dec[c,13,14]: 2147483647
+dec[a,13,14]: 2469135780246913578024691357.82
+dec[s,13,14]: 0.00
+dec[m,13,14]: 
+dec[d,13,14]: 1.00000000000000000
+dec[c,14,0]: 2147483647
+dec[a,14,0]: 2469135780246913578024691357.82
+dec[s,14,0]: 0.00
+dec[m,14,0]: 
+dec[d,14,0]: 1.00000000000000000
+dec[c,14,1]: 2147483647
+dec[a,14,1]: 2469135780246913578024691357.82
+dec[s,14,1]: 0.00
+dec[m,14,1]: 
+dec[d,14,1]: 1.00000000000000000
+dec[c,14,2]: 2147483647
+dec[a,14,2]: 2469135780246913578024691357.82
+dec[s,14,2]: 0.00
+dec[m,14,2]: 
+dec[d,14,2]: 1.00000000000000000
+dec[c,14,3]: 2147483647
+dec[a,14,3]: 2469135780246913578024691357.82
+dec[s,14,3]: 0.00
+dec[m,14,3]: 
+dec[d,14,3]: 1.00000000000000000
+dec[c,14,4]: 2147483647
+dec[a,14,4]: 2469135780246913578024691357.82
+dec[s,14,4]: 0.00
+dec[m,14,4]: 
+dec[d,14,4]: 1.00000000000000000
+dec[c,14,5]: 2147483647
+dec[a,14,5]: 2469135780246913578024691357.82
+dec[s,14,5]: 0.00
+dec[m,14,5]: 
+dec[d,14,5]: 1.00000000000000000
+dec[c,14,6]: 2147483647
+dec[a,14,6]: 2469135780246913578024691357.82
+dec[s,14,6]: 0.00
+dec[m,14,6]: 
+dec[d,14,6]: 1.00000000000000000
+dec[c,14,7]: 2147483647
+dec[a,14,7]: 2469135780246913578024691357.82
+dec[s,14,7]: 0.00
+dec[m,14,7]: 
+dec[d,14,7]: 1.00000000000000000
+dec[c,14,8]: 2147483647
+dec[a,14,8]: 2469135780246913578024691357.82
+dec[s,14,8]: 0.00
+dec[m,14,8]: 
+dec[d,14,8]: 1.00000000000000000
+dec[c,14,9]: 2147483647
+dec[a,14,9]: 2469135780246913578024691357.82
+dec[s,14,9]: 0.00
+dec[m,14,9]: 
+dec[d,14,9]: 1.00000000000000000
+dec[c,14,10]: 2147483647
+dec[a,14,10]: 2469135780246913578024691357.82
+dec[s,14,10]: 0.00
+dec[m,14,10]: 
+dec[d,14,10]: 1.00000000000000000
+dec[c,14,11]: 2147483647
+dec[a,14,11]: 2469135780246913578024691357.82
+dec[s,14,11]: 0.00
+dec[m,14,11]: 
+dec[d,14,11]: 1.00000000000000000
+dec[c,14,12]: 2147483647
+dec[a,14,12]: 2469135780246913578024691357.82
+dec[s,14,12]: 0.00
+dec[m,14,12]: 
+dec[d,14,12]: 1.00000000000000000
+dec[c,14,13]: 2147483647
+dec[a,14,13]: 2469135780246913578024691357.82
+dec[s,14,13]: 0.00
+dec[m,14,13]: 
+dec[d,14,13]: 1.00000000000000000
+dec[c,14,14]: 2147483647
+dec[a,14,14]: 2469135780246913578024691357.82
+dec[s,14,14]: 0.00
+dec[m,14,14]: 
+dec[d,14,14]: 1.00000000000000000
+0: *
+1: -2
+2: 0.794
+3: 3.44
+4: 592490000000000000000000
+5: -328400
+6: *
+7: 0.001
+8: 0.0
+9: -0.000059249
+10: 0.003284
+11: 0.500001
+12: -0.5000001
+13: 1234567890123456789012345678.91
+14: 
diff --git a/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c b/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c
new file mode 100644 (file)
index 0000000..824a4aa
--- /dev/null
@@ -0,0 +1,186 @@
+/* Processed by ecpg (4.2.1) */
+/* These include files are added by the preprocessor */
+#include <ecpgtype.h>
+#include <ecpglib.h>
+#include <ecpgerrno.h>
+#include <sqlca.h>
+/* Needed for informix compatibility */
+#include <ecpg_informix.h>
+/* End of automatic include section */
+
+#line 1 "rfmtdate.pgc"
+#include <stdio.h>
+#include <stdlib.h>
+#include <pgtypes_error.h>
+#include <sqltypes.h>
+
+/*
+ * This file tests various forms of date-input/output by means of
+ * rfmtdate / rdefmtdate / rstrdate
+ */
+
+
+static void
+check_return(int ret);
+
+static void
+date_test_strdate(char *input)
+{
+       static int i;
+       date d;
+       int r, q;
+       char dbuf[11];
+
+       r = rstrdate(input, &d);
+       printf("r: %d ", r);
+       if (r == 0)
+       {
+               q = rdatestr(d, dbuf);
+               printf("q: %d ", q);
+               if (q == 0)
+               {
+                       printf("date %d: %s\n", i++, dbuf);
+               }
+               else
+                       printf("\n");
+       }
+       else
+               check_return(r);
+}
+
+static void
+date_test_defmt(char *fmt, char *input)
+{
+       static int i;
+       char dbuf[11];
+       date d;
+       int q, r;
+
+       r = rdefmtdate(&d, fmt, input);
+       printf("r: %d ", r);
+       if (r == 0)
+       {
+               q = rdatestr(d, dbuf);
+               printf("q: %d ", q);
+               if (q == 0)
+               {
+                       printf("date %d: %s\n", i++, dbuf);
+               }
+               else
+                       printf("\n");
+       }
+       else
+               check_return(r);
+}
+
+static void
+date_test_fmt(date d, char *fmt)
+{
+       static int i;
+       char buf[200];
+       int r;
+
+       r = rfmtdate(d, fmt, buf);
+       printf("r: %d ", r);
+       if (r != 0)
+               check_return(r);
+       else
+               printf("date: %d: %s\n", i++, buf);
+}
+
+
+int
+main(void)
+{
+       short mdy[3] = { 11, 23, 1959 };
+       char dbuf[11];
+       date d;
+       int r;
+
+       ECPGdebug(1, stderr);
+
+       r = rmdyjul(mdy, &d);
+       printf("create: r: %d\n", r);
+       if (r == 0)
+       {
+               rdatestr(d, dbuf);
+               printf("date: %s\n", dbuf);
+       }
+
+       /* input mask is mmddyyyy */
+       date_test_strdate("12031994");
+       date_test_strdate("9.6.1994");
+
+       date_test_fmt(d, "mmddyy");
+       date_test_fmt(d, "ddmmyy");
+       date_test_fmt(d, "yymmdd");
+       date_test_fmt(d, "yy/mm/dd");
+       date_test_fmt(d, "yy mm dd");
+       date_test_fmt(d, "yy.mm.dd");
+       date_test_fmt(d, ".mm.yyyy.dd.");
+       date_test_fmt(d, "mmm. dd, yyyy");
+       date_test_fmt(d, "mmm dd yyyy");
+       date_test_fmt(d, "yyyy dd mm");
+       date_test_fmt(d, "ddd, mmm. dd, yyyy");
+       date_test_fmt(d, "(ddd) mmm. dd, yyyy");
+
+       date_test_defmt("ddmmyy", "21-2-54");
+       date_test_defmt("ddmmyy", "2-12-54");
+       date_test_defmt("ddmmyy", "20111954");
+       date_test_defmt("ddmmyy", "130464");
+       date_test_defmt("mmm.dd.yyyy", "MAR-12-1967");
+       date_test_defmt("yy/mm/dd", "1954, February 3rd");
+       date_test_defmt("mmm.dd.yyyy", "041269");
+       date_test_defmt("yy/mm/dd", "In the year 2525, in the month of July, mankind will be alive on the 28th day");
+       date_test_defmt("dd-mm-yy", "I said on the 28th of July in the year 2525");
+       date_test_defmt("mmm.dd.yyyy", "9/14/58");
+       date_test_defmt("yy/mm/dd", "47/03/29");
+       date_test_defmt("mmm.dd.yyyy", "oct 28 1975");
+       date_test_defmt("mmddyy", "Nov 14th, 1985");
+       /* ok: still contains dd mm yy */
+       date_test_defmt("bladdfoommbaryybong", "20/11/1954");
+       /* 1994 is not a leap year, it accepts the date as 01-03-1994 */
+       date_test_defmt("ddmmyy", "29-02-1994");
+
+       /* ECPG_INFORMIX_ENOTDMY, need "dd", "mm" and "yy" */
+       date_test_defmt("dmy", "20/11/1954");
+
+       /* ECPG_INFORMIX_ENOSHORTDATE */
+       date_test_defmt("ddmmyy", "21254");
+       date_test_defmt("ddmmyy", "    21254    ");
+
+       /* ECPG_INFORMIX_BAD_DAY */
+       date_test_defmt("ddmmyy", "320494");
+
+       /* ECPG_INFORMIX_BAD_MONTH */
+       date_test_defmt("mm-yyyy-dd", "13-1993-21");
+
+       /* ECPG_INFORMIX_BAD_YEAR */
+       /* ??? */
+
+       return (0);
+}
+
+static void
+check_return(ret)
+{
+       switch(ret)
+       {
+               case ECPG_INFORMIX_ENOTDMY:
+                       printf("(ECPG_INFORMIX_ENOTDMY)");
+                       break;
+               case ECPG_INFORMIX_ENOSHORTDATE:
+                       printf("(ECPG_INFORMIX_ENOSHORTDATE)");
+                       break;
+               case ECPG_INFORMIX_BAD_DAY:
+                       printf("(ECPG_INFORMIX_BAD_DAY)");
+                       break;
+               case ECPG_INFORMIX_BAD_MONTH:
+                       printf("(ECPG_INFORMIX_BAD_MONTH)");
+                       break;
+               default:
+                       printf("(unknown ret: %d)", ret);
+                       break;
+       }
+       printf("\n");
+}
diff --git a/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.stderr b/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.stderr
new file mode 100644 (file)
index 0000000..1a3639d
--- /dev/null
@@ -0,0 +1,2 @@
+[NO_PID]: ECPGdebug: set to 1
+[NO_PID]: sqlca: code: 0, state: 00000
diff --git a/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.stdout b/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.stdout
new file mode 100644 (file)
index 0000000..16880d4
--- /dev/null
@@ -0,0 +1,36 @@
+create: r: 0
+date: 1959-11-23
+r: 0 q: 0 date 0: 1994-12-03
+r: 0 q: 0 date 1: 1994-09-06
+r: 0 date: 0: 112359
+r: 0 date: 1: 231159
+r: 0 date: 2: 591123
+r: 0 date: 3: 59/11/23
+r: 0 date: 4: 59 11 23
+r: 0 date: 5: 59.11.23
+r: 0 date: 6: .11.1959.23.
+r: 0 date: 7: Nov. 23, 1959
+r: 0 date: 8: Nov 23 1959
+r: 0 date: 9: 1959 23 11
+r: 0 date: 10: Mon, Nov. 23, 1959
+r: 0 date: 11: (Mon) Nov. 23, 1959
+r: 0 q: 0 date 0: 0054-02-21
+r: 0 q: 0 date 1: 0054-12-02
+r: 0 q: 0 date 2: 1954-11-20
+r: 0 q: 0 date 3: 0064-04-13
+r: 0 q: 0 date 4: 1967-03-12
+r: 0 q: 0 date 5: 1954-02-03
+r: 0 q: 0 date 6: 0069-04-12
+r: 0 q: 0 date 7: 2525-07-28
+r: 0 q: 0 date 8: 2525-07-28
+r: 0 q: 0 date 9: 0058-09-14
+r: 0 q: 0 date 10: 0047-03-29
+r: 0 q: 0 date 11: 1975-10-28
+r: 0 q: 0 date 12: 1985-11-14
+r: 0 q: 0 date 13: 1954-11-20
+r: 0 q: 0 date 14: 1994-03-01
+r: -1212 (ECPG_INFORMIX_ENOTDMY)
+r: -1209 (ECPG_INFORMIX_ENOSHORTDATE)
+r: -1209 (ECPG_INFORMIX_ENOSHORTDATE)
+r: -1206 (ECPG_INFORMIX_BAD_DAY)
+r: -1205 (ECPG_INFORMIX_BAD_MONTH)
diff --git a/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c b/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c
new file mode 100644 (file)
index 0000000..f3227a2
--- /dev/null
@@ -0,0 +1,84 @@
+/* Processed by ecpg (4.2.1) */
+/* These include files are added by the preprocessor */
+#include <ecpgtype.h>
+#include <ecpglib.h>
+#include <ecpgerrno.h>
+#include <sqlca.h>
+/* Needed for informix compatibility */
+#include <ecpg_informix.h>
+/* End of automatic include section */
+
+#line 1 "rfmtlong.pgc"
+#include <stdio.h>
+#include <stdlib.h>
+#include <pgtypes_error.h>
+#include <sqltypes.h>
+
+/*
+ * This file tests various forms of long-input/output by means of
+ * rfmtlong
+ */
+
+
+static void
+check_return(int ret);
+
+static void
+fmtlong(long lng, char *fmt)
+{
+       static int i;
+       int r;
+       char buf[30];
+
+       r = rfmtlong(lng, fmt, buf);
+       printf("r: %d ", r);
+       if (r == 0)
+       {
+               printf("%d: %s (fmt was: %s)\n", i++, buf, fmt);
+       }
+       else
+               check_return(r);
+}
+
+int
+main(void)
+{
+       ECPGdebug(1, stderr);
+
+       fmtlong(-8494493, "-<<<<,<<<,<<<,<<<");
+       fmtlong(-8494493, "################");
+       fmtlong(-8494493, "+++$$$$$$$$$$$$$.##");
+       fmtlong(-8494493, "(&,&&&,&&&,&&&.)");
+       fmtlong(-8494493, "<<<<,<<<,<<<,<<<");
+       fmtlong(-8494493, "$************.**");
+       fmtlong(-8494493, "---$************.**");
+       fmtlong(-8494493, "+-+################");
+       fmtlong(-8494493, "abc: ################+-+");
+       fmtlong(-8494493, "+<<<<,<<<,<<<,<<<");
+
+       return (0);
+}
+
+static void
+check_return(ret)
+{
+       switch(ret)
+       {
+               case ECPG_INFORMIX_ENOTDMY:
+                       printf("(ECPG_INFORMIX_ENOTDMY)");
+                       break;
+               case ECPG_INFORMIX_ENOSHORTDATE:
+                       printf("(ECPG_INFORMIX_ENOSHORTDATE)");
+                       break;
+               case ECPG_INFORMIX_BAD_DAY:
+                       printf("(ECPG_INFORMIX_BAD_DAY)");
+                       break;
+               case ECPG_INFORMIX_BAD_MONTH:
+                       printf("(ECPG_INFORMIX_BAD_MONTH)");
+                       break;
+               default:
+                       printf("(unknown ret: %d)", ret);
+                       break;
+       }
+       printf("\n");
+}
diff --git a/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.stderr b/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.stderr
new file mode 100644 (file)
index 0000000..1a3639d
--- /dev/null
@@ -0,0 +1,2 @@
+[NO_PID]: ECPGdebug: set to 1
+[NO_PID]: sqlca: code: 0, state: 00000
diff --git a/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.stdout b/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.stdout
new file mode 100644 (file)
index 0000000..5965e6d
--- /dev/null
@@ -0,0 +1,10 @@
+r: 0 0: -8,494,493 (fmt was: -<<<<,<<<,<<<,<<<)
+r: 0 1:          8494493 (fmt was: ################)
+r: 0 2:   -     $8494493.00 (fmt was: +++$$$$$$$$$$$$$.##)
+r: 0 3: (00008,494,493.) (fmt was: (&,&&&,&&&,&&&.))
+r: 0 4: 8,494,493 (fmt was: <<<<,<<<,<<<,<<<)
+r: 0 5: $*****8494493.00 (fmt was: $************.**)
+r: 0 6:   -$*****8494493.00 (fmt was: ---$************.**)
+r: 0 7:   -         8494493 (fmt was: +-+################)
+r: 0 8: abc:             8494493 (fmt was: abc: ################+-+)
+r: 0 9: -8,494,493 (fmt was: +<<<<,<<<,<<<,<<<)