From 4a445f5d9729a18d039c67b6235d07f75471599f Mon Sep 17 00:00:00 2001 From: Michael Meskes Date: Tue, 15 Aug 2006 06:48:24 +0000 Subject: [PATCH] Sorry, forgot the new files. --- .../ecpg/test/compat_informix/charfuncs.pgc | 31 + .../ecpg/test/compat_informix/dec_test.pgc | 240 +++ .../ecpg/test/compat_informix/rfmtdate.pgc | 175 +++ .../ecpg/test/compat_informix/rfmtlong.pgc | 73 + .../test/expected/compat_informix-charfuncs.c | 42 + .../expected/compat_informix-charfuncs.stderr | 0 .../expected/compat_informix-charfuncs.stdout | 6 + .../test/expected/compat_informix-dec_test.c | 260 ++++ .../expected/compat_informix-dec_test.stderr | 2 + .../expected/compat_informix-dec_test.stdout | 1306 +++++++++++++++++ .../test/expected/compat_informix-rfmtdate.c | 186 +++ .../expected/compat_informix-rfmtdate.stderr | 2 + .../expected/compat_informix-rfmtdate.stdout | 36 + .../test/expected/compat_informix-rfmtlong.c | 84 ++ .../expected/compat_informix-rfmtlong.stderr | 2 + .../expected/compat_informix-rfmtlong.stdout | 10 + 16 files changed, 2455 insertions(+) create mode 100644 src/interfaces/ecpg/test/compat_informix/charfuncs.pgc create mode 100644 src/interfaces/ecpg/test/compat_informix/dec_test.pgc create mode 100644 src/interfaces/ecpg/test/compat_informix/rfmtdate.pgc create mode 100644 src/interfaces/ecpg/test/compat_informix/rfmtlong.pgc create mode 100644 src/interfaces/ecpg/test/expected/compat_informix-charfuncs.c create mode 100644 src/interfaces/ecpg/test/expected/compat_informix-charfuncs.stderr create mode 100644 src/interfaces/ecpg/test/expected/compat_informix-charfuncs.stdout create mode 100644 src/interfaces/ecpg/test/expected/compat_informix-dec_test.c create mode 100644 src/interfaces/ecpg/test/expected/compat_informix-dec_test.stderr create mode 100644 src/interfaces/ecpg/test/expected/compat_informix-dec_test.stdout create mode 100644 src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c create mode 100644 src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.stderr create mode 100644 src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.stdout create mode 100644 src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c create mode 100644 src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.stderr create mode 100644 src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.stdout diff --git a/src/interfaces/ecpg/test/compat_informix/charfuncs.pgc b/src/interfaces/ecpg/test/compat_informix/charfuncs.pgc new file mode 100644 index 0000000000..3605c9d6a8 --- /dev/null +++ b/src/interfaces/ecpg/test/compat_informix/charfuncs.pgc @@ -0,0 +1,31 @@ +#include +#include +#include + +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 index 0000000000..8f6f109dcf --- /dev/null +++ b/src/interfaces/ecpg/test/compat_informix/dec_test.pgc @@ -0,0 +1,240 @@ +#include +#include +#include +#include +#include +#include + +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 index 0000000000..287acc3d50 --- /dev/null +++ b/src/interfaces/ecpg/test/compat_informix/rfmtdate.pgc @@ -0,0 +1,175 @@ +#include +#include +#include +#include + +/* + * 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 index 0000000000..19f220ffce --- /dev/null +++ b/src/interfaces/ecpg/test/compat_informix/rfmtlong.pgc @@ -0,0 +1,73 @@ +#include +#include +#include +#include + +/* + * 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 index 0000000000..eddd580e54 --- /dev/null +++ b/src/interfaces/ecpg/test/expected/compat_informix-charfuncs.c @@ -0,0 +1,42 @@ +/* Processed by ecpg (4.2.1) */ +/* These include files are added by the preprocessor */ +#include +#include +#include +#include +/* Needed for informix compatibility */ +#include +/* End of automatic include section */ + +#line 1 "charfuncs.pgc" +#include +#include +#include + +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 index 0000000000..e69de29bb2 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 index 0000000000..a177579163 --- /dev/null +++ b/src/interfaces/ecpg/test/expected/compat_informix-charfuncs.stdout @@ -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 index 0000000000..fd5d5c7868 --- /dev/null +++ b/src/interfaces/ecpg/test/expected/compat_informix-dec_test.c @@ -0,0 +1,260 @@ +/* Processed by ecpg (4.2.1) */ +/* These include files are added by the preprocessor */ +#include +#include +#include +#include +/* Needed for informix compatibility */ +#include +/* End of automatic include section */ + +#line 1 "dec_test.pgc" +#include +#include +#include +#include +#include +#include + + +#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 index 0000000000..1a3639d97a --- /dev/null +++ b/src/interfaces/ecpg/test/expected/compat_informix-dec_test.stderr @@ -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 index 0000000000..87f008f831 --- /dev/null +++ b/src/interfaces/ecpg/test/expected/compat_informix-dec_test.stdout @@ -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 index 0000000000..824a4aa10b --- /dev/null +++ b/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.c @@ -0,0 +1,186 @@ +/* Processed by ecpg (4.2.1) */ +/* These include files are added by the preprocessor */ +#include +#include +#include +#include +/* Needed for informix compatibility */ +#include +/* End of automatic include section */ + +#line 1 "rfmtdate.pgc" +#include +#include +#include +#include + +/* + * 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 index 0000000000..1a3639d97a --- /dev/null +++ b/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.stderr @@ -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 index 0000000000..16880d42db --- /dev/null +++ b/src/interfaces/ecpg/test/expected/compat_informix-rfmtdate.stdout @@ -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 index 0000000000..f3227a20ce --- /dev/null +++ b/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.c @@ -0,0 +1,84 @@ +/* Processed by ecpg (4.2.1) */ +/* These include files are added by the preprocessor */ +#include +#include +#include +#include +/* Needed for informix compatibility */ +#include +/* End of automatic include section */ + +#line 1 "rfmtlong.pgc" +#include +#include +#include +#include + +/* + * 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 index 0000000000..1a3639d97a --- /dev/null +++ b/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.stderr @@ -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 index 0000000000..5965e6deb2 --- /dev/null +++ b/src/interfaces/ecpg/test/expected/compat_informix-rfmtlong.stdout @@ -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: +<<<<,<<<,<<<,<<<) -- 2.40.0