/**********************************************************************
// @@@ START COPYRIGHT @@@
//
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements.  See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership.  The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License.  You may obtain a copy of the License at
//
//   http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied.  See the License for the
// specific language governing permissions and limitations
// under the License.
//
// @@@ END COPYRIGHT @@@
**********************************************************************/
#ifndef ODBCCFG_H_
#define ODBCCFG_H_
/*
 * Translation unit: ODBCCFG
 * Generated by CNPGEN(TANTAU CNPGEN TANTAU_AG_PC8 20001120.103031) on Mon Jan 31 11:14:08 2011
 * C++ constructs used
 * Header file for use with the CEE
 * Client functionality included
 */
#include <stdarg.h>
#include <cee.h>
#if CEE_H_VERSION != 19991123
#error Version mismatch CEE_H_VERSION != 19991123
#endif
#include <idltype.h>
#if IDL_TYPE_H_VERSION != 19971225
#error Version mismatch IDL_TYPE_H_VERSION != 19971225
#endif

/********************
 * Module 'odbccfg' *
 ********************/

/******************************
 * Interface 'odbccfg_CfgSvc' *
 ******************************/
typedef IDL_Object odbccfg_CfgSvc;
struct odbccfg_CfgSvc_ParamError { /* Exception */ 
  IDL_string ParamDesc;
  IDL_PTR_PAD(ParamDesc, 1)
};
struct odbccfg_CfgSvc_CriticalError { /* Exception */ 
  IDL_string ErrorDesc;
  IDL_PTR_PAD(ErrorDesc, 1)
};
struct odbccfg_CfgSvc_SQLError { /* Exception */ 
  ERROR_DESC_LIST_def errorList;
};
/* Exception odbccfg_CfgSvc_SQLNoDataFound has no members */
/* Exception odbccfg_CfgSvc_CFGDataError has no members */
/* Exception odbccfg_CfgSvc_DatabaseFound has no members */
/* Exception odbccfg_CfgSvc_SQLInvalidHandle has no members */
/* Exception odbccfg_CfgSvc_DatabaseNotFound has no members */
/* Exception odbccfg_CfgSvc_WrongUserPassword has no members */
/* Exception odbccfg_CfgSvc_ServerError has no members */

/************************************************
 * Operation 'odbccfg_CfgSvc_GetObjectNameList' *
 ************************************************/

/*
 * Exception number constants for
 * operation 'odbccfg_CfgSvc_GetObjectNameList'
 */
#define odbccfg_CfgSvc_GetObjectNameList_ParamError_exn_ 1
#define odbccfg_CfgSvc_GetObjectNameList_SQLError_exn_ 2
#define odbccfg_CfgSvc_GetObjectNameList_SQLNoDataFound_exn_ 3
/*
 * Exception union for
 * operation 'odbccfg_CfgSvc_GetObjectNameList'
 */
struct odbccfg_CfgSvc_GetObjectNameList_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbccfg_CfgSvc_ParamError ParamError;
    odbccfg_CfgSvc_SQLError SQLError;
  } u;
};
/*
 * Local index for operation 'odbccfg_CfgSvc_GetObjectNameList'
 */
#define odbccfg_CfgSvc_GetObjectNameList_ldx_ ((IDL_unsigned_long) 1)
/*
 * Operation synopsis for operation 'odbccfg_CfgSvc_GetObjectNameList'
 */
#define odbccfg_CfgSvc_GetObjectNameList_osy_ ((IDL_long) 2096703100)
/*
 * Call Completion function pointer type for
 * operation 'odbccfg_CfgSvc_GetObjectNameList'
 */
typedef void (*odbccfg_CfgSvc_GetObjectNameList_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_GetObjectNameList_exc_ *exception_
  , /* In    */ const DATASOURCE_LIST_def *ObjectNameList
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Call Completion function prototype for
 * operation 'odbccfg_CfgSvc_GetObjectNameList'
 */
extern "C" void
odbccfg_CfgSvc_GetObjectNameList_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_GetObjectNameList_exc_ *exception_
  , /* In    */ const DATASOURCE_LIST_def *ObjectNameList
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Asynchronous object call for
 * operation 'odbccfg_CfgSvc_GetObjectNameList'
 */
extern "C" CEE_status
odbccfg_CfgSvc_GetObjectNameList_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbccfg_CfgSvc_GetObjectNameList_cct_ rtn_
  , /* In    */ IDL_long ObjectType
  );
/*
 * Synchronous object call for
 * operation 'odbccfg_CfgSvc_GetObjectNameList'
 */
extern "C" void
odbccfg_CfgSvc_GetObjectNameList(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbccfg_CfgSvc_GetObjectNameList_exc_ *exception_
  , /* In    */ IDL_long ObjectType
  , /* Out   */ DATASOURCE_LIST_def *ObjectNameList
  , /* Out   */ ERROR_DESC_LIST_def *sqlWarning
  );

/********************************************
 * Operation 'odbccfg_CfgSvc_GetDataSource' *
 ********************************************/

/*
 * Exception number constants for
 * operation 'odbccfg_CfgSvc_GetDataSource'
 */
#define odbccfg_CfgSvc_GetDataSource_ParamError_exn_ 1
#define odbccfg_CfgSvc_GetDataSource_SQLError_exn_ 2
#define odbccfg_CfgSvc_GetDataSource_SQLNoDataFound_exn_ 3
/*
 * Exception union for
 * operation 'odbccfg_CfgSvc_GetDataSource'
 */
struct odbccfg_CfgSvc_GetDataSource_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbccfg_CfgSvc_ParamError ParamError;
    odbccfg_CfgSvc_SQLError SQLError;
  } u;
};
/*
 * Local index for operation 'odbccfg_CfgSvc_GetDataSource'
 */
#define odbccfg_CfgSvc_GetDataSource_ldx_ ((IDL_unsigned_long) 2)
/*
 * Operation synopsis for operation 'odbccfg_CfgSvc_GetDataSource'
 */
#define odbccfg_CfgSvc_GetDataSource_osy_ ((IDL_long) 1549236394)
/*
 * Call Completion function pointer type for
 * operation 'odbccfg_CfgSvc_GetDataSource'
 */
typedef void (*odbccfg_CfgSvc_GetDataSource_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_GetDataSource_exc_ *exception_
  , /* In    */ const DATASOURCE_DESC_def *DSValues
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Call Completion function prototype for
 * operation 'odbccfg_CfgSvc_GetDataSource'
 */
extern "C" void
odbccfg_CfgSvc_GetDataSource_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_GetDataSource_exc_ *exception_
  , /* In    */ const DATASOURCE_DESC_def *DSValues
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Asynchronous object call for
 * operation 'odbccfg_CfgSvc_GetDataSource'
 */
extern "C" CEE_status
odbccfg_CfgSvc_GetDataSource_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbccfg_CfgSvc_GetDataSource_cct_ rtn_
  , /* In    */ const IDL_char *KeyValue
  );
/*
 * Synchronous object call for
 * operation 'odbccfg_CfgSvc_GetDataSource'
 */
extern "C" void
odbccfg_CfgSvc_GetDataSource(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbccfg_CfgSvc_GetDataSource_exc_ *exception_
  , /* In    */ const IDL_char *KeyValue
  , /* Out   */ DATASOURCE_DESC_def *DSValues
  , /* Out   */ ERROR_DESC_LIST_def *sqlWarning
  );

/*********************************************
 * Operation 'odbccfg_CfgSvc_DropDataSource' *
 *********************************************/

/*
 * Exception number constants for
 * operation 'odbccfg_CfgSvc_DropDataSource'
 */
#define odbccfg_CfgSvc_DropDataSource_ParamError_exn_ 1
#define odbccfg_CfgSvc_DropDataSource_SQLError_exn_ 2
#define odbccfg_CfgSvc_DropDataSource_SQLNoDataFound_exn_ 3
#define odbccfg_CfgSvc_DropDataSource_CFGDataError_exn_ 4
/*
 * Exception union for
 * operation 'odbccfg_CfgSvc_DropDataSource'
 */
struct odbccfg_CfgSvc_DropDataSource_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbccfg_CfgSvc_ParamError ParamError;
    odbccfg_CfgSvc_SQLError SQLError;
  } u;
};
/*
 * Local index for operation 'odbccfg_CfgSvc_DropDataSource'
 */
#define odbccfg_CfgSvc_DropDataSource_ldx_ ((IDL_unsigned_long) 3)
/*
 * Operation synopsis for operation 'odbccfg_CfgSvc_DropDataSource'
 */
#define odbccfg_CfgSvc_DropDataSource_osy_ ((IDL_long) -281565797)
/*
 * Call Completion function pointer type for
 * operation 'odbccfg_CfgSvc_DropDataSource'
 */
typedef void (*odbccfg_CfgSvc_DropDataSource_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_DropDataSource_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Call Completion function prototype for
 * operation 'odbccfg_CfgSvc_DropDataSource'
 */
extern "C" void
odbccfg_CfgSvc_DropDataSource_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_DropDataSource_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Asynchronous object call for
 * operation 'odbccfg_CfgSvc_DropDataSource'
 */
extern "C" CEE_status
odbccfg_CfgSvc_DropDataSource_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbccfg_CfgSvc_DropDataSource_cct_ rtn_
  , /* In    */ const IDL_char *KeyValue
  );
/*
 * Synchronous object call for
 * operation 'odbccfg_CfgSvc_DropDataSource'
 */
extern "C" void
odbccfg_CfgSvc_DropDataSource(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbccfg_CfgSvc_DropDataSource_exc_ *exception_
  , /* In    */ const IDL_char *KeyValue
  , /* Out   */ ERROR_DESC_LIST_def *sqlWarning
  );

/********************************************
 * Operation 'odbccfg_CfgSvc_SetDataSource' *
 ********************************************/

/*
 * Exception number constants for
 * operation 'odbccfg_CfgSvc_SetDataSource'
 */
#define odbccfg_CfgSvc_SetDataSource_ParamError_exn_ 1
#define odbccfg_CfgSvc_SetDataSource_SQLError_exn_ 2
#define odbccfg_CfgSvc_SetDataSource_SQLNoDataFound_exn_ 3
/*
 * Exception union for
 * operation 'odbccfg_CfgSvc_SetDataSource'
 */
struct odbccfg_CfgSvc_SetDataSource_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbccfg_CfgSvc_ParamError ParamError;
    odbccfg_CfgSvc_SQLError SQLError;
  } u;
};
/*
 * Local index for operation 'odbccfg_CfgSvc_SetDataSource'
 */
#define odbccfg_CfgSvc_SetDataSource_ldx_ ((IDL_unsigned_long) 4)
/*
 * Operation synopsis for operation 'odbccfg_CfgSvc_SetDataSource'
 */
#define odbccfg_CfgSvc_SetDataSource_osy_ ((IDL_long) -1707767786)
/*
 * Call Completion function pointer type for
 * operation 'odbccfg_CfgSvc_SetDataSource'
 */
typedef void (*odbccfg_CfgSvc_SetDataSource_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_SetDataSource_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Call Completion function prototype for
 * operation 'odbccfg_CfgSvc_SetDataSource'
 */
extern "C" void
odbccfg_CfgSvc_SetDataSource_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_SetDataSource_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Asynchronous object call for
 * operation 'odbccfg_CfgSvc_SetDataSource'
 */
extern "C" CEE_status
odbccfg_CfgSvc_SetDataSource_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbccfg_CfgSvc_SetDataSource_cct_ rtn_
  , /* In    */ const DATASOURCE_DESC_def *DSValues
  );
/*
 * Synchronous object call for
 * operation 'odbccfg_CfgSvc_SetDataSource'
 */
extern "C" void
odbccfg_CfgSvc_SetDataSource(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbccfg_CfgSvc_SetDataSource_exc_ *exception_
  , /* In    */ const DATASOURCE_DESC_def *DSValues
  , /* Out   */ ERROR_DESC_LIST_def *sqlWarning
  );

