/**********************************************************************
// @@@ 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 Mon Jan 31 11:14:09 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
struct DATASOURCE_STATUS_t {
  SQL_IDENTIFIER_def DSName;
  char pad_to_offset_516_[3];
  DS_AUTOMATION_def DSAutomation;
  IDL_short defaultFlag;
  char pad_to_offset_524_[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+d512+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[128];
  char pad_to_offset_784_[3];
  IDL_long srvrState;
  IDL_char computerName[61];
  char pad_to_offset_852_[3];
  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_896_[4];
};
typedef SRVR_STATUS_t SRVR_STATUS_def;
#define SRVR_STATUS_def_cin_ ((char *) \
    "b14+Fa1+128+CIKd512+a1+128+CFa1+61+CKd0+d0+FFb4+IIIK")
#define SRVR_STATUS_def_csz_ ((IDL_unsigned_long) 52)
struct AS_CFG_STATUS_t {
  IDL_short ASNodeId;
  char pad_to_offset_4_[2];
  IDL_long ASProcessId;
  IDL_long ASSrvrState;
  IDL_char ASProcessName[128];
  IDL_OBJECT_def ASSrvrObjRef;
  TIME_def ASLastUpdatedTime;
  VERSION_def ASVersion;
  IDL_short CfgNodeId;
  char pad_to_offset_288_[2];
  IDL_long CfgProcessId;
  IDL_long CfgSrvrState;
  IDL_char CfgProcessName[128];
  IDL_OBJECT_def CfgSrvrObjRef;
  TIME_def CfgLastUpdatedTime;
  VERSION_def CfgVersion;
};
typedef AS_CFG_STATUS_t AS_CFG_STATUS_def;
#define AS_CFG_STATUS_def_cin_ ((char *) \
    "b14+IFFa1+128+Ca1+128+CFb4+IIIKIFFa1+128+Ca1+128+CFb4+IIIK")
#define AS_CFG_STATUS_def_csz_ ((IDL_unsigned_long) 58)
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+d512+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+CIKd512+a1+128+CFa1+61+CKd0+d0+FFb4+IIIK")
#define SRVR_STATUS_LIST_def_csz_ ((IDL_unsigned_long) 55)

/*******************
 * 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) 475686096)
/*
 * 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) 1470657504)
/*
 * 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
  , /* In    */ IDL_long isoMapping
  , /* In    */ IDL_short srvrNodeId
  , /* In    */ IDL_short srvrProcessId
  , /* In    */ IDL_long_long timestamp
  );
/*
 * 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
  , /* In    */ IDL_long isoMapping
  , /* In    */ IDL_short srvrNodeId
  , /* In    */ IDL_short srvrProcessId
  , /* In    */ IDL_long_long timestamp
  );
/*
 * 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
  , /* Out   */ IDL_long *isoMapping
  , /* Out   */ IDL_short *srvrNodeId
  , /* Out   */ IDL_short *srvrProcessId
  , /* Out   */ IDL_long_long *timestamp
  );

/********************************************
 * Operation 'odbcas_ASSvc_UpdateSrvrState' *
 ********************************************/
typedef IDL_char ary_[187];

/*
 * 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) -1433654685)
/*
 * 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
  , /* In    */ IDL_long userID
  , /* In    */ const IDL_char *userSID
  );
/*
 * 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
  , /* In    */ IDL_long userID
  , /* In    */ const IDL_char *userSID
  , /* 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) -1705706154)
/*
 * 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) 1955443217)
/*
 * 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) 880751925)
/*
 * 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) 1804082803)
/*
 * 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) 774555330)
/*
 * 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) -868628610)
/*
 * 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) -2050635981)
/*
 * 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) -1210001052)
/*
 * 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) -1980408847)
/*
 * 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','+','4','7','5','6','8',
    '6','0','9','6','+','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','5','1','2','+','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','+','1','4','7','0','6','5','7','5',
    '0','4','+','1','2','+','G','e','t','O','b','j','R','e','f','H',
    'd','l','(','1','3','+','9','+','i','n','C','o','n','t','e','x',
    't','>','b','2','9','+','d','5','1','2','+','d','5','1','2','+',
    'd','5','1','2','+','d','5','1','2','+','d','5','1','2','+','I',
    'I','K','K','K','I','I','F','K','a','1','+','6','1','+','C','d',
    '0','+','K','K','K','I','I','I','a','1','+','5','1','+','C','d',
    '0','+','c','0','+','b','4','+','I','I','I','K','K','K','a','1',
    '+','1','0','1','+','C','d','0','+','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','5','1','2','+','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','1','0','+','i','s','o','M','a','p','p','i','n','g','<',
    'F','1','0','+','s','r','v','r','N','o','d','e','I','d','<','I',
    '1','3','+','s','r','v','r','P','r','o','c','e','s','s','I','d',
    '<','I','9','+','t','i','m','e','s','t','a','m','p','<','G','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','4','3','3','6','5','4','6','8','5','-','1',
    '5','+','U','p','d','a','t','e','S','r','v','r','S','t','a','t',
    'e','(','9','+','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','6','+','u','s','e','r','I','D','>','F','7','+','u',
    's','e','r','S','I','D','>','a','1','+','1','8','7','+','C','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','5','1','2','+','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','+','1','7','0','5','7','0','6','1','5','4','-','7',
    '+','S','t','a','r','t','D','S','(','2','+','6','+','D','S','N',
    'a','m','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','+','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','5','5','4','4','3','2',
    '1','7','+','6','+','S','t','o','p','D','S','(','3','+','6','+',
    'D','S','N','a','m','e','>','d','5','1','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','+','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','+','8',
    '8','0','7','5','1','9','2','5','+','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','+','1',
    '2','8','+','C','a','1','+','1','2','8','+','C','F','b','4','+',
    'I','I','I','K','I','F','F','a','1','+','1','2','8','+','C','a',
    '1','+','1','2','8','+','C','F','b','4','+','I','I','I','K','0',
    '+','0','+','1','8','0','4','0','8','2','8','0','3','+','8','+',
    'S','t','a','t','u','s','D','S','(','2','+','6','+','D','S','N',
    'a','m','e','>','d','5','1','2','+','8','+','D','S','S','t','a',
    't','u','s','<','b','1','1','+','d','5','1','2','+','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','+','7','7','4','5',
    '5','5','3','3','0','+','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','5','1','2','+','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','5','1','2',
    '+','a','1','+','1','2','8','+','C','F','a','1','+','6','1','+',
    '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','+','8','6','8','6',
    '2','8','6','1','0','-','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','5','1',
    '2','+','a','1','+','1','2','8','+','C','F','a','1','+','6','1',
    '+','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','+',
    '2','0','5','0','6','3','5','9','8','1','-','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','5','1','2','+','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','+','1',
    '2','1','0','0','0','1','0','5','2','-','1','1','+','E','n','a',
    'b','l','e','T','r','a','c','e','(','4','+','6','+','D','S','N',
    'a','m','e','>','d','5','1','2','+','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','9','8','0','4','0','8','8','4','7','-','1','2','+',
    'D','i','s','a','b','l','e','T','r','a','c','e','(','4','+','6',
    '+','D','S','N','a','m','e','>','d','5','1','2','+','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) 5257)

/*
 * 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_ */
