31.9. Mode de compatibilité Informix

ecpg peut fonctionner dans un mode de compatibilité Informix. Si ce mode est activé, il tente de se comporter comme le précompilateur Informix™ pour Informix™ E/SQL. Généralement, ceci vous permettra d'utiliser le signe dollar à la place de la primitive EXEC SQL pour introduire des commandes SQL embarquées.

   $int j = 3;
   $CONNECT TO :dbname;
   $CREATE TABLE test(i INT PRIMARY KEY, j INT);
   $INSERT INTO test(i, j) VALUES (7, :j);
   $COMMIT;

Il existe deux modes de compatibilité : INFORMIX, INFORMIX_SE

Lors de l'édition de liens de programmes utilisant ce mode de compatibilité, rappelez-vous de lier les programmes avec libcompat qui est fourni avec ecpg.

En dehors de la syntaxe expliqué précédemment, le mode de compatibilité Informix™ importe quelques fonctions pour la saisie, la sortie et la transformation de données ainsi que des instructions SQL embarquées connues d'E/SQL.

Le mode de compatibilité Informix™ utilise beaucoup la bibliothèque pgtypeslib d'ecpg. pgtypeslib fait correspondre les types de données SQL aux types de données internes du programme C hôte. La plupart des fonctions supplémentaires du mode de compatibilité Informix™ vous permet d'opérer sur ces types. Néanmoins, notez que l'étendue de la compatibilité est limitée. Il ne tente pas de copier le comportement d'Informix™ ; il vous permet de réaliser plus ou moins les mêmes opérations et vous fournit les fonctions qui ont le même nom et le même comportement basique mais il ne s'agit d'un remplacement pur et simple si vous utilisez Informix™ actuellement. De plus, certains des types de données sont différents. Par exemple, les types datetime et interval de PostgreSQL's™ ne connaissent rien des échelles du type YEAR TO MINUTE, donc vous ne trouverez pas le support de ceci dans ecpg.

31.9.1. Instructions supplémentaires du SQL embarqué

CLOSE DATABASE

Cet instruction ferme la connexion en cours. En fait, il s'agit d'un synonyme de DISCONNECT CURRENT.

    $CLOSE DATABASE;                /* ferme la connexion actuelle */
    EXEC SQL CLOSE DATABASE;

31.9.2. Fonctions supplémentaires

decadd

Ajoute deux valeurs de type decimal.

int decadd(decimal *arg1, decimal *arg2, decimal *sum);

La fonction reçoit un pointeur vers le premier opérande de type decimal (arg1), un pointeur vers le second opérande de type decimal (arg2) et un pointeur vers une valeur de type decimal qui contiendra la somme (sum). En cas de succès, la fonction renvoie 0. ECPG_INFORMIX_NUM_OVERFLOW est renvoyé dans le cas d'un dépassement de tampon, et ECPG_INFORMIX_NUM_UNDERFLOW dans le cas d'un underflow. -1 est renvoyé s'il s'agit d'une autre erreur et errno est configuré avec le numéro errno respectif de pgtypeslib.

deccmp

Compare deux variables de type decimal.

int deccmp(decimal *arg1, decimal *arg2);

Cette fonction reçoit un pointeur vers la première valeur decimal (arg1), un pointeur vers la seconde (arg2) et renvoie un entier qui indique la plus grande valeur.

  • 1, si la valeur vers laquelle pointe arg1 est plus grande que la valeur vers laquelle pointe var2

  • -1, si la valeur vers laquelle pointe arg1 est plus petite que la valeur vers laquelle pointe arg2

  • 0, si les valeurs vers lesquelles pointent arg1 et arg2 sont identiques

deccopy

Copie une valeur de type decimal.

void deccopy(decimal *src, decimal *target);

Cette fonction reçoit un pointeur vers la valeur decimal à copier en premier argument (src) et un pointeur vers la structure cible de type decimal (target) comme second argument.

deccvasc

Convertit une valeur de sa représentation ASCII en une valeur de type decimal.

int deccvasc(char *cp, int len, decimal *np);

