-#ifndef _INTRINSIC_SQL_H
-# define _INTRINSIC_SQL_H
-
-#ifndef OS2
-typedef unsigned char UCHAR;
+/*
+ * isql.h
+ *
+ * $Id$
+ *
+ * iODBC defines
+ *
+ * The iODBC driver manager.
+ *
+ * Copyright (C) 1995 by Ke Jin <kejin@empress.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+#ifndef _ISQL_H
+#define _ISQL_H
+
+#ifndef WIN16
+#ifdef WIN32
+#define SQL_API __stdcall
+#else
+#define FAR
+#define EXPORT
+#define CALLBACK
+#define SQL_API EXPORT CALLBACK
+#ifndef __EMX__
+typedef void *HWND;
+#endif
#endif
-typedef long int SDWORD;
-typedef short int SWORD;
-typedef unsigned long int UDWORD;
-typedef unsigned short int UWORD;
-typedef unsigned int UINT;
-
-#ifndef FAR
-# define FAR
#endif
-#ifndef NEAR
-# define NEAR
-#endif
-#ifndef HANDLE
- typedef int HANDLE;
- #endif
-#ifndef HGLOBAL
- typedef HANDLE HGLOBAL;
- #endif
-#ifndef SQL_INDEX_OTHER
-#define SQL_INDEX_OTHER 3
- #endif
-
-# ifndef BOOL
-# define BOOL int
-# endif
-# ifndef CHAR
-# define CHAR char
-# endif
-# ifndef FALSE
-# define FALSE (0 != 0)
-# endif
-# ifndef HWND
-# define HWND int
-# endif
-# ifndef SQLHWND
-# define SQLHWND int
-# endif
-# ifndef LONG
-# define LONG long
-# endif
-# ifndef PASCAL
-# define PASCAL
-# endif
-# ifndef SHORT
-# define SHORT short
-# endif
-# ifndef SQL_API
-# define SQL_API
-# endif
-# ifndef SQL_LOCAL_API
-# define SQL_LOCAL_API
-# endif
-# ifndef TRUE
-# define TRUE (0 == 0)
-# endif
-
-typedef struct tagDATE_STRUCT
-{
-SWORD year;
-UWORD month;
-UWORD day;
-} DATE_STRUCT;
-
-typedef struct tagTIME_STRUCT
-{
-UWORD hour;
-UWORD minute;
-UWORD second;
-} TIME_STRUCT;
-typedef struct tagTIMESTAMP_STRUCT
+typedef void *SQLHWND;
+
+typedef unsigned char UCHAR;
+typedef long int SDWORD;
+typedef short int SWORD;
+typedef unsigned long int UDWORD;
+typedef unsigned short int UWORD;
+
+typedef void FAR *PTR;
+typedef void FAR *HENV;
+typedef void FAR *HDBC;
+typedef void FAR *HSTMT;
+
+typedef signed short RETCODE;
+#define SQLRETURN RETCODE
+
+
+#define ODBCVER 0x0250
+
+#define SQL_MAX_MESSAGE_LENGTH 512
+#define SQL_MAX_DSN_LENGTH 32
+
+/*
+ * Function return codes
+ */
+#define SQL_INVALID_HANDLE (-2)
+#define SQL_ERROR (-1)
+#define SQL_SUCCESS 0
+#define SQL_SUCCESS_WITH_INFO 1
+#define SQL_NO_DATA_FOUND 100
+
+/*
+ * Standard SQL datatypes, using ANSI type numbering
+ */
+#define SQL_CHAR 1
+#define SQL_NUMERIC 2
+#define SQL_DECIMAL 3
+#define SQL_INTEGER 4
+#define SQL_SMALLINT 5
+#define SQL_FLOAT 6
+#define SQL_REAL 7
+#define SQL_DOUBLE 8
+#define SQL_VARCHAR 12
+
+#define SQL_TYPE_MIN SQL_CHAR
+#define SQL_TYPE_NULL 0
+#define SQL_TYPE_MAX SQL_VARCHAR
+
+/*
+ * C datatype to SQL datatype mapping
+ */
+#define SQL_C_CHAR SQL_CHAR
+#define SQL_C_LONG SQL_INTEGER
+#define SQL_C_SHORT SQL_SMALLINT
+#define SQL_C_FLOAT SQL_REAL
+#define SQL_C_DOUBLE SQL_DOUBLE
+#define SQL_C_DEFAULT 99
+
+/*
+ * NULL status constants.
+ */
+#define SQL_NO_NULLS 0
+#define SQL_NULLABLE 1
+#define SQL_NULLABLE_UNKNOWN 2
+
+/*
+ * Special length values
+ */
+#define SQL_NULL_DATA (-1)
+#define SQL_DATA_AT_EXEC (-2)
+#define SQL_NTS (-3)
+
+/*
+ * SQLFreeStmt
+ */
+#define SQL_CLOSE 0
+#define SQL_DROP 1
+#define SQL_UNBIND 2
+#define SQL_RESET_PARAMS 3
+
+/*
+ * SQLTransact
+ */
+#define SQL_COMMIT 0
+#define SQL_ROLLBACK 1
+
+/*
+ * SQLColAttributes
+ */
+#define SQL_COLUMN_COUNT 0
+#define SQL_COLUMN_NAME 1
+#define SQL_COLUMN_TYPE 2
+#define SQL_COLUMN_LENGTH 3
+#define SQL_COLUMN_PRECISION 4
+#define SQL_COLUMN_SCALE 5
+#define SQL_COLUMN_DISPLAY_SIZE 6
+#define SQL_COLUMN_NULLABLE 7
+#define SQL_COLUMN_UNSIGNED 8
+#define SQL_COLUMN_MONEY 9
+#define SQL_COLUMN_UPDATABLE 10
+#define SQL_COLUMN_AUTO_INCREMENT 11
+#define SQL_COLUMN_CASE_SENSITIVE 12
+#define SQL_COLUMN_SEARCHABLE 13
+#define SQL_COLUMN_TYPE_NAME 14
+#define SQL_COLUMN_TABLE_NAME 15
+#define SQL_COLUMN_OWNER_NAME 16
+#define SQL_COLUMN_QUALIFIER_NAME 17
+#define SQL_COLUMN_LABEL 18
+
+#define SQL_COLATT_OPT_MAX SQL_COLUMN_LABEL
+#define SQL_COLATT_OPT_MIN SQL_COLUMN_COUNT
+#define SQL_COLUMN_DRIVER_START 1000
+
+/*
+ * SQLColAttributes : SQL_COLUMN_UPDATABLE
+ */
+#define SQL_ATTR_READONLY 0
+#define SQL_ATTR_WRITE 1
+#define SQL_ATTR_READWRITE_UNKNOWN 2
+
+/*
+ * SQLColAttributes : SQL_COLUMN_SEARCHABLE
+ */
+#define SQL_UNSEARCHABLE 0
+#define SQL_LIKE_ONLY 1
+#define SQL_ALL_EXCEPT_LIKE 2
+#define SQL_SEARCHABLE 3
+
+/*
+ * NULL Handles
+ */
+#define SQL_NULL_HENV 0
+#define SQL_NULL_HDBC 0
+#define SQL_NULL_HSTMT 0
+
+
+/*
+ * Function Prototypes
+ */
+#ifdef __cplusplus
+extern "C"
{
-SWORD year;
-UWORD month;
-UWORD day;
-UWORD hour;
-UWORD minute;
-UWORD second;
-UDWORD fraction;
-} TIMESTAMP_STRUCT;
-
-
-
-typedef UCHAR FAR* PTR,
- FAR* SQLPTR;
-
-typedef void FAR* HENV,
- FAR* SQLHENV;
-typedef void FAR* HDBC,
- FAR* SQLHDBC;
-typedef void FAR* HSTMT,
- FAR* SQLHSTMT;
-typedef SDWORD SQLINTEGER;
-typedef signed short RETCODE;
-typedef UCHAR SQLCHAR;
-typedef UWORD SQLUSMALLINT;
-typedef PTR SQLPOINTER;
-typedef SWORD SQLSMALLINT;
-typedef UDWORD SQLUINTEGER;
-
-# ifdef WIN32
-# define SQL_API __stdcall
-# else
-# define SQL_API /* giovanni EXPORT CALLBACK */
-# endif
-# ifdef OS2
-# ifdef BCPP
-# define _Optlink
-# define _System _syscall
-# endif
-# undef SQL_API
-# define SQL_API _System
-# endif
-
-
-#ifndef ODBCVER
-# define ODBCVER 0x0200
#endif
-# define SQL_MAX_MESSAGE_LENGTH 512
-# define SQL_MAX_DSN_LENGTH 32
-
-/* return code */
-# define SQL_INVALID_HANDLE (-2)
-# define SQL_ERROR (-1)
-# define SQL_SUCCESS 0
-# define SQL_SUCCESS_WITH_INFO 1
-# define SQL_NO_DATA_FOUND 100
-
-/* standard SQL datatypes (agree with ANSI type numbering) */
-# define SQL_CHAR 1
-# define SQL_NUMERIC 2
-# define SQL_DECIMAL 3
-# define SQL_INTEGER 4
-# define SQL_SMALLINT 5
-# define SQL_FLOAT 6
-# define SQL_REAL 7
-# define SQL_DOUBLE 8
-# define SQL_VARCHAR 12
-
-# define SQL_TYPE_MIN SQL_CHAR
-# define SQL_TYPE_NULL 0
-# define SQL_TYPE_MAX SQL_VARCHAR
-
-/* C to SQL datatype mapping */
-# define SQL_C_CHAR SQL_CHAR
-# define SQL_C_LONG SQL_INTEGER
-# define SQL_C_SHORT SQL_SMALLINT
-# define SQL_C_FLOAT SQL_REAL
-# define SQL_C_DOUBLE SQL_DOUBLE
-# define SQL_C_DEFAULT 99
-
-# define SQL_NO_NULLS 0
-# define SQL_NULLABLE 1
-# define SQL_NULLABLE_UNKNOWN 2
-
-/* some special length values */
-# define SQL_NULL_DATA (-1)
-# define SQL_DATA_AT_EXEC (-2)
-# define SQL_NTS (-3)
-
-/* SQLFreeStmt flag values */
-# define SQL_CLOSE 0
-# define SQL_DROP 1
-# define SQL_UNBIND 2
-# define SQL_RESET_PARAMS 3
-
-/* SQLTransact flag values */
-# define SQL_COMMIT 0
-# define SQL_ROLLBACK 1
-
-/* SQLColAttributes flag values */
-# define SQL_COLUMN_COUNT 0
-# define SQL_COLUMN_LABEL 18
-# define SQL_COLATT_OPT_MAX SQL_COLUMN_LABEL
-# define SQL_COLUMN_DRIVER_START 1000
-
-# define SQL_COLATT_OPT_MIN SQL_COLUMN_COUNT
-
-/* Null handles */
-# define SQL_NULL_HENV 0
-# define SQL_NULL_HDBC 0
-# define SQL_NULL_HSTMT 0
-
+ RETCODE SQL_API SQLAllocConnect (HENV henv, HDBC FAR * phdbc);
+ RETCODE SQL_API SQLAllocEnv (HENV FAR * phenv);
+ RETCODE SQL_API SQLAllocStmt (HDBC hdbc, HSTMT FAR * phstmt);
+ RETCODE SQL_API SQLBindCol (HSTMT hstmt, UWORD icol, SWORD fCType,
+ PTR rgbValue, SDWORD cbValueMax, SDWORD FAR * pcbValue);
+ RETCODE SQL_API SQLCancel (HSTMT hstmt);
+ RETCODE SQL_API SQLColAttributes (HSTMT hstmt, UWORD icol, UWORD fDescType,
+ PTR rgbDesc, SWORD cbDescMax, SWORD FAR * pcbDesc, SDWORD FAR * pfDesc);
+ RETCODE SQL_API SQLConnect (HDBC hdbc, UCHAR FAR * szDSN, SWORD cbDSN,
+ UCHAR FAR * szUID, SWORD cbUID, UCHAR FAR * szAuthStr, SWORD cbAuthStr);
+ RETCODE SQL_API SQLDescribeCol (HSTMT hstmt, UWORD icol,
+ UCHAR FAR * szColName, SWORD cbColNameMax, SWORD FAR * pcbColName,
+ SWORD FAR * pfSqlType, UDWORD FAR * pcbColDef, SWORD FAR * pibScale,
+ SWORD FAR * pfNullable);
+ RETCODE SQL_API SQLDisconnect (HDBC hdbc);
+ RETCODE SQL_API SQLError (HENV henv, HDBC hdbc, HSTMT hstmt,
+ UCHAR FAR * szSqlState, SDWORD FAR * pfNativeError, UCHAR FAR * szErrorMsg,
+ SWORD cbErrorMsgMax, SWORD FAR * pcbErrorMsg);
+ RETCODE SQL_API SQLExecDirect (HSTMT hstmt, UCHAR FAR * szSqlStr,
+ SDWORD cbSqlStr);
+ RETCODE SQL_API SQLExecute (HSTMT hstmt);
+ RETCODE SQL_API SQLFetch (HSTMT hstmt);
+ RETCODE SQL_API SQLFreeConnect (HDBC hdbc);
+ RETCODE SQL_API SQLFreeEnv (HENV henv);
+ RETCODE SQL_API SQLFreeStmt (HSTMT hstmt, UWORD fOption);
+ RETCODE SQL_API SQLGetCursorName (HSTMT hstmt, UCHAR FAR * szCursor,
+ SWORD cbCursorMax, SWORD FAR * pcbCursor);
+ RETCODE SQL_API SQLNumResultCols (HSTMT hstmt, SWORD FAR * pccol);
+ RETCODE SQL_API SQLPrepare (HSTMT hstmt, UCHAR FAR * szSqlStr,
+ SDWORD cbSqlStr);
+ RETCODE SQL_API SQLRowCount (HSTMT hstmt, SDWORD FAR * pcrow);
+ RETCODE SQL_API SQLSetCursorName (HSTMT hstmt, UCHAR FAR * szCursor,
+ SWORD cbCursor);
+ RETCODE SQL_API SQLTransact (HENV henv, HDBC hdbc, UWORD fType);
+
+/*
+ * Depreciated ODBC 1.0 function - Use SQLBindParameter
+ */
+ RETCODE SQL_API SQLSetParam (HSTMT hstmt, UWORD ipar, SWORD fCType,
+ SWORD fSqlType, UDWORD cbColDef, SWORD ibScale, PTR rgbValue,
+ SDWORD FAR * pcbValue);
+
+#ifdef __cplusplus
+}
#endif
+#endif