=================================
                               RELEASE NOTES
                                    FOR
                   INFORMIX-Client SDK 2.20.UC1 PRODUCT RELEASE
                               DATE: 22 Dec 1998
                      =================================

Release notes for client products available as part of the INFORMIX-
Client SDK 2.2 are in the following files:

CLIREL_2.8       INFORMIX-CLI Release Notes

CPPREL_2.6       C++ Object Interface Release Notes

ESQLCREL_9.2     INFORMIX-ESQL/C Release Notes

GLSAPIREL_3.0    INFORMIX-GLS Release Notes

ODBCREL_3.1      INTERSOLV DataDirect ODBC Driver Release Notes


The following is a quick summary of the Client SDK installation process
including new changes in this release. For a complete description of
all command line options of all installation scripts, please refer to
your Installation Guide and the DOCUMENTATION NOTES for Informix Client
Products Installation Guide for UNIX, Version 2.20.

TABLE OF CONTENTS:

I.      Message file name change in the Client SDK 2.01 and later
II.     Using ESQL/C Libraries
III.    Version Checking
IV.     Using ODBC Products
V.      Introducing Informix ODBC Driver 3.30
VI.     Client SDK File Size Increase
VII.    Client-Server Testing


I. Message file name change in the Client SDK 2.01 and later

The term "old client APIs" in the text below means pre-2.01
versions of Client SDK and Connect and all versions of the
separate ESQL/C, ESQL/COBOL and CLI products; the term
"new client APIs" means 2.01 and later versions of
Client SDK and Connect.

After the installation of versions 2.01 or greater of Client SDK
or Connect on either Win32 or UNIX platforms, a category of
already-compiled applications may exhibit an error.

The shared and static libraries in both the old and new
client APIs refer to message files in the directory %INFORMIXDIR%\msg.
As a result of fixing another bug, the names of several message
files were changed in the new client APIs to avoid conflict with
the server versions of those files.  For example, old client APIs
distributed the message file sqli.iem and the libraries in the
old client APIs referred to sqli.iem. Now the new client APIs
distribute that same message file under the name of csqli.iem
and the libraries in the new client APIs refer to csqli.iem.

All of the following circumstances must occur in order for
this error to manifest itself:
1. An application was linked with the static libraries of an
old client API, and
2. A new client API is installed in a different directory than
the one containing the old client API, and
3. The INFORMIXDIR used by the application is changed to point
to the directory containing just the new client API
If all of these conditions apply, then the application will
continue to look for message files by their old name,
for example, sqli.iem. However, the directory containing just the
new client API will have those files by their new name,
for example, csqli.iem. Therefore, an error message will be given.

You can use any one of the following workarounds to avoid the error:
1. Link the application with the shared libraries from the old
client API, or
2. Install the new client API in the same directory that you
installed the old client API and don't change INFORMIXDIR, or
3. Install the old client API in the same directory that you
will install the new client API; install the old client API first, or
4. Re-link your application with the static libraries from the
new client API, or
5. For all message sub-directories within the directory that contains
just the new client APIs, make copies of each of the following files
and give the copies new names as indicated below. Do this in each
message sub-directory. This includes, at least, the US English
sub-directory: %INFORMIXDIR%\msg\en_us\04e4. If there are message
sub-directories for other languages you installed, you should do
the same copying for them too; for example, %INFORMIXDIR%\msg\fr_fr\04e4.

        als.iem -> cals.iem
        cals.iem -> ccals.iem
        csm.iem -> ccsm.iem
        css.iem -> ccss.iem
        eami.iem -> ceami.iem
        isam.iem -> cisam.iem
        miapi.iem -> cmiapi.iem
        nals.iem -> cnals.iem
        nerm.iem -> cnerm.iem
        net.iem -> cnet.iem
        netsrv.iem -> cnetsrv.iem
        rds.iem -> crds.iem
        security.iem -> csecure.iem
        shell.iem -> cshell.iem
        sql.iem -> csql.iem
        sqli.iem -> csqli.iem
        util.iem -> cutil.iem
        xopen.iem -> cxopen.iem
        xps.iem -> cxps.iem
        itoxmsg.pam -> citoxmsg.pam
        optical.iem -> coptical.iem
        errnmsg.txt -> cerrmsg.txt


Versions 2.30 and later of the Client SDK and Connect on both Win32
and UNIX platforms will fix this problem. The install process of these
products will first look to see if the message files already exist by
their "old" name in the target installation directory. If they already
exist, nothing special will be done. If they do not already exist, a
link (on UNIX) or a copy (on Win32) of each message file whose name
changed will be made so that both files, like sqli.iem and csqli.iem,
will always be guaranteed to exist. This fix will remain in the
installation of Client SDK and Connect in all future releases of those
products.

II.     Using ESQL/C Libraries

        In the following notes, I-CONNECT 2.20 refers to the conn tar file in
        the Client SDK 2.20 bundle, and ClientSDK 2.20 refers to the
        clientsdk tar file in the Client SDK 2.20 bundle.

  (1) If I-CONNECT 2.20 is NOT installed on top of an existing
        7.2x ESQL/C installation,

    (a) both "installconn" and "installconn -u" will install 2.20
        I-CONNECT exactly the same as the current I-CONNECT
        "installconn";
        (Note, the -u option is only available in UNIX. NT ESQL/C
         does not need this option.)

    (b) any existing 7.2x UNIX ESQL/C (and 7.23 NT ESQL/C) applications
        can use this installed I-CONNECT without relinking or
        recompilation. If recompilation is not performed, only 7.2x level
        functionality and some bug fixes will be available.
        To recompile and get new functionality, you need
        the development version of the product (ClientSDK 2.20 tar file).

  (2) If I-CONNECT 2.20 is installed on top of an existing 7.2x
        ESQL/C installation,

    (a) "installconn" will install 9.2 ESQL/C shared libraries,
        and either KEEP the 7.2x shared libraries or REPLACE them
        with the 9.2 ones. The script "installconn" will ask
        you whether you want to overwrite the existing shared
        libraries or not. If the existing shared libraries are
        chosen NOT to be overwritten, then
        (a.1) existing 7.2x applications will continue to use
              the existing 7.2x shared libraries,
        (a.2) existing 9.1x applications can use the 9.2 shared
              libraries.
        If the existing shared libraries are overwritten, then
        the effect is the same as (b)(a.1) below.

    (b) "installconn -u" will install 9.2 UNIX ESQL/C shared libraries,
        and REPLACE 7.2x shared libraries with the 9.2 ones.
        (Actually, only the links are updated.)
        (a.1) Both existing 7.2x (and 9.1x) applications will then use
              the 9.2 shared libraries, and they should all work
              correctly. (The 7.2x shared libraries will
              not be accessible by the ESQL/C preprocessor.)
              No relinking or recompilation is required.
              However, only 7.2x level functionality and
              some bug fixes will be available if an 7.2x application
              is not recompiled.

  (3) Installing ClientSDK 2.20 with ESQL/C Libraries

    (a) If ClientSDK 2.20 is installed on top of an existing
        7.2x ESQL/C installation, it will always REPLACE 7.2x
        shared libraries with the 9.2 ones. If you intend to
        continue using the 7.2x ESQL/C preprocessor or shared
        libraries, ClientSDK 2.20 should be installed in a
        separate directory.

    (b) Regardless of whether ClientSDK 2.20 is installed on top of
        an existing 7.2x ESQL/C or not, an existing 7.2x application
        CAN use the 9.2 ESQL/C shared libraries in this installation
        without relinking or recompilation.

  (4) In order to recompile 7.2x applications with 9.2 ESQL/C, customers
        need to install ClientSDK 2.20. The command "installclientsdk"
        is used to install clientsdk product that contains 9.2 ESQL/C
        (and other client products). Like the current "installesql",
        "installclientsdk" will overwrite all files in an existing
         7.2x ESQL/C installation. There is no -u option for installclientsdk.
III. Version Checking

    For information on version checking, see the
    DOCUMENTATION NOTES FOR Informix Client Products Installation
    Guide for UNIX, Version 2.20.

IV. Using ODBC Products

     Client SDK provides the following ODBC products:

            INFORMIX-CLI, Version 2.8
            --------------------------
            This product provides a seamless upgrade for INFORMIX-CLI 2.7
            customers.  It provides the following advantages:

                * ODBC 2.5 feature compliance.
                * Support for INFORMIX-Dynamic Server with the Universal
                  Data Option extended data types.
                * Support for Microsoft Transaction Service (MTS), Windows only.

        Platforms Tested:

                * Windows NT 4.0 SP3
                * Windows 95 and Windows 98
                * Sun SPARC Solaris 2.6



            INTERSOLV DataDirect ODBC Driver, Version 3.11
            ----------------------------------------------
            This product provides a seamless upgrade for INFORMIX-CLI 2.5
            customers.  It provides the following advantages:

                * ODBC 3.0 feature compliance.
                * Many known issues with the INFORMIX-CLI 2.5 product have
                  been resolved in this version of the INTERSOLV DataDirect
                  ODBC Driver.


        IMPORTANT: If you are upgrading to the Client SDK 2.20 from an
                earlier version of the Client SDK, and you already use
                INTERSOLV DataDirect ODBC Driver, Version 3.01 or 3.10, then
                the new
                version of the INTERSOLV DataDirect ODBC Driver will be
                installed in addition to, not as a replacement for, the 3.01/3.1
0
                version. Therefore, you do not need to use the new version; it
                is an option. If you choose to use the new version, refer to
                the release notes for the INTERSOLV DataDirect ODBC Driver
                for instructions on upgrading DSNs.



V.      Introducing Informix ODBC Driver 3.30

        In the 2nd Quarter 1999, Informix will be introducing our
        Informix ODBC Driver version 3.30.  Not only will this Informix
        developed driver be compliant with the ODBC 3.0 level 1+
        specification, it will be our upgrade and maintenance path
        from the INFORMIX-CLI 2.8/2.9 driver, which currently
        supports UDO server extensions and Microsoft Transaction Service (MTS).

        Once the Informix ODBC driver is available, Informix will phase in this
        driver as our primary ODBC driver offering.  Informix will continue to
        redistribute and support the Intersolv Data Direct ODBC Driver version 3.1
        as long as Intersolv supports and maintains it.  Informix will continue to
        redistribute the Intersolv Driver Manager on UNIX, and the Microsoft Driver
        Manager on Windows.

VI.     Client SDK File Size Increase

        Due to the addition of several new Locale files, the size of the
        2.20 Client SDK and I-Connect unix products have increased.  For
        instructions on removing unwanted locale files from the GLS Library,
        please reference the Informix Guide to GLS Functionality, Version 9.1,
        Appendix A, Managing GLS Files.  This guide is available in the
        Answers
        On Line CD-ROM, and on the web at Answers On Line.


VII.   Client-Server Testing

      The Client SDK 2.20 products have been tested with the following
      database servers:

      - Informix Dynamic Server, Version 7.3x