Cette fonction reçoit un pointeur vers la chaîne contenant le représentation textuelle du nombre à convertir (cp) ainsi que sa longueur len. np est un pointeur vers la valeur de type decimal qui sauvegarde le résultat de l'opération.

Voici quelques formats valides : -2, .794, +3.44, 592.49E07 ou -32.84e-4.

La fonction renvoie 0 en cas de succès. Si un overflow (dépassement) ou un underflow survient, ECPG_INFORMIX_NUM_OVERFLOW ou ECPG_INFORMIX_NUM_UNDERFLOW est renvoyé. Si la représentation ASCII ne peut être analysée, ECPG_INFORMIX_BAD_NUMERIC est renvoyé (ou ECPG_INFORMIX_BAD_EXPONENT si le problème est survenu pendant l'analyse de l'exposant).

deccvdbl

Convertit une valeur de type double en une valeur de type decimal.

int deccvdbl(double dbl, decimal *np);

Cette fonction reçoit la variable de type double qui devra être convertie en premier argument (dbl). Comme second argument (np), cette fonction reçoit un pointeur vers la variable décimale qui devrait contenir le résultat de l'opération.

La fonction renvoie 0 en cas de succès et une valeur négative en cas d'erreur.

deccvint

Convertit une valeur de type int en une valeur de type decimal.

int deccvint(int in, decimal *np);

Cette fonction reçoit la variable de type int qui devra être convertie en premier argument (in). En second argument (np), la fonction reçoit un pointeur vers la variable de type decimal qui devrait contenir le résultat de l'opération.

La fonction renvoie 0 en cas de succès et une valeur négative en cas d'erreur.

deccvlong

Convertit une valeur de type long en une valeur de type decimal.

int deccvlong(long lng, decimal *np);

Cette fonction reçoit la variable de type long qui devra être convertie en premier argument (lng). En second argument (np), la fonction reçoit un pointeur vers la variable de type decimal qui devrait contenir le résultat de l'opération.

La fonction renvoie 0 en cas de succès et une valeur négative en cas d'erreur.

decdiv

Divise deux variables de type decimal.

int decdiv(decimal *n1, decimal *n2, decimal *result);

Cette fonction reçoit des pointeurs vers les variables qui sont le premier opérande (n1) et le second (n2). Elle calcule n1/n2. Le résultat (result) est un pointeur vers la variable qui devrait contenir le résultat de l'opération.

La fonction renvoie 0 en cas de succès et une valeur négative en cas d'erreur. Si un overflow (dépassement) ou un underflow survient, ECPG_INFORMIX_NUM_OVERFLOW ou ECPG_INFORMIX_NUM_UNDERFLOW est renvoyé. Si une tentative de division par zéro est observée, la fonction renvoie ECPG_INFORMIX_DIVIDE_ZERO.

decmul

Multiplie deux variables de type values.

int decmul(decimal *n1, decimal *n2, decimal *result);

Cette fonction reçoit des pointeurs vers les variables qui sont le premier opérande (n1) et le second (n2). Elle calcule n1/n2. Le résultat (result) est un pointeur vers la variable qui devrait contenir le résultat de l'opération.

La fonction renvoie 0 en cas de succès et une valeur négative en cas d'erreur. Si un overflow (dépassement) ou un underflow survient, ECPG_INFORMIX_NUM_OVERFLOW ou ECPG_INFORMIX_NUM_UNDERFLOW est renvoyé.

decsub

Soustrait une valeur de type decimal d'une autre.

int decsub(decimal *n1, decimal *n2, decimal *result);

Cette fonction reçoit des pointeurs vers les variables qui sont le premier opérande (n1) et le second (n2). Elle calcule n1-n2. Le résultat (result) est un pointeur vers la variable qui devrait contenir le résultat de l'opération.

La fonction renvoie 0 en cas de succès et une valeur négative en cas d'erreur. Si un overflow (dépassement) ou un underflow survient, ECPG_INFORMIX_NUM_OVERFLOW ou ECPG_INFORMIX_NUM_UNDERFLOW est renvoyé.

dectoasc

