<term><literal>sqlownername</literal></term>
<term><literal>sqlsourceid</literal></term>
<term><literal>sqlflags</literal></term>
<term><literal>sqlreserved</literal></term>
<listitem>
<para>
Unused.
</para>
</listitem>
</varlistentry>
<varlistentry id="ecpg-informix-sqlda-sqlilongdata">
<term><literal>sqlilongdata</literal></term>
<listitem>
<para>
It equals to <literal>sqldata</literal> if <literal>sqllen</literal> is larger than 32kB.
</para>
</listitem>
</varlistentry>
</variablelist>
Example:
<programlisting>
EXEC SQL INCLUDE sqlda.h;
sqlda_t *sqlda; /* This doesn't need to be under embedded DECLARE SECTION */
EXEC SQL BEGIN DECLARE SECTION;
char *prep_stmt = "select * from table1";
int i;
EXEC SQL END DECLARE SECTION;
...
EXEC SQL PREPARE mystmt FROM :prep_stmt;
EXEC SQL DESCRIBE mystmt INTO sqlda;
printf("# of fields: %d\n", sqlda->sqld);
for (i = 0; i < sqlda->sqld; i++)
printf("field %d: \"%s\"\n", sqlda->sqlvar[i]->sqlname);
EXEC SQL DECLARE mycursor CURSOR FOR mystmt;
EXEC SQL OPEN mycursor;
EXEC SQL WHENEVER NOT FOUND GOTO out;
while (1)
{
EXEC SQL FETCH mycursor USING sqlda;
}
EXEC SQL CLOSE mycursor;
free(sqlda); /* The main structure is all to be free(),
* sqlda and sqlda->sqlvar is in one allocated area */
</programlisting>
For more information, see the <literal>sqlda.h</literal> header and the
<literal>src/interfaces/ecpg/test/compat_informix/sqlda.pgc</literal> regression test.
</para>
</sect2>
<sect2 id="ecpg-informix-functions">
<title>Additional Functions</title>
<para>
<variablelist>
<varlistentry id="ecpg-informix-functions-decadd">
<term><function>decadd</function></term>
<listitem>
<para>
Add two decimal type values.
<synopsis>
int decadd(decimal *arg1, decimal *arg2, decimal *sum);
</synopsis>
The function receives a pointer to the first operand of type decimal
(<literal>arg1</literal>), a pointer to the second operand of type decimal
(<literal>arg2</literal>) and a pointer to a value of type decimal that will
contain the sum (<literal>sum</literal>). On success, the function returns 0.
<symbol>ECPG_INFORMIX_NUM_OVERFLOW</symbol> is returned in case of overflow and
<symbol>ECPG_INFORMIX_NUM_UNDERFLOW</symbol> in case of underflow. -1 is returned for
other failures and <varname>errno</varname> is set to the respective <varname>errno</varname> number of the
pgtypeslib.
</para>
</listitem>
</varlistentry>
<varlistentry id="ecpg-informix-functions-deccmp">
<term><function>deccmp</function></term>
<listitem>
<para>
Compare two variables of type decimal.
<synopsis>
int deccmp(decimal *arg1, decimal *arg2);
</synopsis>
The function receives a pointer to the first decimal value
(<literal>arg1</literal>), a pointer to the second decimal value
(<literal>arg2</literal>) and returns an integer value that indicates which is
the bigger value.
<itemizedlist>
<listitem>
<para>
1, if the value that <literal>arg1</literal> points to is bigger than the
value that <literal>var2</literal> points to
</para>
</listitem>
<listitem>
<para>
-1, if the value that <literal>arg1</literal> points to is smaller than the
value that <literal>arg2</literal> points to </para>
</listitem>
<listitem>
<para>
0, if the value that <literal>arg1</literal> points to and the value that
<literal>arg2</literal> points to are equal
</para>
</listitem>
</itemizedlist>
</para>
</listitem>
</varlistentry>