VII.   Client-Server Testing

      The Client SDK 2.20 products have been tested with the following
      database servers:

      - Informix Dynamic Server, Version 7.3x

      - Informix Dynamic Server, Workgroup Edition, Version 7.3x

      - Informix Dynamic Server with Advanced Decision Support and Extended
        Parallel Options, Version 8.2x

      - Informix Dynamic Server with Universal Data Option, Version
        9.14



                 ===============================



                      =====================================
                                   RELEASE NOTES
                                        FOR
                 INFORMIX-ESQL/C 9.20.UC1 PRODUCT RELEASE
                                 DATE: 22 Dec 1998
                      =====================================

TABLE OF CONTENTS


I.     ESQL/C AND DATABASE SERVER CONFIGURATIONS
II.    MAJOR NEW FEATURES
III.   FIXED CUSTOMER-REPORTED PROBLEMS
IV.    KNOWN PRODUCT DEFICIENCIES
V.     RUNNING SETNET32 WITH SILENT OPTION (Windows Only)

                    =====================================

I.   ESQL/C AND DATABASE SERVER CONFIGURATIONS

      ESQL/C has been tested with the following database server
          configurations:

      - Informix Dynamic Server, Version 7.3x

      - Informix Dynamic Server, Workgroup Edition, Version 7.3x

      - Informix Dynamic Server with Advanced Decision Support and
                Extended Parallel Options, Version 8.2x

      - Informix Dynamic Server with Universal Data Option, Version
        9.14.UCx (UNIX) and 9.14.TCx (Windows NT)


                      =====================================

II. MAJOR NEW FEATURES


       1. NEW SQL FOR THE 7.31 DATABASE SERVER

        ESQL/C 9.2 supports the following new SQL statements for
        the 7.31 database server. For more information about these
                statements, refer to the Informix Guide to SQL:Syntax for
                release 7.31

        For outer join:

        SELECT ... FROM tab_exp LEFT [OUTER] JOIN tab_exp ON ...
            WHERE ...

        To rename an index:

        RENAME INDEX objname TO string_id

        To create non-logging tables in a logging db:

        CREATE [STANDARD|RAW] TABLE ...
        ALTER TABLE ... {STANDARD|RAW] ...


        2. NEW SQL FOR THE 8.3 DATABASE SERVER

        ESQL/C 9.2 supports the following new SQL statements for
                the 8.3 database server. For more information about these
                statements, refer to the Informix Guide to SQL:Syntax for
                release 8.3.


        *************

        The SELECT statement now can contain a WITH UPDATE clause:

        *************

        CREATE INDEX now accepts a USING clause
        CREATE INDEX also accepts a simplied SELECT statement in the body.
        CREATE INDEX add coarse grain locking option

        *************

        ALTER INDEX now accepts a coarse grain locking option

        *************

        The SELECT statement now allows:

            FIRST  in select list
            SAMPLES & LOCAL in the FROM clause
            type of temp table for SELECT ... INTO TEMP
            MIDDLE  in select list

        *************

        When defining a "slice" in a hybrid table, we now allow the
                following syntax in addition to  and 

        (  [ ,  ... ]  )

         That is, a list of dbspaces enclosed in parens
         can be supplied.  Example showing all three
         variants for defining a hybrid "slice":

        create table t (a int)
          fragment by hybrid(a) expression
          a < 2 in rootdbs.1,       -- one dbspace
          a = 2 in (db1, db2, db3), -- dbspace list (new for 8.30)
          remainder in dbsl;        -- dbslice

        Note that this syntax is also used in the ALTER...INIT statement.

        *************

        New COPY TABLE and DELETE COPY commands for local table
                replication

        COPY TABLE  IN  [ ,  ... ]

        DELETE COPY OF TABLE  ALL

        *************

        New syntax has been added to CREATE TABLE and CREATE INDEX to
                support range fragmentation and clustering.

        The fragmentation-method can take the following general form

        FRAGMENT BY ROUND ROBIN  or
        FRAGMENT BY HASH ...
        FRAGMENT BY HYBRID ...

        Informix also supports a new fragmentation method called
                FRAGMENT BY RANGE, which has 4 variations: Linear range,
                Hybrid range, Hybrid Column Major, and Hybrid Row Major

        For CREATE INDEX, the fragmentation method MUST NOT specify
                the FRAGMENT BY RANGE syntax.

        The CREATE INDEX statement supports the following additional
                syntax. In this case, the CLUSTER keyword is required, RANGE
                BY is required and FRAGMENT BY cannot be specified.

        Additional Syntax:
            create [ UNIQUE ] CLUSTER ...
        [ FILLFACTOR  ]
        RANGE BY (  )
        [ LOCK MODE ... ]


III. FIXED CUSTOMER-REPORTED PROBLEMS

        PTS #   Description
        -----   -----------

        43233   Should change code to use more efficient string/memory
                routines to improve performance.

        92103   With array fetch enabled, frontend doesn't recover from
                -451 error bug returns -439 for all subsequent
                operations.

        97036   An XA client fails to reconnect if the online is bounced
                (onmode -ky) unless xa_close() is called.

        97191   File descriptors used up by multithread ESQL/C program.

        97572   ESQL program is setting errno to 2 when no error exists.

        97955   Decimal to double conversion with maximum number of
                digits causes crashing.

        98305   ESQL host variables of type string are not filled
                according to the documentation when the value comes from
                a varchar column.

        98416   ifx_var_getdata fails after an empty string read on a
                column of type html.

        98620   Data corruption occurs on table with blob field.

        98949   Segv is possible in applications using sqlda structure
                to insert character strings into ANSI database if
                sqlidata is not initialized.

        99892   ESQL/C preprocessor ignores code following comment if a
                reference to a defined variable precedes the comment.

        100055  When performing an esql -e, some sql statements get
                lost.

        100355  Bus error when host variable of type character is larger
                than max unsigned short.

        100398  Segmentation violation using a structure in the
                diagnostic area of the get diagnostics statement.

        100566  Frontend core at disconnect.

        100862  Prepared update/select/delete/insert execution is
                extremely slow.  Significant performance loss up
                to a factor of 100.

        101708  Describe statement leaks memory in the call from
                _iqdescribe to _iqnormdesc.

        103262  Using #ident in declare section causes #line number
                to be blank (""), which causes assertion failure
                /core dumping during C Compilation.

Windows Only*Windows Only*Windows Only*Windows Only*Windows Only*Windows

        96033    CAN'T LINK CLIENT PROGRAM FOR
                TIMESERIES ON NT. GLS_ENV IS NOT RESOLVED.

        97244    ESQL/C FAILED TO COMPILE
                 /VOBS/QA_TRISTAR/NETWORK/DML/BUG19101.JOB
                 WITH ERROR C2026: STRING TOO BIG, TRAILING CHARACTERS
                 TRUNCATED.

        97450   LONGID NAMES DO NOT WORK FOR SERVERNAME, HOSTNAME,
                SERVICENAME,PROTOCOLNAME ETC

        98588   /VOBS/TRISTARM/SQLI/IQDIAG.C : COMPILATION FAILS.
                PROTOTYPE IS REQUIRED. PLEASE SEE THE LONG DESCRIPTION.

        99883   IF YOU ATTEMP TO CONNECT TO A SERVER WITH DB LOCALE
                JA_JP.03A4, YOU GET A -406 ERROR, WHEREAS PROBLEM IS
                MISSING LOCALE/CONVERSION FILES.

        97450   LONGID NAMES DO NOT WORK FOR SERVERNAME, HOSTNAME,
                SERVICENAME,PROTOCOLNAME ETC

                98459   SQLVAR_STRUCT.SQLLEN IS DEFINED AS A LONG. USED TO
                BE A SHORT. MANUAL SAYS IT SHOULD BE A SHORT.

                98620   DATA CORRUPTION OCCURS ON TABLE WITH BLOB FIELD ON
                USING SDK 2.01


*End Windows Only*End Windows Only*End Windows Only*End Windows Only*

                        ==========================


IV.    KNOWN PRODUCT DEFICIENCIES

        1. Warning regarding mapped data types
           -----------------------------------

        We would like to notify our customers that the mapped data
                types

        int4, int2, int1, mint, mlong, MSHORT and MCHAR

        that are defined in the proposed new ifxtypes.h (scheduled
                for 2.30) will be reserved by Informix and hence should NOT
                be used by the customers in "typedef and/or "" statements. In
                case the customers are using the above mapped data types
                (int4, int2 etc), and they want to recompile their applications,

                they would be required to modify their applications to use some
                other mapping instead, which do not clash with the above mapping
s
        (eg: INT4, INT2, INT1 etc).


        2. Varchar Host Variables
           ----------------------

        A NULL varchar host variable and an empty varchar host variable
                have the same representation: '\0'. For fetching into a varchar
                host variable, an indicator variable must be used to distinguish

                between the two. If the value is '\0' and the indicator variable
                is -1, then the host variable is a NULL varchar. If the value is

                '\0' and the indicator variable is not -1, then the host variable
                is an empty varchar.

        Same thing applies to insert.  If the varchar host variable has
        value '\0' and the indicator variable is set to -1, then NULL
        will be inserted.  On the other hand, if the indicator variable
        is set to some value greater than or equal to 0, then an empty
        string is inserted.

        The risnull() function cannot tell the difference between an
        empty varchar host variable and a NULL host variable.


        3. Use of Untyped Collection Host Variable with Stored Procedures
          ----------------------------------------------------------------

        There is a known problem using untyped collection host variable
        with stored procedure against the 9.12 and prior releases of
        Informix Dynamic Server.  When inserting an untyped collection
        host variable which value is the return value of a stored
        procedure, error -9628 will be raised.  Note that this is
        applicable ONLY when the esql application is run against Informix
        Dynamic Server release 9.12 or earlier (in all platforms).
        The problem is fixed in Informix Dynamic Server release 9.13
        or later.

          EXAMPLE:
          ========

          $collection untyped;

          $execute function spl() into :untyped;
          (where spl() returns a collection)

          $insert into mytab values (:untyped);

          Work around is to use typed or named collection host variables.



                4. Use of LVARCHAR pointers and Client Collections
          -----------------------------------------------

        There is a known problem with UPDATE or INSERT of client
        collections or rows when using an lvarchar pointer host
        variable and the lvarchar APIs. However, SELECT/FETCH work
        correctly with client collections and rows.

        Note that the lvarchar pointer and the lvarchar APIs work
        correctly for all other statements that do not pertain to
        client collections and rows.

        EXAMPLE OF UPDATE :
        ===================

        exec sql begin declare section;
        lvarchar *lvar;
        row (lv lvarchar(20)) r1;
        exec sql end declare section;

        exec sql allocate row :r1;

        ifx_var_flag (&lvar, 0); /* User does allocation */
        ifx_var_alloc(&lvar, 20);
        ifx_var_setdata(&lvar, "xxxxx", 6);

        exec sql update table (:r1) set lv  = :lvar; /* doesn't work */

        The work around is to use lvarchar arrays for the time being.

        EXAMPLE OF WORKAROUND FOR ABOVE PROBLEM:
        ========================================

        exec sql begin declare section;
        row (lv lvarchar(20)) r1;
        lvarchar lvar[20];
        lvarchar lvarret[20];
        exec sql end declare section;

        exec sql allocate row :r1;
        strcpy(lvar, "xxxxx");
        exec sql update table(:r1) set lv = :lvar;
                exec sql select * into :lvarret from table(:r1);
        printf("data  is %s\n", lvarret);

        EXAMPLE OF SELECT WITH LVARCHAR API AND ROW HOST VARIABLES:
        ==========================================================
        exec sql begin declare section;
        row r1;
        lvarchar *lvar;
        char *s;
        exec sql end declare section;

        exec sql allocate row :r1;
        exec sql create database xx;
        exec sql create row type dbrow(r1 lvarchar);
        exec sql create table tabrow(col dbrow);
        exec sql insert into tabrow values (row("abcdef")::dbrow);
        exec sql select * into :r1 from tabrow;
        ifx_var_flag(&lvar, 1);   /* Have SQLI do the allocation */
        /**
        * This WILL WORK without any problems
        */
        exec sql select * into :lvar from table(:r1);
        s = (char *) ifx_var_getdata(&lvar);
        printf("data is %s\n",s);