Convertit une variable de type decimal en sa représentation ASCII dans une chaîne C char*.

int dectoasc(decimal *np, char *cp, int len, int right)

Cette fonction reçoit un pointeur vers une variable de type decimal (np) qu'il convertit dans sa représentation textuelle. cp est le tampon qui devra contenir le résultat de l'opération. Le paramètre right spécifie combien de chiffres doivent être inclus à droite du point décimal dans le résultat. Le résultat sera arrondi à ce nombre de chiffres décimaux. Configurer right à -1 indique que tous les chiffres décimaux disponibles doivent être inclus dans la sortie. Si la longueur du tampon de sortie, indiquée par len, n'est pas suffisant pour contenir la représentation textuelle, seul le caractère * est stocké dans le résultat et -1 est renvoyé.

Cette fonction renvoie -1 si le tampon cp était trop petit ou ECPG_INFORMIX_OUT_OF_MEMORY si la mémoire disponible était vide.

dectodbl

Convertit une variable de type decimal vers un double.

int dectodbl(decimal *np, double *dblp);

Cette fonction reçoit un pointeur vers la valeur du type decimal à convertir (np) et un pointeur vers la variable de type double qui devra contenir le résultat de l'opération (dblp).

La fonction renvoie 0 en cas de succès et une valeur négative en cas d'erreur.

dectoint

Convertit une variable de type decimal vers un integer.

int dectoint(decimal *np, int *ip);

Cette fonction reçoit un pointeur vers la valeur du type decimal à convertir (np) et un pointeur vers la variable de type integer qui devra contenir le résultat de l'opération (ip).

La fonction renvoie 0 en cas de succès et une valeur négative en cas d'erreur. Si un dépassement survient, ECPG_INFORMIX_NUM_OVERFLOW est renvoyé.

Notez que l'implémentation d'ecpg diffère de l'implémentation d'Informix™. Informix™ limite un entier à la plage allant de -32767 à 32767 alors que les limites de l'implémentation d'ecpg dépendent de l'architecture (-INT_MAX .. INT_MAX).

dectolong

Convertit une variable de type decimal vers un long integer.

int dectolong(decimal *np, long *lngp);

Cette fonction reçoit un pointeur vers la valeur du type decimal à convertir (np) et un pointeur vers la variable de type long qui devra contenir le résultat de l'opération (lngp).

La fonction renvoie 0 en cas de succès et une valeur négative en cas d'erreur. Si un dépassement survient, ECPG_INFORMIX_NUM_OVERFLOW est renvoyé.

Notez que l'implémentation d'ecpg diffère de l'implémentation d'Informix™. Informix™ limite un entier à la plage allant de -2.147.483.647 to 2.147.483.647 alors que les limites de l'implémentation d'ecpg dépendent de l'architecture (-LONG_MAX .. LONG_MAX).

rdatestr

Convertit une date en une chaîne C de type char*.

int rdatestr(date d, char *str);

Cette fonction reçoit deux arguments, le premier est la date à convertir (d) et le second est un pointeur vers la chaîne cible. Le format en sortie est toujours yyyy-mm-dd, donc vous avez besoin d'allouer au moins 11 octets (ceci incluant le terminateur NUL) pour la chaîne.

La fonction renvoie 0 en cas de succès et une valeur négative en cas d'erreur.

Notez que l'implémentation d'ecpg diffère de l'implémentation d'Informix™. Dans Informix™, le format peut être influencé en configurant les variables d'environnement. Néanmoins, en ecpg, vous ne pouvez pas modifier le format de sortie.

rstrdate

Analyse la représentation textuelle d'une date.

int rstrdate(char *str, date *d);

Cette fonction reçoit la représentation textuelle de la date à convertir (str) et un pointeur vers une variable de type date (d). Cette fonction ne vous permet pas de spécifier un masque de formatage. Elle utilise le masque de formatage d'Informix™ qui est mm/dd/yyyy. En interne, cette fonction est implémentée via rdefmtdate. Du coup, rstrdate n'est pas plus rapide et si vous avez le choix, vous devez opter pour rdefmtdate qui vous permet d'indiquer le masque de formatage explicitement.