/***********************************************
 * Operation 'odbccfg_CfgSvc_AddNewDataSource' *
 ***********************************************/

/*
 * Exception number constants for
 * operation 'odbccfg_CfgSvc_AddNewDataSource'
 */
#define odbccfg_CfgSvc_AddNewDataSource_ParamError_exn_ 1
#define odbccfg_CfgSvc_AddNewDataSource_SQLError_exn_ 2
#define odbccfg_CfgSvc_AddNewDataSource_SQLNoDataFound_exn_ 3
/*
 * Exception union for
 * operation 'odbccfg_CfgSvc_AddNewDataSource'
 */
struct odbccfg_CfgSvc_AddNewDataSource_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbccfg_CfgSvc_ParamError ParamError;
    odbccfg_CfgSvc_SQLError SQLError;
  } u;
};
/*
 * Local index for operation 'odbccfg_CfgSvc_AddNewDataSource'
 */
#define odbccfg_CfgSvc_AddNewDataSource_ldx_ ((IDL_unsigned_long) 5)
/*
 * Operation synopsis for operation 'odbccfg_CfgSvc_AddNewDataSource'
 */
#define odbccfg_CfgSvc_AddNewDataSource_osy_ ((IDL_long) -1903900215)
/*
 * Call Completion function pointer type for
 * operation 'odbccfg_CfgSvc_AddNewDataSource'
 */
typedef void (*odbccfg_CfgSvc_AddNewDataSource_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_AddNewDataSource_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Call Completion function prototype for
 * operation 'odbccfg_CfgSvc_AddNewDataSource'
 */
extern "C" void
odbccfg_CfgSvc_AddNewDataSource_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_AddNewDataSource_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Asynchronous object call for
 * operation 'odbccfg_CfgSvc_AddNewDataSource'
 */
extern "C" CEE_status
odbccfg_CfgSvc_AddNewDataSource_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbccfg_CfgSvc_AddNewDataSource_cct_ rtn_
  , /* In    */ const DATASOURCE_DESC_def *DSValues
  );
/*
 * Synchronous object call for
 * operation 'odbccfg_CfgSvc_AddNewDataSource'
 */
extern "C" void
odbccfg_CfgSvc_AddNewDataSource(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbccfg_CfgSvc_AddNewDataSource_exc_ *exception_
  , /* In    */ const DATASOURCE_DESC_def *DSValues
  , /* Out   */ ERROR_DESC_LIST_def *sqlWarning
  );

/**************************************************
 * Operation 'odbccfg_CfgSvc_CheckDataSourceName' *
 **************************************************/

/*
 * Exception number constants for
 * operation 'odbccfg_CfgSvc_CheckDataSourceName'
 */
#define odbccfg_CfgSvc_CheckDataSourceName_ParamError_exn_ 1
#define odbccfg_CfgSvc_CheckDataSourceName_SQLError_exn_ 2
#define odbccfg_CfgSvc_CheckDataSourceName_SQLNoDataFound_exn_ 3
/*
 * Exception union for
 * operation 'odbccfg_CfgSvc_CheckDataSourceName'
 */
struct odbccfg_CfgSvc_CheckDataSourceName_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbccfg_CfgSvc_ParamError ParamError;
    odbccfg_CfgSvc_SQLError SQLError;
  } u;
};
/*
 * Local index for operation 'odbccfg_CfgSvc_CheckDataSourceName'
 */
#define odbccfg_CfgSvc_CheckDataSourceName_ldx_ ((IDL_unsigned_long) 6)
/*
 * Operation synopsis for operation 'odbccfg_CfgSvc_CheckDataSourceName'
 */
#define odbccfg_CfgSvc_CheckDataSourceName_osy_ ((IDL_long) 28006833)
/*
 * Call Completion function pointer type for
 * operation 'odbccfg_CfgSvc_CheckDataSourceName'
 */
typedef void (*odbccfg_CfgSvc_CheckDataSourceName_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_CheckDataSourceName_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Call Completion function prototype for
 * operation 'odbccfg_CfgSvc_CheckDataSourceName'
 */
extern "C" void
odbccfg_CfgSvc_CheckDataSourceName_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_CheckDataSourceName_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Asynchronous object call for
 * operation 'odbccfg_CfgSvc_CheckDataSourceName'
 */
extern "C" CEE_status
odbccfg_CfgSvc_CheckDataSourceName_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbccfg_CfgSvc_CheckDataSourceName_cct_ rtn_
  , /* In    */ const IDL_char *KeyValue
  );
/*
 * Synchronous object call for
 * operation 'odbccfg_CfgSvc_CheckDataSourceName'
 */
extern "C" void
odbccfg_CfgSvc_CheckDataSourceName(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbccfg_CfgSvc_CheckDataSourceName_exc_ *exception_
  , /* In    */ const IDL_char *KeyValue
  , /* Out   */ ERROR_DESC_LIST_def *sqlWarning
  );

/********************************************
 * Operation 'odbccfg_CfgSvc_GetDSNControl' *
 ********************************************/

/*
 * Exception number constants for
 * operation 'odbccfg_CfgSvc_GetDSNControl'
 */
#define odbccfg_CfgSvc_GetDSNControl_ParamError_exn_ 1
#define odbccfg_CfgSvc_GetDSNControl_SQLError_exn_ 2
#define odbccfg_CfgSvc_GetDSNControl_SQLNoDataFound_exn_ 3
/*
 * Exception union for
 * operation 'odbccfg_CfgSvc_GetDSNControl'
 */
struct odbccfg_CfgSvc_GetDSNControl_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbccfg_CfgSvc_ParamError ParamError;
    odbccfg_CfgSvc_SQLError SQLError;
  } u;
};
/*
 * Local index for operation 'odbccfg_CfgSvc_GetDSNControl'
 */
#define odbccfg_CfgSvc_GetDSNControl_ldx_ ((IDL_unsigned_long) 7)
/*
 * Operation synopsis for operation 'odbccfg_CfgSvc_GetDSNControl'
 */
#define odbccfg_CfgSvc_GetDSNControl_osy_ ((IDL_long) 914615526)
/*
 * Call Completion function pointer type for
 * operation 'odbccfg_CfgSvc_GetDSNControl'
 */
typedef void (*odbccfg_CfgSvc_GetDSNControl_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_GetDSNControl_exc_ *exception_
  , /* In    */ IDL_long automation
  , /* In    */ IDL_long curStatus
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Call Completion function prototype for
 * operation 'odbccfg_CfgSvc_GetDSNControl'
 */
extern "C" void
odbccfg_CfgSvc_GetDSNControl_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_GetDSNControl_exc_ *exception_
  , /* In    */ IDL_long automation
  , /* In    */ IDL_long curStatus
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Asynchronous object call for
 * operation 'odbccfg_CfgSvc_GetDSNControl'
 */
extern "C" CEE_status
odbccfg_CfgSvc_GetDSNControl_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbccfg_CfgSvc_GetDSNControl_cct_ rtn_
  , /* In    */ const IDL_char *KeyValue
  );
/*
 * Synchronous object call for
 * operation 'odbccfg_CfgSvc_GetDSNControl'
 */
extern "C" void
odbccfg_CfgSvc_GetDSNControl(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbccfg_CfgSvc_GetDSNControl_exc_ *exception_
  , /* In    */ const IDL_char *KeyValue
  , /* Out   */ IDL_long *automation
  , /* Out   */ IDL_long *curStatus
  , /* Out   */ ERROR_DESC_LIST_def *sqlWarning
  );

/********************************************
 * Operation 'odbccfg_CfgSvc_SetDSNControl' *
 ********************************************/

/*
 * Exception number constants for
 * operation 'odbccfg_CfgSvc_SetDSNControl'
 */
#define odbccfg_CfgSvc_SetDSNControl_ParamError_exn_ 1
#define odbccfg_CfgSvc_SetDSNControl_SQLError_exn_ 2
#define odbccfg_CfgSvc_SetDSNControl_SQLNoDataFound_exn_ 3
/*
 * Exception union for
 * operation 'odbccfg_CfgSvc_SetDSNControl'
 */
struct odbccfg_CfgSvc_SetDSNControl_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbccfg_CfgSvc_ParamError ParamError;
    odbccfg_CfgSvc_SQLError SQLError;
  } u;
};
/*
 * Local index for operation 'odbccfg_CfgSvc_SetDSNControl'
 */
#define odbccfg_CfgSvc_SetDSNControl_ldx_ ((IDL_unsigned_long) 8)
/*
 * Operation synopsis for operation 'odbccfg_CfgSvc_SetDSNControl'
 */
#define odbccfg_CfgSvc_SetDSNControl_osy_ ((IDL_long) -884368217)
/*
 * Call Completion function pointer type for
 * operation 'odbccfg_CfgSvc_SetDSNControl'
 */
typedef void (*odbccfg_CfgSvc_SetDSNControl_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_SetDSNControl_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Call Completion function prototype for
 * operation 'odbccfg_CfgSvc_SetDSNControl'
 */
extern "C" void
odbccfg_CfgSvc_SetDSNControl_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_SetDSNControl_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Asynchronous object call for
 * operation 'odbccfg_CfgSvc_SetDSNControl'
 */
extern "C" CEE_status
odbccfg_CfgSvc_SetDSNControl_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbccfg_CfgSvc_SetDSNControl_cct_ rtn_
  , /* In    */ const IDL_char *KeyValue
  , /* In    */ IDL_long automation
  );
/*
 * Synchronous object call for
 * operation 'odbccfg_CfgSvc_SetDSNControl'
 */
extern "C" void
odbccfg_CfgSvc_SetDSNControl(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbccfg_CfgSvc_SetDSNControl_exc_ *exception_
  , /* In    */ const IDL_char *KeyValue
  , /* In    */ IDL_long automation
  , /* Out   */ ERROR_DESC_LIST_def *sqlWarning
  );

/************************************************
 * Operation 'odbccfg_CfgSvc_GetResourceValues' *
 ************************************************/

/*
 * Exception number constants for
 * operation 'odbccfg_CfgSvc_GetResourceValues'
 */
#define odbccfg_CfgSvc_GetResourceValues_ParamError_exn_ 1
#define odbccfg_CfgSvc_GetResourceValues_SQLError_exn_ 2
#define odbccfg_CfgSvc_GetResourceValues_SQLNoDataFound_exn_ 3
/*
 * Exception union for
 * operation 'odbccfg_CfgSvc_GetResourceValues'
 */
struct odbccfg_CfgSvc_GetResourceValues_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbccfg_CfgSvc_ParamError ParamError;
    odbccfg_CfgSvc_SQLError SQLError;
  } u;
};
/*
 * Local index for operation 'odbccfg_CfgSvc_GetResourceValues'
 */
#define odbccfg_CfgSvc_GetResourceValues_ldx_ ((IDL_unsigned_long) 9)
/*
 * Operation synopsis for operation 'odbccfg_CfgSvc_GetResourceValues'
 */
#define odbccfg_CfgSvc_GetResourceValues_osy_ ((IDL_long) -1271159434)
/*
 * Call Completion function pointer type for
 * operation 'odbccfg_CfgSvc_GetResourceValues'
 */
typedef void (*odbccfg_CfgSvc_GetResourceValues_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_GetResourceValues_exc_ *exception_
  , /* In    */ const RES_DESC_LIST_def *ResValueList
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Call Completion function prototype for
 * operation 'odbccfg_CfgSvc_GetResourceValues'
 */
extern "C" void
odbccfg_CfgSvc_GetResourceValues_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_GetResourceValues_exc_ *exception_
  , /* In    */ const RES_DESC_LIST_def *ResValueList
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Asynchronous object call for
 * operation 'odbccfg_CfgSvc_GetResourceValues'
 */
extern "C" CEE_status
odbccfg_CfgSvc_GetResourceValues_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbccfg_CfgSvc_GetResourceValues_cct_ rtn_
  , /* In    */ CfgSvc_REQ_def KeyType
  , /* In    */ const IDL_char *KeyValue
  );
