;// @@@ 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 @@@
; Drvr35.def : Declares the module parameters for the DLL.

LIBRARY      "hpodbc03"

EXPORTS
SQLAllocHandle			@1
SQLBindCol				@2
SQLBindParameter		@3
SQLBrowseConnectW		@4
;SQLBulkOperations
SQLCancel				@5
SQLCloseCursor			@6
SQLColAttributeW		@7
SQLColumnsW				@8
SQLColumnPrivilegesW	@9
SQLConnectW				@10
SQLCopyDesc				@11
SQLDescribeColW			@12
SQLDescribeParam		@13
SQLDisconnect			@14
SQLDriverConnectW		@15 
SQLEndTran				@16
SQLExecDirectW			@17
SQLExecute				@18
SQLFetch				@19
SQLExtendedFetch		@20
SQLFetchScroll			@21
SQLForeignKeysW			@22
SQLFreeHandle			@23
SQLFreeStmt				@24
SQLGetConnectAttrW		@25
SQLGetCursorNameW		@26
SQLGetData				@27
SQLGetDescFieldW		@28
SQLGetDescRecW			@29
SQLGetDiagFieldW		@30
SQLGetDiagRecW			@31
SQLGetEnvAttr			@32
SQLGetInfoW				@33
SQLGetStmtAttrW			@34
SQLGetTypeInfoW			@35
SQLMoreResults			@36
SQLNativeSqlW			@37
SQLNumParams			@38
SQLNumResultCols		@39
SQLParamData			@40
SQLPrepareW				@41
SQLPrimaryKeysW			@42
SQLProcedureColumnsW	@43
SQLProceduresW			@44
SQLPutData				@45
SQLRowCount				@46
SQLSetConnectAttrW		@47
SQLSetCursorNameW		@48
SQLSetDescFieldW		@49
SQLSetDescRec			@50
SQLSetEnvAttr			@51
SQLSetPos				@52
SQLSetStmtAttrW			@53
SQLSpecialColumnsW		@54
SQLStatisticsW			@55
SQLTablesW				@56
SQLTablePrivilegesW		@57

TCPIP_SET_ERROR
;//GET_DS_ALL