Cette fonction renvoie les mêmes valeurs que rdefmtdate.

rtoday

Récupère la date actuelle.

void rtoday(date *d);

Cette fonction reçoit un pointeur vers une variable de type date (d) qu'il configure à la date actuelle.

En interne, cette fonction utilise la fonction PGTYPESdate_today.

rjulmdy

Extrait les valeurs du jour, du mois et de l'année à partir d'une variable de type date.

int rjulmdy(date d, short mdy[3]);

Cette fonction reçoit la date d et un pointeur vers un tableau de trois valeurs de type short integer, mdy. Le nom de la variable indique l'ordre séquentiel : mdy[0] contiendra le numéro du mois, mdy[1] contiendra le numéro du jour et mdy[2] contiendra l'année.

Cette fonction renvoie toujours 0 actuellement.

En interne, cette fonction utilise la fonction PGTYPESdate_julmdy.

rdefmtdate

Utilise un masque de formatage pour convertir une chaîne de caractères en une valeur de type date.

int rdefmtdate(date *d, char *fmt, char *str);

Cette fonction reçoit un pointeur vers la valeur de type date qui devra contenir le résultat de l'opération (d), le masque de formatage à utiliser pour analyser la date (fmt) et la chaîne C char* contenant la représentation textuelle de la date (str). La représentation textuelle doit correspondre au masque de formatage. Néanmoins, vous n'avez pas besoin d'utiliser une correspondance caractère par caractère de la chaîne vers le masque de formatage. La fonction analyse seulement l'ordre séquentiel et recherche les valeurs littérales yy ou yyyy qui indiquent la position de l'année, mm pour indiquer la position du mois et dd pour indiquer la position du jour.

La fonction renvoie les valeurs suivantes :

  • 0 - La fonction a terminé avec succès.

  • ECPG_INFORMIX_ENOSHORTDATE - La date ne contient pas les délimiteurs entre le jour, le mois et l'année. Dans ce cas, la taille de la chaîne en entrée doit être d'exactement six ou huit octets.

  • ECPG_INFORMIX_ENOTDMY - La chaîne de formatage n'indique pas correctement l'ordre séquentiel de l'année, du mois et du jour.

  • ECPG_INFORMIX_BAD_DAY - La chaîne en entrée ne contient pas un jour valide.

  • ECPG_INFORMIX_BAD_MONTH - La chaîne en entrée ne contient pas un mois valide.

  • ECPG_INFORMIX_BAD_YEAR - La chaîne en entrée ne contient pas une année valide.

En interne, cette fonction est implémentée pour utiliser la fonction PGTYPESdate_defmt_asc. Voir la référence à une table d'exemples d'entrée.

rfmtdate

Convertit une variable de type date en sa représentation textuelle en utilisant un masque de formatage.

int rfmtdate(date d, char *fmt, char *str);

Cette fonction reçoit la date à convertir (d), le masque de formatage (fmt) et la chaîne qui détiendra la représentation textuelle de la date (str).

La fonction renvoie 0 en cas de succès et une valeur négative en cas d'erreur.

En interne, cette fonction utilise la fonction PGTYPESdate_fmt_asc. Voir les références ici pour les exemples.

rmdyjul

Crée une valeur de type date à partir d'un tableau de trois entiers indiquant le jour, le mois et l'année de la date.

int rmdyjul(short mdy[3], date *d);

Cette fonction reçoit le tableau de trois entiers courts (mdy) et un pointeur vers une variable de type date qui devrait contenir le résultat de l'opération.

Actuellement, la fonction renvoie toujours 0.

En interne, cette fonction est implémentée en utilisant la fonction PGTYPESdate_mdyjul.

rdayofweek

Renvoie un numéro représentant le jour de la semaine pour une valeur de type date.

int rdayofweek(date d);

Cette fonction reçoit la variable de type date d comme seul argument et renvoie un entier qui indique le jour de la semaine pour cette date.

  • 0 - Dimanche

  • 1 - Lundi

  • 2 - Mardi

  • 3 - Mercredi

  • 4 - Jeudi

  • 5 - Vendredi

  • 6 - Samedi

