1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the mingw-w64 runtime package.
4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5  */
6 #ifndef __ODBCSS
7 #define __ODBCSS
8 
9 #include <_mingw_unicode.h>
10 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 #define SQL_MAX_SQLSERVERNAME 128
16 
17 #define SQL_COPT_SS_BASE 1200
18 #define SQL_COPT_SS_REMOTE_PWD (SQL_COPT_SS_BASE+1)
19 #define SQL_COPT_SS_USE_PROC_FOR_PREP (SQL_COPT_SS_BASE+2)
20 #define SQL_COPT_SS_INTEGRATED_SECURITY (SQL_COPT_SS_BASE+3)
21 #define SQL_COPT_SS_PRESERVE_CURSORS (SQL_COPT_SS_BASE+4)
22 #define SQL_COPT_SS_USER_DATA (SQL_COPT_SS_BASE+5)
23 #define SQL_COPT_SS_ENLIST_IN_DTC SQL_ATTR_ENLIST_IN_DTC
24 #define SQL_COPT_SS_ENLIST_IN_XA SQL_ATTR_ENLIST_IN_XA
25 
26 #define SQL_COPT_SS_FALLBACK_CONNECT (SQL_COPT_SS_BASE+10)
27 #define SQL_COPT_SS_PERF_DATA (SQL_COPT_SS_BASE+11)
28 #define SQL_COPT_SS_PERF_DATA_LOG (SQL_COPT_SS_BASE+12)
29 #define SQL_COPT_SS_PERF_QUERY_INTERVAL (SQL_COPT_SS_BASE+13)
30 #define SQL_COPT_SS_PERF_QUERY_LOG (SQL_COPT_SS_BASE+14)
31 #define SQL_COPT_SS_PERF_QUERY (SQL_COPT_SS_BASE+15)
32 #define SQL_COPT_SS_PERF_DATA_LOG_NOW (SQL_COPT_SS_BASE+16)
33 #define SQL_COPT_SS_QUOTED_IDENT (SQL_COPT_SS_BASE+17)
34 #define SQL_COPT_SS_ANSI_NPW (SQL_COPT_SS_BASE+18)
35 #define SQL_COPT_SS_BCP (SQL_COPT_SS_BASE+19)
36 #define SQL_COPT_SS_TRANSLATE (SQL_COPT_SS_BASE+20)
37 #define SQL_COPT_SS_ATTACHDBFILENAME (SQL_COPT_SS_BASE+21)
38 #define SQL_COPT_SS_CONCAT_NULL (SQL_COPT_SS_BASE+22)
39 #define SQL_COPT_SS_ENCRYPT (SQL_COPT_SS_BASE+23)
40 
41 #define SQL_COPT_SS_MAX_USED SQL_COPT_SS_ENCRYPT
42 
43 #define SQL_SOPT_SS_BASE 1225
44 #define SQL_SOPT_SS_TEXTPTR_LOGGING (SQL_SOPT_SS_BASE+0)
45 #define SQL_SOPT_SS_CURRENT_COMMAND (SQL_SOPT_SS_BASE+1)
46 #define SQL_SOPT_SS_HIDDEN_COLUMNS (SQL_SOPT_SS_BASE+2)
47 #define SQL_SOPT_SS_NOBROWSETABLE (SQL_SOPT_SS_BASE+3)
48 #define SQL_SOPT_SS_REGIONALIZE (SQL_SOPT_SS_BASE+4)
49 #define SQL_SOPT_SS_CURSOR_OPTIONS (SQL_SOPT_SS_BASE+5)
50 #define SQL_SOPT_SS_NOCOUNT_STATUS (SQL_SOPT_SS_BASE+6)
51 #define SQL_SOPT_SS_DEFER_PREPARE (SQL_SOPT_SS_BASE+7)
52 
53 #define SQL_SOPT_SS_MAX_USED SQL_SOPT_SS_DEFER_PREPARE
54 
55 #define SQL_COPT_SS_BASE_EX 1240
56 #define SQL_COPT_SS_BROWSE_CONNECT (SQL_COPT_SS_BASE_EX+1)
57 #define SQL_COPT_SS_BROWSE_SERVER (SQL_COPT_SS_BASE_EX+2)
58 #define SQL_COPT_SS_WARN_ON_CP_ERROR (SQL_COPT_SS_BASE_EX+3)
59 
60 #define SQL_COPT_SS_CONNECTION_DEAD (SQL_COPT_SS_BASE_EX+4)
61 
62 #define SQL_COPT_SS_BROWSE_CACHE_DATA (SQL_COPT_SS_BASE_EX+5)
63 
64 #define SQL_COPT_SS_RESET_CONNECTION (SQL_COPT_SS_BASE_EX+6)
65 
66 #define SQL_COPT_SS_EX_MAX_USED SQL_COPT_SS_RESET_CONNECTION
67 
68 #define SQL_UP_OFF __MSABI_LONG(0)
69 #define SQL_UP_ON __MSABI_LONG(1)
70 #define SQL_UP_ON_DROP __MSABI_LONG(2)
71 #define SQL_UP_DEFAULT SQL_UP_ON
72 
73 #define SQL_IS_OFF __MSABI_LONG(0)
74 #define SQL_IS_ON __MSABI_LONG(1)
75 #define SQL_IS_DEFAULT SQL_IS_OFF
76 
77 #define SQL_PC_OFF __MSABI_LONG(0)
78 #define SQL_PC_ON __MSABI_LONG(1)
79 #define SQL_PC_DEFAULT SQL_PC_OFF
80 
81 #define SQL_UD_NOTSET NULL
82 
83 #define SQL_XL_OFF __MSABI_LONG(0)
84 #define SQL_XL_ON __MSABI_LONG(1)
85 #define SQL_XL_DEFAULT SQL_XL_ON
86 
87 #define SQL_FB_OFF __MSABI_LONG(0)
88 #define SQL_FB_ON __MSABI_LONG(1)
89 #define SQL_FB_DEFAULT SQL_FB_OFF
90 
91 #define SQL_BCP_OFF __MSABI_LONG(0)
92 #define SQL_BCP_ON __MSABI_LONG(1)
93 #define SQL_BCP_DEFAULT SQL_BCP_OFF
94 
95 #define SQL_QI_OFF __MSABI_LONG(0)
96 #define SQL_QI_ON __MSABI_LONG(1)
97 #define SQL_QI_DEFAULT SQL_QI_ON
98 
99 #define SQL_AD_OFF __MSABI_LONG(0)
100 #define SQL_AD_ON __MSABI_LONG(1)
101 #define SQL_AD_DEFAULT SQL_AD_ON
102 
103 #define SQL_CN_OFF __MSABI_LONG(0)
104 #define SQL_CN_ON __MSABI_LONG(1)
105 #define SQL_CN_DEFAULT SQL_CN_ON
106 
107 #define SQL_TL_OFF __MSABI_LONG(0)
108 #define SQL_TL_ON __MSABI_LONG(1)
109 #define SQL_TL_DEFAULT SQL_TL_ON
110 
111 #define SQL_HC_OFF __MSABI_LONG(0)
112 #define SQL_HC_ON __MSABI_LONG(1)
113 #define SQL_HC_DEFAULT SQL_HC_OFF
114 
115 #define SQL_NB_OFF __MSABI_LONG(0)
116 #define SQL_NB_ON __MSABI_LONG(1)
117 #define SQL_NB_DEFAULT SQL_NB_OFF
118 
119 #define SQL_RE_OFF __MSABI_LONG(0)
120 #define SQL_RE_ON __MSABI_LONG(1)
121 #define SQL_RE_DEFAULT SQL_RE_OFF
122 
123 #define SQL_CO_OFF __MSABI_LONG(0)
124 #define SQL_CO_FFO __MSABI_LONG(1)
125 #define SQL_CO_AF __MSABI_LONG(2)
126 #define SQL_CO_FFO_AF (SQL_CO_FFO|SQL_CO_AF)
127 #define SQL_CO_FIREHOSE_AF __MSABI_LONG(4)
128 #define SQL_CO_DEFAULT SQL_CO_OFF
129 
130 #define SQL_NC_OFF __MSABI_LONG(0)
131 #define SQL_NC_ON __MSABI_LONG(1)
132 
133 #define SQL_DP_OFF __MSABI_LONG(0)
134 #define SQL_DP_ON __MSABI_LONG(1)
135 
136 #define SQL_EN_OFF __MSABI_LONG(0)
137 #define SQL_EN_ON __MSABI_LONG(1)
138 
139 #define SQL_MORE_INFO_NO __MSABI_LONG(0)
140 #define SQL_MORE_INFO_YES __MSABI_LONG(1)
141 
142 #define SQL_CACHE_DATA_NO __MSABI_LONG(0)
143 #define SQL_CACHE_DATA_YES __MSABI_LONG(1)
144 
145 #define SQL_RESET_YES __MSABI_LONG(1)
146 
147 #define SQL_WARN_NO __MSABI_LONG(0)
148 #define SQL_WARN_YES __MSABI_LONG(1)
149 
150 #define SQL_CURSOR_FAST_FORWARD_ONLY 8
151 
152 #define SQL_CA_SS_BASE 1200
153 #define SQL_CA_SS_COLUMN_SSTYPE (SQL_CA_SS_BASE+0)
154 #define SQL_CA_SS_COLUMN_UTYPE (SQL_CA_SS_BASE+1)
155 #define SQL_CA_SS_NUM_ORDERS (SQL_CA_SS_BASE+2)
156 #define SQL_CA_SS_COLUMN_ORDER (SQL_CA_SS_BASE+3)
157 #define SQL_CA_SS_COLUMN_VARYLEN (SQL_CA_SS_BASE+4)
158 #define SQL_CA_SS_NUM_COMPUTES (SQL_CA_SS_BASE+5)
159 #define SQL_CA_SS_COMPUTE_ID (SQL_CA_SS_BASE+6)
160 #define SQL_CA_SS_COMPUTE_BYLIST (SQL_CA_SS_BASE+7)
161 #define SQL_CA_SS_COLUMN_ID (SQL_CA_SS_BASE+8)
162 #define SQL_CA_SS_COLUMN_OP (SQL_CA_SS_BASE+9)
163 #define SQL_CA_SS_COLUMN_SIZE (SQL_CA_SS_BASE+10)
164 #define SQL_CA_SS_COLUMN_HIDDEN (SQL_CA_SS_BASE+11)
165 #define SQL_CA_SS_COLUMN_KEY (SQL_CA_SS_BASE+12)
166 
167 #define SQL_CA_SS_COLUMN_COLLATION (SQL_CA_SS_BASE+14)
168 #define SQL_CA_SS_VARIANT_TYPE (SQL_CA_SS_BASE+15)
169 #define SQL_CA_SS_VARIANT_SQL_TYPE (SQL_CA_SS_BASE+16)
170 #define SQL_CA_SS_VARIANT_SERVER_TYPE (SQL_CA_SS_BASE+17)
171 #define SQL_CA_SS_MAX_USED (SQL_CA_SS_BASE+18)
172 
173 #define SQLTEXT 0x23
174 #define SQLVARBINARY 0x25
175 #define SQLINTN 0x26
176 #define SQLVARCHAR 0x27
177 #define SQLBINARY 0x2d
178 #define SQLIMAGE 0x22
179 #define SQLCHARACTER 0x2f
180 #define SQLINT1 0x30
181 #define SQLBIT 0x32
182 #define SQLINT2 0x34
183 #define SQLINT4 0x38
184 #define SQLMONEY 0x3c
185 #define SQLDATETIME 0x3d
186 #define SQLFLT8 0x3e
187 #define SQLFLTN 0x6d
188 #define SQLMONEYN 0x6e
189 #define SQLDATETIMN 0x6f
190 #define SQLFLT4 0x3b
191 #define SQLMONEY4 0x7a
192 #define SQLDATETIM4 0x3a
193 
194 #define SQLDECIMAL 0x6a
195 #define SQLNUMERIC 0x6c
196 
197 #define SQLUNIQUEID 0x24
198 #define SQLBIGCHAR 0xaf
199 #define SQLBIGVARCHAR 0xa7
200 #define SQLBIGBINARY 0xad
201 #define SQLBIGVARBINARY 0xa5
202 #define SQLBITN 0x68
203 #define SQLNCHAR 0xef
204 #define SQLNVARCHAR 0xe7
205 #define SQLNTEXT 0x63
206 
207 #define SQLINT8 0x7f
208 #define SQLVARIANT 0x62
209 
210 #define SQLudtBINARY 3
211 #define SQLudtBIT 16
212 #define SQLudtBITN 0
213 #define SQLudtCHAR 1
214 #define SQLudtDATETIM4 22
215 #define SQLudtDATETIME 12
216 #define SQLudtDATETIMN 15
217 #define SQLudtDECML 24
218 #define SQLudtDECMLN 26
219 #define SQLudtFLT4 23
220 #define SQLudtFLT8 8
221 #define SQLudtFLTN 14
222 #define SQLudtIMAGE 20
223 #define SQLudtINT1 5
224 #define SQLudtINT2 6
225 #define SQLudtINT4 7
226 #define SQLudtINTN 13
227 #define SQLudtMONEY 11
228 #define SQLudtMONEY4 21
229 #define SQLudtMONEYN 17
230 #define SQLudtNUM 10
231 #define SQLudtNUMN 25
232 #define SQLudtSYSNAME 18
233 #define SQLudtTEXT 19
234 #define SQLudtTIMESTAMP 80
235 #define SQLudtUNIQUEIDENTIFIER 0
236 #define SQLudtVARBINARY 4
237 #define SQLudtVARCHAR 2
238 #define MIN_USER_DATATYPE 256
239 
240 #define SQLAOPSTDEV 0x30
241 #define SQLAOPSTDEVP 0x31
242 #define SQLAOPVAR 0x32
243 #define SQLAOPVARP 0x33
244 #define SQLAOPCNT 0x4b
245 #define SQLAOPSUM 0x4d
246 #define SQLAOPAVG 0x4f
247 #define SQLAOPMIN 0x51
248 #define SQLAOPMAX 0x52
249 #define SQLAOPANY 0x53
250 #define SQLAOPNOOP 0x56
251 
252 #define SQL_INFO_SS_FIRST 1199
253 #define SQL_INFO_SS_NETLIB_NAMEW (SQL_INFO_SS_FIRST+0)
254 #define SQL_INFO_SS_NETLIB_NAMEA (SQL_INFO_SS_FIRST+1)
255 #define SQL_INFO_SS_MAX_USED SQL_INFO_SS_NETLIB_NAMEA
256 
257 #define SQL_INFO_SS_NETLIB_NAME __MINGW_NAME_AW(SQL_INFO_SS_NETLIB_NAME)
258 
259 #define SQL_SS_VARIANT -150
260 
261 #define SQL_DIAG_SS_BASE (-1150)
262 #define SQL_DIAG_SS_MSGSTATE (SQL_DIAG_SS_BASE)
263 #define SQL_DIAG_SS_SEVERITY (SQL_DIAG_SS_BASE-1)
264 #define SQL_DIAG_SS_SRVNAME (SQL_DIAG_SS_BASE-2)
265 #define SQL_DIAG_SS_PROCNAME (SQL_DIAG_SS_BASE-3)
266 #define SQL_DIAG_SS_LINE (SQL_DIAG_SS_BASE-4)
267 
268 #define SQL_DIAG_DFC_SS_BASE (-200)
269 #define SQL_DIAG_DFC_SS_ALTER_DATABASE (SQL_DIAG_DFC_SS_BASE-0)
270 #define SQL_DIAG_DFC_SS_CHECKPOINT (SQL_DIAG_DFC_SS_BASE-1)
271 #define SQL_DIAG_DFC_SS_CONDITION (SQL_DIAG_DFC_SS_BASE-2)
272 #define SQL_DIAG_DFC_SS_CREATE_DATABASE (SQL_DIAG_DFC_SS_BASE-3)
273 #define SQL_DIAG_DFC_SS_CREATE_DEFAULT (SQL_DIAG_DFC_SS_BASE-4)
274 #define SQL_DIAG_DFC_SS_CREATE_PROCEDURE (SQL_DIAG_DFC_SS_BASE-5)
275 #define SQL_DIAG_DFC_SS_CREATE_RULE (SQL_DIAG_DFC_SS_BASE-6)
276 #define SQL_DIAG_DFC_SS_CREATE_TRIGGER (SQL_DIAG_DFC_SS_BASE-7)
277 #define SQL_DIAG_DFC_SS_CURSOR_DECLARE (SQL_DIAG_DFC_SS_BASE-8)
278 #define SQL_DIAG_DFC_SS_CURSOR_OPEN (SQL_DIAG_DFC_SS_BASE-9)
279 #define SQL_DIAG_DFC_SS_CURSOR_FETCH (SQL_DIAG_DFC_SS_BASE-10)
280 #define SQL_DIAG_DFC_SS_CURSOR_CLOSE (SQL_DIAG_DFC_SS_BASE-11)
281 #define SQL_DIAG_DFC_SS_DEALLOCATE_CURSOR (SQL_DIAG_DFC_SS_BASE-12)
282 #define SQL_DIAG_DFC_SS_DBCC (SQL_DIAG_DFC_SS_BASE-13)
283 #define SQL_DIAG_DFC_SS_DISK (SQL_DIAG_DFC_SS_BASE-14)
284 #define SQL_DIAG_DFC_SS_DROP_DATABASE (SQL_DIAG_DFC_SS_BASE-15)
285 #define SQL_DIAG_DFC_SS_DROP_DEFAULT (SQL_DIAG_DFC_SS_BASE-16)
286 #define SQL_DIAG_DFC_SS_DROP_PROCEDURE (SQL_DIAG_DFC_SS_BASE-17)
287 #define SQL_DIAG_DFC_SS_DROP_RULE (SQL_DIAG_DFC_SS_BASE-18)
288 #define SQL_DIAG_DFC_SS_DROP_TRIGGER (SQL_DIAG_DFC_SS_BASE-19)
289 #define SQL_DIAG_DFC_SS_DUMP_DATABASE (SQL_DIAG_DFC_SS_BASE-20)
290 #define SQL_DIAG_DFC_SS_DUMP_TABLE (SQL_DIAG_DFC_SS_BASE-21)
291 #define SQL_DIAG_DFC_SS_DUMP_TRANSACTION (SQL_DIAG_DFC_SS_BASE-22)
292 #define SQL_DIAG_DFC_SS_GOTO (SQL_DIAG_DFC_SS_BASE-23)
293 #define SQL_DIAG_DFC_SS_INSERT_BULK (SQL_DIAG_DFC_SS_BASE-24)
294 #define SQL_DIAG_DFC_SS_KILL (SQL_DIAG_DFC_SS_BASE-25)
295 #define SQL_DIAG_DFC_SS_LOAD_DATABASE (SQL_DIAG_DFC_SS_BASE-26)
296 #define SQL_DIAG_DFC_SS_LOAD_HEADERONLY (SQL_DIAG_DFC_SS_BASE-27)
297 #define SQL_DIAG_DFC_SS_LOAD_TABLE (SQL_DIAG_DFC_SS_BASE-28)
298 #define SQL_DIAG_DFC_SS_LOAD_TRANSACTION (SQL_DIAG_DFC_SS_BASE-29)
299 #define SQL_DIAG_DFC_SS_PRINT (SQL_DIAG_DFC_SS_BASE-30)
300 #define SQL_DIAG_DFC_SS_RAISERROR (SQL_DIAG_DFC_SS_BASE-31)
301 #define SQL_DIAG_DFC_SS_READTEXT (SQL_DIAG_DFC_SS_BASE-32)
302 #define SQL_DIAG_DFC_SS_RECONFIGURE (SQL_DIAG_DFC_SS_BASE-33)
303 #define SQL_DIAG_DFC_SS_RETURN (SQL_DIAG_DFC_SS_BASE-34)
304 #define SQL_DIAG_DFC_SS_SELECT_INTO (SQL_DIAG_DFC_SS_BASE-35)
305 #define SQL_DIAG_DFC_SS_SET (SQL_DIAG_DFC_SS_BASE-36)
306 #define SQL_DIAG_DFC_SS_SET_IDENTITY_INSERT (SQL_DIAG_DFC_SS_BASE-37)
307 #define SQL_DIAG_DFC_SS_SET_ROW_COUNT (SQL_DIAG_DFC_SS_BASE-38)
308 #define SQL_DIAG_DFC_SS_SET_STATISTICS (SQL_DIAG_DFC_SS_BASE-39)
309 #define SQL_DIAG_DFC_SS_SET_TEXTSIZE (SQL_DIAG_DFC_SS_BASE-40)
310 #define SQL_DIAG_DFC_SS_SETUSER (SQL_DIAG_DFC_SS_BASE-41)
311 #define SQL_DIAG_DFC_SS_SHUTDOWN (SQL_DIAG_DFC_SS_BASE-42)
312 #define SQL_DIAG_DFC_SS_TRANS_BEGIN (SQL_DIAG_DFC_SS_BASE-43)
313 #define SQL_DIAG_DFC_SS_TRANS_COMMIT (SQL_DIAG_DFC_SS_BASE-44)
314 #define SQL_DIAG_DFC_SS_TRANS_PREPARE (SQL_DIAG_DFC_SS_BASE-45)
315 #define SQL_DIAG_DFC_SS_TRANS_ROLLBACK (SQL_DIAG_DFC_SS_BASE-46)
316 #define SQL_DIAG_DFC_SS_TRANS_SAVE (SQL_DIAG_DFC_SS_BASE-47)
317 #define SQL_DIAG_DFC_SS_TRUNCATE_TABLE (SQL_DIAG_DFC_SS_BASE-48)
318 #define SQL_DIAG_DFC_SS_UPDATE_STATISTICS (SQL_DIAG_DFC_SS_BASE-49)
319 #define SQL_DIAG_DFC_SS_UPDATETEXT (SQL_DIAG_DFC_SS_BASE-50)
320 #define SQL_DIAG_DFC_SS_USE (SQL_DIAG_DFC_SS_BASE-51)
321 #define SQL_DIAG_DFC_SS_WAITFOR (SQL_DIAG_DFC_SS_BASE-52)
322 #define SQL_DIAG_DFC_SS_WRITETEXT (SQL_DIAG_DFC_SS_BASE-53)
323 #define SQL_DIAG_DFC_SS_DENY (SQL_DIAG_DFC_SS_BASE-54)
324 #define SQL_DIAG_DFC_SS_SET_XCTLVL (SQL_DIAG_DFC_SS_BASE-55)
325 
326 #define EX_ANY 0
327 #define EX_INFO 10
328 #define EX_MAXISEVERITY EX_INFO
329 #define EX_MISSING 11
330 #define EX_TYPE 12
331 #define EX_DEADLOCK 13
332 #define EX_PERMIT 14
333 #define EX_SYNTAX 15
334 #define EX_USER 16
335 #define EX_RESOURCE 17
336 #define EX_INTOK 18
337 #define MAXUSEVERITY EX_INTOK
338 #define EX_LIMIT 19
339 #define EX_CMDFATAL 20
340 #define MINFATALERR EX_CMDFATAL
341 #define EX_DBFATAL 21
342 #define EX_TABCORRUPT 22
343 #define EX_DBCORRUPT 23
344 #define EX_HARDWARE 24
345 #define EX_CONTROL 25
346 
347 #ifndef MAXNUMERICLEN
348 
349 #define DBMAXCHAR (8000+1)
350 #define MAXNAME (SQL_MAX_SQLSERVERNAME+1)
351 
352 #if defined(UNICODE)
353   typedef wchar_t DBCHAR;
354 #else
355   typedef char DBCHAR;
356 #endif
357   typedef unsigned char DBBINARY;
358   typedef unsigned char DBTINYINT;
359   typedef short DBSMALLINT;
360   typedef unsigned short DBUSMALLINT;
361   typedef double DBFLT8;
362   typedef unsigned char DBBIT;
363   typedef unsigned char DBBOOL;
364   typedef float DBFLT4;
365   typedef DBFLT4 DBREAL;
366   typedef UINT DBUBOOL;
367 
368   typedef struct dbvarychar {
369     DBSMALLINT len;
370     DBCHAR str[DBMAXCHAR];
371   } DBVARYCHAR;
372 
373   typedef struct dbvarybin {
374     DBSMALLINT len;
375     BYTE array[DBMAXCHAR];
376   } DBVARYBIN;
377 
378   typedef struct dbmoney {
379     LONG mnyhigh;
380     ULONG mnylow;
381   } DBMONEY;
382 
383   typedef struct dbdatetime {
384     LONG dtdays;
385     ULONG dttime;
386   } DBDATETIME;
387 
388   typedef struct dbdatetime4 {
389     USHORT numdays;
390     USHORT nummins;
391   } DBDATETIM4;
392 
393   typedef LONG DBMONEY4;
394 
395 #define DBNUM_PREC_TYPE BYTE
396 #define DBNUM_SCALE_TYPE BYTE
397 #define DBNUM_VAL_TYPE BYTE
398 
399 #if (ODBCVER < 0x0300)
400 #define MAXNUMERICLEN 16
401 
402   typedef struct dbnumeric {
403     DBNUM_PREC_TYPE precision;
404     DBNUM_SCALE_TYPE scale;
405     BYTE sign;
406     DBNUM_VAL_TYPE val[MAXNUMERICLEN];
407   } DBNUMERIC;
408   typedef DBNUMERIC DBDECIMAL;
409 #else
410 #define MAXNUMERICLEN SQL_MAX_NUMERIC_LEN
411   typedef SQL_NUMERIC_STRUCT DBNUMERIC;
412   typedef SQL_NUMERIC_STRUCT DBDECIMAL;
413 #endif
414 #endif
415 
416 #ifndef INT
417   typedef int INT;
418   typedef __LONG32 DBINT;
419 #ifndef _LPCBYTE_DEFINED
420 #define _LPCBYTE_DEFINED
421   typedef const LPBYTE LPCBYTE;
422 #endif
423   typedef DBINT *LPDBINT;
424 #endif
425 
426   typedef struct sqlperf {
427     DWORD TimerResolution;
428     DWORD SQLidu;
429     DWORD SQLiduRows;
430     DWORD SQLSelects;
431     DWORD SQLSelectRows;
432     DWORD Transactions;
433     DWORD SQLPrepares;
434     DWORD ExecDirects;
435     DWORD SQLExecutes;
436     DWORD CursorOpens;
437     DWORD CursorSize;
438     DWORD CursorUsed;
439     LDOUBLE PercentCursorUsed;
440     LDOUBLE AvgFetchTime;
441     LDOUBLE AvgCursorSize;
442     LDOUBLE AvgCursorUsed;
443     DWORD SQLFetchTime;
444     DWORD SQLFetchCount;
445     DWORD CurrentStmtCount;
446     DWORD MaxOpenStmt;
447     DWORD SumOpenStmt;
448     DWORD CurrentConnectionCount;
449     DWORD MaxConnectionsOpened;
450     DWORD SumConnectionsOpened;
451     DWORD SumConnectiontime;
452     LDOUBLE AvgTimeOpened;
453     DWORD ServerRndTrips;
454     DWORD BuffersSent;
455     DWORD BuffersRec;
456     DWORD BytesSent;
457     DWORD BytesRec;
458     DWORD msExecutionTime;
459     DWORD msNetWorkServerTime;
460   } SQLPERF;
461 
462 #define SQL_PERF_START 1
463 #define SQL_PERF_STOP 2
464 
465 #define SQL_SS_DL_DEFAULT TEXT("STATS.LOG")
466 #define SQL_SS_QL_DEFAULT TEXT("QUERY.LOG")
467 #define SQL_SS_QI_DEFAULT 30000
468 
469 #define SUCCEED 1
470 #define FAIL 0
471 #define SUCCEED_ABORT 2
472 #define SUCCEED_ASYNC 3
473 
474 #define DB_IN 1
475 #define DB_OUT 2
476 
477 #define BCPMAXERRS 1
478 #define BCPFIRST 2
479 #define BCPLAST 3
480 #define BCPBATCH 4
481 #define BCPKEEPNULLS 5
482 #define BCPABORT 6
483 #define BCPODBC 7
484 #define BCPKEEPIDENTITY 8
485 #define BCP6xFILEFMT 9
486 #define BCPHINTSA 10
487 #define BCPHINTSW 11
488 #define BCPFILECP 12
489 #define BCPUNICODEFILE 13
490 #define BCPTEXTFILE 14
491 #define BCPFILEFMT 15
492 
493 #define BCPFILECP_ACP 0
494 #define BCPFILECP_OEMCP 1
495 #define BCPFILECP_RAW (-1)
496 
497 #define SQL_VARLEN_DATA (-10)
498 
499   DBINT SQL_API bcp_batch(HDBC);
500   RETCODE SQL_API bcp_bind(HDBC,LPCBYTE,INT,DBINT,LPCBYTE,INT,INT,INT);
501   RETCODE SQL_API bcp_colfmt(HDBC,INT,BYTE,INT,DBINT,LPCBYTE,INT,INT);
502   RETCODE SQL_API bcp_collen(HDBC,DBINT,INT);
503   RETCODE SQL_API bcp_colptr(HDBC,LPCBYTE,INT);
504   RETCODE SQL_API bcp_columns(HDBC,INT);
505   RETCODE SQL_API bcp_control(HDBC,INT,void *);
506   DBINT SQL_API bcp_done(HDBC);
507   RETCODE SQL_API bcp_exec(HDBC,LPDBINT);
508   RETCODE SQL_API bcp_getcolfmt(HDBC,INT,INT,void *,INT,INT *);
509   RETCODE SQL_API bcp_initA(HDBC,LPCSTR,LPCSTR,LPCSTR,INT);
510   RETCODE SQL_API bcp_initW(HDBC,LPCWSTR,LPCWSTR,LPCWSTR,INT);
511   RETCODE SQL_API bcp_moretext(HDBC,DBINT,LPCBYTE);
512   RETCODE SQL_API bcp_readfmtA(HDBC,LPCSTR);
513   RETCODE SQL_API bcp_readfmtW(HDBC,LPCWSTR);
514   RETCODE SQL_API bcp_sendrow(HDBC);
515   RETCODE SQL_API bcp_setcolfmt(HDBC,INT,INT,void *,INT);
516   RETCODE SQL_API bcp_writefmtA(HDBC,LPCSTR);
517   RETCODE SQL_API bcp_writefmtW(HDBC,LPCWSTR);
518   CHAR *SQL_API dbprtypeA(INT);
519   WCHAR *SQL_API dbprtypeW(INT);
520 
521 #define bcp_init __MINGW_NAME_AW(bcp_init)
522 #define bcp_readfmt __MINGW_NAME_AW(bcp_readfmt)
523 #define bcp_writefmt __MINGW_NAME_AW(bcp_writefmt)
524 #define dbprtype __MINGW_NAME_AW(dbprtype)
525 #define BCPHINTS __MINGW_NAME_AW(BCPHINTS)
526 
527   SQLRETURN SQL_API SQLLinkedServers(SQLHSTMT);
528   SQLRETURN SQL_API SQLLinkedCatalogsA(SQLHSTMT,LPCSTR,SWORD);
529   SQLRETURN SQL_API SQLLinkedCatalogsW(SQLHSTMT,LPCWSTR,SWORD);
530   HANDLE SQL_API SQLInitEnumServers(WCHAR *pwchServerName,WCHAR *pwchInstanceName);
531   RETCODE SQL_API SQLGetNextEnumeration(HANDLE hEnumHandle,BYTE *prgEnumData,INT *piEnumLength);
532   RETCODE SQL_API SQLCloseEnumServers(HANDLE hEnumHandle);
533 
534 #define SQLLinkedCatalogs __MINGW_NAME_AW(SQLLinkedCatalogs)
535 
536 #define BCP_FMT_TYPE 0x01
537 #define BCP_FMT_INDICATOR_LEN 0x02
538 #define BCP_FMT_DATA_LEN 0x03
539 #define BCP_FMT_TERMINATOR 0x04
540 #define BCP_FMT_SERVER_COL 0x05
541 #define BCP_FMT_COLLATION 0x06
542 #define BCP_FMT_COLLATION_ID 0x07
543 
544 #define SQL_FAST_CONNECT (SQL_COPT_SS_BASE+0)
545 
546 #define SQL_FC_OFF __MSABI_LONG(0)
547 #define SQL_FC_ON __MSABI_LONG(1)
548 #define SQL_FC_DEFAULT SQL_FC_OFF
549 #define SQL_COPT_SS_ANSI_OEM (SQL_COPT_SS_BASE+6)
550 #define SQL_AO_OFF __MSABI_LONG(0)
551 #define SQL_AO_ON __MSABI_LONG(1)
552 #define SQL_AO_DEFAULT SQL_AO_OFF
553 
554 #define SQL_REMOTE_PWD SQL_COPT_SS_REMOTE_PWD
555 #define SQL_USE_PROCEDURE_FOR_PREPARE SQL_COPT_SS_USE_PROC_FOR_PREP
556 #define SQL_INTEGRATED_SECURITY SQL_COPT_SS_INTEGRATED_SECURITY
557 #define SQL_PRESERVE_CURSORS SQL_COPT_SS_PRESERVE_CURSORS
558 #define SQL_TEXTPTR_LOGGING SQL_SOPT_SS_TEXTPTR_LOGGING
559 #define SQL_CA_SS_BASE_COLUMN_NAME SQL_DESC_BASE_COLUMN_NAME
560 #define SQLDECIMALN 0x6a
561 #define SQLNUMERICN 0x6c
562 
563 #ifdef __cplusplus
564 }
565 #endif
566 #endif
567