#include <ecpglib.h>#include <pgtypes_date.h>#include <pgtypes_interval.h>#include <pgtypes_numeric.h>#include <pgtypes_timestamp.h>

Go to the source code of this file.
Defines | |
| #define | SQLNOTFOUND 100 |
| #define | ECPG_INFORMIX_NUM_OVERFLOW -1200 |
| #define | ECPG_INFORMIX_NUM_UNDERFLOW -1201 |
| #define | ECPG_INFORMIX_DIVIDE_ZERO -1202 |
| #define | ECPG_INFORMIX_BAD_YEAR -1204 |
| #define | ECPG_INFORMIX_BAD_MONTH -1205 |
| #define | ECPG_INFORMIX_BAD_DAY -1206 |
| #define | ECPG_INFORMIX_ENOSHORTDATE -1209 |
| #define | ECPG_INFORMIX_DATE_CONVERT -1210 |
| #define | ECPG_INFORMIX_OUT_OF_MEMORY -1211 |
| #define | ECPG_INFORMIX_ENOTDMY -1212 |
| #define | ECPG_INFORMIX_BAD_NUMERIC -1213 |
| #define | ECPG_INFORMIX_BAD_EXPONENT -1216 |
| #define | ECPG_INFORMIX_BAD_DATE -1218 |
| #define | ECPG_INFORMIX_EXTRA_CHARS -1264 |
Functions | |
| int | rdatestr (date, char *) |
| void | rtoday (date *) |
| int | rjulmdy (date, short *) |
| int | rdefmtdate (date *, char *, char *) |
| int | rfmtdate (date, char *, char *) |
| int | rmdyjul (short *, date *) |
| int | rstrdate (char *, date *) |
| int | rdayofweek (date) |
| int | rfmtlong (long, char *, char *) |
| int | rgetmsg (int, char *, int) |
| int | risnull (int, char *) |
| int | rsetnull (int, char *) |
| int | rtypalign (int, int) |
| int | rtypmsize (int, int) |
| int | rtypwidth (int, int) |
| void | rupshift (char *) |
| int | byleng (char *, int) |
| void | ldchar (char *, int, char *) |
| void | ECPG_informix_set_var (int, void *, int) |
| void * | ECPG_informix_get_var (int) |
| void | ECPG_informix_reset_sqlca (void) |
| int | decadd (decimal *, decimal *, decimal *) |
| int | deccmp (decimal *, decimal *) |
| void | deccopy (decimal *, decimal *) |
| int | deccvasc (char *, int, decimal *) |
| int | deccvdbl (double, decimal *) |
| int | deccvint (int, decimal *) |
| int | deccvlong (long, decimal *) |
| int | decdiv (decimal *, decimal *, decimal *) |
| int | decmul (decimal *, decimal *, decimal *) |
| int | decsub (decimal *, decimal *, decimal *) |
| int | dectoasc (decimal *, char *, int, int) |
| int | dectodbl (decimal *, double *) |
| int | dectoint (decimal *, int *) |
| int | dectolong (decimal *, long *) |
| void | dtcurrent (timestamp *) |
| int | dtcvasc (char *, timestamp *) |
| int | dtsub (timestamp *, timestamp *, interval *) |
| int | dttoasc (timestamp *, char *) |
| int | dttofmtasc (timestamp *, char *, int, char *) |
| int | intoasc (interval *, char *) |
| int | dtcvfmtasc (char *, char *, timestamp *) |
| #define ECPG_INFORMIX_BAD_DATE -1218 |
Definition at line 28 of file ecpg_informix.h.
| #define ECPG_INFORMIX_BAD_DAY -1206 |
Definition at line 21 of file ecpg_informix.h.
Referenced by check_return().
| #define ECPG_INFORMIX_BAD_EXPONENT -1216 |
Definition at line 27 of file ecpg_informix.h.
| #define ECPG_INFORMIX_BAD_MONTH -1205 |
Definition at line 20 of file ecpg_informix.h.
Referenced by check_return().
| #define ECPG_INFORMIX_BAD_NUMERIC -1213 |
Definition at line 26 of file ecpg_informix.h.
| #define ECPG_INFORMIX_BAD_YEAR -1204 |
Definition at line 19 of file ecpg_informix.h.
| #define ECPG_INFORMIX_DATE_CONVERT -1210 |
Definition at line 23 of file ecpg_informix.h.
| #define ECPG_INFORMIX_DIVIDE_ZERO -1202 |
Definition at line 18 of file ecpg_informix.h.
| #define ECPG_INFORMIX_ENOSHORTDATE -1209 |
Definition at line 22 of file ecpg_informix.h.
Referenced by check_return().
| #define ECPG_INFORMIX_ENOTDMY -1212 |
Definition at line 25 of file ecpg_informix.h.
Referenced by check_return().
| #define ECPG_INFORMIX_EXTRA_CHARS -1264 |
Definition at line 29 of file ecpg_informix.h.
| #define ECPG_INFORMIX_NUM_OVERFLOW -1200 |
Definition at line 16 of file ecpg_informix.h.
Referenced by check_errno().
| #define ECPG_INFORMIX_NUM_UNDERFLOW -1201 |
Definition at line 17 of file ecpg_informix.h.
Referenced by check_errno().
| #define ECPG_INFORMIX_OUT_OF_MEMORY -1211 |
Definition at line 24 of file ecpg_informix.h.
| #define SQLNOTFOUND 100 |
Definition at line 14 of file ecpg_informix.h.
| int byleng | ( | char * | , | |
| int | ||||
| ) |
Definition at line 968 of file informix.c.
Referenced by ldchar(), and main().
{
for (len--; str[len] && str[len] == ' '; len--);
return (len + 1);
}
Definition at line 151 of file informix.c.
References deccall3(), PGTYPES_NUM_OVERFLOW, PGTYPES_NUM_UNDERFLOW, and PGTYPESnumeric_add().
Referenced by main().
{
errno = 0;
deccall3(arg1, arg2, sum, PGTYPESnumeric_add);
if (errno == PGTYPES_NUM_OVERFLOW)
return ECPG_INFORMIX_NUM_OVERFLOW;
else if (errno == PGTYPES_NUM_UNDERFLOW)
return ECPG_INFORMIX_NUM_UNDERFLOW;
else if (errno != 0)
return -1;
else
return 0;
}
Definition at line 167 of file informix.c.
References deccall2(), and PGTYPESnumeric_cmp().
Referenced by main().
{
return (deccall2(arg1, arg2, PGTYPESnumeric_cmp));
}
Definition at line 173 of file informix.c.
{
memcpy(target, src, sizeof(decimal));
}
| int deccvasc | ( | char * | , | |
| int | , | |||
| decimal * | ||||
| ) |
Definition at line 198 of file informix.c.
References CDECIMALTYPE, CSTRINGTYPE, ecpg_strndup(), free, i, NULL, PGTYPES_NUM_BAD_NUMERIC, PGTYPES_NUM_OVERFLOW, PGTYPESnumeric_free(), PGTYPESnumeric_from_asc(), PGTYPESnumeric_to_decimal(), risnull(), and rsetnull().
Referenced by main().
{
char *str;
int ret = 0;
numeric *result;
rsetnull(CDECIMALTYPE, (char *) np);
if (risnull(CSTRINGTYPE, cp))
return 0;
str = ecpg_strndup(cp, len);/* decimal_in always converts the complete
* string */
if (!str)
ret = ECPG_INFORMIX_NUM_UNDERFLOW;
else
{
errno = 0;
result = PGTYPESnumeric_from_asc(str, NULL);
if (!result)
{
switch (errno)
{
case PGTYPES_NUM_OVERFLOW:
ret = ECPG_INFORMIX_NUM_OVERFLOW;
break;
case PGTYPES_NUM_BAD_NUMERIC:
ret = ECPG_INFORMIX_BAD_NUMERIC;
break;
default:
ret = ECPG_INFORMIX_BAD_EXPONENT;
break;
}
}
else
{
int i = PGTYPESnumeric_to_decimal(result, np);
PGTYPESnumeric_free(result);
if (i != 0)
ret = ECPG_INFORMIX_NUM_OVERFLOW;
}
}
free(str);
return ret;
}
| int deccvdbl | ( | double | , | |
| decimal * | ||||
| ) |
Definition at line 246 of file informix.c.
References CDECIMALTYPE, CDOUBLETYPE, NULL, PGTYPESnumeric_free(), PGTYPESnumeric_from_double(), PGTYPESnumeric_new(), PGTYPESnumeric_to_decimal(), risnull(), and rsetnull().
{
numeric *nres;
int result = 1;
rsetnull(CDECIMALTYPE, (char *) np);
if (risnull(CDOUBLETYPE, (char *) &dbl))
return 0;
nres = PGTYPESnumeric_new();
if (nres == NULL)
return ECPG_INFORMIX_OUT_OF_MEMORY;
result = PGTYPESnumeric_from_double(dbl, nres);
if (result == 0)
result = PGTYPESnumeric_to_decimal(nres, np);
PGTYPESnumeric_free(nres);
return (result);
}
| int deccvint | ( | int | , | |
| decimal * | ||||
| ) |
Definition at line 268 of file informix.c.
References CDECIMALTYPE, CINTTYPE, NULL, PGTYPESnumeric_free(), PGTYPESnumeric_from_int(), PGTYPESnumeric_new(), PGTYPESnumeric_to_decimal(), risnull(), and rsetnull().
Referenced by main().
{
numeric *nres;
int result = 1;
rsetnull(CDECIMALTYPE, (char *) np);
if (risnull(CINTTYPE, (char *) &in))
return 0;
nres = PGTYPESnumeric_new();
if (nres == NULL)
return ECPG_INFORMIX_OUT_OF_MEMORY;
result = PGTYPESnumeric_from_int(in, nres);
if (result == 0)
result = PGTYPESnumeric_to_decimal(nres, np);
PGTYPESnumeric_free(nres);
return (result);
}
| int deccvlong | ( | long | , | |
| decimal * | ||||
| ) |
Definition at line 290 of file informix.c.
References CDECIMALTYPE, CLONGTYPE, NULL, PGTYPESnumeric_free(), PGTYPESnumeric_from_long(), PGTYPESnumeric_new(), PGTYPESnumeric_to_decimal(), risnull(), and rsetnull().
Referenced by main().
{
numeric *nres;
int result = 1;
rsetnull(CDECIMALTYPE, (char *) np);
if (risnull(CLONGTYPE, (char *) &lng))
return 0;
nres = PGTYPESnumeric_new();
if (nres == NULL)
return ECPG_INFORMIX_OUT_OF_MEMORY;
result = PGTYPESnumeric_from_long(lng, nres);
if (result == 0)
result = PGTYPESnumeric_to_decimal(nres, np);
PGTYPESnumeric_free(nres);
return (result);
}
Definition at line 312 of file informix.c.
References deccall3(), i, PGTYPES_NUM_DIVIDE_ZERO, PGTYPES_NUM_OVERFLOW, and PGTYPESnumeric_div().
Referenced by main().
{
int i;
errno = 0;
i = deccall3(n1, n2, result, PGTYPESnumeric_div);
if (i != 0)
switch (errno)
{
case PGTYPES_NUM_DIVIDE_ZERO:
return ECPG_INFORMIX_DIVIDE_ZERO;
break;
case PGTYPES_NUM_OVERFLOW:
return ECPG_INFORMIX_NUM_OVERFLOW;
break;
default:
return ECPG_INFORMIX_NUM_UNDERFLOW;
break;
}
return 0;
}
Definition at line 338 of file informix.c.
References deccall3(), i, PGTYPES_NUM_OVERFLOW, and PGTYPESnumeric_mul().
Referenced by main().
{
int i;
errno = 0;
i = deccall3(n1, n2, result, PGTYPESnumeric_mul);
if (i != 0)
switch (errno)
{
case PGTYPES_NUM_OVERFLOW:
return ECPG_INFORMIX_NUM_OVERFLOW;
break;
default:
return ECPG_INFORMIX_NUM_UNDERFLOW;
break;
}
return 0;
}
Definition at line 360 of file informix.c.
References deccall3(), i, PGTYPES_NUM_OVERFLOW, and PGTYPESnumeric_sub().
Referenced by main().
{
int i;
errno = 0;
i = deccall3(n1, n2, result, PGTYPESnumeric_sub);
if (i != 0)
switch (errno)
{
case PGTYPES_NUM_OVERFLOW:
return ECPG_INFORMIX_NUM_OVERFLOW;
break;
default:
return ECPG_INFORMIX_NUM_UNDERFLOW;
break;
}
return 0;
}
| int dectoasc | ( | decimal * | , | |
| char * | , | |||
| int | , | |||
| int | ||||
| ) |
Definition at line 382 of file informix.c.
References CDECIMALTYPE, CSTRINGTYPE, numeric::dscale, free, NULL, PGTYPESnumeric_free(), PGTYPESnumeric_from_decimal(), PGTYPESnumeric_new(), PGTYPESnumeric_to_asc(), risnull(), and rsetnull().
Referenced by dump_sqlda(), and main().
{
char *str;
numeric *nres;
rsetnull(CSTRINGTYPE, (char *) cp);
if (risnull(CDECIMALTYPE, (char *) np))
return 0;
nres = PGTYPESnumeric_new();
if (nres == NULL)
return ECPG_INFORMIX_OUT_OF_MEMORY;
if (PGTYPESnumeric_from_decimal(np, nres) != 0)
{
PGTYPESnumeric_free(nres);
return ECPG_INFORMIX_OUT_OF_MEMORY;
}
if (right >= 0)
str = PGTYPESnumeric_to_asc(nres, right);
else
str = PGTYPESnumeric_to_asc(nres, nres->dscale);
PGTYPESnumeric_free(nres);
if (!str)
return -1;
/*
* TODO: have to take care of len here and create exponential notation if
* necessary
*/
if ((int) (strlen(str) + 1) > len)
{
if (len > 1)
{
cp[0] = '*';
cp[1] = '\0';
}
free(str);
return -1;
}
else
{
strcpy(cp, str);
free(str);
return 0;
}
}
| int dectodbl | ( | decimal * | , | |
| double * | ||||
| ) |
Definition at line 433 of file informix.c.
References i, NULL, PGTYPESnumeric_free(), PGTYPESnumeric_from_decimal(), PGTYPESnumeric_new(), and PGTYPESnumeric_to_double().
Referenced by main().
{
int i;
numeric *nres = PGTYPESnumeric_new();
if (nres == NULL)
return ECPG_INFORMIX_OUT_OF_MEMORY;
if (PGTYPESnumeric_from_decimal(np, nres) != 0)
{
PGTYPESnumeric_free(nres);
return ECPG_INFORMIX_OUT_OF_MEMORY;
}
i = PGTYPESnumeric_to_double(nres, dblp);
PGTYPESnumeric_free(nres);
return i;
}
| int dectoint | ( | decimal * | , | |
| int * | ||||
| ) |
Definition at line 454 of file informix.c.
References NULL, PGTYPES_NUM_OVERFLOW, PGTYPESnumeric_free(), PGTYPESnumeric_from_decimal(), PGTYPESnumeric_new(), and PGTYPESnumeric_to_int().
Referenced by main().
{
int ret;
numeric *nres = PGTYPESnumeric_new();
if (nres == NULL)
return ECPG_INFORMIX_OUT_OF_MEMORY;
if (PGTYPESnumeric_from_decimal(np, nres) != 0)
{
PGTYPESnumeric_free(nres);
return ECPG_INFORMIX_OUT_OF_MEMORY;
}
ret = PGTYPESnumeric_to_int(nres, ip);
PGTYPESnumeric_free(nres);
if (ret == PGTYPES_NUM_OVERFLOW)
ret = ECPG_INFORMIX_NUM_OVERFLOW;
return ret;
}
| int dectolong | ( | decimal * | , | |
| long * | ||||
| ) |
Definition at line 478 of file informix.c.
References NULL, PGTYPES_NUM_OVERFLOW, PGTYPESnumeric_free(), PGTYPESnumeric_from_decimal(), PGTYPESnumeric_new(), and PGTYPESnumeric_to_long().
Referenced by main().
{
int ret;
numeric *nres = PGTYPESnumeric_new();
if (nres == NULL)
return ECPG_INFORMIX_OUT_OF_MEMORY;
if (PGTYPESnumeric_from_decimal(np, nres) != 0)
{
PGTYPESnumeric_free(nres);
return ECPG_INFORMIX_OUT_OF_MEMORY;
}
ret = PGTYPESnumeric_to_long(nres, lngp);
PGTYPESnumeric_free(nres);
if (ret == PGTYPES_NUM_OVERFLOW)
ret = ECPG_INFORMIX_NUM_OVERFLOW;
return ret;
}
| void dtcurrent | ( | timestamp * | ) |
Definition at line 608 of file informix.c.
References PGTYPEStimestamp_current().
{
PGTYPEStimestamp_current(ts);
}
| int dtcvasc | ( | char * | , | |
| timestamp * | ||||
| ) |
Definition at line 614 of file informix.c.
References i, and PGTYPEStimestamp_from_asc().
{
timestamp ts_tmp;
int i;
char **endptr = &str;
errno = 0;
ts_tmp = PGTYPEStimestamp_from_asc(str, endptr);
i = errno;
if (i)
/* TODO: rewrite to Informix error codes */
return i;
if (**endptr)
{
/* extra characters exist at the end */
return ECPG_INFORMIX_EXTRA_CHARS;
}
/* TODO: other Informix error codes missing */
/* everything went fine */
*ts = ts_tmp;
return 0;
}
| int dtcvfmtasc | ( | char * | , | |
| char * | , | |||
| timestamp * | ||||
| ) |
Definition at line 640 of file informix.c.
References PGTYPEStimestamp_defmt_asc().
{
return PGTYPEStimestamp_defmt_asc(inbuf, fmtstr, dtvalue);
}
Definition at line 646 of file informix.c.
References PGTYPEStimestamp_sub().
{
return PGTYPEStimestamp_sub(ts1, ts2, iv);
}
| int dttoasc | ( | timestamp * | , | |
| char * | ||||
| ) |
Definition at line 652 of file informix.c.
References free, and PGTYPEStimestamp_to_asc().
{
char *asctime = PGTYPEStimestamp_to_asc(*ts);
strcpy(output, asctime);
free(asctime);
return 0;
}
| int dttofmtasc | ( | timestamp * | , | |
| char * | , | |||
| int | , | |||
| char * | ||||
| ) |
Definition at line 662 of file informix.c.
References PGTYPEStimestamp_fmt_asc().
{
return PGTYPEStimestamp_fmt_asc(ts, output, str_len, fmtstr);
}
| void* ECPG_informix_get_var | ( | int | ) |
Definition at line 1023 of file informix.c.
References ECPGget_var().
{
return ECPGget_var(number);
}
| void ECPG_informix_reset_sqlca | ( | void | ) |
Definition at line 1029 of file informix.c.
References ECPGget_sqlca(), and sqlca.
Referenced by main().
{
struct sqlca_t *sqlca = ECPGget_sqlca();
memcpy((char *) sqlca, (char *) &sqlca_init, sizeof(struct sqlca_t));
}
| void ECPG_informix_set_var | ( | int | , | |
| void * | , | |||
| int | ||||
| ) |
Definition at line 1017 of file informix.c.
References ECPGset_var().
{
ECPGset_var(number, pointer, lineno);
}
| int intoasc | ( | interval * | , | |
| char * | ||||
| ) |
Definition at line 668 of file informix.c.
References PGTYPESinterval_to_asc().
{
errno = 0;
str = PGTYPESinterval_to_asc(i);
if (!str)
return -errno;
return 0;
}
| void ldchar | ( | char * | , | |
| int | , | |||
| char * | ||||
| ) |
| int rdatestr | ( | date | , | |
| char * | ||||
| ) |
Definition at line 503 of file informix.c.
References free, and PGTYPESdate_to_asc().
Referenced by date_test_defmt(), date_test_strdate(), and main().
{
char *tmp = PGTYPESdate_to_asc(d);
if (!tmp)
return ECPG_INFORMIX_DATE_CONVERT;
/* move to user allocated buffer */
strcpy(str, tmp);
free(tmp);
return 0;
}
| int rdayofweek | ( | date | ) |
Definition at line 600 of file informix.c.
References PGTYPESdate_dayofweek().
{
return (PGTYPESdate_dayofweek(d));
}
| int rdefmtdate | ( | date * | , | |
| char * | , | |||
| char * | ||||
| ) |
Definition at line 549 of file informix.c.
References PGTYPES_DATE_BAD_DAY, PGTYPES_DATE_BAD_MONTH, PGTYPES_DATE_ERR_EARGS, PGTYPES_DATE_ERR_ENOSHORTDATE, PGTYPES_DATE_ERR_ENOTDMY, and PGTYPESdate_defmt_asc().
Referenced by date_test_defmt(), and rstrdate().
{
/* TODO: take care of DBCENTURY environment variable */
/* PGSQL functions allow all centuries */
errno = 0;
if (PGTYPESdate_defmt_asc(d, fmt, str) == 0)
return 0;
switch (errno)
{
case PGTYPES_DATE_ERR_ENOSHORTDATE:
return ECPG_INFORMIX_ENOSHORTDATE;
case PGTYPES_DATE_ERR_EARGS:
case PGTYPES_DATE_ERR_ENOTDMY:
return ECPG_INFORMIX_ENOTDMY;
case PGTYPES_DATE_BAD_DAY:
return ECPG_INFORMIX_BAD_DAY;
case PGTYPES_DATE_BAD_MONTH:
return ECPG_INFORMIX_BAD_MONTH;
default:
return ECPG_INFORMIX_BAD_YEAR;
}
}
| int rfmtdate | ( | date | , | |
| char * | , | |||
| char * | ||||
| ) |
Definition at line 575 of file informix.c.
References PGTYPESdate_fmt_asc().
Referenced by date_test_fmt().
{
errno = 0;
if (PGTYPESdate_fmt_asc(d, fmt, str) == 0)
return 0;
if (errno == ENOMEM)
return ECPG_INFORMIX_OUT_OF_MEMORY;
return ECPG_INFORMIX_DATE_CONVERT;
}
| int rfmtlong | ( | long | , | |
| char * | , | |||
| char * | ||||
| ) |
Definition at line 765 of file informix.c.
References fmtchar(), free, getRightMostDot(), i, initValue(), malloc, sign, and value.
Referenced by fmtlong().
{
size_t fmt_len = strlen(fmt);
size_t temp_len;
int i,
j, /* position in temp */
k,
dotpos;
int leftalign = 0,
blank = 0,
sign = 0,
entitydone = 0,
signdone = 0,
brackets_ok = 0;
char *temp;
char tmp[2] = " ";
char lastfmt = ' ',
fmtchar = ' ';
temp = (char *) malloc(fmt_len + 1);
if (!temp)
{
errno = ENOMEM;
return -1;
}
/* put all info about the long in a struct */
if (initValue(lng_val) == -1)
{
free(temp);
errno = ENOMEM;
return -1;
}
/* '<' is the only format, where we have to align left */
if (strchr(fmt, (int) '<'))
leftalign = 1;
/* '(' requires ')' */
if (strchr(fmt, (int) '(') && strchr(fmt, (int) ')'))
brackets_ok = 1;
/* get position of the right-most dot in the format-string */
/* and fill the temp-string wit '0's up to there. */
dotpos = getRightMostDot(fmt);
/* start to parse the formatstring */
temp[0] = '\0';
k = value.digits - 1; /* position in the value_string */
for (i = fmt_len - 1, j = 0; i >= 0; i--, j++)
{
/* qualify, where we are in the value_string */
if (k < 0)
{
blank = 1;
if (k == -1)
sign = 1;
if (leftalign)
{
/* can't use strncat(,,0) here, Solaris would freek out */
if (sign)
if (signdone)
{
temp[j] = '\0';
break;
}
}
}
/* if we're right side of the right-most dot, print '0' */
if (dotpos >= 0 && dotpos <= i)
{
if (dotpos < i)
{
if (fmt[i] == ')')
tmp[0] = value.sign == '-' ? ')' : ' ';
else
tmp[0] = '0';
}
else
tmp[0] = '.';
strcat(temp, tmp);
continue;
}
/* the ',' needs special attention, if it is in the blank area */
if (blank && fmt[i] == ',')
fmtchar = lastfmt;
else
fmtchar = fmt[i];
/* waiting for the sign */
if (k < 0 && leftalign && sign && !signdone && fmtchar != '+' && fmtchar != '-')
continue;
/* analyse this format-char */
switch (fmtchar)
{
case ',':
tmp[0] = ',';
k++;
break;
case '*':
if (blank)
tmp[0] = '*';
else
tmp[0] = value.val_string[k];
break;
case '&':
if (blank)
tmp[0] = '0';
else
tmp[0] = value.val_string[k];
break;
case '#':
if (blank)
tmp[0] = ' ';
else
tmp[0] = value.val_string[k];
break;
case '-':
if (sign && value.sign == '-' && !signdone)
{
tmp[0] = '-';
signdone = 1;
}
else if (blank)
tmp[0] = ' ';
else
tmp[0] = value.val_string[k];
break;
case '+':
if (sign && !signdone)
{
tmp[0] = value.sign;
signdone = 1;
}
else if (blank)
tmp[0] = ' ';
else
tmp[0] = value.val_string[k];
break;
case '(':
if (sign && brackets_ok && value.sign == '-')
tmp[0] = '(';
else if (blank)
tmp[0] = ' ';
else
tmp[0] = value.val_string[k];
break;
case ')':
if (brackets_ok && value.sign == '-')
tmp[0] = ')';
else
tmp[0] = ' ';
break;
case '$':
if (blank && !entitydone)
{
tmp[0] = '$';
entitydone = 1;
}
else if (blank)
tmp[0] = ' ';
else
tmp[0] = value.val_string[k];
break;
case '<':
tmp[0] = value.val_string[k];
break;
default:
tmp[0] = fmt[i];
}
strcat(temp, tmp);
lastfmt = fmt[i];
k--;
}
/* safety-net */
temp[fmt_len] = '\0';
/* reverse the temp-string and put it into the outbuf */
temp_len = strlen(temp);
outbuf[0] = '\0';
for (i = temp_len - 1; i >= 0; i--)
{
tmp[0] = temp[i];
strcat(outbuf, tmp);
}
outbuf[temp_len] = '\0';
/* cleaning up */
free(temp);
free(value.val_string);
return 0;
}
| int rgetmsg | ( | int | , | |
| char * | , | |||
| int | ||||
| ) |
Definition at line 984 of file informix.c.
{
(void) msgnum; /* keep the compiler quiet */
(void) s; /* keep the compiler quiet */
(void) maxsize; /* keep the compiler quiet */
return 0;
}
| int risnull | ( | int | , | |
| char * | ||||
| ) |
Definition at line 1044 of file informix.c.
References ECPGis_noind_null().
Referenced by deccall3(), deccvasc(), deccvdbl(), deccvint(), deccvlong(), dectoasc(), main(), and test_null().
{
return (ECPGis_noind_null(t, ptr));
}
| int rjulmdy | ( | date | , | |
| short * | ||||
| ) |
| int rmdyjul | ( | short * | , | |
| date * | ||||
| ) |
| int rsetnull | ( | int | , | |
| char * | ||||
| ) |
Definition at line 1037 of file informix.c.
References ECPGset_noind_null().
Referenced by deccall3(), deccvasc(), deccvdbl(), deccvint(), deccvlong(), dectoasc(), and main().
{
ECPGset_noind_null(t, ptr);
return 0;
}
| int rstrdate | ( | char * | , | |
| date * | ||||
| ) |
Definition at line 524 of file informix.c.
References rdefmtdate().
Referenced by date_test_strdate().
{
return rdefmtdate(d, "mm/dd/yyyy", str);
}
| void rtoday | ( | date * | ) |
Definition at line 530 of file informix.c.
References PGTYPESdate_today().
{
PGTYPESdate_today(d);
return;
}
| int rtypalign | ( | int | , | |
| int | ||||
| ) |
Definition at line 993 of file informix.c.
{
(void) offset; /* keep the compiler quiet */
(void) type; /* keep the compiler quiet */
return 0;
}
| int rtypmsize | ( | int | , | |
| int | ||||
| ) |
Definition at line 1001 of file informix.c.
{
(void) type; /* keep the compiler quiet */
(void) len; /* keep the compiler quiet */
return 0;
}
| int rtypwidth | ( | int | , | |
| int | ||||
| ) |
Definition at line 1009 of file informix.c.
{
(void) sqltype; /* keep the compiler quiet */
(void) sqllen; /* keep the compiler quiet */
return 0;
}
| void rupshift | ( | char * | ) |
Definition at line 959 of file informix.c.
Referenced by main().
{
for (; *str != '\0'; str++)
if (islower((unsigned char) *str))
*str = toupper((unsigned char) *str);
return;
}
1.7.1