// @@@ 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 ODBCAS_H_
#define ODBCAS_H_
/*
 * Translation unit: ODBCAS
 * Generated by CNPGEN(TANTAU CNPGEN TANTAU_AG_PC8 20001120.103031) on Fri Jun 18 12:53:21 2004
 * 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
struct DATASOURCE_STATUS_t {
  SQL_IDENTIFIER_def DSName;
  char pad_to_offset_132_[3];
  DS_AUTOMATION_def DSAutomation;
  IDL_short defaultFlag;
  char pad_to_offset_140_[2];
  IDL_long DSState;
  IDL_long MaxSrvrCnt;
  IDL_long InitSrvrCnt;
  IDL_long AvailSrvrCnt;
  IDL_long StartAheadCnt;
  IDL_long CurrentSrvrRegistered;
  IDL_long CurrentSrvrConnected;
  TIME_def StateChangeTime;
};
typedef DATASOURCE_STATUS_t DATASOURCE_STATUS_def;
#define DATASOURCE_STATUS_def_cin_ ((char *) "b11+d128+h1+IFFFFFFFF")
#define DATASOURCE_STATUS_def_csz_ ((IDL_unsigned_long) 21)
struct SRVR_STATUS_t {
  IDL_long srvrType;
  IDL_OBJECT_def srvrObjRef;
  IDL_short nodeId;
  char pad_to_offset_136_[2];
  IDL_unsigned_long srvrProcessId;
  SQL_IDENTIFIER_def DSName;
  IDL_char processName[9];
  char pad_to_offset_280_[2];
  IDL_long srvrState;
  IDL_char computerName[16];
  IDL_unsigned_long clientProcessId;
  IDL_string userName;
  IDL_PTR_PAD(userName, 1)
  IDL_string windowText;
  IDL_PTR_PAD(windowText, 1)
  DIALOGUE_ID_def dialogueId;
  TIME_def lastUpdatedTime;
  VERSION_def srvrVersion;
  char pad_to_size_344_[4];
};
typedef SRVR_STATUS_t SRVR_STATUS_def;
#define SRVR_STATUS_def_cin_ ((char *) \
    "b14+Fa1+128+CIKd128+a1+9+CFa1+16+CKd0+d0+FFb4+IIIK")
#define SRVR_STATUS_def_csz_ ((IDL_unsigned_long) 50)
struct AS_CFG_STATUS_t {
  IDL_short ASNodeId;
  char pad_to_offset_4_[2];
  IDL_long ASProcessId;
  IDL_long ASSrvrState;
  IDL_char ASProcessName[9];
  IDL_OBJECT_def ASSrvrObjRef;
  char pad_to_offset_152_[3];
  TIME_def ASLastUpdatedTime;
  VERSION_def ASVersion;
  IDL_short CfgNodeId;
  char pad_to_offset_172_[2];
  IDL_long CfgProcessId;
  IDL_long CfgSrvrState;
  IDL_char CfgProcessName[9];
  IDL_OBJECT_def CfgSrvrObjRef;
  char pad_to_offset_320_[3];
  TIME_def CfgLastUpdatedTime;
  VERSION_def CfgVersion;
};
typedef AS_CFG_STATUS_t AS_CFG_STATUS_def;
#define AS_CFG_STATUS_def_cin_ ((char *) \
    "b14+IFFa1+9+Ca1+128+CFb4+IIIKIFFa1+9+Ca1+128+CFb4+IIIK")
#define AS_CFG_STATUS_def_csz_ ((IDL_unsigned_long) 54)
typedef struct DATASOURCE_STATUS_LIST_def_seq_ {
  IDL_unsigned_long _length;
  char pad_to_offset_8_[4];
  DATASOURCE_STATUS_def *_buffer;
  IDL_PTR_PAD(_buffer, 1)
} DATASOURCE_STATUS_LIST_def;
#define DATASOURCE_STATUS_LIST_def_cin_ ((char *) "c0+b11+d128+h1+IFFFFFFFF")
#define DATASOURCE_STATUS_LIST_def_csz_ ((IDL_unsigned_long) 24)
typedef struct SRVR_STATUS_LIST_def_seq_ {
  IDL_unsigned_long _length;
  char pad_to_offset_8_[4];
  SRVR_STATUS_def *_buffer;
  IDL_PTR_PAD(_buffer, 1)
} SRVR_STATUS_LIST_def;
#define SRVR_STATUS_LIST_def_cin_ ((char *) \
    "c0+b14+Fa1+128+CIKd128+a1+9+CFa1+16+CKd0+d0+FFb4+IIIK")
#define SRVR_STATUS_LIST_def_csz_ ((IDL_unsigned_long) 53)

/*******************
 * Module 'odbcas' *
 *******************/

/****************************
 * Interface 'odbcas_ASSvc' *
 ****************************/
typedef IDL_Object odbcas_ASSvc;
struct odbcas_ASSvc_ASParamError { /* Exception */ 
  IDL_string ErrorText;
  IDL_PTR_PAD(ErrorText, 1)
};
struct odbcas_ASSvc_ASTimeout { /* Exception */ 
  IDL_string ErrorText;
  IDL_PTR_PAD(ErrorText, 1)
};
/* Exception odbcas_ASSvc_ASNoSrvrHdl has no members */
struct odbcas_ASSvc_ASRejectRegistry { /* Exception */ 
  IDL_string ErrorText;
  IDL_PTR_PAD(ErrorText, 1)
};
/* Exception odbcas_ASSvc_ASRegistryFailed has no members */
/* Exception odbcas_ASSvc_ASTryAgain has no members */
struct odbcas_ASSvc_ASStateChangeError { /* Exception */ 
  IDL_string ErrorText;
  IDL_PTR_PAD(ErrorText, 1)
};
struct odbcas_ASSvc_SQLError { /* Exception */ 
  ERROR_DESC_LIST_def errorList;
};
/* Exception odbcas_ASSvc_PortNotAvailable has no members */
/* Exception odbcas_ASSvc_DSNotFound has no members */
/* Exception odbcas_ASSvc_DSAlreadyStopped has no members */
/* Exception odbcas_ASSvc_DSAlreadyStarted has no members */
/* Exception odbcas_ASSvc_DSStateChangeError has no members */
/* Exception odbcas_ASSvc_ProcessStopError has no members */
struct odbcas_ASSvc_ASNotAvailable { /* Exception */ 
  IDL_string ErrorText;
  IDL_PTR_PAD(ErrorText, 1)
};
struct odbcas_ASSvc_DSNotAvailable { /* Exception */ 
  IDL_string ErrorText;
  IDL_PTR_PAD(ErrorText, 1)
};
/* Exception odbcas_ASSvc_SrvrNotFound has no members */
/* Exception odbcas_ASSvc_SrvrInUseByAnotherClient has no members */
/* Exception odbcas_ASSvc_InvalidUser has no members */
/* Exception odbcas_ASSvc_SrvrCreateError has no members */
/* Exception odbcas_ASSvc_CfgSrvrFailed has no members */
struct odbcas_ASSvc_LogonUserFailure { /* Exception */ 
  IDL_long errorCode;
};
/* Exception odbcas_ASSvc_TraceAlreadyEnabled has no members */
/* Exception odbcas_ASSvc_TraceAlreadyDisabled has no members */
/* Exception odbcas_ASSvc_TraceEnableError has no members */
/* Exception odbcas_ASSvc_TraceDisableError has no members */

/***************************************
 * Operation 'odbcas_ASSvc_RegProcess' *
 ***************************************/

/*
 * Exception number constants for
 * operation 'odbcas_ASSvc_RegProcess'
 */
#define odbcas_ASSvc_RegProcess_ASParamError_exn_ 1
#define odbcas_ASSvc_RegProcess_ASTimeout_exn_ 2
#define odbcas_ASSvc_RegProcess_ASRegistryFailed_exn_ 3
#define odbcas_ASSvc_RegProcess_ASRejectRegistry_exn_ 4
/*
 * Exception union for
 * operation 'odbcas_ASSvc_RegProcess'
 */
struct odbcas_ASSvc_RegProcess_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbcas_ASSvc_ASParamError ASParamError;
    odbcas_ASSvc_ASTimeout ASTimeout;
    odbcas_ASSvc_ASRejectRegistry ASRejectRegistry;
  } u;
};
/*
 * Local index for operation 'odbcas_ASSvc_RegProcess'
 */
#define odbcas_ASSvc_RegProcess_ldx_ ((IDL_unsigned_long) 1)
/*
 * Operation synopsis for operation 'odbcas_ASSvc_RegProcess'
 */
#define odbcas_ASSvc_RegProcess_osy_ ((IDL_long) -671528134)
/*
 * Call Completion function pointer type for
 * operation 'odbcas_ASSvc_RegProcess'
 */
typedef void (*odbcas_ASSvc_RegProcess_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_RegProcess_exc_ *exception_
  , /* In    */ const SRVR_CONTEXT_def *srvrContext
  );
/*
 * Call Completion function prototype for
 * operation 'odbcas_ASSvc_RegProcess'
 */
extern "C" void
odbcas_ASSvc_RegProcess_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_RegProcess_exc_ *exception_
  , /* In    */ const SRVR_CONTEXT_def *srvrContext
  );
/*
 * Asynchronous object call for
 * operation 'odbcas_ASSvc_RegProcess'
 */
extern "C" CEE_status
odbcas_ASSvc_RegProcess_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbcas_ASSvc_RegProcess_cct_ rtn_
  , /* In    */ const VERSION_def *intfVersion
  , /* In    */ IDL_long srvrType
  , /* In    */ const IDL_char *srvrObjRef
  , /* In    */ const PROCESS_ID_def *nskProcessInfo
  );
/*
 * Synchronous object call for
 * operation 'odbcas_ASSvc_RegProcess'
 */
extern "C" void
odbcas_ASSvc_RegProcess(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbcas_ASSvc_RegProcess_exc_ *exception_
  , /* In    */ const VERSION_def *intfVersion
  , /* In    */ IDL_long srvrType
  , /* In    */ const IDL_char *srvrObjRef
  , /* In    */ const PROCESS_ID_def *nskProcessInfo
  , /* Out   */ SRVR_CONTEXT_def *srvrContext
  );

/*****************************************
 * Operation 'odbcas_ASSvc_GetObjRefHdl' *
 *****************************************/

/*
 * Exception number constants for
 * operation 'odbcas_ASSvc_GetObjRefHdl'
 */
#define odbcas_ASSvc_GetObjRefHdl_ASParamError_exn_ 1
#define odbcas_ASSvc_GetObjRefHdl_ASTimeout_exn_ 2
#define odbcas_ASSvc_GetObjRefHdl_ASNoSrvrHdl_exn_ 3
#define odbcas_ASSvc_GetObjRefHdl_ASTryAgain_exn_ 4
#define odbcas_ASSvc_GetObjRefHdl_ASNotAvailable_exn_ 5
#define odbcas_ASSvc_GetObjRefHdl_DSNotAvailable_exn_ 6
#define odbcas_ASSvc_GetObjRefHdl_PortNotAvailable_exn_ 7
#define odbcas_ASSvc_GetObjRefHdl_InvalidUser_exn_ 8
#define odbcas_ASSvc_GetObjRefHdl_LogonUserFailure_exn_ 9
/*
 * Exception union for
 * operation 'odbcas_ASSvc_GetObjRefHdl'
 */