V.     RUNNING SETNET32 WITH SILENT OPTION (Windows only)

        SETNET32 program can be run silently in the background without
        bringing up it's Windows graphical interface. This is done by
        loading the configuration file from a previously stored
        .nfx file. The format to load from a DOS command line is as
        follows:

        setnet32 -l savedcfg.nfx

        To create a .nfx file, run setnet32 and make the required
        changes to the configuration file. From the main environment
        tab, choose the "Save to File" option. This will create or
        allow you to save the configuration information to a file
        at a location of your choice with the extension *.nfx. You
        can, of course, choose the filename for the configuration to
        be saved. This is the same .nfx file that you can
        load silently through the setnet32 silent interface, as
        noted above.

--------------------------------------------------------------------------------


                       =================================
                               RELEASE NOTES
                                    FOR
                       INFORMIX-CLI 2.80.0008.UC1 PRODUCT RELEASE
                               DATE: 18 Dec 1998
                      =================================

TABLE OF CONTENTS

I.      Database Servers Tested
II.    	System Requirements
III.    Driver Managers
IV.     Files Installed
V.      Major Features in INFORMIX-CLI 2.8
VI.	Changes to infxcli.h file
VII.    Troubleshooting INFORMIX-CLI for Windows
VIII.   Known Product Deficiencies
IX.	8.3 SELECT with UPDATE not yet supported by CLI driver
X.	Client Functions Not Support  ***UD ONLY ***
XI.   	CLI 2.8 and CLI 2.5 Differences
XII.    MTS *** WINDOWS-ONLY ***
XIII.   Fixed Customer Reported Problems
XIV.	Set and Get default UDT (User Defined Type) fetch type.
XV.	Arrays of Parameter support and Insert Cursor support



            ===============================


I.      DATABASE SERVERS TESTED

        INFORMIX-CLI 2.8 has been tested for the following Informix
	database servers:

    - Informix Dynamic Server, Version 7.3x

    - Informix Dynamic Server, Workgroup Edition, Version 7.3x

    - Informix Dynamic Server with Advanced Decision Support and Extended
      Parallel Options, Version 8.2x

    - Informix Dynamic Server with Universal Data Option, Version
      9.14.


            ===============================


II.     SYSTEM REQUIREMENTS

        Windows Requirements
        --------------------
        The system requirements for running INFORMIX-CLI in a Windows NT or
        Windows 95 environment are the following:

            * Windows NT version 3.51 or later, Windows 95, or Windows 98.

            * 16 megabytes of available RAM, more is preferable.

            * 8.5 megabytes of hard-disk space available before installation.

            * Any TCP/IP protocol that is Windows Sockets 1.1-compliant.

            * Microsoft Visual C++ compiler version 2.0 or later. INFORMIX-CLI
              does not support any other C compiler.

            ===============================


III.    DRIVER MANAGERS

        Windows Driver Managers
        -----------------------

            Version Shipped
            ---------------
            INFORMIX-CLI for Windows ships with the Microsoft Driver Manager
            Version 3.5.

            Problems when Using Version 3.0
            -------------------------------
            If other programs that you are using require
            you to use Microsoft Driver Manager Version 3.0, a buffer-size
            problem might occur with some of your INFORMIX-CLI applications.
            The problem can occur when Microsoft Driver Manager Version 3.0
            doubles the total number of bytes available to return. The following
            steps provide an example of this problem:

            1.  A column name that you are retrieving consists of 15 characters
                (but you do not know this).

            2.  You call SQLDescribeCol() with cbColNameMax set to 10.

            3.  SQLDescribeCol() returns a value of 30 for pcbColName.

                SQLDescribeCol() should have returned a value of 15 for pcbColName.
                However, Microsoft Driver Manager Version 3.0 doubled pcbColName
                because it doubles the total number of bytes available to return
                when the output buffer is not large enough to hold all the data.

            4.  You reallocate the szColName buffer for 30 bytes.

            5.  You call SQLDescribeCol() with cbColNameMax set to 30.

            6.  SQLDescribeCol() returns a value of 15 for pcbColName.

                Microsoft Driver Manager 3.0 does not double the total number of
                bytes available to return when the output buffer is large enough
                to hold all the data.

            7.  If you do not compare the first pcbColName value to the second
                pcbColName value, then you do not have a problem. However, if you
                compare the two values and expect them to be the same, you will
                conclude that an error has occurred when, in fact, an error has not
                occurred.

            For information about how to install the correct version of Microsoft
            Driver Manager, see the README file for the Windows version of
            INFORMIX-CLI.

        UNIX Driver Manager
        -------------------
        INFORMIX-CLI for UNIX ships with the INTERSOLV Driver Manager
        Version 3.0.


            ===============================


IV.     FILES INSTALLED

        Files on Windows
        ----------------
        In the Windows environment, the installation procedure installs files
        into the following directories:

            Directory                        Description
            ---------                        -----------
            INFORMIXDIR\bin                  finderr.exe and DLLs
            INFORMIXDIR\demo\clidemo         Samples
            INFOMRIXDIR\gls\cm3              GLS charmap files and registry
                                                 files
            INFORMIXDIR\gls\cv9              GLS code set conversion files
            INFORMIXDIR\gls\lc11             GLS locale files
            INFORMIXDIR\incl\cli             Header files: infxcli.h, sql.h,
                                                 sqlext.h
            INFORMIXDIR\lib                  Libraries
            INFORMIXDIR\msg                  clixmsg.pam
            INFORMIXDIR\msg\en_us\04e4       Message files and errmess.hlp
            INFORMIXDIR\release\en_us\04e4   Document notes and release notes
            WINDOWSSYSTEMDIR                 Common DLLs and files for the
                                                 Microsoft Driver Manager

        Files on UNIX
        -------------
        On UNIX, in addition to common ClientSDK distribution, the installation
        procedure installs files into the following directories:

            Directory                        Description
            ---------                        -----------
            INFORMIXDIR/demo/cli             Demos
            INFORMIXDIR/incl/cli             Header files: infxcli.h,
                                                 infxsql.h
            INFORMIXDIR/lib/cli              Libraries for INFORMIX-CLI and
                                                 for the INTERSOLV Driver
                                                 Manager
            INFORMIXDIR/lib/esql             Libraries for INFORMIX-CLI and
                                                 INFORMIX-ESQL/C
            INFORMIXDIR/msg                  clixmsg.pam
            INFORMIXDIR/msg/en_us/0333       Message files for INFORMIX-CLI
            INFORMIXDIR/release/en_us/0333   Document notes, release notes, and
                                                 machine notes

        Library Names on Windows
        ------------------------
        On Windows, the installation procedure installs the following libraries
        into INFORMIXDIR\lib:

            iclit09a.lib
            iregt07b.lib

        Library Names on UNIX
        ---------------------
        On UNIX, the installation procedure installs the following libraries into
        INFORMIXDIR/lib/cli. In each Data Source specification section in the
        .odbc.ini file, set the Driver value to one of these library filenames:

            Filename                     Description
            --------                     -----------
            libifcli.a or libcli.a       Static version for single threaded
                                           library (non-threaded)
            libifcli.so or iclis09a.so   Shared version for single (non-threaded)
                                            library
            libthcli.a                   Static version for multi-threaded library
            libthcli.so or iclit09a.so   Shared version for multi-threaded library


            ===============================


V.      MAJOR FEATURES IN INFORMIX-CLI 2.8

        Multithreading Support
        ----------------------
        For a multithreaded application, INFORMIX-CLI latches an external handle
        (such as ENV, DBC, and STMT) while a thread is using the handle. If a
        concurrent thread tries to access an external handle that is already in
        use, the concurrent thread waits until the owning thread releases the
        handle. INFORMIX-CLI latches an external handle at the lowest possible
        level in the handle tree to achieve the greatest concurrency.

        Multiple Connection Support in Threads
        --------------------------------------
        INFORMIX-CLI supports multiple database connections in the same or
        different threads. Connections are always explicit and are
        simultaneously active. Each connection operates within its own scope
        and does not interact with any other connection. Any thread can access
        handles that any other thread created. Any thread can support multiple
        connections simultaneously.

        SQLCancel() Support
        -------------------
        INFORMIX-CLI supports SQLCancel() for multithreaded applications. For
        example, if you are executing a statement with hstmt1 in thread one,
        you can call SQLCancel() for hstmt1 from thread two to cancel the
        statement execution.

        Server-Only Connection
        ----------------------
        INFORMIX-CLI supports a server-only connection option which lets you
        create a new database or drop an existing database.

        Named Pipes
        -----------
        INFORMIX-CLI supports named pipes.

        Exclusive Use of a Database
        ---------------------------
        INFORMIX-CLI supports a connection option that lets you use a database
        exclusively. By default, INFORMIX-CLI allows shared use of a database.

        Row ID of the Last Inserted Row as a Statement Option
        -----------------------------------------------------
        The row ID of the last inserted row is visible and retrievable as a
        statement option.

        DBCENTURY Environment Variable Support
        --------------------------------------
        INFORMIX-CLI supports the DBCENTURY environment variable, which
        controls the setting of year values. DBCENTURY affects a CLI program
        only when a user issues a statement that contains a date or datetime
        string like the following one:

           insert into datetable ( datecol ) values ("01/01/01");

        Depending on the value to which DBCENTURY is set on the client, the
        database server stores the date specified in this statement as either
        01-01-1901 or 01-01-2001.

        On a Windows NT platform, you can set DBCENTURY directly
        into the registry under the following key:

            \HKEY_CURRENT_USER\Software\Informix\Environment\DBCENTURY

        Or a Windows NT, Windows 95, or Windows 98, you can set the value of
	the DBCENTURY environment variable through Setnet32, which Informix
	ships as part of the product.

        On a UNIX platform, you can simply set the DBCENTURY environment
        variable.

        For information on how to set DBCENTURY, see the Informix Guide to
        SQL: Reference.


            ===============================