En interne, cette fonction est implémentée en utilisant la fonction PGTYPESdate_dayofweek.

dtcurrent

Récupère le timestamp courant.

void dtcurrent(timestamp *ts);

Cette fonction récupère la valeur du timestamp actuelle et la sauvegarde dans la variable timestamp vers laquelle pointe ts.

dtcvasc

Analyse une variable de type timestamp à partir d'une représentation textuelle en un standard ANSI dans une variable de type timestamp.

int dtcvasc(char *str, timestamp *ts);

Cette fonction reçoit la chaîne à analyser (str) et un pointeur vers la variable de type timestamp qui devrait contenir le résultat de l'opération (ts).

La fonction renvoie 0 en cas de succès et une valeur négative en cas d'erreur.

En interne, cette fonction est implémentée en utilisant la fonction PGTYPEStimestamp_from_asc. Voir la référence pour une table avec des exemples en saisie.

dtcvfmtasc

Analyse une variable de type timestamp à partir d'une représentation textuelle en un standard ANSI utilisant un masque de formatage dans une variable de type timestamp.

dtcvfmtasc(char *inbuf, char *fmtstr, timestamp *dtvalue)

Cette fonction reçoit la chaîne à analyser (inbuf), le masque de formatage à utiliser (fmtstr) et un pointeur vers une variable de type timestamp qui devrait contenir le résultat de l'opération (ts).

Cette fonction est implémentée via la fonction PGTYPEStimestamp_defmt_asc. Voir la documentation pour une liste des types de format qui peuvent être utilisés.

La fonction renvoie 0 en cas de succès et une valeur négative en cas d'erreur.

dtsub

Soustrait une variable de type timestamp à partir d'une autre et renvoie une variable de type interval.

int dtsub(timestamp *ts1, timestamp *ts2, interval *iv);

Cette fonction soustraiera la variable timestamp vers laquelle pointe ts2 à la variable timestamp vers laquelle pointe ts1, et stockera le résultat dans la variable interval vers laquelle pointe iv.

La fonction renvoie 0 en cas de succès et une valeur négative en cas d'erreur.

dttoasc

Convertit une variable de type timestamp en une chaîne C de type char*.

int dttoasc(timestamp *ts, char *output);

Cette fonction reçoit un pointeur vers la variable de type timestamp à convertir (ts) et la chaîne qui devrait contenir le résultat de l'opération, output. Il convertit ts en sa représentation textuelle dans le standard SQL ANSI qui est défini comme étant YYYY-MM-DD HH:MM:SS.

La fonction renvoie 0 en cas de succès et une valeur négative en cas d'erreur.

dttofmtasc

Convertit une variable de type timestamp en une chaîne C de type char* en utilisant un masque de formatage.

int dttofmtasc(timestamp *ts, char *output, int str_len, char *fmtstr);

Cette fonction reçoit un pointeur vers la variable de type timestamp à convertir (ts) et la chaîne qui devrait contenir le résultat de l'opération, output, la longueur maximale qui a été allouée pour le tampon en sortie (str_len) et le masque de formatage à utiliser pour la conversion (fmtstr).

La fonction renvoie 0 en cas de succès et une valeur négative en cas d'erreur.

En interne, cette fonction utilise la fonction PGTYPEStimestamp_fmt_asc. Voir la référence pour les informations sur lesquelles le masque de formatage peut être utilisé.

intoasc

Convertit une variable de type timestamp en une chaîne C de type char*.

int intoasc(interval *i, char *str);

Cette fonction reçoit un pointeur vers la variable de type timestamp à convertir (i) et la chaîne qui devrait contenir le résultat de l'opération, str. Il convertit i en sa représentation textuelle dans le standard SQL ANSI qui est défini comme étant YYYY-MM-DD HH:MM:SS.

La fonction renvoie 0 en cas de succès et une valeur négative en cas d'erreur.

rfmtlong

Convertit un entier long en sa représentation textuelle en utilisant un masque de formatage.