struct odbcas_ASSvc_GetObjRefHdl_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbcas_ASSvc_ASParamError ASParamError;
    odbcas_ASSvc_ASTimeout ASTimeout;
    odbcas_ASSvc_ASNotAvailable ASNotAvailable;
    odbcas_ASSvc_DSNotAvailable DSNotAvailable;
    odbcas_ASSvc_LogonUserFailure LogonUserFailure;
  } u;
};
/*
 * Local index for operation 'odbcas_ASSvc_GetObjRefHdl'
 */
#define odbcas_ASSvc_GetObjRefHdl_ldx_ ((IDL_unsigned_long) 2)
/*
 * Operation synopsis for operation 'odbcas_ASSvc_GetObjRefHdl'
 */
#define odbcas_ASSvc_GetObjRefHdl_osy_ ((IDL_long) 2027146038)
/*
 * Call Completion function pointer type for
 * operation 'odbcas_ASSvc_GetObjRefHdl'
 */
typedef void (*odbcas_ASSvc_GetObjRefHdl_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_GetObjRefHdl_exc_ *exception_
  , /* In    */ const IDL_char *srvrObjRef
  , /* In    */ DIALOGUE_ID_def dialogueId
  , /* In    */ const IDL_char *dataSource
  , /* In    */ const USER_SID_def *userSid
  , /* In    */ const VERSION_LIST_def *versionList
  );
/*
 * Call Completion function prototype for
 * operation 'odbcas_ASSvc_GetObjRefHdl'
 */
extern "C" void
odbcas_ASSvc_GetObjRefHdl_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_GetObjRefHdl_exc_ *exception_
  , /* In    */ const IDL_char *srvrObjRef
  , /* In    */ DIALOGUE_ID_def dialogueId
  , /* In    */ const IDL_char *dataSource
  , /* In    */ const USER_SID_def *userSid
  , /* In    */ const VERSION_LIST_def *versionList
  );
/*
 * Asynchronous object call for
 * operation 'odbcas_ASSvc_GetObjRefHdl'
 */
extern "C" CEE_status
odbcas_ASSvc_GetObjRefHdl_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbcas_ASSvc_GetObjRefHdl_cct_ rtn_
  , /* In    */ const CONNECTION_CONTEXT_def *inContext
  , /* In    */ const USER_DESC_def *userDesc
  , /* In    */ IDL_long srvrType
  , /* In    */ IDL_short retryCount
  );
/*
 * Synchronous object call for
 * operation 'odbcas_ASSvc_GetObjRefHdl'
 */
extern "C" void
odbcas_ASSvc_GetObjRefHdl(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbcas_ASSvc_GetObjRefHdl_exc_ *exception_
  , /* In    */ const CONNECTION_CONTEXT_def *inContext
  , /* In    */ const USER_DESC_def *userDesc
  , /* In    */ IDL_long srvrType
  , /* In    */ IDL_short retryCount
  , /* Out   */ IDL_char *srvrObjRef
  , /* Out   */ DIALOGUE_ID_def *dialogueId
  , /* Out   */ IDL_char *dataSource
  , /* Out   */ USER_SID_def *userSid
  , /* Out   */ VERSION_LIST_def *versionList
  );

/********************************************
 * Operation 'odbcas_ASSvc_UpdateSrvrState' *
 ********************************************/

/*
 * Exception number constants for
 * operation 'odbcas_ASSvc_UpdateSrvrState'
 */
#define odbcas_ASSvc_UpdateSrvrState_ASParamError_exn_ 1
#define odbcas_ASSvc_UpdateSrvrState_ASTimeout_exn_ 2
#define odbcas_ASSvc_UpdateSrvrState_ASStateChangeError_exn_ 3
/*
 * Exception union for
 * operation 'odbcas_ASSvc_UpdateSrvrState'
 */
struct odbcas_ASSvc_UpdateSrvrState_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbcas_ASSvc_ASParamError ASParamError;
    odbcas_ASSvc_ASTimeout ASTimeout;
    odbcas_ASSvc_ASStateChangeError ASStateChangeError;
  } u;
};
/*
 * Local index for operation 'odbcas_ASSvc_UpdateSrvrState'
 */
#define odbcas_ASSvc_UpdateSrvrState_ldx_ ((IDL_unsigned_long) 3)
/*
 * Operation synopsis for operation 'odbcas_ASSvc_UpdateSrvrState'
 */
#define odbcas_ASSvc_UpdateSrvrState_osy_ ((IDL_long) -1019394971)
/*
 * Call Completion function pointer type for
 * operation 'odbcas_ASSvc_UpdateSrvrState'
 */
typedef void (*odbcas_ASSvc_UpdateSrvrState_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_UpdateSrvrState_exc_ *exception_
  , /* In    */ IDL_long TraceType
  , /* In    */ IDL_long StatisticsType
  , /* In    */ IDL_long ContextType
  , /* In    */ const SRVR_CONTEXT_def *srvrContext
  );
/*
 * Call Completion function prototype for
 * operation 'odbcas_ASSvc_UpdateSrvrState'
 */
extern "C" void
odbcas_ASSvc_UpdateSrvrState_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_UpdateSrvrState_exc_ *exception_
  , /* In    */ IDL_long TraceType
  , /* In    */ IDL_long StatisticsType
  , /* In    */ IDL_long ContextType
  , /* In    */ const SRVR_CONTEXT_def *srvrContext
  );
/*
 * Asynchronous object call for
 * operation 'odbcas_ASSvc_UpdateSrvrState'
 */
extern "C" CEE_status
odbcas_ASSvc_UpdateSrvrState_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbcas_ASSvc_UpdateSrvrState_cct_ rtn_
  , /* In    */ IDL_long srvrType
  , /* In    */ const IDL_char *srvrObjRef
  , /* In    */ IDL_long srvrState
  );
/*
 * Synchronous object call for
 * operation 'odbcas_ASSvc_UpdateSrvrState'
 */
extern "C" void
odbcas_ASSvc_UpdateSrvrState(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbcas_ASSvc_UpdateSrvrState_exc_ *exception_
  , /* In    */ IDL_long srvrType
  , /* In    */ const IDL_char *srvrObjRef
  , /* In    */ IDL_long srvrState
  , /* Out   */ IDL_long *TraceType
  , /* Out   */ IDL_long *StatisticsType
  , /* Out   */ IDL_long *ContextType
  , /* Out   */ SRVR_CONTEXT_def *srvrContext
  );

/********************************************
 * Operation 'odbcas_ASSvc_SrvrMonitorCall' *
 ********************************************/
/*
 * Exception union for
 * operation 'odbcas_ASSvc_SrvrMonitorCall'
 */
struct odbcas_ASSvc_SrvrMonitorCall_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
};
/*
 * Local index for operation 'odbcas_ASSvc_SrvrMonitorCall'
 */
#define odbcas_ASSvc_SrvrMonitorCall_ldx_ ((IDL_unsigned_long) 4)
/*
 * Operation synopsis for operation 'odbcas_ASSvc_SrvrMonitorCall'
 */
#define odbcas_ASSvc_SrvrMonitorCall_osy_ ((IDL_long) -811446880)
/*
 * Call Completion function pointer type for
 * operation 'odbcas_ASSvc_SrvrMonitorCall'
 */
typedef void (*odbcas_ASSvc_SrvrMonitorCall_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_SrvrMonitorCall_exc_ *exception_
  );
/*
 * Call Completion function prototype for
 * operation 'odbcas_ASSvc_SrvrMonitorCall'
 */
extern "C" void
odbcas_ASSvc_SrvrMonitorCall_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_SrvrMonitorCall_exc_ *exception_
  );
/*
 * Asynchronous object call for
 * operation 'odbcas_ASSvc_SrvrMonitorCall'
 */
extern "C" CEE_status
odbcas_ASSvc_SrvrMonitorCall_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbcas_ASSvc_SrvrMonitorCall_cct_ rtn_
  , /* In    */ IDL_long srvrType
  , /* In    */ const IDL_char *srvrObjRef
  , /* In    */ IDL_long DSId
  );
/*
 * Synchronous object call for
 * operation 'odbcas_ASSvc_SrvrMonitorCall'
 */
extern "C" void
odbcas_ASSvc_SrvrMonitorCall(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbcas_ASSvc_SrvrMonitorCall_exc_ *exception_
  , /* In    */ IDL_long srvrType
  , /* In    */ const IDL_char *srvrObjRef
  , /* In    */ IDL_long DSId
  );

/************************************
 * Operation 'odbcas_ASSvc_StartAS' *
 ************************************/

/*
 * Exception number constants for
 * operation 'odbcas_ASSvc_StartAS'
 */
#define odbcas_ASSvc_StartAS_ASParamError_exn_ 1
#define odbcas_ASSvc_StartAS_DSAlreadyStarted_exn_ 2
#define odbcas_ASSvc_StartAS_DSStateChangeError_exn_ 3
#define odbcas_ASSvc_StartAS_PortNotAvailable_exn_ 4
#define odbcas_ASSvc_StartAS_SQLError_exn_ 5
#define odbcas_ASSvc_StartAS_ASTryAgain_exn_ 6
#define odbcas_ASSvc_StartAS_SrvrCreateError_exn_ 7
#define odbcas_ASSvc_StartAS_CfgSrvrFailed_exn_ 8
/*
 * Exception union for
 * operation 'odbcas_ASSvc_StartAS'
 */
struct odbcas_ASSvc_StartAS_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbcas_ASSvc_ASParamError ASParamError;
    odbcas_ASSvc_SQLError SQLError;
  } u;
};
/*
 * Local index for operation 'odbcas_ASSvc_StartAS'
 */
#define odbcas_ASSvc_StartAS_ldx_ ((IDL_unsigned_long) 5)
/*
 * Operation synopsis for operation 'odbcas_ASSvc_StartAS'
 */
#define odbcas_ASSvc_StartAS_osy_ ((IDL_long) 478578729)
/*
 * Call Completion function pointer type for
 * operation 'odbcas_ASSvc_StartAS'
 */
typedef void (*odbcas_ASSvc_StartAS_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_StartAS_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Call Completion function prototype for
 * operation 'odbcas_ASSvc_StartAS'
 */
extern "C" void
odbcas_ASSvc_StartAS_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_StartAS_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Asynchronous object call for
 * operation 'odbcas_ASSvc_StartAS'
 */
extern "C" CEE_status
odbcas_ASSvc_StartAS_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbcas_ASSvc_StartAS_cct_ rtn_
  );