/*
 * Synchronous object call for
 * operation 'odbccfg_CfgSvc_GetResourceValues'
 */
extern "C" void
odbccfg_CfgSvc_GetResourceValues(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbccfg_CfgSvc_GetResourceValues_exc_ *exception_
  , /* In    */ CfgSvc_REQ_def KeyType
  , /* In    */ const IDL_char *KeyValue
  , /* Out   */ RES_DESC_LIST_def *ResValueList
  , /* Out   */ ERROR_DESC_LIST_def *sqlWarning
  );

/************************************************
 * Operation 'odbccfg_CfgSvc_SetResourceValues' *
 ************************************************/

/*
 * Exception number constants for
 * operation 'odbccfg_CfgSvc_SetResourceValues'
 */
#define odbccfg_CfgSvc_SetResourceValues_ParamError_exn_ 1
#define odbccfg_CfgSvc_SetResourceValues_SQLError_exn_ 2
#define odbccfg_CfgSvc_SetResourceValues_SQLNoDataFound_exn_ 3
/*
 * Exception union for
 * operation 'odbccfg_CfgSvc_SetResourceValues'
 */
struct odbccfg_CfgSvc_SetResourceValues_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbccfg_CfgSvc_ParamError ParamError;
    odbccfg_CfgSvc_SQLError SQLError;
  } u;
};
/*
 * Local index for operation 'odbccfg_CfgSvc_SetResourceValues'
 */
#define odbccfg_CfgSvc_SetResourceValues_ldx_ ((IDL_unsigned_long) 10)
/*
 * Operation synopsis for operation 'odbccfg_CfgSvc_SetResourceValues'
 */
#define odbccfg_CfgSvc_SetResourceValues_osy_ ((IDL_long) 2022296519)
/*
 * Call Completion function pointer type for
 * operation 'odbccfg_CfgSvc_SetResourceValues'
 */
typedef void (*odbccfg_CfgSvc_SetResourceValues_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_SetResourceValues_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Call Completion function prototype for
 * operation 'odbccfg_CfgSvc_SetResourceValues'
 */
extern "C" void
odbccfg_CfgSvc_SetResourceValues_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_SetResourceValues_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Asynchronous object call for
 * operation 'odbccfg_CfgSvc_SetResourceValues'
 */
extern "C" CEE_status
odbccfg_CfgSvc_SetResourceValues_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbccfg_CfgSvc_SetResourceValues_cct_ rtn_
  , /* In    */ CfgSvc_REQ_def KeyType
  , /* In    */ const IDL_char *KeyValue
  , /* In    */ const RES_DESC_LIST_def *ResValueList
  );
/*
 * Synchronous object call for
 * operation 'odbccfg_CfgSvc_SetResourceValues'
 */
extern "C" void
odbccfg_CfgSvc_SetResourceValues(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbccfg_CfgSvc_SetResourceValues_exc_ *exception_
  , /* In    */ CfgSvc_REQ_def KeyType
  , /* In    */ const IDL_char *KeyValue
  , /* In    */ const RES_DESC_LIST_def *ResValueList
  , /* Out   */ ERROR_DESC_LIST_def *sqlWarning
  );

/***************************************************
 * Operation 'odbccfg_CfgSvc_GetEnvironmentValues' *
 ***************************************************/

/*
 * Exception number constants for
 * operation 'odbccfg_CfgSvc_GetEnvironmentValues'
 */
#define odbccfg_CfgSvc_GetEnvironmentValues_ParamError_exn_ 1
#define odbccfg_CfgSvc_GetEnvironmentValues_SQLError_exn_ 2
#define odbccfg_CfgSvc_GetEnvironmentValues_SQLNoDataFound_exn_ 3
/*
 * Exception union for
 * operation 'odbccfg_CfgSvc_GetEnvironmentValues'
 */
struct odbccfg_CfgSvc_GetEnvironmentValues_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbccfg_CfgSvc_ParamError ParamError;
    odbccfg_CfgSvc_SQLError SQLError;
  } u;
};
/*
 * Local index for operation 'odbccfg_CfgSvc_GetEnvironmentValues'
 */
#define odbccfg_CfgSvc_GetEnvironmentValues_ldx_ ((IDL_unsigned_long) 11)
/*
 * Operation synopsis for operation 'odbccfg_CfgSvc_GetEnvironmentValues'
 */
#define odbccfg_CfgSvc_GetEnvironmentValues_osy_ ((IDL_long) 1883882712)
/*
 * Call Completion function pointer type for
 * operation 'odbccfg_CfgSvc_GetEnvironmentValues'
 */
typedef void (*odbccfg_CfgSvc_GetEnvironmentValues_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_GetEnvironmentValues_exc_ *exception_
  , /* In    */ const ENV_DESC_LIST_def *EnvValueList
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Call Completion function prototype for
 * operation 'odbccfg_CfgSvc_GetEnvironmentValues'
 */
extern "C" void
odbccfg_CfgSvc_GetEnvironmentValues_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_GetEnvironmentValues_exc_ *exception_
  , /* In    */ const ENV_DESC_LIST_def *EnvValueList
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Asynchronous object call for
 * operation 'odbccfg_CfgSvc_GetEnvironmentValues'
 */
extern "C" CEE_status
odbccfg_CfgSvc_GetEnvironmentValues_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbccfg_CfgSvc_GetEnvironmentValues_cct_ rtn_
  , /* In    */ CfgSvc_REQ_def KeyType
  , /* In    */ const IDL_char *KeyValue
  );
/*
 * Synchronous object call for
 * operation 'odbccfg_CfgSvc_GetEnvironmentValues'
 */
extern "C" void
odbccfg_CfgSvc_GetEnvironmentValues(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbccfg_CfgSvc_GetEnvironmentValues_exc_ *exception_
  , /* In    */ CfgSvc_REQ_def KeyType
  , /* In    */ const IDL_char *KeyValue
  , /* Out   */ ENV_DESC_LIST_def *EnvValueList
  , /* Out   */ ERROR_DESC_LIST_def *sqlWarning
  );

/***************************************************
 * Operation 'odbccfg_CfgSvc_SetEnvironmentValues' *
 ***************************************************/

/*
 * Exception number constants for
 * operation 'odbccfg_CfgSvc_SetEnvironmentValues'
 */
#define odbccfg_CfgSvc_SetEnvironmentValues_ParamError_exn_ 1
#define odbccfg_CfgSvc_SetEnvironmentValues_SQLError_exn_ 2
#define odbccfg_CfgSvc_SetEnvironmentValues_SQLNoDataFound_exn_ 3
/*
 * Exception union for
 * operation 'odbccfg_CfgSvc_SetEnvironmentValues'
 */
struct odbccfg_CfgSvc_SetEnvironmentValues_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbccfg_CfgSvc_ParamError ParamError;
    odbccfg_CfgSvc_SQLError SQLError;
  } u;
};
/*
 * Local index for operation 'odbccfg_CfgSvc_SetEnvironmentValues'
 */
#define odbccfg_CfgSvc_SetEnvironmentValues_ldx_ ((IDL_unsigned_long) 12)
/*
 * Operation synopsis for operation 'odbccfg_CfgSvc_SetEnvironmentValues'
 */
#define odbccfg_CfgSvc_SetEnvironmentValues_osy_ ((IDL_long) -1143515871)
/*
 * Call Completion function pointer type for
 * operation 'odbccfg_CfgSvc_SetEnvironmentValues'
 */
typedef void (*odbccfg_CfgSvc_SetEnvironmentValues_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_SetEnvironmentValues_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Call Completion function prototype for
 * operation 'odbccfg_CfgSvc_SetEnvironmentValues'
 */
extern "C" void
odbccfg_CfgSvc_SetEnvironmentValues_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_SetEnvironmentValues_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Asynchronous object call for
 * operation 'odbccfg_CfgSvc_SetEnvironmentValues'
 */
extern "C" CEE_status
odbccfg_CfgSvc_SetEnvironmentValues_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbccfg_CfgSvc_SetEnvironmentValues_cct_ rtn_
  , /* In    */ CfgSvc_REQ_def KeyType
  , /* In    */ const IDL_char *KeyValue
  , /* In    */ const ENV_DESC_LIST_def *EnvValueList
  );
/*
 * Synchronous object call for
 * operation 'odbccfg_CfgSvc_SetEnvironmentValues'
 */
extern "C" void
odbccfg_CfgSvc_SetEnvironmentValues(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbccfg_CfgSvc_SetEnvironmentValues_exc_ *exception_
  , /* In    */ CfgSvc_REQ_def KeyType
  , /* In    */ const IDL_char *KeyValue
  , /* In    */ const ENV_DESC_LIST_def *EnvValueList
  , /* Out   */ ERROR_DESC_LIST_def *sqlWarning
  );

/*****************************************************
 * Operation 'odbccfg_CfgSvc_GetStartupConfigValues' *
 *****************************************************/

/*
 * Exception number constants for
 * operation 'odbccfg_CfgSvc_GetStartupConfigValues'
 */
#define odbccfg_CfgSvc_GetStartupConfigValues_ParamError_exn_ 1
#define odbccfg_CfgSvc_GetStartupConfigValues_SQLError_exn_ 2
#define odbccfg_CfgSvc_GetStartupConfigValues_SQLNoDataFound_exn_ 3
/*
 * Exception union for
 * operation 'odbccfg_CfgSvc_GetStartupConfigValues'
 */
struct odbccfg_CfgSvc_GetStartupConfigValues_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbccfg_CfgSvc_ParamError ParamError;
    odbccfg_CfgSvc_SQLError SQLError;
  } u;
};
/*
 * Local index for operation 'odbccfg_CfgSvc_GetStartupConfigValues'
 */
#define odbccfg_CfgSvc_GetStartupConfigValues_ldx_ ((IDL_unsigned_long) 13)
/*
 * Operation synopsis for operation 'odbccfg_CfgSvc_GetStartupConfigValues'
 */
#define odbccfg_CfgSvc_GetStartupConfigValues_osy_ ((IDL_long) -891401862)
/*
 * Call Completion function pointer type for
 * operation 'odbccfg_CfgSvc_GetStartupConfigValues'
 */
typedef void (*odbccfg_CfgSvc_GetStartupConfigValues_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_GetStartupConfigValues_exc_ *exception_
  , /* In    */ IDL_short serviceStatus
  , /* In    */ IDL_long serviceStatusChangeTime
  , /* In    */ IDL_long isoMapping
  , /* In    */ const DATASOURCE_CFG_LIST_def *DSList
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Call Completion function prototype for
 * operation 'odbccfg_CfgSvc_GetStartupConfigValues'
 */
extern "C" void
odbccfg_CfgSvc_GetStartupConfigValues_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_GetStartupConfigValues_exc_ *exception_
  , /* In    */ IDL_short serviceStatus
  , /* In    */ IDL_long serviceStatusChangeTime
  , /* In    */ IDL_long isoMapping
  , /* In    */ const DATASOURCE_CFG_LIST_def *DSList
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Asynchronous object call for
 * operation 'odbccfg_CfgSvc_GetStartupConfigValues'
 */
extern "C" CEE_status
odbccfg_CfgSvc_GetStartupConfigValues_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbccfg_CfgSvc_GetStartupConfigValues_cct_ rtn_
  );
/*
 * Synchronous object call for
 * operation 'odbccfg_CfgSvc_GetStartupConfigValues'
 */
extern "C" void
odbccfg_CfgSvc_GetStartupConfigValues(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbccfg_CfgSvc_GetStartupConfigValues_exc_ *exception_
  , /* Out   */ IDL_short *serviceStatus
  , /* Out   */ IDL_long *serviceStatusChangeTime
  , /* Out   */ IDL_long *isoMapping
  , /* Out   */ DATASOURCE_CFG_LIST_def *DSList
  , /* Out   */ ERROR_DESC_LIST_def *sqlWarning
  );

/**************************************************
 * Operation 'odbccfg_CfgSvc_GetDataSourceValues' *
 **************************************************/

/*
 * Exception number constants for
 * operation 'odbccfg_CfgSvc_GetDataSourceValues'
 */