int rfmtlong(long lng_val, char *fmt, char *outbuf);

Cette fonction reçoit la valeur lng_val de type long, le masque de formatage fmt et un pointeur vers un tampon de sortie outbuf. Elle convertit la valeur de type long en sa représentation textuelle suivant son masque de formatage.

Le masque de formatage est composé des caractères de spécification de formats suivants :

  • * (astérisque) - remplace le vide par un astérisque.

  • & (et commercial) - remplace le blanc avec un zéro.

  • # - modifie les blancs en première position par des espaces.

  • < - justifie le nombre à gauche dans la chaîne.

  • , (virgule) - groupe les nombres de plus de quatre chiffres en groupes de trois chiffres séparés par des virgules.

  • . (point) - ce caractère sépare la partie décimale du reste.

  • - (moins) - le signe moins apparaît si le nombre est négatif.

  • + (plus) - le signe plus apparaît si le nombre est positif.

  • ( - ceci remplace le signe moins devant le nombre négatif. Le signe moins n'apparaîtra pas.

  • ) - ce caractère remplace le moins et est affiché derrière la valeur négative.

  • $ - le symbole de la monnaie.

rupshift

Convertit une chaîne en majuscule.

void rupshift(char *str);

Cette fonction reçoit un pointeur vers la chaîne et transforme chaque caractère minuscule en majuscule.

byleng

Renvoie le nombre de caractères dans une chaîne sans compter les espaces en fin de chaîne.

int byleng(char *str, int len);

Cette fonction attend une chaîne de longueur fixe comme premier argument (str) et sa longueur comme deuxième argument (len). Elle renvoie le nombre de caractères significatifs, c'est-à-dire la longueur de la chaîne sans espaces en fin de chaîne.

ldchar

Copie une chaîne de longueur fixe dans une chaîne terminée par un NUL.

void ldchar(char *src, int len, char *dest);

Cette fonction reçoit une chaîne de longueur fixe à copier (src), sa longueur (len) et un pointeur vers la chaîne de destination (dest). Notez que vous avez besoin de réserver au moins len+1 octets pour la chaîne vers laquelle dest pointe. La fonction copie maximum len octets vers le nouvel emplacement (moins que si la chaîne source a des espaces en fin de chaîne) et ajoute un terminateur de chaîne.

rgetmsg
int rgetmsg(int msgnum, char *s, int maxsize);

Cette fonction existe mais elle n'est pas implémentée actuellement !

rtypalign
int rtypalign(int offset, int type);

Cette fonction existe mais elle n'est pas implémentée actuellement !

rtypmsize
int rtypmsize(int type, int len);

Cette fonction existe mais elle n'est pas implémentée actuellement !

rtypwidth
int rtypwidth(int sqltype, int sqllen);

Cette fonction existe mais elle n'est pas implémentée actuellement !

rsetnull

Initialise une variable à NULL.

int rsetnull(int t, char *ptr);

Cette fonction reçoit un entier qui indique le type de la variable et un pointeur vers la variable elle-même qui est convertie en un pointeur de chaîne C, type char*.

Les types suivants existent :

  • CCHARTYPE - Pour une variable de type char ou char*

  • CSHORTTYPE - Pour une variable de type short int

  • CINTTYPE - Pour une variable de type int

  • CBOOLTYPE - Pour une variable de type boolean

  • CFLOATTYPE - Pour une variable de type float

  • CLONGTYPE - Pour une variable de type long

  • CDOUBLETYPE - Pour une variable de type double

  • CDECIMALTYPE - Pour une variable de type decimal

  • CDATETYPE - Pour une variable de type date

  • CDTIMETYPE - Pour une variable de type timestamp

Ceci est un exemple d'appel de cette fonction :

$char c[] = "abc       ";
$short s = 17;
$int i = -74874;

rsetnull(CCHARTYPE, (char *) c);
rsetnull(CSHORTTYPE, (char *) &s);
rsetnull(CINTTYPE, (char *) &i);
risnull

Teste si une variable est NULL.

int risnull(int t, char *ptr);