/*
 * Synchronous object call for
 * operation 'odbcas_ASSvc_StartAS'
 */
extern "C" void
odbcas_ASSvc_StartAS(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbcas_ASSvc_StartAS_exc_ *exception_
  , /* Out   */ ERROR_DESC_LIST_def *sqlWarning
  );

/***********************************
 * Operation 'odbcas_ASSvc_StopAS' *
 ***********************************/

/*
 * Exception number constants for
 * operation 'odbcas_ASSvc_StopAS'
 */
#define odbcas_ASSvc_StopAS_ASParamError_exn_ 1
#define odbcas_ASSvc_StopAS_DSStateChangeError_exn_ 2
#define odbcas_ASSvc_StopAS_ProcessStopError_exn_ 3
/*
 * Exception union for
 * operation 'odbcas_ASSvc_StopAS'
 */
struct odbcas_ASSvc_StopAS_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbcas_ASSvc_ASParamError ASParamError;
  } u;
};
/*
 * Local index for operation 'odbcas_ASSvc_StopAS'
 */
#define odbcas_ASSvc_StopAS_ldx_ ((IDL_unsigned_long) 6)
/*
 * Operation synopsis for operation 'odbcas_ASSvc_StopAS'
 */
#define odbcas_ASSvc_StopAS_osy_ ((IDL_long) 39137010)
/*
 * Call Completion function pointer type for
 * operation 'odbcas_ASSvc_StopAS'
 */
typedef void (*odbcas_ASSvc_StopAS_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_StopAS_exc_ *exception_
  );
/*
 * Call Completion function prototype for
 * operation 'odbcas_ASSvc_StopAS'
 */
extern "C" void
odbcas_ASSvc_StopAS_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_StopAS_exc_ *exception_
  );
/*
 * Asynchronous object call for
 * operation 'odbcas_ASSvc_StopAS'
 */
extern "C" CEE_status
odbcas_ASSvc_StopAS_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbcas_ASSvc_StopAS_cct_ rtn_
  , /* In    */ IDL_long StopType
  , /* In    */ IDL_string ReasonText
  );
/*
 * Synchronous object call for
 * operation 'odbcas_ASSvc_StopAS'
 */
extern "C" void
odbcas_ASSvc_StopAS(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbcas_ASSvc_StopAS_exc_ *exception_
  , /* In    */ IDL_long StopType
  , /* In    */ IDL_string ReasonText
  );

/************************************
 * Operation 'odbcas_ASSvc_StartDS' *
 ************************************/

/*
 * Exception number constants for
 * operation 'odbcas_ASSvc_StartDS'
 */
#define odbcas_ASSvc_StartDS_ASParamError_exn_ 1
#define odbcas_ASSvc_StartDS_DSNotFound_exn_ 2
#define odbcas_ASSvc_StartDS_DSAlreadyStarted_exn_ 3
#define odbcas_ASSvc_StartDS_DSStateChangeError_exn_ 4
#define odbcas_ASSvc_StartDS_PortNotAvailable_exn_ 5
#define odbcas_ASSvc_StartDS_SQLError_exn_ 6
#define odbcas_ASSvc_StartDS_SrvrCreateError_exn_ 7
/*
 * Exception union for
 * operation 'odbcas_ASSvc_StartDS'
 */
struct odbcas_ASSvc_StartDS_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbcas_ASSvc_ASParamError ASParamError;
    odbcas_ASSvc_SQLError SQLError;
  } u;
};
/*
 * Local index for operation 'odbcas_ASSvc_StartDS'
 */
#define odbcas_ASSvc_StartDS_ldx_ ((IDL_unsigned_long) 7)
/*
 * Operation synopsis for operation 'odbcas_ASSvc_StartDS'
 */
#define odbcas_ASSvc_StartDS_osy_ ((IDL_long) -946920360)
/*
 * Call Completion function pointer type for
 * operation 'odbcas_ASSvc_StartDS'
 */
typedef void (*odbcas_ASSvc_StartDS_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_StartDS_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Call Completion function prototype for
 * operation 'odbcas_ASSvc_StartDS'
 */
extern "C" void
odbcas_ASSvc_StartDS_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_StartDS_exc_ *exception_
  , /* In    */ const ERROR_DESC_LIST_def *sqlWarning
  );
/*
 * Asynchronous object call for
 * operation 'odbcas_ASSvc_StartDS'
 */
extern "C" CEE_status
odbcas_ASSvc_StartDS_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbcas_ASSvc_StartDS_cct_ rtn_
  , /* In    */ const IDL_char *DSName
  );
/*
 * Synchronous object call for
 * operation 'odbcas_ASSvc_StartDS'
 */
extern "C" void
odbcas_ASSvc_StartDS(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbcas_ASSvc_StartDS_exc_ *exception_
  , /* In    */ const IDL_char *DSName
  , /* Out   */ ERROR_DESC_LIST_def *sqlWarning
  );

/***********************************
 * Operation 'odbcas_ASSvc_StopDS' *
 ***********************************/

/*
 * Exception number constants for
 * operation 'odbcas_ASSvc_StopDS'
 */
#define odbcas_ASSvc_StopDS_ASParamError_exn_ 1
#define odbcas_ASSvc_StopDS_DSNotFound_exn_ 2
#define odbcas_ASSvc_StopDS_DSAlreadyStopped_exn_ 3
#define odbcas_ASSvc_StopDS_DSStateChangeError_exn_ 4
#define odbcas_ASSvc_StopDS_ProcessStopError_exn_ 5
/*
 * Exception union for
 * operation 'odbcas_ASSvc_StopDS'
 */
struct odbcas_ASSvc_StopDS_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbcas_ASSvc_ASParamError ASParamError;
  } u;
};
/*
 * Local index for operation 'odbcas_ASSvc_StopDS'
 */
#define odbcas_ASSvc_StopDS_ldx_ ((IDL_unsigned_long) 8)
/*
 * Operation synopsis for operation 'odbcas_ASSvc_StopDS'
 */
#define odbcas_ASSvc_StopDS_osy_ ((IDL_long) 1932719932)
/*
 * Call Completion function pointer type for
 * operation 'odbcas_ASSvc_StopDS'
 */
typedef void (*odbcas_ASSvc_StopDS_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_StopDS_exc_ *exception_
  );
/*
 * Call Completion function prototype for
 * operation 'odbcas_ASSvc_StopDS'
 */
extern "C" void
odbcas_ASSvc_StopDS_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_StopDS_exc_ *exception_
  );
/*
 * Asynchronous object call for
 * operation 'odbcas_ASSvc_StopDS'
 */
extern "C" CEE_status
odbcas_ASSvc_StopDS_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbcas_ASSvc_StopDS_cct_ rtn_
  , /* In    */ const IDL_char *DSName
  , /* In    */ IDL_long StopType
  , /* In    */ IDL_string ReasonText
  );
/*
 * Synchronous object call for
 * operation 'odbcas_ASSvc_StopDS'
 */
extern "C" void
odbcas_ASSvc_StopDS(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbcas_ASSvc_StopDS_exc_ *exception_
  , /* In    */ const IDL_char *DSName
  , /* In    */ IDL_long StopType
  , /* In    */ IDL_string ReasonText
  );

/*************************************
 * Operation 'odbcas_ASSvc_StatusAS' *
 *************************************/
/*
 * Exception union for
 * operation 'odbcas_ASSvc_StatusAS'
 */
struct odbcas_ASSvc_StatusAS_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
};
/*
 * Local index for operation 'odbcas_ASSvc_StatusAS'
 */
#define odbcas_ASSvc_StatusAS_ldx_ ((IDL_unsigned_long) 9)
/*
 * Operation synopsis for operation 'odbcas_ASSvc_StatusAS'
 */
#define odbcas_ASSvc_StatusAS_osy_ ((IDL_long) 470889124)
/*
 * Call Completion function pointer type for
 * operation 'odbcas_ASSvc_StatusAS'
 */
typedef void (*odbcas_ASSvc_StatusAS_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_StatusAS_exc_ *exception_
  , /* In    */ const AS_CFG_STATUS_def *AsCfgStatus
  );
/*
 * Call Completion function prototype for
 * operation 'odbcas_ASSvc_StatusAS'
 */
extern "C" void
odbcas_ASSvc_StatusAS_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_StatusAS_exc_ *exception_
  , /* In    */ const AS_CFG_STATUS_def *AsCfgStatus
  );
/*
 * Asynchronous object call for
 * operation 'odbcas_ASSvc_StatusAS'
 */
extern "C" CEE_status
odbcas_ASSvc_StatusAS_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbcas_ASSvc_StatusAS_cct_ rtn_
  );
/*
 * Synchronous object call for
 * operation 'odbcas_ASSvc_StatusAS'
 */
extern "C" void
odbcas_ASSvc_StatusAS(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbcas_ASSvc_StatusAS_exc_ *exception_
  , /* Out   */ AS_CFG_STATUS_def *AsCfgStatus
  );

/*************************************
 * Operation 'odbcas_ASSvc_StatusDS' *
 *************************************/

/*
 * Exception number constants for
 * operation 'odbcas_ASSvc_StatusDS'
 */
#define odbcas_ASSvc_StatusDS_ASParamError_exn_ 1
#define odbcas_ASSvc_StatusDS_DSNotFound_exn_ 2
/*
 * Exception union for
 * operation 'odbcas_ASSvc_StatusDS'
 */
struct odbcas_ASSvc_StatusDS_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbcas_ASSvc_ASParamError ASParamError;
  } u;
};
/*
 * Local index for operation 'odbcas_ASSvc_StatusDS'
 */
#define odbcas_ASSvc_StatusDS_ldx_ ((IDL_unsigned_long) 10)
/*
 * Operation synopsis for operation 'odbcas_ASSvc_StatusDS'
 */
#define odbcas_ASSvc_StatusDS_osy_ ((IDL_long) -1871233060)
/*
 * Call Completion function pointer type for
 * operation 'odbcas_ASSvc_StatusDS'
 */
typedef void (*odbcas_ASSvc_StatusDS_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_StatusDS_exc_ *exception_
  , /* In    */ const DATASOURCE_STATUS_def *DSStatus
  );
/*
 * Call Completion function prototype for
 * operation 'odbcas_ASSvc_StatusDS'
 */
extern "C" void
odbcas_ASSvc_StatusDS_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_StatusDS_exc_ *exception_
  , /* In    */ const DATASOURCE_STATUS_def *DSStatus
  );
/*
 * Asynchronous object call for
 * operation 'odbcas_ASSvc_StatusDS'
 */
extern "C" CEE_status
odbcas_ASSvc_StatusDS_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbcas_ASSvc_StatusDS_cct_ rtn_
  , /* In    */ const IDL_char *DSName
  );
/*
 * Synchronous object call for
 * operation 'odbcas_ASSvc_StatusDS'
 */