VI.	  CHANGES TO infxcli.h

            The following defines were added to infxcli.h:

                * New SQL data types

                * New InfoType values for SQLGetInfo()

                * Access mode flags to use when creating or opening a smart
                  large object

                * Create-time flags to use in the smart large object
                  specification structure

                * Values for the whence argument that identifies the position
                  from which to start a seek

		===============================



VII.    TROUBLESHOOTING INFORMIX-CLI for Windows

        Buy Microsoft ODBC SDK version 2.5 (or 3.0) or Dr. Deebee ODBC Tool
        kits to help you troubleshoot your application.


            ===============================


VIII.    KNOWN PRODUCT DEFICIENCIES

        The following defects are known to exist in the current release of
        INFORMIX-CLI 2.8. The defects are listed by PTS (Problem Tracking
        System) number followed by a brief description. Technical support
        will be provided with patches and maintenance releases to fix these
        defects.

        PTS #    Description
        -----    -----------
        82205    When it receives a PROCESS_DETACH message, CLI should clean
                 up all active threads, but it does not because CLI may not get a
                 THREAD_DETACH message for each active thread.

        84697    CLI 2.8 crashes an Access client when it tries to fetch data from
                 a row data type, whereas CLI 2.7 fails with error -11064. CLI 2.8
                 either cannot determine the return types of a query or the return
                 types are inconsistent.

        88735    When using the GLS QA_QA locale, a client can't fetch from table
                 names with embedded spaces.

        92681    PowerBuilder 4x applications may not run properly outside
                 the PowerBuilder environment with CLI 2.80.
                 PowerBuilder 4x applications may not run properly outside the
                 PB because of different msvcrt40.dll used from the path. The
                 msvcrt40.dll that comes along with MSVC5.x is not redistributable.
                 Since Informix-CLI is compiled with MSVC 5.x and uses msvcrt.dll,
                 the PB 4 applications running outside the PowerBuilder may pickup
                 MSVC 4.x version of msvcrt40.dll which is not the same.
                 If MSVC 5.0 is installed, the PowerBuilder application will run
                 fine inside as well as outside the PowerBuilder.

        94633   Columns created as decimal(8) and decimal(16) gets described as
                real and double respectively instead of decimal.

                This happens when client and server are running on dissimilar
                hardware platforms - this can cause different floating point
                formats to be used (IEEI and IEEM) on two platforms. In such
                case float and smallfloat data will be transferred in decimal
                format. Decimal(8) columns gets descscibed in the same way as
                a smallfloat column does. and Decimal(16) columns gets described
                the same way as float column does. If possible create columns
                with explicit scale - like decimal(8,5) or decimal(8,2).

        95281    SQLCancel() does not work correctly with ODS 7.3 for Windows NT 4.0.
                 A protocol error occurs. To work around this problem, install
                 NT Service Pack 3 and then install the Tear Patch 2 from Microsoft.
                 Tear Patch 2 is available at:
                     ftp://ftp.microsoft.com/bussys/winnt/winnt-public
                     /fixes/usa/nt40/hotfixes-postSP3/teardrop2-fix

        98950    The SQL_LEN_DATA_AT_EXEC(length) macro wraps around to a positive
                 value if the length specified is the maximum size of the data type.
                 This problem occurs due to overflow.

        99509    CLOBs do not get null-terminated when they are retrieved. Therefore,
                 any attempt to display the CLOB causes junk characters to be displayed
                 at the end. To work around this problem, determine the size of the
                 CLOB and add the null-termination character.

	100570   CLI 2.8 does not allow the user to do an insertion of a literal string
		into a text column with SQLEXECDIRECT.


	  ===============================

----------- IDS-AD/XP ONLY -------------------

IX.	8.3 SELECT with UPDATE not yet supported by CLI driver

	The 8.3 syntax SELECT with UPDATE clause is not supported by the CLI driver
	yet.
	Workaround:
	Set the SQL_ATTR_NOSCAN statement attribute to SQL_NOSCAN_OFF prior to
	executing these statements.  Note that due to this there cannot be any
	native escape sequences in the statement.

----------- IDS-AD/XP ONLY -------------------

            ===============================


----------- UD-ONLY -------------------

X.	Client Functions Not Support
        INFORMIX-CLI does not support the following client functions:

               * ifx_lo_copy_to_file()
               * ifx_lo_copy_to_lo()
               * ifx_lo_filename()
               * ifx_lo_spec_free()
               * ifx_lo_stat_free()

----------- UD-ONLY -------------------



            ===============================


XI.   CLI 2.8 and CLI 2.5 Differences

	The following features are supported by INFORMIX-CLI 2.5 but are not
	supported by INFORMIX-CLI 2.7 and later.

	Support for ODBC SQLSetStmtOption options:

	SQLRESERVED_WORDS
	SQLPSUEDO_COLUMNS
	SQLFROM_RESERVED_WORDS
	SQLWHERE_CLAUSE_TERMINATORS
	SQLCOLUMN_FIRST_CHARS
	SQLTABLE_MIDDLE_CHARS
	SQLFAST_SPECIAL_MIDDLE_COLUMNS
	SQLACCESS_CONFLICTS
	SQLLOCKING_DURATION
	SQLRECORD_OPTIONS
	SQLQUALIFIER_SYNTAX
	SQLLOCKING_SYNTAX

	Support for the INSERT statement for text data:

	With INFORMIX-CLI 2.5, TEXT data can be inserted as a
	string literal.
	INFORMIX-CLI 2.7 and 2.8 do not support this syntax.

	INTERVAL data type

	In INFORMIX-CLI 2.5, an INTERVAL data type is mapped to SQL_CHAR.
	INFORMIX-CLI 2.7 and later does not support the INTERVAL data type.


            ===============================


----------- WINDOWS-ONLY ------------ WINDOWS-ONLY -------------------



XII.     MTS

        System Requirements
        -------------------
        In addition to the Windows system requirements described
	earlier in these Release Notes, the MTS feature has the
	following requirements:

        * MTS 2.0 on Windows NT 4.0, Windows 95, or Windows 98.

        * An Informix server that supports the TP/XA protocol.

        * Windows NT version 4.0 with Service Pack 3 or Windows 95 or Windows 98.

        * Microsoft Visual C++ compiler version 4.2 or later.
	The MTS feature does not support any other C compiler.

        Major Features
        --------------
        The INFORMIX-CLI implementation of MTS provides the
	following major features:

        - Supports distributed transactions in a Distributed
	Database Environment.

        - Supports connection pooling.

        Product Deficiencies
        --------------------
        The INFORMIX-CLI implementation of MTS has the following
	deficiencies:

       - An inherited transaction may have a problem in joining other
	transactions.
        This problem can be represented as follows.
	The two transactions (Inherited and Parent) will get
	two different XIDs from the DTC;  they will not share
        the same lock space. They will be treated as two
	different transactions by the server.
	This may create a dead lock if they want the same resource.
        This will not happen in an XA Transaction because both
	the transactions get the same XID and share the lock space.

	WorkAround: Try to isolate the resources
         as much as possible (by using lock mode (row), indexing etc.).

       - The last thread of a multi-threaded application may
	hang if you are running
         MTS using the library package option.

	WorkAround: If you are running a multi-
         threaded application, select the Server package option.

       - User cannot spawn a thread within  MTS component.

----------- WINDOWS-ONLY ------------ WINDOWS-ONLY -------------------


            ===============================