#define odbccfg_CfgSvc_GetDataSourceValues_ParamError_exn_ 1
#define odbccfg_CfgSvc_GetDataSourceValues_SQLError_exn_ 2
#define odbccfg_CfgSvc_GetDataSourceValues_SQLNoDataFound_exn_ 3
/*
 * Exception union for
 * operation 'odbccfg_CfgSvc_GetDataSourceValues'
 */
struct odbccfg_CfgSvc_GetDataSourceValues_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbccfg_CfgSvc_ParamError ParamError;
    odbccfg_CfgSvc_SQLError SQLError;
  } u;
};
/*
 * Local index for operation 'odbccfg_CfgSvc_GetDataSourceValues'
 */
#define odbccfg_CfgSvc_GetDataSourceValues_ldx_ ((IDL_unsigned_long) 14)
/*
 * Operation synopsis for operation 'odbccfg_CfgSvc_GetDataSourceValues'
 */
#define odbccfg_CfgSvc_GetDataSourceValues_osy_ ((IDL_long) -1168311702)
/*
 * Call Completion function pointer type for
 * operation 'odbccfg_CfgSvc_GetDataSourceValues'
 */
typedef void (*odbccfg_CfgSvc_GetDataSourceValues_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_GetDataSourceValues_exc_ *exception_
  , /* In    */ const DATASOURCE_CFG_def *DSValues
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Call Completion function prototype for
 * operation 'odbccfg_CfgSvc_GetDataSourceValues'
 */
extern "C" void
odbccfg_CfgSvc_GetDataSourceValues_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_GetDataSourceValues_exc_ *exception_
  , /* In    */ const DATASOURCE_CFG_def *DSValues
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Asynchronous object call for
 * operation 'odbccfg_CfgSvc_GetDataSourceValues'
 */
extern "C" CEE_status
odbccfg_CfgSvc_GetDataSourceValues_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbccfg_CfgSvc_GetDataSourceValues_cct_ rtn_
  , /* In    */ const IDL_char *DSName
  );
/*
 * Synchronous object call for
 * operation 'odbccfg_CfgSvc_GetDataSourceValues'
 */
extern "C" void
odbccfg_CfgSvc_GetDataSourceValues(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbccfg_CfgSvc_GetDataSourceValues_exc_ *exception_
  , /* In    */ const IDL_char *DSName
  , /* Out   */ DATASOURCE_CFG_def *DSValues
  , /* Out   */ ERROR_DESC_LIST_def *sqlWarning
  );

/******************************************
 * Operation 'odbccfg_CfgSvc_SetDSStatus' *
 ******************************************/

/*
 * Exception number constants for
 * operation 'odbccfg_CfgSvc_SetDSStatus'
 */
#define odbccfg_CfgSvc_SetDSStatus_ParamError_exn_ 1
#define odbccfg_CfgSvc_SetDSStatus_SQLError_exn_ 2
#define odbccfg_CfgSvc_SetDSStatus_SQLNoDataFound_exn_ 3
/*
 * Exception union for
 * operation 'odbccfg_CfgSvc_SetDSStatus'
 */
struct odbccfg_CfgSvc_SetDSStatus_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbccfg_CfgSvc_ParamError ParamError;
    odbccfg_CfgSvc_SQLError SQLError;
  } u;
};
/*
 * Local index for operation 'odbccfg_CfgSvc_SetDSStatus'
 */
#define odbccfg_CfgSvc_SetDSStatus_ldx_ ((IDL_unsigned_long) 15)
/*
 * Operation synopsis for operation 'odbccfg_CfgSvc_SetDSStatus'
 */
#define odbccfg_CfgSvc_SetDSStatus_osy_ ((IDL_long) -1540078431)
/*
 * Call Completion function pointer type for
 * operation 'odbccfg_CfgSvc_SetDSStatus'
 */
typedef void (*odbccfg_CfgSvc_SetDSStatus_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_SetDSStatus_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Call Completion function prototype for
 * operation 'odbccfg_CfgSvc_SetDSStatus'
 */
extern "C" void
odbccfg_CfgSvc_SetDSStatus_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_SetDSStatus_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Asynchronous object call for
 * operation 'odbccfg_CfgSvc_SetDSStatus'
 */
extern "C" CEE_status
odbccfg_CfgSvc_SetDSStatus_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbccfg_CfgSvc_SetDSStatus_cct_ rtn_
  , /* In    */ const IDL_char *DSNm
  , /* In    */ IDL_short status
  , /* In    */ const IDL_char *statusChangedTime
  );
/*
 * Synchronous object call for
 * operation 'odbccfg_CfgSvc_SetDSStatus'
 */
extern "C" void
odbccfg_CfgSvc_SetDSStatus(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbccfg_CfgSvc_SetDSStatus_exc_ *exception_
  , /* In    */ const IDL_char *DSNm
  , /* In    */ IDL_short status
  , /* In    */ const IDL_char *statusChangedTime
  , /* Out   */ ERROR_DESC_LIST_def *sqlWarning
  );

/******************************************
 * Operation 'odbccfg_CfgSvc_SetASStatus' *
 ******************************************/

/*
 * Exception number constants for
 * operation 'odbccfg_CfgSvc_SetASStatus'
 */
#define odbccfg_CfgSvc_SetASStatus_ParamError_exn_ 1
#define odbccfg_CfgSvc_SetASStatus_SQLError_exn_ 2
#define odbccfg_CfgSvc_SetASStatus_SQLNoDataFound_exn_ 3
/*
 * Exception union for
 * operation 'odbccfg_CfgSvc_SetASStatus'
 */
struct odbccfg_CfgSvc_SetASStatus_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbccfg_CfgSvc_ParamError ParamError;
    odbccfg_CfgSvc_SQLError SQLError;
  } u;
};
/*
 * Local index for operation 'odbccfg_CfgSvc_SetASStatus'
 */
#define odbccfg_CfgSvc_SetASStatus_ldx_ ((IDL_unsigned_long) 16)
/*
 * Operation synopsis for operation 'odbccfg_CfgSvc_SetASStatus'
 */
#define odbccfg_CfgSvc_SetASStatus_osy_ ((IDL_long) 1262533997)
/*
 * Call Completion function pointer type for
 * operation 'odbccfg_CfgSvc_SetASStatus'
 */
typedef void (*odbccfg_CfgSvc_SetASStatus_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_SetASStatus_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Call Completion function prototype for
 * operation 'odbccfg_CfgSvc_SetASStatus'
 */
extern "C" void
odbccfg_CfgSvc_SetASStatus_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_SetASStatus_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Asynchronous object call for
 * operation 'odbccfg_CfgSvc_SetASStatus'
 */
extern "C" CEE_status
odbccfg_CfgSvc_SetASStatus_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbccfg_CfgSvc_SetASStatus_cct_ rtn_
  , /* In    */ IDL_short status
  , /* In    */ const IDL_char *statusChangedTime
  );
/*
 * Synchronous object call for
 * operation 'odbccfg_CfgSvc_SetASStatus'
 */
extern "C" void
odbccfg_CfgSvc_SetASStatus(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbccfg_CfgSvc_SetASStatus_exc_ *exception_
  , /* In    */ IDL_short status
  , /* In    */ const IDL_char *statusChangedTime
  , /* Out   */ ERROR_DESC_LIST_def *sqlWarning
  );

/**********************************************************
 * Operation 'odbccfg_CfgSvc_CreateConfigurationDatabase' *
 **********************************************************/

/*
 * Exception number constants for
 * operation 'odbccfg_CfgSvc_CreateConfigurationDatabase'
 */
#define odbccfg_CfgSvc_CreateConfigurationDatabase_ParamError_exn_ 1
#define odbccfg_CfgSvc_CreateConfigurationDatabase_SQLError_exn_ 2
#define odbccfg_CfgSvc_CreateConfigurationDatabase_SQLInvalidHandle_exn_ 3
#define odbccfg_CfgSvc_CreateConfigurationDatabase_DatabaseFound_exn_ 4
/*
 * Exception union for
 * operation 'odbccfg_CfgSvc_CreateConfigurationDatabase'
 */
struct odbccfg_CfgSvc_CreateConfigurationDatabase_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbccfg_CfgSvc_ParamError ParamError;
    odbccfg_CfgSvc_SQLError SQLError;
  } u;
};
/*
 * Local index for operation 'odbccfg_CfgSvc_CreateConfigurationDatabase'
 */
#define odbccfg_CfgSvc_CreateConfigurationDatabase_ldx_ ((IDL_unsigned_long) 17)
/*
 * Operation synopsis for operation 'odbccfg_CfgSvc_CreateConfigurationDatabase'
 */
#define odbccfg_CfgSvc_CreateConfigurationDatabase_osy_ ((IDL_long) -2038313241)
/*
 * Call Completion function pointer type for
 * operation 'odbccfg_CfgSvc_CreateConfigurationDatabase'
 */
typedef void (*odbccfg_CfgSvc_CreateConfigurationDatabase_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_CreateConfigurationDatabase_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Call Completion function prototype for
 * operation 'odbccfg_CfgSvc_CreateConfigurationDatabase'
 */
extern "C" void
odbccfg_CfgSvc_CreateConfigurationDatabase_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_CreateConfigurationDatabase_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Asynchronous object call for
 * operation 'odbccfg_CfgSvc_CreateConfigurationDatabase'
 */
extern "C" CEE_status
odbccfg_CfgSvc_CreateConfigurationDatabase_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbccfg_CfgSvc_CreateConfigurationDatabase_cct_ rtn_
  , /* In    */ IDL_long DatabaseVersion
  , /* In    */ IDL_string sqlVolumeLocationNm
  );
/*
 * Synchronous object call for
 * operation 'odbccfg_CfgSvc_CreateConfigurationDatabase'
 */
extern "C" void
odbccfg_CfgSvc_CreateConfigurationDatabase(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbccfg_CfgSvc_CreateConfigurationDatabase_exc_ *exception_
  , /* In    */ IDL_long DatabaseVersion
  , /* In    */ IDL_string sqlVolumeLocationNm
  , /* Out   */ ERROR_DESC_LIST_def *sqlWarning
  );

/**************************************************
 * Operation 'odbccfg_CfgSvc_CreateDatatypeTable' *
 **************************************************/

/*
 * Exception number constants for
 * operation 'odbccfg_CfgSvc_CreateDatatypeTable'
 */
#define odbccfg_CfgSvc_CreateDatatypeTable_ParamError_exn_ 1
#define odbccfg_CfgSvc_CreateDatatypeTable_SQLError_exn_ 2
#define odbccfg_CfgSvc_CreateDatatypeTable_SQLInvalidHandle_exn_ 3
#define odbccfg_CfgSvc_CreateDatatypeTable_DatabaseFound_exn_ 4
/*
 * Exception union for
 * operation 'odbccfg_CfgSvc_CreateDatatypeTable'
 */
struct odbccfg_CfgSvc_CreateDatatypeTable_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbccfg_CfgSvc_ParamError ParamError;
    odbccfg_CfgSvc_SQLError SQLError;
  } u;
};
/*
 * Local index for operation 'odbccfg_CfgSvc_CreateDatatypeTable'
 */
#define odbccfg_CfgSvc_CreateDatatypeTable_ldx_ ((IDL_unsigned_long) 18)
/*
 * Operation synopsis for operation 'odbccfg_CfgSvc_CreateDatatypeTable'
 */
#define odbccfg_CfgSvc_CreateDatatypeTable_osy_ ((IDL_long) 2084567037)
/*
 * Call Completion function pointer type for
 * operation 'odbccfg_CfgSvc_CreateDatatypeTable'
 */