extern "C" void
odbcas_ASSvc_StatusDS(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbcas_ASSvc_StatusDS_exc_ *exception_
  , /* In    */ const IDL_char *DSName
  , /* Out   */ DATASOURCE_STATUS_def *DSStatus
  );

/*******************************************
 * Operation 'odbcas_ASSvc_StatusDSDetail' *
 *******************************************/

/*
 * Exception number constants for
 * operation 'odbcas_ASSvc_StatusDSDetail'
 */
#define odbcas_ASSvc_StatusDSDetail_ASParamError_exn_ 1
#define odbcas_ASSvc_StatusDSDetail_DSNotFound_exn_ 2
#define odbcas_ASSvc_StatusDSDetail_ASNotAvailable_exn_ 3
#define odbcas_ASSvc_StatusDSDetail_DSNotAvailable_exn_ 4
/*
 * Exception union for
 * operation 'odbcas_ASSvc_StatusDSDetail'
 */
struct odbcas_ASSvc_StatusDSDetail_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbcas_ASSvc_ASParamError ASParamError;
    odbcas_ASSvc_ASNotAvailable ASNotAvailable;
    odbcas_ASSvc_DSNotAvailable DSNotAvailable;
  } u;
};
/*
 * Local index for operation 'odbcas_ASSvc_StatusDSDetail'
 */
#define odbcas_ASSvc_StatusDSDetail_ldx_ ((IDL_unsigned_long) 11)
/*
 * Operation synopsis for operation 'odbcas_ASSvc_StatusDSDetail'
 */
#define odbcas_ASSvc_StatusDSDetail_osy_ ((IDL_long) -1849630353)
/*
 * Call Completion function pointer type for
 * operation 'odbcas_ASSvc_StatusDSDetail'
 */
typedef void (*odbcas_ASSvc_StatusDSDetail_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_StatusDSDetail_exc_ *exception_
  , /* In    */ const SRVR_STATUS_LIST_def *srvrListStatus
  );
/*
 * Call Completion function prototype for
 * operation 'odbcas_ASSvc_StatusDSDetail'
 */
extern "C" void
odbcas_ASSvc_StatusDSDetail_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_StatusDSDetail_exc_ *exception_
  , /* In    */ const SRVR_STATUS_LIST_def *srvrListStatus
  );
/*
 * Asynchronous object call for
 * operation 'odbcas_ASSvc_StatusDSDetail'
 */
extern "C" CEE_status
odbcas_ASSvc_StatusDSDetail_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbcas_ASSvc_StatusDSDetail_cct_ rtn_
  , /* In    */ const IDL_char *DSName
  );
/*
 * Synchronous object call for
 * operation 'odbcas_ASSvc_StatusDSDetail'
 */
extern "C" void
odbcas_ASSvc_StatusDSDetail(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbcas_ASSvc_StatusDSDetail_exc_ *exception_
  , /* In    */ const IDL_char *DSName
  , /* Out   */ SRVR_STATUS_LIST_def *srvrListStatus
  );

/******************************************
 * Operation 'odbcas_ASSvc_StatusSrvrAll' *
 ******************************************/

/*
 * Exception number constants for
 * operation 'odbcas_ASSvc_StatusSrvrAll'
 */
#define odbcas_ASSvc_StatusSrvrAll_ASParamError_exn_ 1
#define odbcas_ASSvc_StatusSrvrAll_ASNotAvailable_exn_ 2
/*
 * Exception union for
 * operation 'odbcas_ASSvc_StatusSrvrAll'
 */
struct odbcas_ASSvc_StatusSrvrAll_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbcas_ASSvc_ASParamError ASParamError;
    odbcas_ASSvc_ASNotAvailable ASNotAvailable;
  } u;
};
/*
 * Local index for operation 'odbcas_ASSvc_StatusSrvrAll'
 */
#define odbcas_ASSvc_StatusSrvrAll_ldx_ ((IDL_unsigned_long) 12)
/*
 * Operation synopsis for operation 'odbcas_ASSvc_StatusSrvrAll'
 */
#define odbcas_ASSvc_StatusSrvrAll_osy_ ((IDL_long) 58174705)
/*
 * Call Completion function pointer type for
 * operation 'odbcas_ASSvc_StatusSrvrAll'
 */
typedef void (*odbcas_ASSvc_StatusSrvrAll_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_StatusSrvrAll_exc_ *exception_
  , /* In    */ const SRVR_STATUS_LIST_def *srvrListStatus
  );
/*
 * Call Completion function prototype for
 * operation 'odbcas_ASSvc_StatusSrvrAll'
 */
extern "C" void
odbcas_ASSvc_StatusSrvrAll_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_StatusSrvrAll_exc_ *exception_
  , /* In    */ const SRVR_STATUS_LIST_def *srvrListStatus
  );
/*
 * Asynchronous object call for
 * operation 'odbcas_ASSvc_StatusSrvrAll'
 */
extern "C" CEE_status
odbcas_ASSvc_StatusSrvrAll_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbcas_ASSvc_StatusSrvrAll_cct_ rtn_
  );
/*
 * Synchronous object call for
 * operation 'odbcas_ASSvc_StatusSrvrAll'
 */
extern "C" void
odbcas_ASSvc_StatusSrvrAll(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbcas_ASSvc_StatusSrvrAll_exc_ *exception_
  , /* Out   */ SRVR_STATUS_LIST_def *srvrListStatus
  );

/*************************************
 * Operation 'odbcas_ASSvc_StopSrvr' *
 *************************************/

/*
 * Exception number constants for
 * operation 'odbcas_ASSvc_StopSrvr'
 */
#define odbcas_ASSvc_StopSrvr_ASParamError_exn_ 1
#define odbcas_ASSvc_StopSrvr_ASNotAvailable_exn_ 2
#define odbcas_ASSvc_StopSrvr_SrvrNotFound_exn_ 3
#define odbcas_ASSvc_StopSrvr_SrvrInUseByAnotherClient_exn_ 4
#define odbcas_ASSvc_StopSrvr_ProcessStopError_exn_ 5
/*
 * Exception union for
 * operation 'odbcas_ASSvc_StopSrvr'
 */
struct odbcas_ASSvc_StopSrvr_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbcas_ASSvc_ASParamError ASParamError;
    odbcas_ASSvc_ASNotAvailable ASNotAvailable;
  } u;
};
/*
 * Local index for operation 'odbcas_ASSvc_StopSrvr'
 */
#define odbcas_ASSvc_StopSrvr_ldx_ ((IDL_unsigned_long) 13)
/*
 * Operation synopsis for operation 'odbcas_ASSvc_StopSrvr'
 */
#define odbcas_ASSvc_StopSrvr_osy_ ((IDL_long) 1728644050)
/*
 * Call Completion function pointer type for
 * operation 'odbcas_ASSvc_StopSrvr'
 */
typedef void (*odbcas_ASSvc_StopSrvr_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_StopSrvr_exc_ *exception_
  );
/*
 * Call Completion function prototype for
 * operation 'odbcas_ASSvc_StopSrvr'
 */
extern "C" void
odbcas_ASSvc_StopSrvr_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_StopSrvr_exc_ *exception_
  );
/*
 * Asynchronous object call for
 * operation 'odbcas_ASSvc_StopSrvr'
 */
extern "C" CEE_status
odbcas_ASSvc_StopSrvr_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbcas_ASSvc_StopSrvr_cct_ rtn_
  , /* In    */ DIALOGUE_ID_def dialogueId
  , /* In    */ IDL_long srvrType
  , /* In    */ const IDL_char *srvrObjRef
  , /* In    */ IDL_long StopType
  );
/*
 * Synchronous object call for
 * operation 'odbcas_ASSvc_StopSrvr'
 */
extern "C" void
odbcas_ASSvc_StopSrvr(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbcas_ASSvc_StopSrvr_exc_ *exception_
  , /* In    */ DIALOGUE_ID_def dialogueId
  , /* In    */ IDL_long srvrType
  , /* In    */ const IDL_char *srvrObjRef
  , /* In    */ IDL_long StopType
  );

/****************************************
 * Operation 'odbcas_ASSvc_StatusDSAll' *
 ****************************************/

/*
 * Exception number constants for
 * operation 'odbcas_ASSvc_StatusDSAll'
 */
#define odbcas_ASSvc_StatusDSAll_ASParamError_exn_ 1
/*
 * Exception union for
 * operation 'odbcas_ASSvc_StatusDSAll'
 */
struct odbcas_ASSvc_StatusDSAll_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbcas_ASSvc_ASParamError ASParamError;
  } u;
};
/*
 * Local index for operation 'odbcas_ASSvc_StatusDSAll'
 */
#define odbcas_ASSvc_StatusDSAll_ldx_ ((IDL_unsigned_long) 14)
/*
 * Operation synopsis for operation 'odbcas_ASSvc_StatusDSAll'
 */
#define odbcas_ASSvc_StatusDSAll_osy_ ((IDL_long) 412216083)
/*
 * Call Completion function pointer type for
 * operation 'odbcas_ASSvc_StatusDSAll'
 */
typedef void (*odbcas_ASSvc_StatusDSAll_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_StatusDSAll_exc_ *exception_
  , /* In    */ const DATASOURCE_STATUS_LIST_def *DSListStatus
  );
/*
 * Call Completion function prototype for
 * operation 'odbcas_ASSvc_StatusDSAll'
 */
extern "C" void
odbcas_ASSvc_StatusDSAll_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_StatusDSAll_exc_ *exception_
  , /* In    */ const DATASOURCE_STATUS_LIST_def *DSListStatus
  );
/*
 * Asynchronous object call for
 * operation 'odbcas_ASSvc_StatusDSAll'
 */
extern "C" CEE_status
odbcas_ASSvc_StatusDSAll_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbcas_ASSvc_StatusDSAll_cct_ rtn_
  );
/*
 * Synchronous object call for
 * operation 'odbcas_ASSvc_StatusDSAll'
 */
extern "C" void
odbcas_ASSvc_StatusDSAll(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbcas_ASSvc_StatusDSAll_exc_ *exception_
  , /* Out   */ DATASOURCE_STATUS_LIST_def *DSListStatus
  );

/********************************************
 * Operation 'odbcas_ASSvc_WouldLikeToLive' *
 ********************************************/

/*
 * Exception number constants for
 * operation 'odbcas_ASSvc_WouldLikeToLive'
 */
#define odbcas_ASSvc_WouldLikeToLive_ASParamError_exn_ 1
/*
 * Exception union for
 * operation 'odbcas_ASSvc_WouldLikeToLive'
 */
struct odbcas_ASSvc_WouldLikeToLive_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbcas_ASSvc_ASParamError ASParamError;
  } u;
};
/*
 * Local index for operation 'odbcas_ASSvc_WouldLikeToLive'
 */
#define odbcas_ASSvc_WouldLikeToLive_ldx_ ((IDL_unsigned_long) 15)
/*
 * Operation synopsis for operation 'odbcas_ASSvc_WouldLikeToLive'
 */