XIII.   FIXED CUSTOMER-REPORTED PROBLEMS

        The following defects were reported by customers and fixed. The
        defects are listed by PTS (Problem Tracking System) number followed
        by a brief description.

        PTS #    DESCRIPTION
        -----    -----------
	73132    INFORMIX-CLI 2.50.TD2: The ODBC driver IVINF709.DLL is not
                 recognizing the unique index in a table and, therefore, no
                 updates are allowed from VB or MS-Access.

	97613   USING ODBC DRIVERS, A VARCHAR FIELD WILL HAVE
		TRAILING SPACES TRUNCATED.

            	This is still the default beahavior.
		However for the users who wants the trailing
		spaces in a VARCHAR field to be preserved,
            	a connection option SQL_INFX_ATTR_LEAVE_TRAILING_SPACES is
            	added. User can set this option to SQL_TRUE or SQL_FALSE. To
            	set and get this option value use ODBC functions
            	SQLSetConnectOption and SQLGetConnectOption. The default value
            	for this option is SQL_FALSE. This option is defined in
            	infxcli.h file.

	98934   SQLPutData fails to convert data from SQL_C_CHAR to SQL
                types other than SQL_CHAR and SQL_BINARY, i.e. conversion
                of SQL_C_CHAR data provided using SQLPutData call to SQL
                type, say SQL_DECIMAL fails.

                The application sending data (rgbValue) for a
		parameter to the driver at statement execution
		time can send any character or binary data
		values in parts to a column with any SQL data
                type.  The length of character data should be less than or
                equal to 64 for data types other than BYTE, CHAR, VARCHAR,
                TEXT, LVARCHAR, SQLUDTFIXED, SQLUDTCHAR.
		Driver will return  warning for "Data Truncation"
		if the length is greater than 64.

	98947   CLI 2.80 does not support SQL_CURSOR_COMMIT_BEHAVIOUR
                SQL_CB_PRESERVE

                CLI 2.80 now supports cursor commit behavior:
		SQL_CB_PRESERVE.

                On Win32 platforms:
                Application can set cursor behavior using
		CLI 2.80 DSN config
                dialog box. Default cursor behavior is SQL_CB_CLOSE.

                On UNIX platforms:
                User needs to add flag 'CursorBehavior' to the
		appropriate DSN  entry in the .odbc.ini file.
		When the flag is set to 0, i.e.
                entry CursorBehavior=0 is added to the appropriate
		DSN cursor behavior will be SQL_CB_CLOSE.
		when CursorBehavior=1, cursor behavior will
		be SQL_CB_PRESERVE.

                When CursorBehavior flag is not set, or when it
		is set to any value other than 0 or 1 - default
		cursor behavior of Close
                (SQL_CB_CLOSE) will be asumed.


	101112  SYNTAX ERROR ON NESTED SELECT STATMENT WITH
		INFORMIX CLI DRIVER.
            	Example: "select fname, (select customer_num from customer where
            	customer_num=101) from customer where customer_num=101",
            	used to get -201 syntax error

	101327  SQLPREPARE() GIVES SYNTAX ERRORS WHEN THE SQL CREATING A STORED
    	        PROCEDURE INCLUDES A BEGIN WORK STATEMENT
     	        For instance if you try to prepare the following it used to give
      	        a -11060 error (Syntax error)
            		CREATE PROCEDURE tst()
              		  BEGIN WORK;
            		END PROCEDURE;


	101977	CLI 2.8 does not handle DSN LESS connection.
		If you did not create a DSN and tried to connect through the
		SQLDriverConnect with the following syntax,
		you got an error -11060
		insufficient connection information.

		The syntax of the connection string is:
		connection-string ::= empty-string[;] | attribute[;] | attribute;
		connection-string
		empty-string ::=
		attribute ::= attribute-keyword=attribute-value |
		DRIVER=[{]attribute-value[}]
		attribute-keyword ::= DSN | UID | PWD
		| driver-defined-attribute-keyword
		attribute-value ::= character-string
		driver-defined-attribute-keyword ::= identifier

		For Informix CLI Driver User has to use two additional key words
		CLIENT_LOCALE and DB_LOCALE. User has to set it to default
		locale even if he/she does not have a LOCALE set.
		The default is en_US.CP1252.

		The call to SQLDriverConnect looks like
		rc = SQLDriverConnect(hdbc, NULL,"DRIVER=INFORMIX 2.80 32 BIT;
		DATABASE= ovs;HOST=clipper;SERVICE=turbo;SERVER=ol_clipper;PROTOCOL=onsoctcp
		;UID=odbc;PWD=odbc;CLIENT_LOCALE=en_US.CP1252;DB_LOCALE=en_US.CP1252;",
		SQL_NTS, szerrormessage, 256, pcberrormessage, SQL_DRIVER_NOPROMPT);



	102448  LOCALE CONVERSION CHANGES WHEN SPECIFY TRANSLATION LIBRARY WITH
            	IN DATA SOURCE. The default conversion of locales did not use
            	any translation library and used to work with default English
            	locales only. The default translation library is now set to
            	"igo4n304.dll", if no translation library is specified in DSN.


	103715  CLI 2.80 DOES NOT WORK WITH SE VERSION 7.2X COMES BACK WITH 554
            	SYNTAX DISALLOWED. The driver fixes the generation of catalog
            	queries with tablename qualifier like 'database:owner.tablename'
            	which is not allowed per SE syntax.


        104520  WHEN YOU CREATE A DSN FOR A PARTICULAR SERVER USING ODBCAD32,
                THE OPTIONS SETTING FOR THE SERVER SET IN SETNET32 IS LOST.
                This is a WIN32 platform specific bug.
                Currently CLI DSN create dialog box does not allow user to set
                the options field in the sqlhosts file (stored in the windows
                registry).

                Workaround is as follows:
                To set the options field (say when you are using CSM encry-
                ption), you will have to use setnet32 utility.
                When you create a CLI DSN - it creates an entry for the given
                Informix server in the Windows registry. Use setnet32 once you
                have created an entry for the given CLI DSN. Edit the sqlhosts
                entry for the given server and set the options field. If you
                edit the CLI DSN after the options field is set using setnet32,
                you will need to rerun setnet32 to set the options field.


            ===============================


---------- IDS UDO ONLY --------------


XIV.	Set and Get default UDT (User Defined Type) fetch type.

When UDTs are fetched by the Informix CLI driver, the CLI driver needs to
inform the server about what format the data should be sent back to the
client. The formats allowed are Character and Binary.

Earlier behavior of the CLI driver was:
. If user bind a UDT column with C type SQL_C_CHAR, CLI will request the
  server to send back the UDT data in character format.
. If user binds the same column with C type SQL_C_BINARY, CLI will request
  server to send back UDT data in Binary format.
. If user does not bind the UDT column - default was taken as SQL_C_BINARY.

User is now allowed to change the default behavior.
User can set a connection option SQL_INFX_ATTR_DEFAULT_UDT_FETCH_TYPE to
either SQL_C_CHAR or SQL_C_BINARY. Default fetch type is SQL_C_BINARY,
this will maintain backward compatibility.  This option is defined in
infxcli.h file.

To set and get this option value use ODBC functions SQLSetConnectOption
and SQLGetConnectOption. Also user can manully add a value for the given
DSN in the Windows registry as:
    SQL_INFX_ATTR_DEFAULT_UDT_FETCH_TYPE=SQL_C_CHAR
or this value can be set to SQL_C_BINARY.
Above is true for WIN32 platforms only, for UNIX platform user will need
to update .odbc.ini.


---------- IDS UDO ONLY --------------


   ===============================


XV.	Arrays of Parameter support and Insert Cursor support


These two features are added to allow user to do fast bulk inserts.

Arrays of Parameter allows user to specify an array of parameter and
execute a statement. The statement will be executed for each row in
the given array of parameters. In its current implementation, the
statement specified by the user can only be an Insert statement.

To specify an array of parameter user will need to use SQLBindParam
calls along with call to function SQLParamOptions. SQLParamOptions
allows user to set the count of the rows in the array of parameters.
An Insert statement executed after the above mentioned calls will
get executed for each row of the array.

Above support speeds up the data insert process considerably and
simplifies the ODBC application for the user.

To further speed up the data insert process - insert cursor support
is added. When user sets statement option SQL_ENABLE_INSERT_CURSOR,
along with the array of parameters specified, CLI does not make a
round trip to the server for each row to be inserted. CLI opens
an insert cursor, buffers up the insert requests on the client end
and when the buffer gets full (size of the buffer is currently
set to 4K and user cannot change it), CLI sends across this buffer
to the server. Depending on the size of the data each insert
reuqest carries with it, number of network round trips between
client and server can reduce manifold with the insert cursors.

Option SQL_ENABLE_INSERT_CURSOR is defined in infxcli.h file.

Support for insert cursors is completely transparent to the user.
User need not make any additional calls to open and close an insert
cursor.

Since insert cursor buffers up the insert requests on the client
side with a limitaion that each set of data must occupy same space
- data types whose size can be variable are not supported by the
insert cursors. These types are TEXT, BYTE, UDTs, CLOB, BLOB and
LVARCHAR.

Attached is a sample program that demonstrates the use of Arrays of
Parameter and Insert Cursors.

#include 
#include 
#include 
#include "infxcli.h"
#include "odbcqa.h"

void main(int argc, char *argv[])
{
	HENV         henv;
	HDBC         hdbc;
	HSTMT        hstmt;
	UCHAR        create[MAX_NAME_LEN + 1];
	UCHAR        insert[MAX_NAME_LEN + 1];
    DWORD        iRow;
    int          i;
    short        c1[5];
    long         c2[5];
    char         c3[5][10];
    char         c4[5][11];
    char         c5[5][10];
    float        c6[5];
    double       c7[5];
    DATE_STRUCT  c8[5];
    TIMESTAMP_STRUCT  c9[5];
    DWORD        c1ind[5];
    DWORD        c2ind[5];
    DWORD        c3ind[5];
    DWORD        c4ind[5];
    DWORD        c5ind[5];
    DWORD        c6ind[5];
    DWORD        c7ind[5];
    DWORD        c8ind[5];
    DWORD        c9ind[5];

	if ( argc != 4 )
	{
		printf("Usage: insert_cursor datasourcename userid passwd\n");
		assert(0);
	}

	rc = SQLAllocEnv(&henv);
	assert(rc!=SQL_ERROR);

	rc = SQLAllocConnect(henv, &hdbc);
	ASSERT(henv, NULL, NULL);

	rc = SQLConnect(hdbc, argv[1], SQL_NTS, argv[2], SQL_NTS, argv[3], SQL_NTS);
	ASSERT(NULL, hdbc, NULL);

	rc = SQLAllocStmt(hdbc, &hstmt);
	ASSERT(NULL, hdbc, NULL);

	rc = SQLExecDirect(hstmt, "DROP TABLE test", SQL_NTS);

    strcpy(create, "CREATE TABLE test (a smallint, b int, c decimal( 6,2 ),                    d char(10), e varchar(10),                     f smallfloat, g float, h date, i datetime year to
fraction(5) )");
    rc = SQLExecDirect(hstmt, create, SQL_NTS);
	ASSERT(NULL, NULL, hstmt);

    /*
    ** remove following call if you just want to use array of parameter,
without
    ** insert cursor feature.
    */
    /* Set the statement option to enable insert cursors */
    rc = SQLSetStmtOption(hstmt,SQL_ENABLE_INSERT_CURSOR,1);
	ASSERT(NULL, NULL, hstmt);

    rc = SQLParamOptions(hstmt, 5, &iRow);
	ASSERT(NULL, NULL, hstmt);

    /* Bind param 1 */
    rc = SQLBindParameter( hstmt, 1, SQL_PARAM_INPUT, SQL_C_SSHORT,
SQL_SMALLINT, (SWORD)NULL, 0,
                           c1, 0, c1ind );
	ASSERT(NULL, NULL, hstmt);

    /* Bind param 2 */
    rc = SQLBindParameter( hstmt, 2, SQL_PARAM_INPUT, SQL_C_SLONG,
SQL_INTEGER, (SWORD)NULL, 0,
                           c2, 0, c2ind );
	ASSERT(NULL, NULL, hstmt);

    /* Bind param 3 */
    rc = SQLBindParameter( hstmt, 3, SQL_PARAM_INPUT, SQL_C_CHAR,
SQL_DECIMAL, 6, 2,
                           c3, 10, c3ind );
	ASSERT(NULL, NULL, hstmt);

    /* Bind param 4 */
    rc = SQLBindParameter( hstmt, 4, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR,
8, 0,
                           c4, 11, c4ind );
	ASSERT(NULL, NULL, hstmt);

    /* Bind param 5 */
    rc = SQLBindParameter( hstmt, 5, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR,
10, 0,
                           c5, 10, c5ind );
	ASSERT(NULL, NULL, hstmt);

    /* Bind param 6 */
    rc = SQLBindParameter( hstmt, 6, SQL_PARAM_INPUT, SQL_C_FLOAT,
SQL_REAL, (SWORD)NULL, 0,
                           c6, 0, c6ind );
	ASSERT(NULL, NULL, hstmt);

    /* Bind param 7 */
    rc = SQLBindParameter( hstmt, 7, SQL_PARAM_INPUT, SQL_C_DOUBLE,
SQL_DOUBLE, (SWORD)NULL, 0,
                           c7, 0, c7ind );
	ASSERT(NULL, NULL, hstmt);

    /* Bind param 8 */
    rc = SQLBindParameter( hstmt, 8, SQL_PARAM_INPUT, SQL_C_DATE, SQL_DATE,
(SWORD)NULL, 0,
                           c8, 0, c8ind );
	ASSERT(NULL, NULL, hstmt);

    /* Bind param 9 */
    rc = SQLBindParameter( hstmt, 9, SQL_PARAM_INPUT, SQL_C_TIMESTAMP,
SQL_TIMESTAMP, 24, 4,
                           c9, 0, c9ind );
	ASSERT(NULL, NULL, hstmt);

    /* Fill up the data array */
    for( i = 0; i < 5; i++ )
    {
            c1[i] = i+3;
            c2[i] = 110;
            strcpy( c3[i], "1230.45" );
            strcpy( c4[i], "char" );
            strcpy( c5[i], "varchar" );
            c6[i] = ( float )1.1e+03;
            c7[i] = ( double )1.1e+05;
            c8[i].year = 2000;
            c8[i].month = 2;
            c8[i].day = 29;
            c9[i].year = 1996;
            c9[i].month = 7;
            c9[i].day = 4;
            c9[i].hour = 12;
            c9[i].minute = 30;
            c9[i].second = 30;
            c9[i].fraction = 2000;

            c1ind[i] = 0;
            c2ind[i] = 0;
            c3ind[i] = SQL_NTS;
            c4ind[i] = 8;
            c5ind[i] = SQL_NTS;
            c6ind[i] = 0;
            c7ind[i] = 0;
            c8ind[i] = 0;
            c9ind[i] = 0;
    }

    /* make all columns for third row NULL */
    c1ind[2] = SQL_NULL_DATA;
    c2ind[2] = SQL_NULL_DATA;
    c3ind[2] = SQL_NULL_DATA;
    c4ind[2] = SQL_NULL_DATA;
    c5ind[2] = SQL_NULL_DATA;
    c6ind[2] = SQL_NULL_DATA;
    c7ind[2] = SQL_NULL_DATA;
    c8ind[2] = SQL_NULL_DATA;
    c9ind[2] = SQL_NULL_DATA;

    strcpy(insert, "INSERT INTO test VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)");
	rc = SQLExecDirect(hstmt, insert, SQL_NTS);
	ASSERT(NULL, NULL, hstmt);

	rc = SQLFreeStmt(hstmt, SQL_DROP);
	ASSERT(NULL, NULL, hstmt);

	rc = SQLDisconnect(hdbc);
	ASSERT(NULL, hdbc, NULL);

	rc = SQLFreeConnect(hdbc);
	ASSERT(NULL, hdbc, NULL);

	rc = SQLFreeEnv(henv);
	ASSERT(henv, NULL, NULL);

    /*
    ** Use tool like Microsoft ODBC Test or another ODBC program to
    ** verify that data has been properly inserted into the table 'test'
    */
}



  ===============================





                  ==============================================
                                 RELEASE NOTES
                                     FOR
                  INFORMIX-OBJECT INTERFACE FOR C++ VERSION 2.60
                                DATE: 12/18/98
                  ==============================================

