                    CA-IDMS Server Client Interface


Notes:

1.  Do not set the Bulk Fetch Row Count to a number greater than 255.
    This will cause the windows application to terminate abnormally.
    This bug is corrected with the 9407 genlevel of the CA-IDMS SQL
    Feature.   This setting should generally be left at 0, which lets the
    driver choose the appropriate value for size of the fetch buffer.

2.  The result set of the SQLTables call can be cached.  Repeated SQLTables
    calls with the same parameters on a connection will use the cached
    result set if this option is off.  Changing the parameters, turning
    cacheing off, changing the catalog accessible tables view name, and
    disconnecting will flush the cache.

    The default is no cacheing, use the Database Settings dialog of the
    ODBC administration application to turn it on.

3.  The default for SQLTables is to use the SYSCA.ACCESSIBLE tables view.

4.  The ESCAPE character '\' is supported in identifiers of the
    SQLTables and SQLColumns functions.

5.  SQLStatistics will not update statistics even when ENSURE is specified.
    This can be changed using the administration application.  See note
    below for more information.

6.  All catalog functions are executed on a separate internal SQL session
    to reduce the chance of deadlocks and avoid problems with different
    page groups for the catalog and user data areas.  This session consists
    of just one "transaction" that is set to READ ONLY and TRANSIENT READ.
    SQLTransact has no effect on it, nor does Autocommit.  The session is
    started and released automatically.

7.  The default Cursor Commit behavior is PRESERVE.  The IDMS driver
    issues COMMIT CONTINUE for SQLTransact (and for Autocommit).  This
    can be changed using the administration program.  CLOSE is simulated
    by saving the syntax and reissuing the prepare on SQLExecute.

    When Cursor Commit behavior is PRESERVE, SQLGetInfo will report that
    Cursor Rollback behavior is also PRESERVE, even though it is actually
    CLOSE (there is no ROLLBACK CONTINUE SQL command).  This is done so
    that Microsoft Access will allow attached tables to be updated.

8.  Result set information functions can be called before SQLExecute
    (see note below).

9.  The extended syntax for date and time literals using escape sequences
    is supported.  Note that escape sequences are not supported for
    anything else.  Escape sequences are not currently supported for
    date and time values passed as parameters.

10. Tracing options can be specified using the administration program,
    avoiding the need to manually edit the CADSI.INI file.  A separate
    Log Options dialog box has been added to the administration program.

11. All connections from a single Windows application to a single IDMS
    server use the same LTERM on the server, allowing more concurrent
    users than previously.

12. To use Powerbuilder from Powersoft it may be necessary to add the
    following to the CADSI.INI file in the Windows directory:

    [Options]                    ; global options
    DisableEnsure=1

    ;- or -

    [<data source name>]         ; data source specific options
    DisableEnsure=1

    This will prevent the ODBC SQLStatistics function from attempting
    to issue an UPDATE STATISTICS FOR TABLE <table> when the SQL_ENSURE
    option is specified.  Powerbuilder currently specifies this option
    when determining what indexes exist for a table.

    This option is also useful to prevent SQLStatistics from attempting
    to update statistics for large tables.  This can be a very expensive
    operation, and could cause the CAICCI component to time out (which
    will be reported as a "DTS" error, with more information in the
    CADSI log file).

    The default setting for this is 1 (on).

13. Parameters can be defined after a statement is prepared, that is,
    SQLSetParam can be issued after SQLPrepare (but still must be
    issued before SQLExecute or SQLExecuteDirect).  SQLDescribeCol,
    SQLColAttributes, and SQLNumResultCols can be issued before
    SQLExecute and will cause the statement to be compiled on the server.
    Note that all parameters must be specified with SQLSetParam before
    IDMS can compile the command.

14. SQLSetConnectOption allows specification of time out interval.
    SQLGetConnectOption returns a value for time out interval.
    Time out intervals are currently specified using the CCI Configurator,
    and cannot actually be set or queried by ODBC.  The IDMS ODBC driver
    appears to support them for compatibility with Microsoft Access.

15. See documentation for detailed information on IDMS ODBC conformance.

16. The CADSI.LOG file may contain error messages from the DTS component
    (IDMSTD0D.DLL) after a communication error.  These messages may include
    those returned by CAICCI (LCCIWIN.DLL).  The setup utility can be used
    to set a name and path for the log file.

17.  Internal trace information can be controlled using SQLExecuteDirect.
    Syntax is:

    TRACE ODBC|IDMS OFF|ON|ALL|0xhhhh

    ODBC control ODBC driver trace
    IDMS control IDMS client interface trace

    OFF     turn trace off
    ON      turn on minimum trace
    ALL     turn on all trace options
    0xhhhh  turn on specific trace options

    Trace bit definitions are included below.


Trace flag settings:

Debugging information can be written to CADSI.LOG.  The following flag
settings are provided for use by CA support staff:

IDMSODBC.DLL: set in [Options] or [<data source name>] section:
OdbcTrace=0xXXXX where 0xXXXX can be set with the following values:

   0x0001  // Trace function entry.
   0x0002  // Snap environment block.
   0x0004  // Snap connection block.
   0x0008  // Snap statement block.
   0x0010  // Snap SQLDA.

IDMSQCLI.DLL: set in [Options] or [<data source name>] section:
IdmsTrace=0xXXXX where 0xXXXX can be set with the following values:

   0x0001  // Trace IDMS calls
   0x0002  // Time  IDMS calls
   0x0004  // Snap  IDMS SQLSID
   0x0008  // Snap  IDMS DSICB
   0x0010  // Snap  IDMS SQLCA
   0x0020  // Snap  IDMS SQLCIB
   0x0040  // Snap  IDMS SQLPIB
   0x0080  // Snap  IDMS parm buffer
   0x0100  // Snap  IDMS tuple buffer
   0x0200  // Snap  IDMS input SQLDA
   0x0400  // Snap  IDMS output SQLDA
   0x0800  // Snap  IDMS syntax string

IDMSTD0D.DLL: set in [Server <server name>] section:
DtsTrace=0xXXXX where 0xXXXX can be set with the following values:

   0x0000  // no tracing
   0x0001  // trace function calls
   0x0002  // trace external calls
   0x0004  // trace events
   0x0008  // trace events
   0x0010  // snap user data arrays
   0x0020  // trace events
   0x0040  // snap PCE
   0x0080  // snap LCE

IDMSTD0D.DLL: set in [Server <server name>] section:
DnsTrace=0xXXXX where 0xXXXX can be set with the following values:

   0x0000  // no tracing
   0x0001  // trace function calls
   0x0010  // snap unconverted send data
   0x0020  // snap converted send data
   0x0040  // snap received data
   0x0080  // snap converted received

IDMSTD0D.DLL: set in [Server <server name>] section:
CmTrace=0xXXXX where 0xXXXX can be set with the following values:

   0x0000  // no tracing
   0x0001  // trace function calls
   0x0002  // elapsed CCI call timings