#define odbcas_ASSvc_WouldLikeToLive_osy_ ((IDL_long) 691115433)
/*
 * Call Completion function pointer type for
 * operation 'odbcas_ASSvc_WouldLikeToLive'
 */
typedef void (*odbcas_ASSvc_WouldLikeToLive_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_WouldLikeToLive_exc_ *exception_
  , /* In    */ IDL_long lifePermit
  );
/*
 * Call Completion function prototype for
 * operation 'odbcas_ASSvc_WouldLikeToLive'
 */
extern "C" void
odbcas_ASSvc_WouldLikeToLive_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_WouldLikeToLive_exc_ *exception_
  , /* In    */ IDL_long lifePermit
  );
/*
 * Asynchronous object call for
 * operation 'odbcas_ASSvc_WouldLikeToLive'
 */
extern "C" CEE_status
odbcas_ASSvc_WouldLikeToLive_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbcas_ASSvc_WouldLikeToLive_cct_ rtn_
  , /* In    */ IDL_long srvrType
  , /* In    */ const IDL_char *srvrObjRef
  );
/*
 * Synchronous object call for
 * operation 'odbcas_ASSvc_WouldLikeToLive'
 */
extern "C" void
odbcas_ASSvc_WouldLikeToLive(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbcas_ASSvc_WouldLikeToLive_exc_ *exception_
  , /* In    */ IDL_long srvrType
  , /* In    */ const IDL_char *srvrObjRef
  , /* Out   */ IDL_long *lifePermit
  );

/*****************************************
 * Operation 'odbcas_ASSvc_SetTestPoint' *
 *****************************************/

/*
 * Exception number constants for
 * operation 'odbcas_ASSvc_SetTestPoint'
 */
#define odbcas_ASSvc_SetTestPoint_ASParamError_exn_ 1
/*
 * Exception union for
 * operation 'odbcas_ASSvc_SetTestPoint'
 */
struct odbcas_ASSvc_SetTestPoint_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbcas_ASSvc_ASParamError ASParamError;
  } u;
};
/*
 * Local index for operation 'odbcas_ASSvc_SetTestPoint'
 */
#define odbcas_ASSvc_SetTestPoint_ldx_ ((IDL_unsigned_long) 16)
/*
 * Operation synopsis for operation 'odbcas_ASSvc_SetTestPoint'
 */
#define odbcas_ASSvc_SetTestPoint_osy_ ((IDL_long) -258781373)
/*
 * Call Completion function pointer type for
 * operation 'odbcas_ASSvc_SetTestPoint'
 */
typedef void (*odbcas_ASSvc_SetTestPoint_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_SetTestPoint_exc_ *exception_
  );
/*
 * Call Completion function prototype for
 * operation 'odbcas_ASSvc_SetTestPoint'
 */
extern "C" void
odbcas_ASSvc_SetTestPoint_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_SetTestPoint_exc_ *exception_
  );
/*
 * Asynchronous object call for
 * operation 'odbcas_ASSvc_SetTestPoint'
 */
extern "C" CEE_status
odbcas_ASSvc_SetTestPoint_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbcas_ASSvc_SetTestPoint_cct_ rtn_
  , /* In    */ DIALOGUE_ID_def dialogueId
  , /* In    */ IDL_short TestPoint
  , /* In    */ IDL_unsigned_long Operation
  );
/*
 * Synchronous object call for
 * operation 'odbcas_ASSvc_SetTestPoint'
 */
extern "C" void
odbcas_ASSvc_SetTestPoint(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbcas_ASSvc_SetTestPoint_exc_ *exception_
  , /* In    */ DIALOGUE_ID_def dialogueId
  , /* In    */ IDL_short TestPoint
  , /* In    */ IDL_unsigned_long Operation
  );

/*******************************************
 * Operation 'odbcas_ASSvc_ClearTestPoint' *
 *******************************************/

/*
 * Exception number constants for
 * operation 'odbcas_ASSvc_ClearTestPoint'
 */
#define odbcas_ASSvc_ClearTestPoint_ASParamError_exn_ 1
/*
 * Exception union for
 * operation 'odbcas_ASSvc_ClearTestPoint'
 */
struct odbcas_ASSvc_ClearTestPoint_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbcas_ASSvc_ASParamError ASParamError;
  } u;
};
/*
 * Local index for operation 'odbcas_ASSvc_ClearTestPoint'
 */
#define odbcas_ASSvc_ClearTestPoint_ldx_ ((IDL_unsigned_long) 17)
/*
 * Operation synopsis for operation 'odbcas_ASSvc_ClearTestPoint'
 */
#define odbcas_ASSvc_ClearTestPoint_osy_ ((IDL_long) 390699907)
/*
 * Call Completion function pointer type for
 * operation 'odbcas_ASSvc_ClearTestPoint'
 */
typedef void (*odbcas_ASSvc_ClearTestPoint_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_ClearTestPoint_exc_ *exception_
  );
/*
 * Call Completion function prototype for
 * operation 'odbcas_ASSvc_ClearTestPoint'
 */
extern "C" void
odbcas_ASSvc_ClearTestPoint_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_ClearTestPoint_exc_ *exception_
  );
/*
 * Asynchronous object call for
 * operation 'odbcas_ASSvc_ClearTestPoint'
 */
extern "C" CEE_status
odbcas_ASSvc_ClearTestPoint_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbcas_ASSvc_ClearTestPoint_cct_ rtn_
  , /* In    */ DIALOGUE_ID_def dialogueId
  , /* In    */ IDL_short TestPoint
  , /* In    */ IDL_unsigned_short Operation
  );
/*
 * Synchronous object call for
 * operation 'odbcas_ASSvc_ClearTestPoint'
 */
extern "C" void
odbcas_ASSvc_ClearTestPoint(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbcas_ASSvc_ClearTestPoint_exc_ *exception_
  , /* In    */ DIALOGUE_ID_def dialogueId
  , /* In    */ IDL_short TestPoint
  , /* In    */ IDL_unsigned_short Operation
  );

/****************************************************
 * Operation 'odbcas_ASSvc_DataSourceConfigChanged' *
 ****************************************************/

/*
 * Exception number constants for
 * operation 'odbcas_ASSvc_DataSourceConfigChanged'
 */
#define odbcas_ASSvc_DataSourceConfigChanged_ASParamError_exn_ 1
/*
 * Exception union for
 * operation 'odbcas_ASSvc_DataSourceConfigChanged'
 */
struct odbcas_ASSvc_DataSourceConfigChanged_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbcas_ASSvc_ASParamError ASParamError;
  } u;
};
/*
 * Local index for operation 'odbcas_ASSvc_DataSourceConfigChanged'
 */
#define odbcas_ASSvc_DataSourceConfigChanged_ldx_ ((IDL_unsigned_long) 18)
/*
 * Operation synopsis for operation 'odbcas_ASSvc_DataSourceConfigChanged'
 */
#define odbcas_ASSvc_DataSourceConfigChanged_osy_ ((IDL_long) 1738586948)
/*
 * Call Completion function pointer type for
 * operation 'odbcas_ASSvc_DataSourceConfigChanged'
 */
typedef void (*odbcas_ASSvc_DataSourceConfigChanged_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_DataSourceConfigChanged_exc_ *exception_
  );
/*
 * Call Completion function prototype for
 * operation 'odbcas_ASSvc_DataSourceConfigChanged'
 */
extern "C" void
odbcas_ASSvc_DataSourceConfigChanged_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_DataSourceConfigChanged_exc_ *exception_
  );
/*
 * Asynchronous object call for
 * operation 'odbcas_ASSvc_DataSourceConfigChanged'
 */
extern "C" CEE_status
odbcas_ASSvc_DataSourceConfigChanged_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbcas_ASSvc_DataSourceConfigChanged_cct_ rtn_
  , /* In    */ const IDL_char *dataSourceName
  , /* In    */ IDL_long dataSourceOperation
  , /* In    */ IDL_long dataSourceOperationValue
  );
/*
 * Synchronous object call for
 * operation 'odbcas_ASSvc_DataSourceConfigChanged'
 */
extern "C" void
odbcas_ASSvc_DataSourceConfigChanged(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbcas_ASSvc_DataSourceConfigChanged_exc_ *exception_
  , /* In    */ const IDL_char *dataSourceName
  , /* In    */ IDL_long dataSourceOperation
  , /* In    */ IDL_long dataSourceOperationValue
  );

/*****************************************
 * Operation 'odbcas_ASSvc_GeneralParam' *
 *****************************************/

/*
 * Exception number constants for
 * operation 'odbcas_ASSvc_GeneralParam'
 */
#define odbcas_ASSvc_GeneralParam_ASParamError_exn_ 1
/*
 * Exception union for
 * operation 'odbcas_ASSvc_GeneralParam'
 */
struct odbcas_ASSvc_GeneralParam_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbcas_ASSvc_ASParamError ASParamError;
  } u;
};
/*
 * Local index for operation 'odbcas_ASSvc_GeneralParam'
 */
#define odbcas_ASSvc_GeneralParam_ldx_ ((IDL_unsigned_long) 19)
/*
 * Operation synopsis for operation 'odbcas_ASSvc_GeneralParam'
 */
#define odbcas_ASSvc_GeneralParam_osy_ ((IDL_long) 830318057)
/*
 * Call Completion function pointer type for
 * operation 'odbcas_ASSvc_GeneralParam'
 */
typedef void (*odbcas_ASSvc_GeneralParam_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_GeneralParam_exc_ *exception_
  );
/*
 * Call Completion function prototype for
 * operation 'odbcas_ASSvc_GeneralParam'
 */
extern "C" void
odbcas_ASSvc_GeneralParam_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_GeneralParam_exc_ *exception_
  );
/*
 * Asynchronous object call for
 * operation 'odbcas_ASSvc_GeneralParam'
 */
extern "C" CEE_status
odbcas_ASSvc_GeneralParam_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbcas_ASSvc_GeneralParam_cct_ rtn_
  , /* In    */ const GEN_ParamList_def *paramList
  );
/*
 * Synchronous object call for
 * operation 'odbcas_ASSvc_GeneralParam'
 */
extern "C" void
odbcas_ASSvc_GeneralParam(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbcas_ASSvc_GeneralParam_exc_ *exception_
  , /* In    */ const GEN_ParamList_def *paramList
  );

/****************************************
 * Operation 'odbcas_ASSvc_EnableTrace' *
 ****************************************/

/*
 * Exception number constants for
 * operation 'odbcas_ASSvc_EnableTrace'
 */
#define odbcas_ASSvc_EnableTrace_ASParamError_exn_ 1
#define odbcas_ASSvc_EnableTrace_DSNotFound_exn_ 2
#define odbcas_ASSvc_EnableTrace_DSAlreadyStopped_exn_ 3
#define odbcas_ASSvc_EnableTrace_TraceAlreadyEnabled_exn_ 4
#define odbcas_ASSvc_EnableTrace_TraceEnableError_exn_ 5
/*
 * Exception union for
 * operation 'odbcas_ASSvc_EnableTrace'
 */