TABLE OF CONTENTS

  I.  OVERVIEW OF RELEASE NOTES
II.  INFORMIX DATABASE SERVER COMPATIBILITY
III.  INSTALLING OBJECT INTERFACE FOR C++
IV.  NEW FEATURES
  V.  C++ COMPILER INTERPRETATION OF LONG DOUBLES
VI.  KNOWN PROBLEMS
VII.  FIXED PROBLEMS
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

I.  OVERVIEW OF RELEASE NOTES
=============================

The purpose of these release notes is to make you aware of special actions
that are required to install, configure, and use INFORMIX-Object Interface
for C++ on your computer. This file also describes new features and feature
differences from earlier versions of this product and other Informix
products and how these differences affect current products. In addition,
this file contains information about known bugs and their workarounds.

This release notes document is not intended to be all-inclusive; it should
be used as an addendum to the "INFORMIX-Object Interface for C++
Programmer's Guide," which provides comprehensive information about product
features and product behavior.

This release notes document is for system administrators who install Object
Interface for C++ and for developers who use Object Interface for C++ to
create client applications.


II.  INFORMIX DATABASE SERVER COMPATIBILITY
===========================================

Informix has simplified its product offerings. References to previous
product names apply equally to the new configurations, as indicated in the
following table.

--------------------------------------------------------------------------
| Previous Product Offering        | New Product Offering/Configuration   |
|-------------------------------------------------------------------------|
| INFORMIX-OnLine Dynamic Server   | Informix Dynamic Server              |
|-------------------------------------------------------------------------|
| INFORMIX-Universal Server        | Informix Dynamic Server with         |
|                                  | Universal Data Option                |
|-------------------------------------------------------------------------|
| INFORMIX-OnLine Extended         | Informix Dynamic Server with         |
| Parallel Server                  | Advanced Decision Support and        |
|                                  | Extended Parallel Options            |
|-------------------------------------------------------------------------|
| INFORMIX-OnLine Workgroup Server | Informix Dynamic Server, Workgroup   |
|                                  | Edition                              |
|-------------------------------------------------------------------------|
| INFORMIX-OnLine Workstation      | Informix Dynamic Server, Developer   |
|                                  | Edition                              |
---------------------------------------------------------------------------

Version 2.60 of Object Interface for C++ has been tested with the following
database server configurations:

    - Informix Dynamic Server, Version 7.3x

    - Informix Dynamic Server, Workgroup Edition, Version 7.3x

    - Informix Dynamic Server with Advanced Decision Support and Extended
      Parallel Options, Version 8.2x

    - Informix Dynamic Server with Universal Data Option, Version
      9.14.UCx (UNIX) and 9.14.TCx (Windows NT)


III.  INSTALLING OBJECT INTERFACE FOR C++
=========================================

Object Interface for C++ is provided as a component of Informix Client
Software Developer's Kit Version 2.20. Refer to the "Informix Client
Products Installation Guide" for instructions for installing the Client
SDK.


IV.  NEW FEATURES
=================

There are no new features supported in this release.


V.  C++ COMPILER INTERPRETATION OF LONG DOUBLES
===============================================

LIBC++ provides data type conversion functions in the value interface
ITConversions to enable conversion of C++ type long double. The intent is
to permit fetching floating point values into C++ long double variables.
However, the Client SDK does not currently allow for conversion of long
double values into Informix decimal or float types.

Thus, LIBC++ applications should always ensure that any floating literal
passed to ITConversions::ConvertFrom(long double val) is within the double
range. Otherwise, ConvertFrom(long double val) will return FALSE for value
objects that contain SQL MONEY, FLOAT and SMALLFLOAT values.

Object Interface for C++ is written with the assumption that a floating
literal without the ANSI C++ specified suffixes l or L (example: 12.988
instead of 12.988L) assigned to a long double variable will be treated by
the C++ compiler as a long double. This assumption agrees with the ANSI C++
Draft Standard (Doc No: X3J16/94-0027, WG21/N0414, 25 January 1994), which
states that the type of a floating literal is double unless explicitly
specified by a suffix. The suffixes f and F specify float; the suffixes l
and L specify long double. Thus, the suffix l or L must be applied to a
floating literal in order for it to be interpreted by the C++ compiler as a
long double value.

Different versions of the Sun C++ compiler applied the ANSI C++
standard as it existed at the time of the compiler development and release.
For example, Sun C++ 4.1 conforms to the ANSI standard described above,
whereas pre-4.1 Sun C++ compilers always treated all floating literals,
with or without the l and L suffixes, as long double values if they were
assigned to a long double variable.

The following C++ code example demonstrates assignment of a floating
literal to a long double variable, casting to a double, and comparison
between the double and long double:

  long double d = 12.988;

  double dasd = (double) d;
  if( dasd == d )
    return 0;
  else return 1;

The following table compares support for the ANSI C++ draft standard
referenced above among several versions of Sun C++ compilers. The table
shows how the different compiler versions evaluated the expression (dasd ==
d). If the expression evaluatates to FALSE, the values are not equal.

   Sun C++ compiler versions    Evaluation of (dasd == d )
   --------------------------------------------------------
   Sun C++ 4.0 (Dec 1993)       FALSE (values are not equal)

   Sun C++ 4.0.1 (Jul 1994)     FALSE (values are not equal)

   Sun C++ 4.1 (Oct 1995)       TRUE (values are equal)


VI.  KNOWN PROBLEMS
===================

This section describes the known problems with this release of Object
Interface for C++.

Bug 83547

Platform: Microsoft Windows NT
Compiler: Microsoft Visual C++ 4.2

Executing ITInt8 may generate ERROR C2593: 'OPERATOR <<'IS AMBIGUOUS.
This results from a known compiler bug in Microsoft Visual C++ 4.2, which
does not support 64-bit I/O.
---------------------------------------------------------------------------
Bug 83761

Platform: all
Compiler: all

The Object Interface for C++ fails to returns a set of UDTs when using
ITRoutineManager. This is a duplicate of bug 95487.
---------------------------------------------------------------------------
Bug 88350

Platform: all
Compiler: all

Running $INFORMIXDIR/DEMO/C++/CURSTST gives error
MY_ERROR_HANDLER: ERRORLEVEL=5 SQLSTATE=IX000 XIX000:-7420:ARGUMENT
(CLIENT LIBRARY ERROR) is invalid.

This is a duplicate of DataBlade API bug 92959.
---------------------------------------------------------------------------
Bug 101347

Platform: all
Compiler: all

For CSDK220 the test Value/LargeObj/LargeObj01 for LIBC++ fails when run
with UNIX as client and UNIX 914 server. Output is not as expected.
---------------------------------------------------------------------------
Bug 101671

Platform: all
Compiler: all

Wrong results are returned by the ConverDate() method.
---------------------------------------------------------------------------
Bug 101676

Platform: all
Compiler: all

Interface call ConvertDatetime() fails, returning incorrect results.
---------------------------------------------------------------------------
Bug 102234

Platform: all
Compiler: all

The ITLargeObject::Seek() returns a wrong result. This method is designed
to return a long value, but the function returns  multiple spaces and a
control character at the end.
---------------------------------------------------------------------------
Bug 102364

Platform: all
Compiler: all

/client/c++if/test/makefile causes misleading error messages on some
platforms through use of timeseries library.
---------------------------------------------------------------------------
Bug 103530

Platform: all
Compiler: all