typedef void (*odbccfg_CfgSvc_CreateDatatypeTable_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_CreateDatatypeTable_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Call Completion function prototype for
 * operation 'odbccfg_CfgSvc_CreateDatatypeTable'
 */
extern "C" void
odbccfg_CfgSvc_CreateDatatypeTable_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_CreateDatatypeTable_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Asynchronous object call for
 * operation 'odbccfg_CfgSvc_CreateDatatypeTable'
 */
extern "C" CEE_status
odbccfg_CfgSvc_CreateDatatypeTable_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbccfg_CfgSvc_CreateDatatypeTable_cct_ rtn_
  , /* In    */ IDL_long DatatypeTableVersion
  , /* In    */ IDL_string sqlVolumeLocationNm
  );
/*
 * Synchronous object call for
 * operation 'odbccfg_CfgSvc_CreateDatatypeTable'
 */
extern "C" void
odbccfg_CfgSvc_CreateDatatypeTable(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbccfg_CfgSvc_CreateDatatypeTable_exc_ *exception_
  , /* In    */ IDL_long DatatypeTableVersion
  , /* In    */ IDL_string sqlVolumeLocationNm
  , /* Out   */ ERROR_DESC_LIST_def *sqlWarning
  );

/********************************************************
 * Operation 'odbccfg_CfgSvc_DropConfigurationDatabase' *
 ********************************************************/

/*
 * Exception number constants for
 * operation 'odbccfg_CfgSvc_DropConfigurationDatabase'
 */
#define odbccfg_CfgSvc_DropConfigurationDatabase_ParamError_exn_ 1
#define odbccfg_CfgSvc_DropConfigurationDatabase_SQLError_exn_ 2
#define odbccfg_CfgSvc_DropConfigurationDatabase_SQLInvalidHandle_exn_ 3
#define odbccfg_CfgSvc_DropConfigurationDatabase_DatabaseNotFound_exn_ 4
/*
 * Exception union for
 * operation 'odbccfg_CfgSvc_DropConfigurationDatabase'
 */
struct odbccfg_CfgSvc_DropConfigurationDatabase_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbccfg_CfgSvc_ParamError ParamError;
    odbccfg_CfgSvc_SQLError SQLError;
  } u;
};
/*
 * Local index for operation 'odbccfg_CfgSvc_DropConfigurationDatabase'
 */
#define odbccfg_CfgSvc_DropConfigurationDatabase_ldx_ ((IDL_unsigned_long) 19)
/*
 * Operation synopsis for operation 'odbccfg_CfgSvc_DropConfigurationDatabase'
 */
#define odbccfg_CfgSvc_DropConfigurationDatabase_osy_ ((IDL_long) -1760006867)
/*
 * Call Completion function pointer type for
 * operation 'odbccfg_CfgSvc_DropConfigurationDatabase'
 */
typedef void (*odbccfg_CfgSvc_DropConfigurationDatabase_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_DropConfigurationDatabase_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Call Completion function prototype for
 * operation 'odbccfg_CfgSvc_DropConfigurationDatabase'
 */
extern "C" void
odbccfg_CfgSvc_DropConfigurationDatabase_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_DropConfigurationDatabase_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Asynchronous object call for
 * operation 'odbccfg_CfgSvc_DropConfigurationDatabase'
 */
extern "C" CEE_status
odbccfg_CfgSvc_DropConfigurationDatabase_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbccfg_CfgSvc_DropConfigurationDatabase_cct_ rtn_
  );
/*
 * Synchronous object call for
 * operation 'odbccfg_CfgSvc_DropConfigurationDatabase'
 */
extern "C" void
odbccfg_CfgSvc_DropConfigurationDatabase(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbccfg_CfgSvc_DropConfigurationDatabase_exc_ *exception_
  , /* Out   */ ERROR_DESC_LIST_def *sqlWarning
  );

/************************************************
 * Operation 'odbccfg_CfgSvc_DropDatatypeTable' *
 ************************************************/

/*
 * Exception number constants for
 * operation 'odbccfg_CfgSvc_DropDatatypeTable'
 */
#define odbccfg_CfgSvc_DropDatatypeTable_ParamError_exn_ 1
#define odbccfg_CfgSvc_DropDatatypeTable_SQLError_exn_ 2
#define odbccfg_CfgSvc_DropDatatypeTable_SQLInvalidHandle_exn_ 3
#define odbccfg_CfgSvc_DropDatatypeTable_DatabaseNotFound_exn_ 4
/*
 * Exception union for
 * operation 'odbccfg_CfgSvc_DropDatatypeTable'
 */
struct odbccfg_CfgSvc_DropDatatypeTable_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbccfg_CfgSvc_ParamError ParamError;
    odbccfg_CfgSvc_SQLError SQLError;
  } u;
};
/*
 * Local index for operation 'odbccfg_CfgSvc_DropDatatypeTable'
 */
#define odbccfg_CfgSvc_DropDatatypeTable_ldx_ ((IDL_unsigned_long) 20)
/*
 * Operation synopsis for operation 'odbccfg_CfgSvc_DropDatatypeTable'
 */
#define odbccfg_CfgSvc_DropDatatypeTable_osy_ ((IDL_long) -1487785575)
/*
 * Call Completion function pointer type for
 * operation 'odbccfg_CfgSvc_DropDatatypeTable'
 */
typedef void (*odbccfg_CfgSvc_DropDatatypeTable_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_DropDatatypeTable_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Call Completion function prototype for
 * operation 'odbccfg_CfgSvc_DropDatatypeTable'
 */
extern "C" void
odbccfg_CfgSvc_DropDatatypeTable_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_DropDatatypeTable_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Asynchronous object call for
 * operation 'odbccfg_CfgSvc_DropDatatypeTable'
 */
extern "C" CEE_status
odbccfg_CfgSvc_DropDatatypeTable_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbccfg_CfgSvc_DropDatatypeTable_cct_ rtn_
  );
/*
 * Synchronous object call for
 * operation 'odbccfg_CfgSvc_DropDatatypeTable'
 */
extern "C" void
odbccfg_CfgSvc_DropDatatypeTable(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbccfg_CfgSvc_DropDatatypeTable_exc_ *exception_
  , /* Out   */ ERROR_DESC_LIST_def *sqlWarning
  );

/*******************************************
 * Operation 'odbccfg_CfgSvc_GeneralParam' *
 *******************************************/

/*
 * Exception number constants for
 * operation 'odbccfg_CfgSvc_GeneralParam'
 */
#define odbccfg_CfgSvc_GeneralParam_ParamError_exn_ 1
/*
 * Exception union for
 * operation 'odbccfg_CfgSvc_GeneralParam'
 */
struct odbccfg_CfgSvc_GeneralParam_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbccfg_CfgSvc_ParamError ParamError;
  } u;
};
/*
 * Local index for operation 'odbccfg_CfgSvc_GeneralParam'
 */
#define odbccfg_CfgSvc_GeneralParam_ldx_ ((IDL_unsigned_long) 21)
/*
 * Operation synopsis for operation 'odbccfg_CfgSvc_GeneralParam'
 */
#define odbccfg_CfgSvc_GeneralParam_osy_ ((IDL_long) 54591643)
/*
 * Call Completion function pointer type for
 * operation 'odbccfg_CfgSvc_GeneralParam'
 */
typedef void (*odbccfg_CfgSvc_GeneralParam_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_GeneralParam_exc_ *exception_
  );
/*
 * Call Completion function prototype for
 * operation 'odbccfg_CfgSvc_GeneralParam'
 */
extern "C" void
odbccfg_CfgSvc_GeneralParam_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_GeneralParam_exc_ *exception_
  );
/*
 * Asynchronous object call for
 * operation 'odbccfg_CfgSvc_GeneralParam'
 */
extern "C" CEE_status
odbccfg_CfgSvc_GeneralParam_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbccfg_CfgSvc_GeneralParam_cct_ rtn_
  , /* In    */ const GEN_ParamList_def *paramList
  );
/*
 * Synchronous object call for
 * operation 'odbccfg_CfgSvc_GeneralParam'
 */
extern "C" void
odbccfg_CfgSvc_GeneralParam(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbccfg_CfgSvc_GeneralParam_exc_ *exception_
  , /* In    */ const GEN_ParamList_def *paramList
  );

/*********************************************
 * Operation 'odbccfg_CfgSvc_StopEspOrphans' *
 *********************************************/
/*
 * Exception union for
 * operation 'odbccfg_CfgSvc_StopEspOrphans'
 */
struct odbccfg_CfgSvc_StopEspOrphans_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
};
/*
 * Local index for operation 'odbccfg_CfgSvc_StopEspOrphans'
 */
#define odbccfg_CfgSvc_StopEspOrphans_ldx_ ((IDL_unsigned_long) 22)
/*
 * Operation synopsis for operation 'odbccfg_CfgSvc_StopEspOrphans'
 */
#define odbccfg_CfgSvc_StopEspOrphans_osy_ ((IDL_long) 308947339)
/*
 * Call Completion function pointer type for
 * operation 'odbccfg_CfgSvc_StopEspOrphans'
 */
typedef void (*odbccfg_CfgSvc_StopEspOrphans_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_StopEspOrphans_exc_ *exception_
  );
/*
 * Call Completion function prototype for
 * operation 'odbccfg_CfgSvc_StopEspOrphans'
 */
extern "C" void
odbccfg_CfgSvc_StopEspOrphans_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_StopEspOrphans_exc_ *exception_
  );
/*
 * Asynchronous object call for
 * operation 'odbccfg_CfgSvc_StopEspOrphans'
 */
extern "C" CEE_status
odbccfg_CfgSvc_StopEspOrphans_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbccfg_CfgSvc_StopEspOrphans_cct_ rtn_
  , /* In    */ const PROCESS_HANDLE_List_def *handleList
  );
/*
 * Synchronous object call for
 * operation 'odbccfg_CfgSvc_StopEspOrphans'
 */
extern "C" void
odbccfg_CfgSvc_StopEspOrphans(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbccfg_CfgSvc_StopEspOrphans_exc_ *exception_
  , /* In    */ const PROCESS_HANDLE_List_def *handleList
  );

/****************************************
 * Operation 'odbccfg_CfgSvc_SQLCancel' *
 ****************************************/
/*
 * Exception union for
 * operation 'odbccfg_CfgSvc_SQLCancel'
 */
struct odbccfg_CfgSvc_SQLCancel_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
};
/*
 * Local index for operation 'odbccfg_CfgSvc_SQLCancel'
 */
#define odbccfg_CfgSvc_SQLCancel_ldx_ ((IDL_unsigned_long) 23)
/*
 * Operation synopsis for operation 'odbccfg_CfgSvc_SQLCancel'
 */
#define odbccfg_CfgSvc_SQLCancel_osy_ ((IDL_long) 2044471951)
/*
 * Call Completion function pointer type for
 * operation 'odbccfg_CfgSvc_SQLCancel'
 */
typedef void (*odbccfg_CfgSvc_SQLCancel_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_SQLCancel_exc_ *exception_
  );
/*
 * Call Completion function prototype for
 * operation 'odbccfg_CfgSvc_SQLCancel'
 */
extern "C" void
odbccfg_CfgSvc_SQLCancel_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbccfg_CfgSvc_SQLCancel_exc_ *exception_
  );
/*
 * Asynchronous object call for
 * operation 'odbccfg_CfgSvc_SQLCancel'
 */
extern "C" CEE_status
odbccfg_CfgSvc_SQLCancel_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbccfg_CfgSvc_SQLCancel_cct_ rtn_
  , /* In    */ IDL_short segment
  , /* In    */ IDL_short cpu
  , /* In    */ IDL_short pin
  , /* In    */ IDL_long srvrApi
  , /* In    */ IDL_short requesterType
  , /* In    */ const IDL_char *requesterApplication
  , /* In    */ const IDL_char *requesterComputer
  , /* In    */ const IDL_char *requesterName
  );
/*
 * Synchronous object call for
 * operation 'odbccfg_CfgSvc_SQLCancel'
 */
extern "C" void
odbccfg_CfgSvc_SQLCancel(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbccfg_CfgSvc_SQLCancel_exc_ *exception_
  , /* In    */ IDL_short segment
  , /* In    */ IDL_short cpu
  , /* In    */ IDL_short pin
  , /* In    */ IDL_long srvrApi
  , /* In    */ IDL_short requesterType
  , /* In    */ const IDL_char *requesterApplication
  , /* In    */ const IDL_char *requesterComputer
  , /* In    */ const IDL_char *requesterName
  );