struct odbcas_ASSvc_EnableTrace_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbcas_ASSvc_ASParamError ASParamError;
  } u;
};
/*
 * Local index for operation 'odbcas_ASSvc_EnableTrace'
 */
#define odbcas_ASSvc_EnableTrace_ldx_ ((IDL_unsigned_long) 20)
/*
 * Operation synopsis for operation 'odbcas_ASSvc_EnableTrace'
 */
#define odbcas_ASSvc_EnableTrace_osy_ ((IDL_long) 320671963)
/*
 * Call Completion function pointer type for
 * operation 'odbcas_ASSvc_EnableTrace'
 */
typedef void (*odbcas_ASSvc_EnableTrace_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_EnableTrace_exc_ *exception_
  );
/*
 * Call Completion function prototype for
 * operation 'odbcas_ASSvc_EnableTrace'
 */
extern "C" void
odbcas_ASSvc_EnableTrace_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_EnableTrace_exc_ *exception_
  );
/*
 * Asynchronous object call for
 * operation 'odbcas_ASSvc_EnableTrace'
 */
extern "C" CEE_status
odbcas_ASSvc_EnableTrace_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbcas_ASSvc_EnableTrace_cct_ rtn_
  , /* In    */ const IDL_char *DSName
  , /* In    */ DIALOGUE_ID_def dialogueId
  , /* In    */ const IDL_char *srvrObjRef
  , /* In    */ IDL_long traceType
  );
/*
 * Synchronous object call for
 * operation 'odbcas_ASSvc_EnableTrace'
 */
extern "C" void
odbcas_ASSvc_EnableTrace(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbcas_ASSvc_EnableTrace_exc_ *exception_
  , /* In    */ const IDL_char *DSName
  , /* In    */ DIALOGUE_ID_def dialogueId
  , /* In    */ const IDL_char *srvrObjRef
  , /* In    */ IDL_long traceType
  );

/*****************************************
 * Operation 'odbcas_ASSvc_DisableTrace' *
 *****************************************/

/*
 * Exception number constants for
 * operation 'odbcas_ASSvc_DisableTrace'
 */
#define odbcas_ASSvc_DisableTrace_ASParamError_exn_ 1
#define odbcas_ASSvc_DisableTrace_DSNotFound_exn_ 2
#define odbcas_ASSvc_DisableTrace_DSAlreadyStopped_exn_ 3
#define odbcas_ASSvc_DisableTrace_TraceAlreadyDisabled_exn_ 4
#define odbcas_ASSvc_DisableTrace_TraceDisableError_exn_ 5
/*
 * Exception union for
 * operation 'odbcas_ASSvc_DisableTrace'
 */
struct odbcas_ASSvc_DisableTrace_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
  union {
    odbcas_ASSvc_ASParamError ASParamError;
  } u;
};
/*
 * Local index for operation 'odbcas_ASSvc_DisableTrace'
 */
#define odbcas_ASSvc_DisableTrace_ldx_ ((IDL_unsigned_long) 21)
/*
 * Operation synopsis for operation 'odbcas_ASSvc_DisableTrace'
 */
#define odbcas_ASSvc_DisableTrace_osy_ ((IDL_long) 135280495)
/*
 * Call Completion function pointer type for
 * operation 'odbcas_ASSvc_DisableTrace'
 */
typedef void (*odbcas_ASSvc_DisableTrace_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_DisableTrace_exc_ *exception_
  );
/*
 * Call Completion function prototype for
 * operation 'odbcas_ASSvc_DisableTrace'
 */
extern "C" void
odbcas_ASSvc_DisableTrace_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_DisableTrace_exc_ *exception_
  );
/*
 * Asynchronous object call for
 * operation 'odbcas_ASSvc_DisableTrace'
 */
extern "C" CEE_status
odbcas_ASSvc_DisableTrace_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbcas_ASSvc_DisableTrace_cct_ rtn_
  , /* In    */ const IDL_char *DSName
  , /* In    */ DIALOGUE_ID_def dialogueId
  , /* In    */ const IDL_char *srvrObjRef
  , /* In    */ IDL_long traceType
  );
/*
 * Synchronous object call for
 * operation 'odbcas_ASSvc_DisableTrace'
 */
extern "C" void
odbcas_ASSvc_DisableTrace(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbcas_ASSvc_DisableTrace_exc_ *exception_
  , /* In    */ const IDL_char *DSName
  , /* In    */ DIALOGUE_ID_def dialogueId
  , /* In    */ const IDL_char *srvrObjRef
  , /* In    */ IDL_long traceType
  );

/*****************************************
 * Operation 'odbcas_ASSvc_GetVersionAS' *
 *****************************************/
/*
 * Exception union for
 * operation 'odbcas_ASSvc_GetVersionAS'
 */
struct odbcas_ASSvc_GetVersionAS_exc_ {
  IDL_long exception_nr;
  IDL_long exception_detail;
};
/*
 * Local index for operation 'odbcas_ASSvc_GetVersionAS'
 */
#define odbcas_ASSvc_GetVersionAS_ldx_ ((IDL_unsigned_long) 22)
/*
 * Operation synopsis for operation 'odbcas_ASSvc_GetVersionAS'
 */
#define odbcas_ASSvc_GetVersionAS_osy_ ((IDL_long) 1913697932)
/*
 * Call Completion function pointer type for
 * operation 'odbcas_ASSvc_GetVersionAS'
 */
typedef void (*odbcas_ASSvc_GetVersionAS_cct_) (
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_GetVersionAS_exc_ *exception_
  , /* In    */ const IDL_char *ASVersion
  );
/*
 * Call Completion function prototype for
 * operation 'odbcas_ASSvc_GetVersionAS'
 */
extern "C" void
odbcas_ASSvc_GetVersionAS_ccf_(
    /* In    */ CEE_tag_def cmptag_
  , /* In    */ const odbcas_ASSvc_GetVersionAS_exc_ *exception_
  , /* In    */ const IDL_char *ASVersion
  );
/*
 * Asynchronous object call for
 * operation 'odbcas_ASSvc_GetVersionAS'
 */
extern "C" CEE_status
odbcas_ASSvc_GetVersionAS_pst_(
    /* In    */ const CEE_handle_def *ph_
  , /* In    */ CEE_tag_def tag_
  , /* In    */ odbcas_ASSvc_GetVersionAS_cct_ rtn_
  );
/*
 * Synchronous object call for
 * operation 'odbcas_ASSvc_GetVersionAS'
 */
extern "C" void
odbcas_ASSvc_GetVersionAS(
    /* In    */ const CEE_handle_def *ph_
  , /* Out   */ odbcas_ASSvc_GetVersionAS_exc_ *exception_
  , /* Out   */ IDL_char *ASVersion
  );

/*
 * CIN description of interface 'odbcas_ASSvc'
 */