ITValue::FromPrintable("ROW(NULL)::.
ITDBInfo::CreateDatabase() no longer gives a segment violation error.

This bug is a duplicate of client-side DataBlade API bug 82255
which has been fixed.
---------------------------------------------------------------------------
Bug 83360

Platform: Microsoft Windows NT 4.0
Compiler: all

The LIBCPP component of the Client Software Developer's Kit installation
no longer creates an invalid directory structure. This bug is a duplicate
of the BladePack installation bug 85847, which has been fixed.
---------------------------------------------------------------------------
Bug 91310

Platform: all
Compiler: all

A memory leak in ITLocale was fixed.
---------------------------------------------------------------------------
Bug 91312

Platform: all
Compiler: all

This is a duplicate of bug 91310.
---------------------------------------------------------------------------
Bug 91313

Platform: all
Compiler: all

This is a duplicate of bug 91310.
---------------------------------------------------------------------------
Bug 91443

Platform: all
Compiler: all

If you do not execute ITQuery::NextRow() until all rows have been
retrieved, LIBC++ no longer aborts with an access violation on Win32
platforms and no longer aborts with a segmentation violation and core dump
on Unix platforms.
---------------------------------------------------------------------------
Bug 94854

Platform: all
Compiler: all

Numeric and string value objects can now be converted to C++ integral
type "bool" on those platforms where the C++ compiler supports integral
type "bool".
---------------------------------------------------------------------------
Bug 98489

Platform: UNIX
Compiler: all

LIBC++ platform-independent product makefile now works on porting
platforms. It had failed on some porting platforms because the make utility
on those platforms did not support a specific form of symbol substitution.
---------------------------------------------------------------------------
Bug 95380

Platform: all
Compiler: all

ITCURSOR: ITPOSITIONLAST no longer gives the first row instead of the last
row when called once. The last row is now fetched correctly.

This bug is a duplicate of ESQL/C SQL bug 98169, which has been fixed.
---------------------------------------------------------------------------
Bug 95383

Platform: all
Compiler: all

ITCURSOR: ITPOSITIONNEXT when called after ITPOSITIONLAST no longer gives a
duplicate row if a cursor is created for select from view.

This bug is a duplicate of ESQL/C SQL bug 98169, which has been fixed.
---------------------------------------------------------------------------
Bug 95438

Platform: all
Compiler: all

ITCURSOR: ITPOSITIONNEXT, when called in a loop, no longer gives
unpredictable results when a cursor is created for select from view.

This bug is a duplicate of ESQL/C SQL bug 98169, which has been fixed.
---------------------------------------------------------------------------
Bug 95442

Platform: all
Compiler: all

ITCURSOR: ITPOSITIONABSOLUTE no longer gives wrong results if a cursor is
opened for select from view.

This bug is a duplicate of ESQL/C SQL bug 98169, which has been fixed.
---------------------------------------------------------------------------
Bug 95444

Platform: all
Compiler: all

ITCURSOR: ITPOSITIONPRIOR no longer gives unpredictable results when a
cursor is created for select from view.

This bug is a duplicate of ESQL/C SQL bug 98169, which has been fixed.
---------------------------------------------------------------------------
Bug 100947

Platform: UNIX
Compiler: all

Global instances of LIBC++ classes are not created prior to calling the
main function on UNIX platforms Data General Intel and Sequent. The bug for
the UNIX environment has been closed, but the bug is open for the
environments UNIX: Data General Intel and UNIX: SEQUENT.
---------------------------------------------------------------------------
Bug 100968

Platform: UNIX
Compiler: all

ITRawData::Printable access violation in ITQuery::NextRow loop after
ITQuery::ExecForIteration on SELECT of OPAQUE type without ITValue
interface.
---------------------------------------------------------------------------
Bug 101395

Platform: UNIX
Compiler: all

ITLOCALE::CONVERT[DATE|DATETIME|NUMBER|MONEY] and
FORMAT[DATE|DATETIME|NUMBER|MONEY] now reset GLS error code.
---------------------------------------------------------------------------
Bug 101712

Platform: UNIX
Compiler: all

This bug is a duplicate of bug 101395.
---------------------------------------------------------------------------
Bug 101817

Platform: UNIX
Compiler: all

This bug could not be reproduced.
---------------------------------------------------------------------------
Bug 102234

Platform: all
Compiler: all

In the operation class ITInt8, the overloaded output insertion operator

  ostream& operator<<( ostream &, const ITInt8 &)

now inserts into the output stream a null-terminated string without
trailing white space characters.
---------------------------------------------------------------------------



                      ======================================
                                 RELEASE NOTES
                                      FOR
                INFORMIX-GLS 3.08.UC1 PRODUCT RELEASE
                               DATE: 22 Dec 1998
                      ======================================


TABLE OF CONTENTS

I.     MAJOR FEATURES IN INFORMIX-GLS 3.0

II.    CAVEATS

III.   KNOWN PRODUCT DEFICIENCIES

IV.    FIXED CUSTOMER-REPORTED PROBLEMS


I.     MAJOR FEATURES IN INFORMIX-GLS 3.0
       INFORMIX-GLS is an application-programming interface (API)
       that provides functions and macros for the implementation of
       internationalized applications that are compatible with
       Informix GLS internationalization. This API allows
       applications to access information in Informix locale files.

       INFORMIX-GLS 3.0 contains the following major features:

       - Processing single-byte, multibyte, and wide characters and
         strings, including character classification, case conversion,
         code-set conversion, string traversal, and string comparison

       - Converting date, time, money, and number strings from and to
         binary values

       Previous versions of the INFORMIX-GLS product were called the
       Informix GLS API. Use of the name GLS API is discontinued in
       the documentation.


II.    CAVEATS

       INFORMIX-ESQL/C
       ===============
       Include the ifxgls.h header file in any source code that
       references an INFORMIX-GLS function.

       The ESQL/C preprocessor automatically includes the INFORMIX-GLS
       library. For information on how to build ESQL/C applications,
       refer to the "INFORMIX-ESQL/C Programmer's Guide."

       Client LIBMI Applications
       ==========================
       Include the ifxgls.h header file in any source code that
       references an INFORMIX-GLS function.

       You can use the ESQL/C preprocessor to automatically include
       the INFORMIX-GLS library in your client LIBMI application.
       Otherwise, you must explicitly list the library at link time.
       For information on how to build client LIBMI applications that
       use INFORMIX-GLS, refer to the "INFORMIX-GLS Programmer's Manual."

       DataBlade Server Routines
       =========================

       Include the ifxgls.h header file in any source code that
       references an INFORMIX-GLS function.

       The INFORMIX-GLS library is already linked into the
       Informix Dynamic Server with Universal Data Option. Therefore,
       you do not need to take special link steps to use INFORMIX-GLS
       in a server routine.


III.   KNOWN PRODUCT DEFICIENCIES

        The following defects are known to exist in the current release of
        INFORMIX-GLS 3.0. The defects are listed by PTS (Problem Tracking
        System) number followed by a brief description. Technical support
        will be provided with patches and maintenance releases to fix these
        defects.

        PTS #    Description
        -----    -----------
     - 88673    GLS numeric conversion routines ignore the minimum width
                with the %e specifier.
     - 94713    gl_mbsprintf of a very large negative number, with %e
                prints 'inf' instead of '-inf'.


IV.    FIXED CUSTOMER-REPORTED PROBLEMS

       The ifx_gl_format_datetime() function supports all the formats
       as documented in:
        $INFORMIXDIR/doc/gls_api/en_us/0333/ifx_gl_convert_datetime.htm

       The ifx_gl_format_date() function returns day of the year with
       '%j' format when a full date is given.

       The ifx_gl_convert_number() returns -1 and the ifx_gl_lc_errno()
       function returns IFX_GL_PARAMERR when a data type mismatch
       occurs between input data and conversion specifier.



---------------------------------------------------


                      ======================================
                                 RELEASE NOTES
                                      FOR
              INTERSOLV DataDirect ODBC Driver 3.11 PRODUCT RELEASE
                               DATE: 18 Dec 1998
                      ======================================


TABLE OF CONTENTS

I.      What's New in Version 3.11
II.     System Requirements
III.    Supported Informix Database Servers
IV.     Files Installed
V.      Migrating
VI.     Driver Options
VII.    Microsoft Access and Visual Basic Users (Windows-only)
VIII.   Notes and Known Problems


            ===============================


I.      What's New in Version 3.11

        Version Numbers
        ---------------
        * The new version on UNIX and NT is 3.11
	* Supports TIMESTAMPADD and TIMESTAMPDIFF scalar functions for
	  interval types SQL_TSI_DAY and SQL_TSI_MONTH.

        New Features
        ------------
        * INTERSOLV DataDirect ODBC Driver provides the following DLL:
	ivinf913.dll, which supports ODBC 3.5 core components and
	the Informix extended data types:
          Smart large objects, Distinct, BOOLEAN, INT8, SERIAL8, and LVARCHAR.

        * INTERSOLV DataDirect ODBC no longer provides the JDBC-ODBC bridge. You
          can buy a JDBC-ODBC bridge from a JDK vendor.

        Additional Documentation
        ------------------------
        You may want to look at some of the documentation notes for manuals
        that are distributed with your Informix database server. These notes
        include information about the following products and features which
        might affect your client application:

            * DataBlade API
            * Error messages
            * GLS functionality
            * SQL

        To see these documentation notes, look in one of the following
        database server directories. If you need information about these
        directories, contact your DBA.

            Platform    Directory for Documentation Notes
            --------    ---------------------------------
            UNIX        INFORMIXDIR/release/en_us/0333
            Windows     INFORMIXDIR\release\en_us\04e4


            ===============================


II.     System Requirements

        Windows
        -------
        Disk space:     15 megabytes on the disk drive where Windows 95/98/NT
                        is installed.
        Memory:         Windows 95: 16 megabytes (minimum)
                        Windows 98: 16 megabytes (minimum)
                        Windows NT: 24 megabytes (minimum)

        UNIX
        ----
        Disk space:     25 megabytes on the disk drive where UNIX
                        is installed.
        Memory:         16 megabytes (minimum)

        Remote Informix Databases Accessed from Windows
        -----------------------------------------------
        To access remote Informix databases, you need to install INFORMIX-Connect.
        INTERSOLV DataDirect ODBC Driver for Windows does not work with versions
        of INFORMIX-Connect earlier than Client SDK 2.0.

        Use the SETNET32.EXE utility supplied with INFORMIX-Connect to define
        database servers and the location of the INFORMIX directory. Use
        ILOGIN.EXE to test your connection to the Informix database server.

        The INFORMIX-Connect package includes ISQLT09A.DLL. The path to this DLL
        must be in your PATH environment variable. If it is not and you attempt
        to configure a data source, a message similar to the following one appears:

            The setup routines for the INTERSOLV 3.11 32-BIT ODBC driver
            could not be loaded due to system error code 126.

        When you click OK, the following message appears:

            Could not load the setup or translator library.

        Remote Informix Databases Accessed from UNIX
        --------------------------------------------
        Set the INFORMIXDIR environment variable to the directory where
        you installed your client application. Set the INFORMIXSERVER environment
        variable to the name of the Informix database server as defined in
        sqlhosts.


            ===============================


III.    Supported Informix Database Servers


        ivinf913.dll support the following Informix database servers via
        INFORMIX-Connect 9.13:
            7.x
            9.x


            ===============================


IV.     Files Installed

        The following INTERSOLV DataDirect ODBC Driver files are installed,
	along with the INFORMIX-CLI 2.8 and the other client product files:

        Files Installed on UNIX
        -----------------------
        "xx" is "so" on Solaris, "sl" on HP-UX, or "a" on AIX.

        In the Intersolv directory:
            Driver
            Driver Manager
            Installer
            Libraries
            License file

        In INFORMIXDIR/help:
            Help text for the Informix SQLDriverConnect dialog

        In INFORMIXDIR/headers:
            Header files

        In INFORMIXDIR/locale/en_US/LC_MESSAGES:
            GLS message files

        In /messages/default:
            ODBC driver manager message file

        Files Installed on Windows
        --------------------------
        In your system directory (by default, the Windows SYSTEM32 directory
        for Windows NT or SYSTEM for Windows 95 and Windows 98):
            Visual C and Microsoft ODBC libraries

        In your system directory for a custom install for which you
        selected the ODBC Driver Manager:
            Microsoft ODBC Driver Manager files

        In the Informix translation directory:
            Translation library

        In your driver directory (by default, the Windows SYSTEM32 directory
        for Windows NT or SYSTEM for Windows 95 and Windows 98):
            INTERSOLV drivers
            INTERSOLV help files
            INTERSOLV libraries

        In the Informix headers directory:
            Header files


            ===============================


V.      Migrating

        Migrating from 3.02/3.10 to 3.11
        --------------------------------
        The Informix installation procedure does not remove the old version when it
        installs the new version. Therefore, you can continue to use the old version
        without making any changes to your DSNs or applications. To use the new
        version, you must update the driver reference for each DSN.

            Migrating from 3.02 to 3.11 on UNIX
            -----------------------------------
            Your DSN configuration should be in the .odbc.ini file or in your
            application code. Find the DSN configuration and change the Driver
	    value to ivinf913.dll.

            Migrating from 3.10 to 3.11 on Windows
            --------------------------------------
            * If your DSN configuration is in the registry, use regedit to
		change the following values:

              - Change the "driver" value of the following key:
                    HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\"dsn_name"
                From:
                    WINSYSDIR \IVIF7912.DLL
                To:
                    WINSYSDIR \IVINF913.DLL
               Where WINSYSDIR is \WINNT\System 32 on Windows NT and
		\WINDOWS\System
                on Windows 95 and Windows 98.

              - Change the "dsn_name" value of the following key:
                    HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources
                From:
                    INTERSOLV 3.10 32-BIT INFORMIX
                To:
                    INTERSOLV 3.11 32-BIT INFORMIX
                    or
                    INTERSOLV 3.11 32-BIT INFORMIX 9

            * If your DSN configuration is in your application code, change the
              Driver value to ivinf913.dll.

        Migrating from 2.x to 3.11
        --------------------------
        The TranslationDLL connection string option has been changed to
        TranslationSharedLibrary.

        The ODBC_INI enviroment variable has been replaced by the ODBCINI
        environment variable.

        If you are using an existing 2.5 DSN you must modify the library
        or dll name in either the registry or in the odbc.ini file.
        The name must be changed from ivinif12.xx to ivif7912.xx.

            Migrating from 2.x to 3.11 on HP-UX (UNIX)
            ------------------------------------------
            For HP-UX 10.20 (aCC++), the ODBC driver manager has been rebuilt
            using the HP aC++ compiler.  Because aC++ libraries are not
            backwardly compatible with cfront-compiled libraries, C++
            applications are required to recompile their main with the HP aC++
            compiler, C applications are required to re-link the application
            with the HP aC++ linker.  An error such as the following is a
            symptom of not following these steps:

            /usr/dld.sl: Unresolved Symbol:
            __shlimit from /opt/odbclibodbc.sl

            Migrating from 2.x to 3.11 on Solaris (UNIX)
            --------------------------------------------
            For Solaris, the ODBC Driver Manager is not linked with libnsl.so.
            Most ODBC drivers require that this library be initialized before
            the drivers are invoked.  To insure maximum ODBC compatibility,
            applications should link to libnsl.so.


            ===============================


VI.     Driver Options

        The driver has non-standard options that let you take
        advantage of packaged ODBC-enabled applications requiring
        non-standard or extended behavior. To use these options, we recommend
        that you create a separate data source for each application.

        On UNIX, use a text editor to open the .odbc.ini file.  In the
        section for the data source you created, add the WorkArounds key with
        a value of n (e.g., WorkArounds=n). The value n is the cumulative
        value of all options added together.

        In the Windows environment, use the registry editor (regedit on Windows
        95, Windows 98, or Windows NT 4.0, or regedt32 on Windows NT 3.5x), to
	open the ODBC.INI section in the registry. In the section for the data
	source you created, add the key WorkArounds with a value of n (e.g.,
        WorkArounds=n). The value n is the cumulative value of all options
        added together.

        Key and Value      Description
        -------------      -----------
        WorkArounds=1      If an ODBC driver reports that its
                           SQL_CURSOR_COMMIT_BEHAVIOR or
                           SQL_CURSOR_ROLLBACK_BEHAVIOR is 0,
                           then return 1 instead and force statements to
                           be prepared again by the driver.

        WorkArounds=2      Some applications cannot handle database
                           qualifiers.  If this option is on, the driver
                           reports that  qualifiers are not supported.

        WorkArounds=4      Some applications require two connections to
                           an Informix database.  Since Informix databases
                           support only one  connection, the second connection
                           attempt fails.  Turning this option on  causes the
                           driver to detect this condition and have the
                           two ODBC connections share a single physical
                           connection to the database.

        WorkArounds=8      If the driver cannot deduce the number of rows
                           affected by an INSERT, UPDATE, or DELETE, it may
                           return -1 in  SQLRowCount.  Some applications may
                           not be able handle this.  Turning this
                           option on causes the driver to return 1 instead.

        WorkArounds=16     For SQLStatistics, if the driver reports
                           an INDEX_QUALIFIER that contains a period, some
                           applications raise a "tablename is not a valid name"
                           error.  Turning this option on causes the driver to
                           return no INDEX_QUALIFIER.

        WorkArounds=64     This option results in a column name of
                           C where  is the ordinal position
                           in the result set.  For example, "SELECT col1,
                           col2+col3 FROM table1" produces the column names "col1"
                           and C2. SQLColAttributes/SQL_COLUMN_NAME returns
                            for result columns that are expressions.
                           Use this option for applications that cannot handle
                            column names.

        WorkArounds=256    Forces SQLGetInfo/SQL_ACTIVE_CONNECTIONS to be
                           returned as 1.

        WorkArounds=512    To prevent ROWID results, this option forces the
                           SQLSpecialColumns function to return a unique index as
                           returned from SQLStatistics.

        WorkArounds=65536  This option strips trailing zeros from decimal results.

        WorkArounds=131072  This option turns all occurrences of the
                           double quote character ("") into the grave
                           character (`).

                           Some applications always quote identifiers with double
                           quotes. Double quoting causes problems for data sources
                           that do not return SQLGetInfo/SQL_IDENTIFIER_QUOTE_CHAR
                           = .

        WorkArounds=1048576  Some applications incorrectly specify a
                           precision of 0 for character types when the value will
                           be SQL_NULL_DATA.  This option overrides the specified
                           precision and sets the precision to 256.

        WorkArounds=2097152  Some applications incorrectly specify a
                           precision of -1 for character types.  This option
                           overrides the specified precision and sets the precision
                           to 2000.

        WorkArounds=4194304  For PowerBuilder users, this option converts all
                           catalog function arguments to upper case unless they are
                           quoted.

        WorkArounds=536870912  This option allows for re-binding
                           parameters after calling SQLExecute for prepared
                           statements.

        WorkArounds2=2     Some applications incorrectly specify the ColumnSize/
                           DecimalDigits when binding timestamp parameters. This
                           workaround causes the driver to ignore the ColumnSize/
                           DecimalDigits specified by the application and use the
                           database defaults instead.



            ===============================


VII.    Microsoft Access and Visual Basic Users (Windows-only)

        We recommend that users of Microsoft Access and Visual Basic
        add the value pair WorkArounds=25 (1+8+16) for each data source
        they use with Access and Visual Basic.  For data sources that
        support a single connection, add the line WorkArounds=29 (1+4+8+16).


            ===============================


VIII.   Notes and Known Problems

        SQLColAttribute(s)
        ------------------
        The column attributes 1001 and 1002, which were assigned as
        INTERSOLV specific attributes, were inadvertently used as system
        attributes by the Microsoft 3.0 ODBC implementation.
        Applications using those attributes should now use 1901 and 1902
        respectively.

        SQL_C_NUMERIC
        -------------
        Because of inconsistencies in the ODBC specification, users
        attempting to use SQL_C_NUMERIC parameters should set the
        precision and scale values of the corresponding structure, and
        the descriptor fields in the APD.

        Error Messages
        ------------------
        Restriction:  Some INFORMIX error messages may contain more than
        one error.  It is unclear whether all errors displayed will be valid.

        Additional Notes and Known Problems on UNIX
        -------------------------------------------
            ODBC Driver Manager (UNIX-only)
            -------------------------------
            If you want to use a driver manager, the driver requires the 3.0
            version of the ODBC Driver Manager (libodbc.xx). You can buy the
            Driver Manager from a third party vendor who develops ODBC Driver
            Manager for the required UNIX platform.

            ODBC Driver Manager On Solaris (UNIX-only)
            ------------------------------------------
            For Solaris, the ODBC Driver Manager is not linked with libnsl.so.
            Most ODBC drivers require that this library be initialized before
            the drivers are invoked.  To insure maximum ODBC compatibility,
            applications should link to libnsl.so.

            SQLDriverConnect (UNIX-only)
            ----------------------------
            SQLDriverConnect using options other than SQL_DRIVER_NOPROMPT is
            supported only on systems that include the Motif library.

        Additional Notes and Known Problems on Windows
        ----------------------------------------------
            ODBC Driver Manager (Windows-only)
            ----------------------------------
            ODBC 3.x drivers require the 3.0 or 3.5 version of the ODBC Driver
            Manager (ODBC32.DLL and ODBCCP32.DLL). The INFORMIX-Client Software
            Developer's Kit provides Microsoft ODBC Driver Manager 3.5.

            Because the ODBC 3.0 Driver Manager is compatible with 2.x compliant
            drivers, all 2.x versions of the Driver Manager should be removed
            from your access path to ensure application stability.  Failing to
            remove older versions of the Driver Manager may result in application
            errors and abnormal terminations.

            ODBC Driver Manager Bugs (Windows-only)
            ---------------------------------------
            Please review the release notes file included with the Client SDK
            for all known ODBC Driver Manager bugs.  In addition to the bug
            list included in the RELNOTES.WRI file, the following problem
            exists: Calling SQLRowCount after receiving a SQL_NO_DATA return
            from an executed statement results in a HY010 Function Sequence
            Error. This error should not occur.

            Microsoft Query and INTERVAL (Windows-only)
            -------------------------------------------
            Attempting to use Microsoft Query '95 with the Informix
            driver will result in a protection fault from Query.  This is
            because Query does not recognize the INTERVAL data types supplied
            by the driver.  Users will need to obtain Microsoft Query '97 to
            obtain the fix.