Cette fonction reçoit le type de la variable à tester (t) ainsi qu'un pointeur vers cette variable (ptr). Notez que ce dernier a besoin d'être converti vers un char*. Voir la fonction rsetnull pour une liste des types de variable possibles.

Voici un exemple d'utilisation de cette fonction :

$char c[] = "abc       ";
$short s = 17;
$int i = -74874;

risnull(CCHARTYPE, (char *) c);
risnull(CSHORTTYPE, (char *) &s);
risnull(CINTTYPE, (char *) &i);

31.9.3. Constantes supplémentaires

Notez que toutes les constantes décrivent ici des erreurs et que toutes sont définies par des valeurs négatives. Dans les descriptions des différentes constantes, vous pouvez aussi trouver la valeur que la constante représente dans l'implémentation actuelle. Néanmoins, vous ne devez pas vous reposer sur ce numéro. Vous pouvez néanmoins vous reposer sur le fait que toutes sont définies par des valeurs négatives.

ECPG_INFORMIX_NUM_OVERFLOW

Les fonctions renvoient cette valeur si un dépassement est survenu lors d'un calcul. En interne, elle vaut -1200 (définition Informix™).

ECPG_INFORMIX_NUM_UNDERFLOW

Les fonctions renvoient cette valeur si un underflow est survenu lors d'un calcul. En interne, elle vaut -1201 (définition Informix™).

ECPG_INFORMIX_DIVIDE_ZERO

Les fonctions renvoient cette valeur si une tentative de division par zéro est observée. En interne, elle vaut -1202 (définition Informix™).

ECPG_INFORMIX_BAD_YEAR

Les fonctions renvoient cette valeur si une mauvaise valeur pour l'année a été trouvée lors de l'analyse d'une date. En interne, elle vaut -1204 (définition Informix™).

ECPG_INFORMIX_BAD_MONTH

Les fonctions renvoient cette valeur si une mauvaise valeur pour le mois a été trouvée lors de l'analyse d'une date. En interne, elle vaut -1205 (définition Informix™).

ECPG_INFORMIX_BAD_DAY

Les fonctions renvoient cette valeur si une mauvaise valeur pour le jour a été trouvée lors de l'analyse d'une date. En interne, elle vaut -1206 (définition Informix™).

ECPG_INFORMIX_ENOSHORTDATE

Les fonctions renvoient cette valeur si une routine d'analyse est nécessaire pour la représentation d'une date courte mais que celle-ci n'a pas obtenu une chaîne de bonne longueur. En interne, elle vaut -1209 (définition Informix™).

ECPG_INFORMIX_DATE_CONVERT

Les fonctions renvoient cette valeur en cas de problème lors de la conversion de la date. En interne, elle vaut -1210 (définition Informix™).

ECPG_INFORMIX_OUT_OF_MEMORY

Les fonctions renvoient cette valeur en cas de manque de mémoire. En interne, elle vaut -1211 (définition Informix™).

ECPG_INFORMIX_ENOTDMY

Les fonctions renvoient cette valeur si une routine d'analyse était sensée obtenir un masque de formatage (comme mmddyy) mais que certains champs n'ont pas été indiqués correctement. En interne, elle vaut -1212 (définition Informix™).

ECPG_INFORMIX_BAD_NUMERIC

Les fonctions renvoient cette valeur soit si une routine d'analyse n'a pas réussi à créer la représentation textuelle d'une valeur numérique soit si une routine n'a pas terminé un calcul impliquant des variables numériques dont au moins une est invalide. En interne, elle vaut -1213 (définition Informix™).

ECPG_INFORMIX_BAD_EXPONENT

Les fonctions renvoient cette valeur en cas de mauvais exposant. En interne, elle vaut -1216 (définition Informix™).

ECPG_INFORMIX_BAD_DATE

Les fonctions renvoient cette valeur en cas de mauvaise valeur. En interne, elle vaut -1218 (définition Informix™).

ECPG_INFORMIX_EXTRA_CHARS

Les fonctions renvoient cette valeur en cas de caractères superflus. En interne, elle vaut -1264 (définition Informix™).