static char odbcas_ASSvc_ici_[]  = {
    '!','2','0','+','I','D','L',':','o','d','b','c','a','s','/','A',
    'S','S','v','c',':','1','.','0','2','2','+','6','7','1','5','2',
    '8','1','3','4','-','1','0','+','R','e','g','P','r','o','c','e',
    's','s','(','5','+','1','1','+','i','n','t','f','V','e','r','s',
    'i','o','n','>','b','4','+','I','I','I','K','8','+','s','r','v',
    'r','T','y','p','e','>','F','1','0','+','s','r','v','r','O','b',
    'j','R','e','f','>','a','1','+','1','2','8','+','C','1','4','+',
    'n','s','k','P','r','o','c','e','s','s','I','n','f','o','>','b',
    '3','+','I','F','a','1','+','1','0','+','I','1','1','+','s','r',
    'v','r','C','o','n','t','e','x','t','<','b','4','+','G','G','c',
    '0','+','b','4','+','d','1','2','8','+','G','d','0','+','F','c',
    '0','+','b','3','+','F','F','d','0','+','4','+','3','3','+','I',
    'D','L',':','o','d','b','c','a','s','/','A','S','S','v','c','/',
    'A','S','P','a','r','a','m','E','r','r','o','r',':','1','.','0',
    'g','1','+','d','0','+','3','0','+','I','D','L',':','o','d','b',
    'c','a','s','/','A','S','S','v','c','/','A','S','T','i','m','e',
    'o','u','t',':','1','.','0','g','1','+','d','0','+','3','7','+',
    'I','D','L',':','o','d','b','c','a','s','/','A','S','S','v','c',
    '/','A','S','R','e','g','i','s','t','r','y','F','a','i','l','e',
    'd',':','1','.','0','g','0','+','3','7','+','I','D','L',':','o',
    'd','b','c','a','s','/','A','S','S','v','c','/','A','S','R','e',
    'j','e','c','t','R','e','g','i','s','t','r','y',':','1','.','0',
    'g','1','+','d','0','+','0','+','2','0','2','7','1','4','6','0',
    '3','8','+','1','2','+','G','e','t','O','b','j','R','e','f','H',
    'd','l','(','9','+','9','+','i','n','C','o','n','t','e','x','t',
    '>','b','2','1','+','d','1','2','8','+','d','1','2','8','+','d',
    '1','2','8','+','d','1','2','8','+','d','1','2','8','+','I','I',
    'I','I','I','I','I','F','K','a','1','+','1','6','+','C','d','0',
    '+','K','K','K','I','c','0','+','b','4','+','I','I','I','K','8',
    '+','u','s','e','r','D','e','s','c','>','b','5','+','h','5','+',
    'c','0','+','H','d','0','+','d','0','+','c','0','+','H','8','+',
    's','r','v','r','T','y','p','e','>','F','1','0','+','r','e','t',
    'r','y','C','o','u','n','t','>','I','1','0','+','s','r','v','r',
    'O','b','j','R','e','f','<','a','1','+','1','2','8','+','C','1',
    '0','+','d','i','a','l','o','g','u','e','I','d','<','F','1','0',
    '+','d','a','t','a','S','o','u','r','c','e','<','d','1','2','8',
    '+','7','+','u','s','e','r','S','i','d','<','c','0','+','H','1',
    '1','+','v','e','r','s','i','o','n','L','i','s','t','<','c','0',
    '+','b','4','+','I','I','I','K','9','+','3','3','+','I','D','L',
    ':','o','d','b','c','a','s','/','A','S','S','v','c','/','A','S',
    'P','a','r','a','m','E','r','r','o','r',':','1','.','0','g','1',
    '+','d','0','+','3','0','+','I','D','L',':','o','d','b','c','a',
    's','/','A','S','S','v','c','/','A','S','T','i','m','e','o','u',
    't',':','1','.','0','g','1','+','d','0','+','3','2','+','I','D',
    'L',':','o','d','b','c','a','s','/','A','S','S','v','c','/','A',
    'S','N','o','S','r','v','r','H','d','l',':','1','.','0','g','0',
    '+','3','1','+','I','D','L',':','o','d','b','c','a','s','/','A',
    'S','S','v','c','/','A','S','T','r','y','A','g','a','i','n',':',
    '1','.','0','g','0','+','3','5','+','I','D','L',':','o','d','b',
    'c','a','s','/','A','S','S','v','c','/','A','S','N','o','t','A',
    'v','a','i','l','a','b','l','e',':','1','.','0','g','1','+','d',
    '0','+','3','5','+','I','D','L',':','o','d','b','c','a','s','/',
    'A','S','S','v','c','/','D','S','N','o','t','A','v','a','i','l',
    'a','b','l','e',':','1','.','0','g','1','+','d','0','+','3','7',
    '+','I','D','L',':','o','d','b','c','a','s','/','A','S','S','v',
    'c','/','P','o','r','t','N','o','t','A','v','a','i','l','a','b',
    'l','e',':','1','.','0','g','0','+','3','2','+','I','D','L',':',
    'o','d','b','c','a','s','/','A','S','S','v','c','/','I','n','v',
    'a','l','i','d','U','s','e','r',':','1','.','0','g','0','+','3',
    '7','+','I','D','L',':','o','d','b','c','a','s','/','A','S','S',
    'v','c','/','L','o','g','o','n','U','s','e','r','F','a','i','l',
    'u','r','e',':','1','.','0','g','1','+','F','0','+','1','0','1',
    '9','3','9','4','9','7','1','-','1','5','+','U','p','d','a','t',
    'e','S','r','v','r','S','t','a','t','e','(','7','+','8','+','s',
    'r','v','r','T','y','p','e','>','F','1','0','+','s','r','v','r',
    'O','b','j','R','e','f','>','a','1','+','1','2','8','+','C','9',
    '+','s','r','v','r','S','t','a','t','e','>','F','9','+','T','r',
    'a','c','e','T','y','p','e','<','F','1','4','+','S','t','a','t',
    'i','s','t','i','c','s','T','y','p','e','<','F','1','1','+','C',
    'o','n','t','e','x','t','T','y','p','e','<','F','1','1','+','s',
    'r','v','r','C','o','n','t','e','x','t','<','b','4','+','G','G',
    'c','0','+','b','4','+','d','1','2','8','+','G','d','0','+','F',
    'c','0','+','b','3','+','F','F','d','0','+','3','+','3','3','+',
    'I','D','L',':','o','d','b','c','a','s','/','A','S','S','v','c',
    '/','A','S','P','a','r','a','m','E','r','r','o','r',':','1','.',
    '0','g','1','+','d','0','+','3','0','+','I','D','L',':','o','d',
    'b','c','a','s','/','A','S','S','v','c','/','A','S','T','i','m',
    'e','o','u','t',':','1','.','0','g','1','+','d','0','+','3','9',
    '+','I','D','L',':','o','d','b','c','a','s','/','A','S','S','v',
    'c','/','A','S','S','t','a','t','e','C','h','a','n','g','e','E',
    'r','r','o','r',':','1','.','0','g','1','+','d','0','+','0','+',
    '8','1','1','4','4','6','8','8','0','-','1','5','+','S','r','v',
    'r','M','o','n','i','t','o','r','C','a','l','l','(','3','+','8',
    '+','s','r','v','r','T','y','p','e','>','F','1','0','+','s','r',
    'v','r','O','b','j','R','e','f','>','a','1','+','1','2','8','+',
    'C','4','+','D','S','I','d','>','F','0','+','0','+','4','7','8',
    '5','7','8','7','2','9','+','7','+','S','t','a','r','t','A','S',
    '(','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','+','8','+','3','3','+','I','D','L',
    ':','o','d','b','c','a','s','/','A','S','S','v','c','/','A','S',
    'P','a','r','a','m','E','r','r','o','r',':','1','.','0','g','1',
    '+','d','0','+','3','7','+','I','D','L',':','o','d','b','c','a',
    's','/','A','S','S','v','c','/','D','S','A','l','r','e','a','d',
    'y','S','t','a','r','t','e','d',':','1','.','0','g','0','+','3',
    '9','+','I','D','L',':','o','d','b','c','a','s','/','A','S','S',
    'v','c','/','D','S','S','t','a','t','e','C','h','a','n','g','e',
    'E','r','r','o','r',':','1','.','0','g','0','+','3','7','+','I',
    'D','L',':','o','d','b','c','a','s','/','A','S','S','v','c','/',
    'P','o','r','t','N','o','t','A','v','a','i','l','a','b','l','e',
    ':','1','.','0','g','0','+','2','9','+','I','D','L',':','o','d',
    'b','c','a','s','/','A','S','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','1','+','I','D','L',':','o','d','b','c','a','s','/','A',
    'S','S','v','c','/','A','S','T','r','y','A','g','a','i','n',':',
    '1','.','0','g','0','+','3','6','+','I','D','L',':','o','d','b',
    'c','a','s','/','A','S','S','v','c','/','S','r','v','r','C','r',
    'e','a','t','e','E','r','r','o','r',':','1','.','0','g','0','+',
    '3','4','+','I','D','L',':','o','d','b','c','a','s','/','A','S',
    'S','v','c','/','C','f','g','S','r','v','r','F','a','i','l','e',
    'd',':','1','.','0','g','0','+','0','+','3','9','1','3','7','0',
    '1','0','+','6','+','S','t','o','p','A','S','(','2','+','8','+',
    'S','t','o','p','T','y','p','e','>','F','1','0','+','R','e','a',
    's','o','n','T','e','x','t','>','d','0','+','3','+','3','3','+',
    'I','D','L',':','o','d','b','c','a','s','/','A','S','S','v','c',
    '/','A','S','P','a','r','a','m','E','r','r','o','r',':','1','.',
    '0','g','1','+','d','0','+','3','9','+','I','D','L',':','o','d',
    'b','c','a','s','/','A','S','S','v','c','/','D','S','S','t','a',
    't','e','C','h','a','n','g','e','E','r','r','o','r',':','1','.',
    '0','g','0','+','3','7','+','I','D','L',':','o','d','b','c','a',
    's','/','A','S','S','v','c','/','P','r','o','c','e','s','s','S',
    't','o','p','E','r','r','o','r',':','1','.','0','g','0','+','0',
    '+','9','4','6','9','2','0','3','6','0','-','7','+','S','t','a',
    'r','t','D','S','(','2','+','6','+','D','S','N','a','m','e','>',
    'd','1','2','8','+','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','+','7','+','3','3','+','I',
    'D','L',':','o','d','b','c','a','s','/','A','S','S','v','c','/',
    'A','S','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','a','s','/','A','S','S','v','c','/','D','S','N','o','t','F',
    'o','u','n','d',':','1','.','0','g','0','+','3','7','+','I','D',
    'L',':','o','d','b','c','a','s','/','A','S','S','v','c','/','D',
    'S','A','l','r','e','a','d','y','S','t','a','r','t','e','d',':',
    '1','.','0','g','0','+','3','9','+','I','D','L',':','o','d','b',
    'c','a','s','/','A','S','S','v','c','/','D','S','S','t','a','t',
    'e','C','h','a','n','g','e','E','r','r','o','r',':','1','.','0',
    'g','0','+','3','7','+','I','D','L',':','o','d','b','c','a','s',
    '/','A','S','S','v','c','/','P','o','r','t','N','o','t','A','v',
    'a','i','l','a','b','l','e',':','1','.','0','g','0','+','2','9',
    '+','I','D','L',':','o','d','b','c','a','s','/','A','S','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','6','+','I','D','L',':','o',
    'd','b','c','a','s','/','A','S','S','v','c','/','S','r','v','r',
    'C','r','e','a','t','e','E','r','r','o','r',':','1','.','0','g',
    '0','+','0','+','1','9','3','2','7','1','9','9','3','2','+','6',
    '+','S','t','o','p','D','S','(','3','+','6','+','D','S','N','a',
    'm','e','>','d','1','2','8','+','8','+','S','t','o','p','T','y',
    'p','e','>','F','1','0','+','R','e','a','s','o','n','T','e','x',
    't','>','d','0','+','5','+','3','3','+','I','D','L',':','o','d',
    'b','c','a','s','/','A','S','S','v','c','/','A','S','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','a','s','/','A',
    'S','S','v','c','/','D','S','N','o','t','F','o','u','n','d',':',
    '1','.','0','g','0','+','3','7','+','I','D','L',':','o','d','b',
    'c','a','s','/','A','S','S','v','c','/','D','S','A','l','r','e',
    'a','d','y','S','t','o','p','p','e','d',':','1','.','0','g','0',
    '+','3','9','+','I','D','L',':','o','d','b','c','a','s','/','A',
    'S','S','v','c','/','D','S','S','t','a','t','e','C','h','a','n',
    'g','e','E','r','r','o','r',':','1','.','0','g','0','+','3','7',
    '+','I','D','L',':','o','d','b','c','a','s','/','A','S','S','v',
    'c','/','P','r','o','c','e','s','s','S','t','o','p','E','r','r',
    'o','r',':','1','.','0','g','0','+','0','+','4','7','0','8','8',
    '9','1','2','4','+','8','+','S','t','a','t','u','s','A','S','(',
    '1','+','1','1','+','A','s','C','f','g','S','t','a','t','u','s',
    '<','b','1','4','+','I','F','F','a','1','+','9','+','C','a','1',
    '+','1','2','8','+','C','F','b','4','+','I','I','I','K','I','F',
    'F','a','1','+','9','+','C','a','1','+','1','2','8','+','C','F',
    'b','4','+','I','I','I','K','0','+','0','+','1','8','7','1','2',
    '3','3','0','6','0','-','8','+','S','t','a','t','u','s','D','S',
    '(','2','+','6','+','D','S','N','a','m','e','>','d','1','2','8',
    '+','8','+','D','S','S','t','a','t','u','s','<','b','1','1','+',
    'd','1','2','8','+','h','1','+','I','F','F','F','F','F','F','F',
    'F','2','+','3','3','+','I','D','L',':','o','d','b','c','a','s',
    '/','A','S','S','v','c','/','A','S','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','a','s','/','A','S','S','v','c',
    '/','D','S','N','o','t','F','o','u','n','d',':','1','.','0','g',
    '0','+','0','+','1','8','4','9','6','3','0','3','5','3','-','1',
    '4','+','S','t','a','t','u','s','D','S','D','e','t','a','i','l',
    '(','2','+','6','+','D','S','N','a','m','e','>','d','1','2','8',
    '+','1','4','+','s','r','v','r','L','i','s','t','S','t','a','t',
    'u','s','<','c','0','+','b','1','4','+','F','a','1','+','1','2',
    '8','+','C','I','K','d','1','2','8','+','a','1','+','9','+','C',
    'F','a','1','+','1','6','+','C','K','d','0','+','d','0','+','F',
    'F','b','4','+','I','I','I','K','4','+','3','3','+','I','D','L',
    ':','o','d','b','c','a','s','/','A','S','S','v','c','/','A','S',
    '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','a',
    's','/','A','S','S','v','c','/','D','S','N','o','t','F','o','u',
    'n','d',':','1','.','0','g','0','+','3','5','+','I','D','L',':',
    'o','d','b','c','a','s','/','A','S','S','v','c','/','A','S','N',
    'o','t','A','v','a','i','l','a','b','l','e',':','1','.','0','g',
    '1','+','d','0','+','3','5','+','I','D','L',':','o','d','b','c',
    'a','s','/','A','S','S','v','c','/','D','S','N','o','t','A','v',
    'a','i','l','a','b','l','e',':','1','.','0','g','1','+','d','0',
    '+','0','+','5','8','1','7','4','7','0','5','+','1','3','+','S',
    't','a','t','u','s','S','r','v','r','A','l','l','(','1','+','1',
    '4','+','s','r','v','r','L','i','s','t','S','t','a','t','u','s',
    '<','c','0','+','b','1','4','+','F','a','1','+','1','2','8','+',
    'C','I','K','d','1','2','8','+','a','1','+','9','+','C','F','a',
    '1','+','1','6','+','C','K','d','0','+','d','0','+','F','F','b',
    '4','+','I','I','I','K','2','+','3','3','+','I','D','L',':','o',
    'd','b','c','a','s','/','A','S','S','v','c','/','A','S','P','a',
    'r','a','m','E','r','r','o','r',':','1','.','0','g','1','+','d',
    '0','+','3','5','+','I','D','L',':','o','d','b','c','a','s','/',
    'A','S','S','v','c','/','A','S','N','o','t','A','v','a','i','l',
    'a','b','l','e',':','1','.','0','g','1','+','d','0','+','0','+',
    '1','7','2','8','6','4','4','0','5','0','+','8','+','S','t','o',
    'p','S','r','v','r','(','4','+','1','0','+','d','i','a','l','o',
    'g','u','e','I','d','>','F','8','+','s','r','v','r','T','y','p',
    'e','>','F','1','0','+','s','r','v','r','O','b','j','R','e','f',
    '>','a','1','+','1','2','8','+','C','8','+','S','t','o','p','T',
    'y','p','e','>','F','5','+','3','3','+','I','D','L',':','o','d',
    'b','c','a','s','/','A','S','S','v','c','/','A','S','P','a','r',
    'a','m','E','r','r','o','r',':','1','.','0','g','1','+','d','0',
    '+','3','5','+','I','D','L',':','o','d','b','c','a','s','/','A',
    'S','S','v','c','/','A','S','N','o','t','A','v','a','i','l','a',
    'b','l','e',':','1','.','0','g','1','+','d','0','+','3','3','+',
    'I','D','L',':','o','d','b','c','a','s','/','A','S','S','v','c',
    '/','S','r','v','r','N','o','t','F','o','u','n','d',':','1','.',
    '0','g','0','+','4','5','+','I','D','L',':','o','d','b','c','a',
    's','/','A','S','S','v','c','/','S','r','v','r','I','n','U','s',
    'e','B','y','A','n','o','t','h','e','r','C','l','i','e','n','t',
    ':','1','.','0','g','0','+','3','7','+','I','D','L',':','o','d',
    'b','c','a','s','/','A','S','S','v','c','/','P','r','o','c','e',
    's','s','S','t','o','p','E','r','r','o','r',':','1','.','0','g',
    '0','+','0','+','4','1','2','2','1','6','0','8','3','+','1','1',
    '+','S','t','a','t','u','s','D','S','A','l','l','(','1','+','1',
    '2','+','D','S','L','i','s','t','S','t','a','t','u','s','<','c',
    '0','+','b','1','1','+','d','1','2','8','+','h','1','+','I','F',
    'F','F','F','F','F','F','F','1','+','3','3','+','I','D','L',':',
    'o','d','b','c','a','s','/','A','S','S','v','c','/','A','S','P',
    'a','r','a','m','E','r','r','o','r',':','1','.','0','g','1','+',
    'd','0','+','0','+','6','9','1','1','1','5','4','3','3','+','1',
    '5','+','W','o','u','l','d','L','i','k','e','T','o','L','i','v',
    'e','(','3','+','8','+','s','r','v','r','T','y','p','e','>','F',
    '1','0','+','s','r','v','r','O','b','j','R','e','f','>','a','1',
    '+','1','2','8','+','C','1','0','+','l','i','f','e','P','e','r',
    'm','i','t','<','F','1','+','3','3','+','I','D','L',':','o','d',
    'b','c','a','s','/','A','S','S','v','c','/','A','S','P','a','r',
    'a','m','E','r','r','o','r',':','1','.','0','g','1','+','d','0',
    '+','0','+','2','5','8','7','8','1','3','7','3','-','1','2','+',
    'S','e','t','T','e','s','t','P','o','i','n','t','(','3','+','1',
    '0','+','d','i','a','l','o','g','u','e','I','d','>','F','9','+',
    'T','e','s','t','P','o','i','n','t','>','I','9','+','O','p','e',
    'r','a','t','i','o','n','>','K','1','+','3','3','+','I','D','L',
    ':','o','d','b','c','a','s','/','A','S','S','v','c','/','A','S',
    'P','a','r','a','m','E','r','r','o','r',':','1','.','0','g','1',
    '+','d','0','+','0','+','3','9','0','6','9','9','9','0','7','+',
    '1','4','+','C','l','e','a','r','T','e','s','t','P','o','i','n',
    't','(','3','+','1','0','+','d','i','a','l','o','g','u','e','I',
    'd','>','F','9','+','T','e','s','t','P','o','i','n','t','>','I',
    '9','+','O','p','e','r','a','t','i','o','n','>','J','1','+','3',
    '3','+','I','D','L',':','o','d','b','c','a','s','/','A','S','S',
    'v','c','/','A','S','P','a','r','a','m','E','r','r','o','r',':',
    '1','.','0','g','1','+','d','0','+','0','+','1','7','3','8','5',
    '8','6','9','4','8','+','2','3','+','D','a','t','a','S','o','u',
    'r','c','e','C','o','n','f','i','g','C','h','a','n','g','e','d',
    '(','3','+','1','4','+','d','a','t','a','S','o','u','r','c','e',
    'N','a','m','e','>','a','1','+','1','2','8','+','C','1','9','+',
    'd','a','t','a','S','o','u','r','c','e','O','p','e','r','a','t',
    'i','o','n','>','F','2','4','+','d','a','t','a','S','o','u','r',
    'c','e','O','p','e','r','a','t','i','o','n','V','a','l','u','e',
    '>','F','1','+','3','3','+','I','D','L',':','o','d','b','c','a',
    's','/','A','S','S','v','c','/','A','S','P','a','r','a','m','E',
    'r','r','o','r',':','1','.','0','g','1','+','d','0','+','0','+',
    '8','3','0','3','1','8','0','5','7','+','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','a','s','/','A','S','S','v','c','/','A','S','P','a','r','a',
    'm','E','r','r','o','r',':','1','.','0','g','1','+','d','0','+',
    '0','+','3','2','0','6','7','1','9','6','3','+','1','1','+','E',
    'n','a','b','l','e','T','r','a','c','e','(','4','+','6','+','D',
    'S','N','a','m','e','>','d','1','2','8','+','1','0','+','d','i',
    'a','l','o','g','u','e','I','d','>','F','1','0','+','s','r','v',
    'r','O','b','j','R','e','f','>','a','1','+','1','2','8','+','C',
    '9','+','t','r','a','c','e','T','y','p','e','>','F','5','+','3',
    '3','+','I','D','L',':','o','d','b','c','a','s','/','A','S','S',
    'v','c','/','A','S','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','a','s','/','A','S','S','v','c','/','D','S','N',
    'o','t','F','o','u','n','d',':','1','.','0','g','0','+','3','7',
    '+','I','D','L',':','o','d','b','c','a','s','/','A','S','S','v',
    'c','/','D','S','A','l','r','e','a','d','y','S','t','o','p','p',
    'e','d',':','1','.','0','g','0','+','4','0','+','I','D','L',':',
    'o','d','b','c','a','s','/','A','S','S','v','c','/','T','r','a',
    'c','e','A','l','r','e','a','d','y','E','n','a','b','l','e','d',
    ':','1','.','0','g','0','+','3','7','+','I','D','L',':','o','d',
    'b','c','a','s','/','A','S','S','v','c','/','T','r','a','c','e',
    'E','n','a','b','l','e','E','r','r','o','r',':','1','.','0','g',
    '0','+','0','+','1','3','5','2','8','0','4','9','5','+','1','2',
    '+','D','i','s','a','b','l','e','T','r','a','c','e','(','4','+',
    '6','+','D','S','N','a','m','e','>','d','1','2','8','+','1','0',
    '+','d','i','a','l','o','g','u','e','I','d','>','F','1','0','+',
    's','r','v','r','O','b','j','R','e','f','>','a','1','+','1','2',
    '8','+','C','9','+','t','r','a','c','e','T','y','p','e','>','F',
    '5','+','3','3','+','I','D','L',':','o','d','b','c','a','s','/',
    'A','S','S','v','c','/','A','S','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','a','s','/','A','S','S','v','c','/',
    'D','S','N','o','t','F','o','u','n','d',':','1','.','0','g','0',
    '+','3','7','+','I','D','L',':','o','d','b','c','a','s','/','A',
    'S','S','v','c','/','D','S','A','l','r','e','a','d','y','S','t',
    'o','p','p','e','d',':','1','.','0','g','0','+','4','1','+','I',
    'D','L',':','o','d','b','c','a','s','/','A','S','S','v','c','/',
    'T','r','a','c','e','A','l','r','e','a','d','y','D','i','s','a',
    'b','l','e','d',':','1','.','0','g','0','+','3','8','+','I','D',
    'L',':','o','d','b','c','a','s','/','A','S','S','v','c','/','T',
    'r','a','c','e','D','i','s','a','b','l','e','E','r','r','o','r',
    ':','1','.','0','g','0','+','0','+','1','9','1','3','6','9','7',
    '9','3','2','+','1','2','+','G','e','t','V','e','r','s','i','o',
    'n','A','S','(','1','+','9','+','A','S','V','e','r','s','i','o',
    'n','<','d','3','2','+','0','+','0','+', 0};
#define odbcas_ASSvc_ics_ ((IDL_unsigned_long) 5130)

/*
 * Interface creation function for 'odbcas_ASSvc'
 */
extern "C" CEE_status
odbcas_ASSvc_ifc_(
  /* Out */ CEE_handle_def *interface_handle);

/********************************
 * End interface 'odbcas_ASSvc' *
 ********************************/
/* End module: odbcas */
/*
 * End translation unit: ODBCAS
 */
#endif /* ODBCAS_H_ */