/*
 * CIN description of interface 'odbccfg_CfgSvc'
 */
static char odbccfg_CfgSvc_ici_[]  = {
    '!','2','2','+','I','D','L',':','o','d','b','c','c','f','g','/',
    'C','f','g','S','v','c',':','1','.','0','2','3','+','2','0','9',
    '6','7','0','3','1','0','0','+','1','7','+','G','e','t','O','b',
    'j','e','c','t','N','a','m','e','L','i','s','t','(','3','+','1',
    '0','+','O','b','j','e','c','t','T','y','p','e','>','F','1','4',
    '+','O','b','j','e','c','t','N','a','m','e','L','i','s','t','<',
    'c','0','+','d','5','1','2','+','1','0','+','s','q','l','W','a',
    'r','n','i','n','g','<','c','0','+','b','1','4','+','F','F','F',
    'd','5','+','d','0','+','F','F','d','0','+','d','0','+','d','0',
    '+','d','0','+','d','0','+','d','0','+','d','0','+','3','+','3',
    '3','+','I','D','L',':','o','d','b','c','c','f','g','/','C','f',
    'g','S','v','c','/','P','a','r','a','m','E','r','r','o','r',':',
    '1','.','0','g','1','+','d','0','+','3','1','+','I','D','L',':',
    'o','d','b','c','c','f','g','/','C','f','g','S','v','c','/','S',
    'Q','L','E','r','r','o','r',':','1','.','0','g','1','+','c','0',
    '+','b','1','4','+','F','F','F','d','5','+','d','0','+','F','F',
    'd','0','+','d','0','+','d','0','+','d','0','+','d','0','+','d',
    '0','+','d','0','+','3','7','+','I','D','L',':','o','d','b','c',
    'c','f','g','/','C','f','g','S','v','c','/','S','Q','L','N','o',
    'D','a','t','a','F','o','u','n','d',':','1','.','0','g','0','+',
    '0','+','1','5','4','9','2','3','6','3','9','4','+','1','3','+',
    'G','e','t','D','a','t','a','S','o','u','r','c','e','(','3','+',
    '8','+','K','e','y','V','a','l','u','e','>','d','5','1','2','+',
    '8','+','D','S','V','a','l','u','e','s','<','b','1','1','+','d',
    '5','1','2','+','K','d','3','0','+','F','F','F','F','G','G','G',
    'd','3','0','+','1','0','+','s','q','l','W','a','r','n','i','n',
    'g','<','c','0','+','b','1','4','+','F','F','F','d','5','+','d',
    '0','+','F','F','d','0','+','d','0','+','d','0','+','d','0','+',
    'd','0','+','d','0','+','d','0','+','3','+','3','3','+','I','D',
    'L',':','o','d','b','c','c','f','g','/','C','f','g','S','v','c',
    '/','P','a','r','a','m','E','r','r','o','r',':','1','.','0','g',
    '1','+','d','0','+','3','1','+','I','D','L',':','o','d','b','c',
    'c','f','g','/','C','f','g','S','v','c','/','S','Q','L','E','r',
    'r','o','r',':','1','.','0','g','1','+','c','0','+','b','1','4',
    '+','F','F','F','d','5','+','d','0','+','F','F','d','0','+','d',
    '0','+','d','0','+','d','0','+','d','0','+','d','0','+','d','0',
    '+','3','7','+','I','D','L',':','o','d','b','c','c','f','g','/',
    'C','f','g','S','v','c','/','S','Q','L','N','o','D','a','t','a',
    'F','o','u','n','d',':','1','.','0','g','0','+','0','+','2','8',
    '1','5','6','5','7','9','7','-','1','4','+','D','r','o','p','D',
    'a','t','a','S','o','u','r','c','e','(','2','+','8','+','K','e',
    'y','V','a','l','u','e','>','d','5','1','2','+','1','0','+','s',
    'q','l','W','a','r','n','i','n','g','<','c','0','+','b','1','4',
    '+','F','F','F','d','5','+','d','0','+','F','F','d','0','+','d',
    '0','+','d','0','+','d','0','+','d','0','+','d','0','+','d','0',
    '+','4','+','3','3','+','I','D','L',':','o','d','b','c','c','f',
    'g','/','C','f','g','S','v','c','/','P','a','r','a','m','E','r',
    'r','o','r',':','1','.','0','g','1','+','d','0','+','3','1','+',
    'I','D','L',':','o','d','b','c','c','f','g','/','C','f','g','S',
    'v','c','/','S','Q','L','E','r','r','o','r',':','1','.','0','g',
    '1','+','c','0','+','b','1','4','+','F','F','F','d','5','+','d',
    '0','+','F','F','d','0','+','d','0','+','d','0','+','d','0','+',
    'd','0','+','d','0','+','d','0','+','3','7','+','I','D','L',':',
    'o','d','b','c','c','f','g','/','C','f','g','S','v','c','/','S',
    'Q','L','N','o','D','a','t','a','F','o','u','n','d',':','1','.',
    '0','g','0','+','3','5','+','I','D','L',':','o','d','b','c','c',
    'f','g','/','C','f','g','S','v','c','/','C','F','G','D','a','t',
    'a','E','r','r','o','r',':','1','.','0','g','0','+','0','+','1',
    '7','0','7','7','6','7','7','8','6','-','1','3','+','S','e','t',
    'D','a','t','a','S','o','u','r','c','e','(','2','+','8','+','D',
    'S','V','a','l','u','e','s','>','b','1','1','+','d','5','1','2',
    '+','K','d','3','0','+','F','F','F','F','G','G','G','d','3','0',
    '+','1','0','+','s','q','l','W','a','r','n','i','n','g','<','c',
    '0','+','b','1','4','+','F','F','F','d','5','+','d','0','+','F',
    'F','d','0','+','d','0','+','d','0','+','d','0','+','d','0','+',
    'd','0','+','d','0','+','3','+','3','3','+','I','D','L',':','o',
    'd','b','c','c','f','g','/','C','f','g','S','v','c','/','P','a',
    'r','a','m','E','r','r','o','r',':','1','.','0','g','1','+','d',
    '0','+','3','1','+','I','D','L',':','o','d','b','c','c','f','g',
    '/','C','f','g','S','v','c','/','S','Q','L','E','r','r','o','r',
    ':','1','.','0','g','1','+','c','0','+','b','1','4','+','F','F',
    'F','d','5','+','d','0','+','F','F','d','0','+','d','0','+','d',
    '0','+','d','0','+','d','0','+','d','0','+','d','0','+','3','7',
    '+','I','D','L',':','o','d','b','c','c','f','g','/','C','f','g',
    'S','v','c','/','S','Q','L','N','o','D','a','t','a','F','o','u',
    'n','d',':','1','.','0','g','0','+','0','+','1','9','0','3','9',
    '0','0','2','1','5','-','1','6','+','A','d','d','N','e','w','D',
    'a','t','a','S','o','u','r','c','e','(','2','+','8','+','D','S',
    'V','a','l','u','e','s','>','b','1','1','+','d','5','1','2','+',
    'K','d','3','0','+','F','F','F','F','G','G','G','d','3','0','+',
    '1','0','+','s','q','l','W','a','r','n','i','n','g','<','c','0',
    '+','b','1','4','+','F','F','F','d','5','+','d','0','+','F','F',
    'd','0','+','d','0','+','d','0','+','d','0','+','d','0','+','d',
    '0','+','d','0','+','3','+','3','3','+','I','D','L',':','o','d',
    'b','c','c','f','g','/','C','f','g','S','v','c','/','P','a','r',
    'a','m','E','r','r','o','r',':','1','.','0','g','1','+','d','0',
    '+','3','1','+','I','D','L',':','o','d','b','c','c','f','g','/',
    'C','f','g','S','v','c','/','S','Q','L','E','r','r','o','r',':',
    '1','.','0','g','1','+','c','0','+','b','1','4','+','F','F','F',
    'd','5','+','d','0','+','F','F','d','0','+','d','0','+','d','0',
    '+','d','0','+','d','0','+','d','0','+','d','0','+','3','7','+',
    'I','D','L',':','o','d','b','c','c','f','g','/','C','f','g','S',
    'v','c','/','S','Q','L','N','o','D','a','t','a','F','o','u','n',
    'd',':','1','.','0','g','0','+','0','+','2','8','0','0','6','8',
    '3','3','+','1','9','+','C','h','e','c','k','D','a','t','a','S',
    'o','u','r','c','e','N','a','m','e','(','2','+','8','+','K','e',
    'y','V','a','l','u','e','>','d','5','1','2','+','1','0','+','s',
    'q','l','W','a','r','n','i','n','g','<','c','0','+','b','1','4',
    '+','F','F','F','d','5','+','d','0','+','F','F','d','0','+','d',
    '0','+','d','0','+','d','0','+','d','0','+','d','0','+','d','0',
    '+','3','+','3','3','+','I','D','L',':','o','d','b','c','c','f',
    'g','/','C','f','g','S','v','c','/','P','a','r','a','m','E','r',
    'r','o','r',':','1','.','0','g','1','+','d','0','+','3','1','+',
    'I','D','L',':','o','d','b','c','c','f','g','/','C','f','g','S',
    'v','c','/','S','Q','L','E','r','r','o','r',':','1','.','0','g',
    '1','+','c','0','+','b','1','4','+','F','F','F','d','5','+','d',
    '0','+','F','F','d','0','+','d','0','+','d','0','+','d','0','+',
    'd','0','+','d','0','+','d','0','+','3','7','+','I','D','L',':',
    'o','d','b','c','c','f','g','/','C','f','g','S','v','c','/','S',
    'Q','L','N','o','D','a','t','a','F','o','u','n','d',':','1','.',
    '0','g','0','+','0','+','9','1','4','6','1','5','5','2','6','+',
    '1','3','+','G','e','t','D','S','N','C','o','n','t','r','o','l',
    '(','4','+','8','+','K','e','y','V','a','l','u','e','>','d','5',
    '1','2','+','1','0','+','a','u','t','o','m','a','t','i','o','n',
    '<','F','9','+','c','u','r','S','t','a','t','u','s','<','F','1',
    '0','+','s','q','l','W','a','r','n','i','n','g','<','c','0','+',
    'b','1','4','+','F','F','F','d','5','+','d','0','+','F','F','d',
    '0','+','d','0','+','d','0','+','d','0','+','d','0','+','d','0',
    '+','d','0','+','3','+','3','3','+','I','D','L',':','o','d','b',
    'c','c','f','g','/','C','f','g','S','v','c','/','P','a','r','a',
    'm','E','r','r','o','r',':','1','.','0','g','1','+','d','0','+',
    '3','1','+','I','D','L',':','o','d','b','c','c','f','g','/','C',
    'f','g','S','v','c','/','S','Q','L','E','r','r','o','r',':','1',
    '.','0','g','1','+','c','0','+','b','1','4','+','F','F','F','d',
    '5','+','d','0','+','F','F','d','0','+','d','0','+','d','0','+',
    'd','0','+','d','0','+','d','0','+','d','0','+','3','7','+','I',
    'D','L',':','o','d','b','c','c','f','g','/','C','f','g','S','v',
    'c','/','S','Q','L','N','o','D','a','t','a','F','o','u','n','d',
    ':','1','.','0','g','0','+','0','+','8','8','4','3','6','8','2',
    '1','7','-','1','3','+','S','e','t','D','S','N','C','o','n','t',
    'r','o','l','(','3','+','8','+','K','e','y','V','a','l','u','e',
    '>','d','5','1','2','+','1','0','+','a','u','t','o','m','a','t',
    'i','o','n','>','F','1','0','+','s','q','l','W','a','r','n','i',
    'n','g','<','c','0','+','b','1','4','+','F','F','F','d','5','+',
    'd','0','+','F','F','d','0','+','d','0','+','d','0','+','d','0',
    '+','d','0','+','d','0','+','d','0','+','3','+','3','3','+','I',
    'D','L',':','o','d','b','c','c','f','g','/','C','f','g','S','v',
    'c','/','P','a','r','a','m','E','r','r','o','r',':','1','.','0',
    'g','1','+','d','0','+','3','1','+','I','D','L',':','o','d','b',
    'c','c','f','g','/','C','f','g','S','v','c','/','S','Q','L','E',
    'r','r','o','r',':','1','.','0','g','1','+','c','0','+','b','1',
    '4','+','F','F','F','d','5','+','d','0','+','F','F','d','0','+',
    'd','0','+','d','0','+','d','0','+','d','0','+','d','0','+','d',
    '0','+','3','7','+','I','D','L',':','o','d','b','c','c','f','g',
    '/','C','f','g','S','v','c','/','S','Q','L','N','o','D','a','t',
    'a','F','o','u','n','d',':','1','.','0','g','0','+','0','+','1',
    '2','7','1','1','5','9','4','3','4','-','1','7','+','G','e','t',
    'R','e','s','o','u','r','c','e','V','a','l','u','e','s','(','4',
    '+','7','+','K','e','y','T','y','p','e','>','h','4','+','8','+',
    'K','e','y','V','a','l','u','e','>','d','5','1','2','+','1','2',
    '+','R','e','s','V','a','l','u','e','L','i','s','t','<','c','0',
    '+','b','4','+','d','5','1','2','+','G','d','0','+','F','1','0',
    '+','s','q','l','W','a','r','n','i','n','g','<','c','0','+','b',
    '1','4','+','F','F','F','d','5','+','d','0','+','F','F','d','0',
    '+','d','0','+','d','0','+','d','0','+','d','0','+','d','0','+',
    'd','0','+','3','+','3','3','+','I','D','L',':','o','d','b','c',
    'c','f','g','/','C','f','g','S','v','c','/','P','a','r','a','m',
    'E','r','r','o','r',':','1','.','0','g','1','+','d','0','+','3',
    '1','+','I','D','L',':','o','d','b','c','c','f','g','/','C','f',
    'g','S','v','c','/','S','Q','L','E','r','r','o','r',':','1','.',
    '0','g','1','+','c','0','+','b','1','4','+','F','F','F','d','5',
    '+','d','0','+','F','F','d','0','+','d','0','+','d','0','+','d',
    '0','+','d','0','+','d','0','+','d','0','+','3','7','+','I','D',
    'L',':','o','d','b','c','c','f','g','/','C','f','g','S','v','c',
    '/','S','Q','L','N','o','D','a','t','a','F','o','u','n','d',':',
    '1','.','0','g','0','+','0','+','2','0','2','2','2','9','6','5',
    '1','9','+','1','7','+','S','e','t','R','e','s','o','u','r','c',
    'e','V','a','l','u','e','s','(','4','+','7','+','K','e','y','T',
    'y','p','e','>','h','4','+','8','+','K','e','y','V','a','l','u',
    'e','>','d','5','1','2','+','1','2','+','R','e','s','V','a','l',
    'u','e','L','i','s','t','>','c','0','+','b','4','+','d','5','1',
    '2','+','G','d','0','+','F','1','0','+','s','q','l','W','a','r',
    'n','i','n','g','<','c','0','+','b','1','4','+','F','F','F','d',
    '5','+','d','0','+','F','F','d','0','+','d','0','+','d','0','+',
    'd','0','+','d','0','+','d','0','+','d','0','+','3','+','3','3',
    '+','I','D','L',':','o','d','b','c','c','f','g','/','C','f','g',
    'S','v','c','/','P','a','r','a','m','E','r','r','o','r',':','1',
    '.','0','g','1','+','d','0','+','3','1','+','I','D','L',':','o',
    'd','b','c','c','f','g','/','C','f','g','S','v','c','/','S','Q',
    'L','E','r','r','o','r',':','1','.','0','g','1','+','c','0','+',
    'b','1','4','+','F','F','F','d','5','+','d','0','+','F','F','d',
    '0','+','d','0','+','d','0','+','d','0','+','d','0','+','d','0',
    '+','d','0','+','3','7','+','I','D','L',':','o','d','b','c','c',
    'f','g','/','C','f','g','S','v','c','/','S','Q','L','N','o','D',
    'a','t','a','F','o','u','n','d',':','1','.','0','g','0','+','0',
    '+','1','8','8','3','8','8','2','7','1','2','+','2','0','+','G',
    'e','t','E','n','v','i','r','o','n','m','e','n','t','V','a','l',
    'u','e','s','(','4','+','7','+','K','e','y','T','y','p','e','>',
    'h','4','+','8','+','K','e','y','V','a','l','u','e','>','d','5',
    '1','2','+','1','2','+','E','n','v','V','a','l','u','e','L','i',
    's','t','<','c','0','+','b','3','+','F','F','d','0','+','1','0',
    '+','s','q','l','W','a','r','n','i','n','g','<','c','0','+','b',
    '1','4','+','F','F','F','d','5','+','d','0','+','F','F','d','0',
    '+','d','0','+','d','0','+','d','0','+','d','0','+','d','0','+',
    'd','0','+','3','+','3','3','+','I','D','L',':','o','d','b','c',
    'c','f','g','/','C','f','g','S','v','c','/','P','a','r','a','m',
    'E','r','r','o','r',':','1','.','0','g','1','+','d','0','+','3',
    '1','+','I','D','L',':','o','d','b','c','c','f','g','/','C','f',
    'g','S','v','c','/','S','Q','L','E','r','r','o','r',':','1','.',
    '0','g','1','+','c','0','+','b','1','4','+','F','F','F','d','5',
    '+','d','0','+','F','F','d','0','+','d','0','+','d','0','+','d',
    '0','+','d','0','+','d','0','+','d','0','+','3','7','+','I','D',
    'L',':','o','d','b','c','c','f','g','/','C','f','g','S','v','c',
    '/','S','Q','L','N','o','D','a','t','a','F','o','u','n','d',':',
    '1','.','0','g','0','+','0','+','1','1','4','3','5','1','5','8',
    '7','1','-','2','0','+','S','e','t','E','n','v','i','r','o','n',
    'm','e','n','t','V','a','l','u','e','s','(','4','+','7','+','K',
    'e','y','T','y','p','e','>','h','4','+','8','+','K','e','y','V',
    'a','l','u','e','>','d','5','1','2','+','1','2','+','E','n','v',
    'V','a','l','u','e','L','i','s','t','>','c','0','+','b','3','+',
    'F','F','d','0','+','1','0','+','s','q','l','W','a','r','n','i',
    'n','g','<','c','0','+','b','1','4','+','F','F','F','d','5','+',
    'd','0','+','F','F','d','0','+','d','0','+','d','0','+','d','0',
    '+','d','0','+','d','0','+','d','0','+','3','+','3','3','+','I',
    'D','L',':','o','d','b','c','c','f','g','/','C','f','g','S','v',
    'c','/','P','a','r','a','m','E','r','r','o','r',':','1','.','0',
    'g','1','+','d','0','+','3','1','+','I','D','L',':','o','d','b',
    'c','c','f','g','/','C','f','g','S','v','c','/','S','Q','L','E',
    'r','r','o','r',':','1','.','0','g','1','+','c','0','+','b','1',
    '4','+','F','F','F','d','5','+','d','0','+','F','F','d','0','+',
    'd','0','+','d','0','+','d','0','+','d','0','+','d','0','+','d',
    '0','+','3','7','+','I','D','L',':','o','d','b','c','c','f','g',
    '/','C','f','g','S','v','c','/','S','Q','L','N','o','D','a','t',
    'a','F','o','u','n','d',':','1','.','0','g','0','+','0','+','8',
    '9','1','4','0','1','8','6','2','-','2','2','+','G','e','t','S',
    't','a','r','t','u','p','C','o','n','f','i','g','V','a','l','u',
    'e','s','(','5','+','1','3','+','s','e','r','v','i','c','e','S',
    't','a','t','u','s','<','I','2','3','+','s','e','r','v','i','c',
    'e','S','t','a','t','u','s','C','h','a','n','g','e','T','i','m',
    'e','<','F','1','0','+','i','s','o','M','a','p','p','i','n','g',
    '<','F','6','+','D','S','L','i','s','t','<','c','0','+','b','1',
    '6','+','d','5','1','2','+','F','I','h','1','+','F','F','F','F',
    'G','G','G','I','F','c','0','+','b','4','+','d','5','1','2','+',
    'G','d','0','+','F','c','0','+','b','3','+','F','F','d','0','+',
    'c','0','+','H','1','0','+','s','q','l','W','a','r','n','i','n',
    'g','<','c','0','+','b','1','4','+','F','F','F','d','5','+','d',
    '0','+','F','F','d','0','+','d','0','+','d','0','+','d','0','+',
    'd','0','+','d','0','+','d','0','+','3','+','3','3','+','I','D',
    'L',':','o','d','b','c','c','f','g','/','C','f','g','S','v','c',
    '/','P','a','r','a','m','E','r','r','o','r',':','1','.','0','g',
    '1','+','d','0','+','3','1','+','I','D','L',':','o','d','b','c',
    'c','f','g','/','C','f','g','S','v','c','/','S','Q','L','E','r',
    'r','o','r',':','1','.','0','g','1','+','c','0','+','b','1','4',
    '+','F','F','F','d','5','+','d','0','+','F','F','d','0','+','d',
    '0','+','d','0','+','d','0','+','d','0','+','d','0','+','d','0',
    '+','3','7','+','I','D','L',':','o','d','b','c','c','f','g','/',
    'C','f','g','S','v','c','/','S','Q','L','N','o','D','a','t','a',
    'F','o','u','n','d',':','1','.','0','g','0','+','0','+','1','1',
    '6','8','3','1','1','7','0','2','-','1','9','+','G','e','t','D',
    'a','t','a','S','o','u','r','c','e','V','a','l','u','e','s','(',
    '3','+','6','+','D','S','N','a','m','e','>','d','5','1','2','+',
    '8','+','D','S','V','a','l','u','e','s','<','b','1','6','+','d',
    '5','1','2','+','F','I','h','1','+','F','F','F','F','G','G','G',
    'I','F','c','0','+','b','4','+','d','5','1','2','+','G','d','0',
    '+','F','c','0','+','b','3','+','F','F','d','0','+','c','0','+',
    'H','1','0','+','s','q','l','W','a','r','n','i','n','g','<','c',
    '0','+','b','1','4','+','F','F','F','d','5','+','d','0','+','F',
    'F','d','0','+','d','0','+','d','0','+','d','0','+','d','0','+',
    'd','0','+','d','0','+','3','+','3','3','+','I','D','L',':','o',
    'd','b','c','c','f','g','/','C','f','g','S','v','c','/','P','a',
    'r','a','m','E','r','r','o','r',':','1','.','0','g','1','+','d',
    '0','+','3','1','+','I','D','L',':','o','d','b','c','c','f','g',
    '/','C','f','g','S','v','c','/','S','Q','L','E','r','r','o','r',
    ':','1','.','0','g','1','+','c','0','+','b','1','4','+','F','F',
    'F','d','5','+','d','0','+','F','F','d','0','+','d','0','+','d',
    '0','+','d','0','+','d','0','+','d','0','+','d','0','+','3','7',
    '+','I','D','L',':','o','d','b','c','c','f','g','/','C','f','g',
    'S','v','c','/','S','Q','L','N','o','D','a','t','a','F','o','u',
    'n','d',':','1','.','0','g','0','+','0','+','1','5','4','0','0',
    '7','8','4','3','1','-','1','1','+','S','e','t','D','S','S','t',
    'a','t','u','s','(','4','+','4','+','D','S','N','m','>','d','5',
    '1','2','+','6','+','s','t','a','t','u','s','>','I','1','7','+',
    's','t','a','t','u','s','C','h','a','n','g','e','d','T','i','m',
    'e','>','d','3','0','+','1','0','+','s','q','l','W','a','r','n',
    'i','n','g','<','c','0','+','b','1','4','+','F','F','F','d','5',
    '+','d','0','+','F','F','d','0','+','d','0','+','d','0','+','d',
    '0','+','d','0','+','d','0','+','d','0','+','3','+','3','3','+',
    'I','D','L',':','o','d','b','c','c','f','g','/','C','f','g','S',
    'v','c','/','P','a','r','a','m','E','r','r','o','r',':','1','.',
    '0','g','1','+','d','0','+','3','1','+','I','D','L',':','o','d',
    'b','c','c','f','g','/','C','f','g','S','v','c','/','S','Q','L',
    'E','r','r','o','r',':','1','.','0','g','1','+','c','0','+','b',
    '1','4','+','F','F','F','d','5','+','d','0','+','F','F','d','0',
    '+','d','0','+','d','0','+','d','0','+','d','0','+','d','0','+',
    'd','0','+','3','7','+','I','D','L',':','o','d','b','c','c','f',
    'g','/','C','f','g','S','v','c','/','S','Q','L','N','o','D','a',
    't','a','F','o','u','n','d',':','1','.','0','g','0','+','0','+',
    '1','2','6','2','5','3','3','9','9','7','+','1','1','+','S','e',
    't','A','S','S','t','a','t','u','s','(','3','+','6','+','s','t',
    'a','t','u','s','>','I','1','7','+','s','t','a','t','u','s','C',
    'h','a','n','g','e','d','T','i','m','e','>','d','3','0','+','1',
    '0','+','s','q','l','W','a','r','n','i','n','g','<','c','0','+',
    'b','1','4','+','F','F','F','d','5','+','d','0','+','F','F','d',
    '0','+','d','0','+','d','0','+','d','0','+','d','0','+','d','0',
    '+','d','0','+','3','+','3','3','+','I','D','L',':','o','d','b',
    'c','c','f','g','/','C','f','g','S','v','c','/','P','a','r','a',
    'm','E','r','r','o','r',':','1','.','0','g','1','+','d','0','+',
    '3','1','+','I','D','L',':','o','d','b','c','c','f','g','/','C',
    'f','g','S','v','c','/','S','Q','L','E','r','r','o','r',':','1',
    '.','0','g','1','+','c','0','+','b','1','4','+','F','F','F','d',
    '5','+','d','0','+','F','F','d','0','+','d','0','+','d','0','+',
    'd','0','+','d','0','+','d','0','+','d','0','+','3','7','+','I',
    'D','L',':','o','d','b','c','c','f','g','/','C','f','g','S','v',
    'c','/','S','Q','L','N','o','D','a','t','a','F','o','u','n','d',
    ':','1','.','0','g','0','+','0','+','2','0','3','8','3','1','3',
    '2','4','1','-','2','7','+','C','r','e','a','t','e','C','o','n',
    'f','i','g','u','r','a','t','i','o','n','D','a','t','a','b','a',
    's','e','(','3','+','1','5','+','D','a','t','a','b','a','s','e',
    'V','e','r','s','i','o','n','>','F','1','9','+','s','q','l','V',
    'o','l','u','m','e','L','o','c','a','t','i','o','n','N','m','>',
    'd','0','+','1','0','+','s','q','l','W','a','r','n','i','n','g',
    '<','c','0','+','b','1','4','+','F','F','F','d','5','+','d','0',
    '+','F','F','d','0','+','d','0','+','d','0','+','d','0','+','d',
    '0','+','d','0','+','d','0','+','4','+','3','3','+','I','D','L',
    ':','o','d','b','c','c','f','g','/','C','f','g','S','v','c','/',
    'P','a','r','a','m','E','r','r','o','r',':','1','.','0','g','1',
    '+','d','0','+','3','1','+','I','D','L',':','o','d','b','c','c',
    'f','g','/','C','f','g','S','v','c','/','S','Q','L','E','r','r',
    'o','r',':','1','.','0','g','1','+','c','0','+','b','1','4','+',
    'F','F','F','d','5','+','d','0','+','F','F','d','0','+','d','0',
    '+','d','0','+','d','0','+','d','0','+','d','0','+','d','0','+',
    '3','9','+','I','D','L',':','o','d','b','c','c','f','g','/','C',
    'f','g','S','v','c','/','S','Q','L','I','n','v','a','l','i','d',
    'H','a','n','d','l','e',':','1','.','0','g','0','+','3','6','+',
    'I','D','L',':','o','d','b','c','c','f','g','/','C','f','g','S',
    'v','c','/','D','a','t','a','b','a','s','e','F','o','u','n','d',
    ':','1','.','0','g','0','+','0','+','2','0','8','4','5','6','7',
    '0','3','7','+','1','9','+','C','r','e','a','t','e','D','a','t',
    'a','t','y','p','e','T','a','b','l','e','(','3','+','2','0','+',
    'D','a','t','a','t','y','p','e','T','a','b','l','e','V','e','r',
    's','i','o','n','>','F','1','9','+','s','q','l','V','o','l','u',
    'm','e','L','o','c','a','t','i','o','n','N','m','>','d','0','+',
    '1','0','+','s','q','l','W','a','r','n','i','n','g','<','c','0',
    '+','b','1','4','+','F','F','F','d','5','+','d','0','+','F','F',
    'd','0','+','d','0','+','d','0','+','d','0','+','d','0','+','d',
    '0','+','d','0','+','4','+','3','3','+','I','D','L',':','o','d',
    'b','c','c','f','g','/','C','f','g','S','v','c','/','P','a','r',
    'a','m','E','r','r','o','r',':','1','.','0','g','1','+','d','0',
    '+','3','1','+','I','D','L',':','o','d','b','c','c','f','g','/',
    'C','f','g','S','v','c','/','S','Q','L','E','r','r','o','r',':',
    '1','.','0','g','1','+','c','0','+','b','1','4','+','F','F','F',
    'd','5','+','d','0','+','F','F','d','0','+','d','0','+','d','0',
    '+','d','0','+','d','0','+','d','0','+','d','0','+','3','9','+',
    'I','D','L',':','o','d','b','c','c','f','g','/','C','f','g','S',
    'v','c','/','S','Q','L','I','n','v','a','l','i','d','H','a','n',
    'd','l','e',':','1','.','0','g','0','+','3','6','+','I','D','L',
    ':','o','d','b','c','c','f','g','/','C','f','g','S','v','c','/',
    'D','a','t','a','b','a','s','e','F','o','u','n','d',':','1','.',
    '0','g','0','+','0','+','1','7','6','0','0','0','6','8','6','7',
    '-','2','5','+','D','r','o','p','C','o','n','f','i','g','u','r',
    'a','t','i','o','n','D','a','t','a','b','a','s','e','(','1','+',
    '1','0','+','s','q','l','W','a','r','n','i','n','g','<','c','0',
    '+','b','1','4','+','F','F','F','d','5','+','d','0','+','F','F',
    'd','0','+','d','0','+','d','0','+','d','0','+','d','0','+','d',
    '0','+','d','0','+','4','+','3','3','+','I','D','L',':','o','d',
    'b','c','c','f','g','/','C','f','g','S','v','c','/','P','a','r',
    'a','m','E','r','r','o','r',':','1','.','0','g','1','+','d','0',
    '+','3','1','+','I','D','L',':','o','d','b','c','c','f','g','/',
    'C','f','g','S','v','c','/','S','Q','L','E','r','r','o','r',':',
    '1','.','0','g','1','+','c','0','+','b','1','4','+','F','F','F',
    'd','5','+','d','0','+','F','F','d','0','+','d','0','+','d','0',
    '+','d','0','+','d','0','+','d','0','+','d','0','+','3','9','+',
    'I','D','L',':','o','d','b','c','c','f','g','/','C','f','g','S',
    'v','c','/','S','Q','L','I','n','v','a','l','i','d','H','a','n',
    'd','l','e',':','1','.','0','g','0','+','3','9','+','I','D','L',
    ':','o','d','b','c','c','f','g','/','C','f','g','S','v','c','/',
    'D','a','t','a','b','a','s','e','N','o','t','F','o','u','n','d',
    ':','1','.','0','g','0','+','0','+','1','4','8','7','7','8','5',
    '5','7','5','-','1','7','+','D','r','o','p','D','a','t','a','t',
    'y','p','e','T','a','b','l','e','(','1','+','1','0','+','s','q',
    'l','W','a','r','n','i','n','g','<','c','0','+','b','1','4','+',
    'F','F','F','d','5','+','d','0','+','F','F','d','0','+','d','0',
    '+','d','0','+','d','0','+','d','0','+','d','0','+','d','0','+',
    '4','+','3','3','+','I','D','L',':','o','d','b','c','c','f','g',
    '/','C','f','g','S','v','c','/','P','a','r','a','m','E','r','r',
    'o','r',':','1','.','0','g','1','+','d','0','+','3','1','+','I',
    'D','L',':','o','d','b','c','c','f','g','/','C','f','g','S','v',
    'c','/','S','Q','L','E','r','r','o','r',':','1','.','0','g','1',
    '+','c','0','+','b','1','4','+','F','F','F','d','5','+','d','0',
    '+','F','F','d','0','+','d','0','+','d','0','+','d','0','+','d',
    '0','+','d','0','+','d','0','+','3','9','+','I','D','L',':','o',
    'd','b','c','c','f','g','/','C','f','g','S','v','c','/','S','Q',
    'L','I','n','v','a','l','i','d','H','a','n','d','l','e',':','1',
    '.','0','g','0','+','3','9','+','I','D','L',':','o','d','b','c',
    'c','f','g','/','C','f','g','S','v','c','/','D','a','t','a','b',
    'a','s','e','N','o','t','F','o','u','n','d',':','1','.','0','g',
    '0','+','0','+','5','4','5','9','1','6','4','3','+','1','2','+',
    'G','e','n','e','r','a','l','P','a','r','a','m','(','1','+','9',
    '+','p','a','r','a','m','L','i','s','t','>','c','0','+','b','3',
    '+','I','I','c','0','+','H','1','+','3','3','+','I','D','L',':',
    'o','d','b','c','c','f','g','/','C','f','g','S','v','c','/','P',
    'a','r','a','m','E','r','r','o','r',':','1','.','0','g','1','+',
    'd','0','+','0','+','3','0','8','9','4','7','3','3','9','+','1',
    '4','+','S','t','o','p','E','s','p','O','r','p','h','a','n','s',
    '(','1','+','1','0','+','h','a','n','d','l','e','L','i','s','t',
    '>','c','0','+','a','1','+','1','0','+','I','0','+','0','+','2',
    '0','4','4','4','7','1','9','5','1','+','9','+','S','Q','L','C',
    'a','n','c','e','l','(','8','+','7','+','s','e','g','m','e','n',
    't','>','I','3','+','c','p','u','>','I','3','+','p','i','n','>',
    'I','7','+','s','r','v','r','A','p','i','>','F','1','3','+','r',
    'e','q','u','e','s','t','e','r','T','y','p','e','>','I','2','0',
    '+','r','e','q','u','e','s','t','e','r','A','p','p','l','i','c',
    'a','t','i','o','n','>','d','1','2','9','+','1','7','+','r','e',
    'q','u','e','s','t','e','r','C','o','m','p','u','t','e','r','>',
    'd','1','2','9','+','1','3','+','r','e','q','u','e','s','t','e',
    'r','N','a','m','e','>','d','1','2','9','+','0','+','0','+', 0};
#define odbccfg_CfgSvc_ics_ ((IDL_unsigned_long) 6495)

/*
 * Interface creation function for 'odbccfg_CfgSvc'
 */
extern "C" CEE_status
odbccfg_CfgSvc_ifc_(
  /* Out */ CEE_handle_def *interface_handle);

/**********************************
 * End interface 'odbccfg_CfgSvc' *
 **********************************/
/* End module: odbccfg */
/*
 * End translation unit: ODBCCFG
 */
#endif /* ODBCCFG_H_ */
