sybdb.h
上传用户:bilang918
上传日期:2010-03-24
资源大小:558k
文件大小:143k
源码类别:

网络

开发平台:

Unix_Linux

  1. /*
  2. **      Sybase DB-LIBRARY 
  3. **      Confidential Property of Sybase, Inc.
  4. **      (c) Copyright Sybase, Inc. 1988 to 1996.
  5. **      All rights reserved.
  6. **
  7. **
  8. ** Use, duplication, or disclosure by the Government
  9. ** is subject to restrictions as set forth in subparagraph (c) (1) (ii)
  10. ** of the Rights in Technical Data and Computer Software clause
  11. ** at DFARS 52.227-7013. Sybase, Inc. 6475 Christie Avenue, Emeryville,
  12. ** CA 94608.
  13. **
  14. ** History
  15. **
  16. ** 001  12JAN94  Added prototypes for the functions refered thru
  17. **  function pointer to make DBLIB ANSI compliant. sureshk
  18. ** 002 08Jul94 Fixed all the prototypes to make it consistant with
  19. ** all other public headers nagar
  20. ** 003  11AUG94  Added db_filmode field in DBPROCESS cchen
  21. ** 004  30MAY96  Added DCL interfaces support to dblib cchen
  22. */
  23. #ifndef __sybdb__
  24. #define __sybdb__
  25. /* 
  26. ** Include stdio.h if it hasn't already been done 
  27. */
  28. #ifndef FILE
  29. #include <stdio.h>
  30. /* 
  31. ** If NULL has not been defined by stdio.h
  32. ** make sure it has a valid value.
  33. */
  34. #ifndef NULL
  35. #define NULL 0
  36. #endif /* NULL */
  37. #endif /* FILE */
  38. /* 
  39. ** Indicate use of Macintosh compiler
  40. */
  41. #if defined(applec) || defined(powerc) || defined(__MWERKS__) || defined(THINK_C)
  42. #define SYB_MAC 1
  43. #endif  /* defined(applec) || defined(powerc) || defined(__MWERKS__) || defined(THINK_C) */
  44. #include        <syblogin.h>
  45. /*
  46. ** The following datatype definitions are included here to avoid including
  47. ** tds.h. This will help in keeing the number of released header files
  48. ** to a minimum.
  49. */
  50. #define SYBVOID (BYTE)0x1F
  51. #define SYBBINARY (BYTE)0x2D
  52. #define SYBBIT (BYTE)0x32
  53. #define SYBCHAR (BYTE)0x2F
  54. #define SYBDATETIME4 (BYTE)0x3A
  55. #define SYBDATETIME (BYTE)0x3D
  56. #define SYBDATETIMN (BYTE)0x6F
  57. #define SYBDECIMAL (BYTE)0x6A
  58. #define SYBFLT8 (BYTE)0x3E
  59. #define SYBFLTN (BYTE)0x6D
  60. #define SYBREAL (BYTE)0x3B
  61. #define SYBIMAGE (BYTE)0x22
  62. #define SYBINT1 (BYTE)0x30
  63. #define SYBINT2 (BYTE)0x34
  64. #define SYBINT4 (BYTE)0x38
  65. #define SYBINTN (BYTE)0x26
  66. #define SYBLONGBINARY (BYTE)0xE1
  67. #define SYBLONGCHAR (BYTE)0xAF
  68. #define SYBMONEY4 (BYTE)0x7A
  69. #define SYBMONEY (BYTE)0x3C
  70. #define SYBMONEYN (BYTE)0x6E
  71. #define SYBNUMERIC (BYTE)0x6C
  72. #define SYBTEXT (BYTE)0x23
  73. #define SYBVARBINARY (BYTE)0x25
  74. #define SYBVARCHAR (BYTE)0x27
  75. #define SYBSENSITIVITY (BYTE)0x67
  76. #define SYBBOUNDARY (BYTE)0x68
  77. /*
  78. ** The following tokens can be returned by dbaltop().
  79. */
  80. #define SYBAOPCNT (BYTE)0x4b
  81. #define SYBAOPSUM (BYTE)0x4d
  82. #define SYBAOPAVG (BYTE)0x4f
  83. #define SYBAOPMIN (BYTE)0x51
  84. #define SYBAOPMAX (BYTE)0x52
  85. /* Additions for 10.0 front ends, taken from the now obsolete sybdbtoken.h */
  86. #define SYBAOPCNTU 0x4c
  87. #define SYBAOPSUMU 0x4e
  88. #define SYBAOPAVGU 0x50
  89. #define SYBTLEND 0x01
  90. #define SYBQLEND 0x02
  91. #define SYBVARCHNE 0x1e
  92. #define SYBDBAID 0x05
  93. #define SYBDBCLOSE 0x13
  94. #ifdef  ABS
  95. #undef  ABS
  96. #endif  /* ABS */
  97. #define ABS(a)          ((a) > 0 ? (a) : -(a))
  98. /*
  99. **  Status code for dbnextrow() and dbgetrow().
  100. **  Return of > 0 indicates ALTROW.
  101. **  FAIL is another possible return.
  102. */
  103. #define MORE_ROWS       -1
  104. #define NO_MORE_ROWS    -2
  105. #define REG_ROW         MORE_ROWS
  106. #define BUF_FULL        -3
  107. /*
  108. ** Return code for dbreadtext().
  109. */
  110. #define NO_MORE_PARAMS  -4
  111. /*
  112. **  Status code for dbresults(). Possible return values are
  113. **  SUCCEED, FAIL, and NO_MORE_RESULTS.
  114. */
  115. #define NO_MORE_RESULTS 2
  116. /*
  117. **  Return code for message-handlers. Indicates whether or not the handler
  118. **  wants DB-LIBRARY to buffer the current Server message for later use
  119. **  by the program.
  120. */
  121. #define DBSAVE          1
  122. #define DBNOSAVE        0
  123. #define DBNOERR         -1
  124. /*
  125. ** Default size of row buffer.  This is what people get if they do
  126. ** a dbsetopt(dbproc, DBBUFFER, 0).
  127. */
  128. #define DBBUFSIZE       1000
  129. /* The size of a SYBTEXT timestamp, in bytes. This timestamp is not to be
  130.  * confused with a browse-mode timestamp.
  131.  */
  132. #define DBTXTSLEN       8
  133. /* The size of a text-pointer, in bytes. */
  134. #if !VMS
  135. #define DBTXPLEN        ((DBTINYINT)16)
  136. #else
  137. #define DBTXPLEN        ((unsigned char)16)
  138. #endif
  139. #define DBMAXNAME       30 /* Less like to collide with users' names
  140. ** than "MAXNAME".
  141. */
  142. #define MAXNAME         30      /* Still here, so old programs won't
  143.                                  * break yet.
  144.                                  */
  145. /* The following 2 defines are 1.0 Secure Server related. They are only here
  146. ** so that old applications are not broken.
  147. */
  148. #define MINSECLEVEL     1
  149. #define MAXSECLEVEL     16
  150. #define DBMAXCOLNAME    30
  151. #define DBMAXBYLIST     16
  152. #define DBDATE_YY       0       /* year         1753 - 9999 */
  153. #define DBDATE_QQ       1       /* quarter      1 - 4 */
  154. #define DBDATE_MM       2       /* month        January - December */
  155. #define DBDATE_DW       3       /* weekday      Monday - Sunday */
  156. #define DBDATE_DD       4       /* day          1 - 31 */
  157. #define DBDATE_DY       5       /* dayofyear    1 - 366 */
  158. #define DBDATE_HH       6       /* hour         0 - 23 */
  159. #define DBDATE_MI       7       /* minute       0 - 59 */
  160. #define DBDATE_SS       8       /* second       0 - 59 */
  161. #define DBDATE_MS       9       /* millisecond  0 - 999 */
  162. #define DBDATE_WK       10      /* week         1 - 54 (for leap years) */
  163. #define DBDATE_CY 11
  164. #define DBDATE_CW 12
  165. #define DBDATE_CD 13
  166. /* maximum printing lengths for fixed-length data */
  167. #define PRINT4  11
  168. #define PRINT2  6
  169. #define PRINT1  3
  170. #define PRFLT8  20
  171. #define PRFLT4  20
  172. #define PRMONEY 24
  173. #define PRMONEY4        24
  174. #define PRBIT   1
  175. #define PROLDDATETIME   20      /* for backward compatibility */
  176. #define PRDATETIME      26
  177. #define PRDATETIME4     26
  178. #define PRLDATETIME     30      /* includes milliseconds */
  179. #define PRNUMERIC       (CS_MAX_PREC + 2)
  180. #define PRDECIMAL       PRNUMERIC
  181. /* constant definitions for dbsafestr()'s quotetype parameter */
  182. #define DBSINGLE                0
  183. #define DBDOUBLE                1
  184. #define DBBOTH                  2
  185. /* status values returned by dbxlate() */
  186. #define DBXLATE_XOK     0
  187. #define DBXLATE_XOF     1
  188. #define DBXLATE_XPAT    2
  189. /* type values for dbsechandle() */
  190. #define DBENCRYPT 0
  191. #define DBLABELS 1
  192. #define NOBIND -1
  193. #define TINYBIND        1
  194. #define SMALLBIND       2
  195. #define INTBIND         3
  196. #define CHARBIND        4
  197. #define TEXTBIND        5
  198. #define BINARYBIND      6
  199. #define ARRAYBIND       7
  200. #define BITBIND         8
  201. #define DATETIMEBIND    9
  202. #define MONEYBIND       10
  203. #define FLT8BIND        11
  204. #define STRINGBIND      12
  205. #define NTBSTRINGBIND   13
  206. #define VARYCHARBIND    14
  207. #define VARYBINBIND     15
  208. #define SMALLDATETIMEBIND       16
  209. #define SMALLMONEYBIND  17
  210. #define REALBIND        18
  211. #define NUMERICBIND 19
  212. #define DECIMALBIND 20
  213. #define SENSITIVITYBIND 21
  214. #define BOUNDARYBIND 22
  215. #if VOS
  216. #define FIXEDBIND 23                      /*kvk589*/
  217. #define PACKEDBIND 24                      /*kvk589*/
  218. #endif
  219. #define MAXBIND BOUNDARYBIND
  220. /*
  221. **    OFFSETS DEFINITIONS
  222. **
  223. **    These are a subset of the token values for offset information.
  224. **    These defines come from y.tab.h
  225. **
  226. */
  227. #define _SELECT 365
  228. #define _EXECUTE 330
  229. #define _FROM 335
  230. #define _ORDER 357
  231. #define _COMPUTE 313
  232. #define _TABLE 371
  233. #define _PROCEDURE 362
  234. #define _STATEMENT 459
  235. #define _PARAM 452
  236. /* end y.tab.h */
  237. /* DB-LIBRARY minor error numbers */
  238. #define SYBESYNC        20001   /* Read attempted while out of synchronization
  239.                                  * with SQL Server.
  240.                                  */
  241. #define SYBEFCON        20002   /* SQL Server connection failed. */
  242. #define SYBETIME        20003   /* SQL Server connection timed out. */
  243. #define SYBEREAD        20004   /* Read from SQL Server failed. */
  244. #define SYBEBUFL        20005   /* DB-LIBRARY internal error - send buffer
  245.                                  * length corrupted.
  246.                                  */
  247. #define SYBEWRIT        20006   /* Write to SQL Server failed. */
  248. #define SYBEVMS         20007   /* Sendflush: VMS I/O error. */
  249. #define SYBESOCK        20008   /* Unable to open socket */
  250. #define SYBECONN        20009   /* Unable to connect socket -- SQL Server is
  251.                                  * unavailable or does not exist.
  252.                                  */
  253. #define SYBEMEM         20010   /* Unable to allocate sufficient memory */
  254. #define SYBEDBPS        20011   /* Maximum number of DBPROCESSes
  255.                                  * already allocated.
  256.                                  */
  257. #define SYBEINTF        20012   /* Server name not found in interface file */
  258. #define SYBEUHST        20013   /* Unknown host machine name */
  259. #define SYBEPWD         20014   /* Incorrect password. */
  260. #define SYBEOPIN        20015   /* Could not open interface file. */
  261. #define SYBEINLN        20016   /* Interface file: unexpected end-of-line. */
  262. #define SYBESEOF        20017   /* Unexpected EOF from SQL Server. */
  263. #define SYBESMSG        20018   /* General SQL Server error: Check messages
  264.                                  * from the SQL Server.
  265.                                  */
  266. #define SYBERPND        20019   /* Attempt to initiate a new SQL Server
  267.                                  * operation with results pending.
  268.                                  */
  269. #define SYBEBTOK        20020   /* Bad token from SQL Server: Data-stream
  270.                                  * processing out of sync.
  271.                                  */
  272. #define SYBEITIM        20021   /* Illegal timeout value specified. */
  273. #define SYBEOOB         20022   /* Error in sending out-of-band data to
  274.                                  * SQL Server.
  275.                                  */
  276. #define SYBEBTYP        20023   /* Unknown bind type passed to DB-LIBRARY
  277.                                  * function.
  278.                                  */
  279. #define SYBEBNCR        20024   /* Attempt to bind user variable to a
  280.                                  * non-existent compute row.
  281.                                  */
  282. #define SYBEIICL        20025   /* Illegal integer column length returned by
  283.                                  * SQL Server. Legal integer lengths are 1, 2,
  284.                                  * and 4 bytes.
  285.                                  */
  286. #define SYBECNOR        20026   /* Column number out of range. */
  287. #define SYBENPRM        20027   /* NULL parameter not allowed for this
  288.                                  * dboption.
  289.                                  */
  290. #define SYBEUVDT        20028   /* Unknown variable-length datatype encountered.
  291.                                  */
  292. #define SYBEUFDT        20029   /* Unknown fixed-length datatype encountered. */
  293. #define SYBEWAID        20030   /* DB-LIBRARY internal error: ALTFMT following
  294.                                  * ALTNAME has wrong id.
  295.                                  */
  296. #define SYBECDNS        20031   /* Datastream indicates that a compute column is
  297.                                  * derived from a non-existent select-list
  298.                                  * member.
  299.                                  */
  300. #define SYBEABNC        20032   /* Attempt to bind to a non-existent column. */
  301. #define SYBEABMT        20033   /* User attempted a dbbind() with mismatched
  302.                                  * column and variable types.
  303.                                  */
  304. #define SYBEABNP        20034   /* Attempt to bind using NULL pointers. */
  305. #define SYBEAAMT        20035   /* User attempted a dbaltbind() with mismatched
  306.                                  * column and variable types.
  307.                                  */
  308. #define SYBENXID        20036   /* The Server did not grant us a
  309.                                  * distributed-transaction ID.
  310.                                  */
  311. #define SYBERXID        20037   /* The Server did not recognize our
  312.                                  * distributed-transaction ID.
  313.                                  */
  314. #define SYBEICN         20038   /* Invalid computeid or compute column number.
  315.                                  */
  316. #define SYBENMOB        20039   /* No such member of 'order by' clause. */
  317. #define SYBEAPUT        20040   /* Attempt to print unknown token. */
  318. #define SYBEASNL        20041   /* Attempt to set fields in a null loginrec. */
  319. #define SYBENTLL        20042   /* Name too long for loginrec field. */
  320. #define SYBEASUL        20043   /* Attempt to set unknown loginrec field. */
  321. #define SYBERDNR        20044   /* Attempt to retrieve data from a non-existent
  322.                                  * row.
  323.                                  */
  324. #define SYBENSIP        20045   /* Negative starting index passed to dbstrcpy().
  325.                                  */
  326. #define SYBEABNV        20046   /* Attempt to bind to a NULL program variable.
  327.                                  */
  328. #define SYBEDDNE        20047   /* DBPROCESS is dead or not enabled. */
  329. #define SYBECUFL        20048   /* Data-conversion resulted in underflow. */
  330. #define SYBECOFL        20049   /* Data-conversion resulted in overflow. */
  331. #define SYBECSYN        20050   /* Attempt to convert data stopped by syntax
  332.                                  * error in source field.
  333.                                  */
  334. #define SYBECLPR        20051   /* Data-conversion resulted in loss of
  335.                                  * precision.
  336.                                  */
  337. #define SYBECNOV        20052   /* Attempt to set variable to NULL resulted
  338.                                  * in overflow.
  339.                                  */
  340. #define SYBERDCN        20053   /* Requested data-conversion does not exist. */
  341. #define SYBESFOV        20054   /* dbsafestr() overflowed its destination
  342.                                  * buffer.
  343.                                  */
  344. #define SYBEUNT         20055   /* Unknown network type found in
  345.                                  * interface file.
  346.                                  */
  347. #define SYBECLOS        20056   /* Error in closing network connection. */
  348. #define SYBEUAVE        20057   /* Unable to allocate VMS event flag. */
  349. #define SYBEUSCT        20058   /* Unable to set communications timer. */
  350. #define SYBEEQVA        20059   /* Error in queueing VMS AST routine. */
  351. #define SYBEUDTY        20060   /* Unknown datatype encountered. */
  352. #define SYBETSIT        20061   /* Attempt to call dbtsput() with an
  353.                                  * invalid timestamp.
  354.                                  */
  355. #define SYBEAUTN        20062   /* Attempt to update the timestamp of a table
  356.                                  * which has no timestamp column.
  357.                                  */
  358. #define SYBEBDIO        20063   /* Bad bulk-copy direction.  Must be either
  359.                                  * IN or OUT.
  360.                                  */
  361. #define SYBEBCNT        20064   /* Attempt to use Bulk Copy with a non-existent
  362.                                  * Server table.
  363.                                  */
  364. #define SYBEIFNB        20065   /* Illegal field number passed to bcp_control().
  365.                                  */
  366. #define SYBETTS         20066   /* The table which bulk-copy is attempting to
  367.                                  * copy to a host-file is shorter than the
  368.                                  * number of rows which bulk-copy was instructed
  369.                                  * to skip.
  370.                                  */
  371. #define SYBEKBCO        20067   /* 1000 rows successfully bulk-copied to
  372.                                  * host-file.
  373.                                  */
  374. #define SYBEBBCI        20068   /* Batch successfully bulk-copied to SQL Server.
  375.                                  */
  376. #define SYBEKBCI        20069   /* Bcp: 1000 rows sent to SQL Server. */
  377. #define SYBEBCRE        20070   /* I/O error while reading bcp data-file. */
  378. #define SYBETPTN        20071   /* Syntax error: only two periods are permitted
  379.                                  * in table names.
  380.                                  */
  381. #define SYBEBCWE        20072   /* I/O error while writing bcp data-file. */
  382. #define SYBEBCNN        20073   /* Attempt to bulk-copy a NULL value into
  383.                                  * Server column %d,  which does not accept
  384.                                  * NULL values.
  385.                                  */
  386. #define SYBEBCOR        20074   /* Attempt to bulk-copy an oversized row to the
  387.                                  * SQL Server.
  388.                                  */
  389. #define SYBEBCIS        20075   /* Attempt to bulk-copy an illegally-sized
  390.                                  * column value to the SQL Server.
  391.                                  */
  392. #define SYBEBCPI        20076   /* bcp_init() must be called before any other
  393.                                  * bcp routines.
  394.                                  */
  395. #define SYBEBCPN        20077   /* bcp_bind(), bcp_collen(), bcp_colptr(),
  396.  * bcp_moretext() and bcp_sendrow() may be used
  397.  * only after bcp_init() has been called with
  398.                                  * the copy direction set to DB_IN.
  399.                                  */
  400. #define SYBEBCPB        20078   /* bcp_bind(), bcp_moretext() and bcp_sendrow()
  401.  * may NOT be used after bcp_init() has been
  402.                                  * passed a non-NULL input file name.
  403.                                  */
  404. #define SYBEVDPT        20079   /* For bulk copy, all variable-length data
  405.                                  * must have either a length-prefix or a
  406.                                  * terminator specified.
  407.                                  */
  408. #define SYBEBIVI        20080   /* bcp_columns(), bcp_colfmt() and
  409.  * bcp_colfmt_ps() may be used only after
  410.                                  * bcp_init() has been passed a valid input
  411.                                  * file.
  412.                                  */
  413. #define SYBEBCBC        20081   /* bcp_columns() must be called before
  414.                                  * bcp_colfmt() and bcp_colfmt_ps().
  415.                                  */
  416. #define SYBEBCFO        20082   /* Bcp host-files must contain at least one
  417.                                  * column.
  418.                                  */
  419. #define SYBEBCVH        20083   /* bcp_exec() may be called only after
  420.                                  * bcp_init() has been passed a valid host file.
  421.                                  */
  422. #define SYBEBCUO        20084   /* Bcp: Unable to open host data-file. */
  423. #define SYBEBCUC        20085   /* Bcp: Unable to close host data-file. */
  424. #define SYBEBUOE        20086   /* Bcp: Unable to open error-file. */
  425. #define SYBEBUCE        20087   /* Bcp: Unable to close error-file. */
  426. #define SYBEBWEF        20088   /* I/O error while writing bcp error-file. */
  427. #define SYBEASTF        20089   /* VMS: Unable to setmode for control_c ast. */
  428. #define SYBEUACS        20090   /* VMS: Unable to assign channel to sys$command.
  429.                                  */
  430. #define SYBEASEC        20091   /* Attempt to send an empty command buffer to
  431.                                  * the SQL Server.
  432.                                  */
  433. #define SYBETMTD        20092   /* Attempt to send too much TEXT data via the
  434.                                  * dbmoretext() call.
  435.                                  */
  436. #define SYBENTTN        20093   /* Attempt to use dbtxtsput() to put a new
  437.                                  * text-timestamp into a non-existent data row.
  438.                                  */
  439. #define SYBEDNTI        20094   /* Attempt to use dbtxtsput() to put a new
  440.                                  * text-timestamp into a column whose datatype
  441.                                  * is neither SYBTEXT nor SYBIMAGE.
  442.                                  */
  443. #define SYBEBTMT        20095   /* Attempt to send too much TEXT data via the
  444.                                  * bcp_moretext() call.
  445.                                  */
  446. #define SYBEORPF        20096   /* Attempt to set remote password would
  447.                                  * overflow the login-record's remote-password
  448.                                  * field.
  449.                                  */
  450. #define SYBEUVBF        20097   /* Attempt to read an unknown version of BCP
  451.                                  * format-file.
  452.                                  */
  453. #define SYBEBUOF        20098   /* Bcp: Unable to open format-file. */
  454. #define SYBEBUCF        20099   /* Bcp: Unable to close format-file. */
  455. #define SYBEBRFF        20100   /* I/O error while reading bcp format-file. */
  456. #define SYBEBWFF        20101   /* I/O error while writing bcp format-file. */
  457. #define SYBEBUDF        20102   /* Bcp: Unrecognized datatype found in
  458.                                  * format-file.
  459.                                  */
  460. #define SYBEBIHC        20103   /* Incorrect host-column number found in bcp
  461.                                  * format-file.
  462.                                  */
  463. #define SYBEBEOF        20104   /* Unexpected EOF encountered in BCP data-file.
  464.                                  */
  465. #define SYBEBCNL        20105   /* Negative length-prefix found in BCP
  466.                                  * data-file.
  467.                                  */
  468. #define SYBEBCSI        20106   /* Host-file columns may be skipped only when
  469.                                  * copying INto the Server.
  470.                                  */
  471. #define SYBEBCIT        20107   /* It's illegal to use BCP terminators with
  472.                                  * program variables other than
  473.                                  * SYBCHAR, SYBBINARY, SYBTEXT, or SYBIMAGE.
  474.                                  */
  475. #define SYBEBCSA        20108   /* The BCP hostfile '%s' contains only %ld
  476.                                  * rows. Skipping all of these rows is not
  477.                                  * allowed.
  478.                                  */
  479. #define SYBENULL        20109   /* NULL DBPROCESS pointer passed to DB-Library.
  480.                                  */
  481. #define SYBEUNAM        20110   /* Unable to get current username from
  482.                                  * operating system.
  483.                                  */
  484. #define SYBEBCRO        20111   /* The BCP hostfile '%s' contains only %ld
  485.                                  * rows. It was impossible to read the
  486.                                  * requested %ld rows.
  487.                                  */
  488. #define SYBEMPLL        20112   /* Attempt to set maximum number of DBPROCESSes
  489.                                  * lower than 1.
  490.                                  */
  491. #define SYBERPIL        20113   /* It is illegal to pass -1 to dbrpcparam()
  492.                                  * for the datalen of parameters which are of
  493.                                  * type SYBCHAR, SYBVARCHAR, SYBBINARY, or
  494.                                  * SYBVARBINARY.
  495.                                  */
  496. #define SYBERPUL        20114   /* When passing a SYBINTN, SYBDATETIMN,
  497.                                  * SYBMONEYN, or SYBFLTN parameter via
  498.                                  * dbrpcparam(), it's necessary to specify
  499.                                  * the parameter's maximum or actual length,
  500.                                  * so that DB-Library can recognize it as
  501.                                  * a SYBINT1, SYBINT2, SYBINT4,
  502.                                  * SYBMONEY, or SYBMONEY4, etc.
  503.                                  */
  504. #define SYBEUNOP        20115   /* Unknown option passed to dbsetopt(). */
  505. #define SYBECRNC        20116   /* The current row is not a result of compute
  506.                                  * clause %d, so it is illegal to attempt to
  507.                                  * extract that data from this row.
  508.                                  */
  509. #define SYBERTCC        20117   /* dbreadtext() may not be used to receive
  510.                                  * the results of a query which contains a
  511.                                  * COMPUTE clause.
  512.                                  */
  513. #define SYBERTSC        20118   /* dbreadtext() may only be used to receive
  514.                                  * the results of a query which contains a
  515.                                  * single result column.
  516.                                  */
  517. #define SYBEUCRR        20119   /* Internal software error: Unknown
  518.                                  * connection result reported by                                                 * dbpasswd().
  519.                                  */
  520. #define SYBERPNA        20120   /* The RPC facility is available only when
  521.                                  * using a SQL Server whose version number
  522.                                  * is 4.0 or greater.
  523.                                  */
  524. #define SYBEOPNA        20121   /* The text/image facility is available only
  525.                                  * when using a SQL Server whose version number
  526.                                  * is 4.0 or greater.
  527.                                  */
  528. #define SYBEFGTL        20122   /* Bcp: Row number of the first row to be copied
  529.                                  * cannot be greater than the row number for the
  530.                                  * last row to be copied. 
  531.                                  */
  532. #define SYBECWLL        20123   /* Attempt to set column width less than 1. 
  533.                                  */
  534. #define SYBEUFDS        20124   /* Unrecognized format encountered in
  535.                                  * dbstrbuild().
  536.                                  */
  537. #define SYBEUCPT        20125   /* Unrecognized custom-format parameter-type
  538.                                  * encountered in dbstrbuild().
  539.                                  */
  540. #define SYBETMCF        20126   /* Attempt to install too many custom formats
  541.                                  * via dbfmtinstall().
  542.                                  */
  543. #define SYBEAICF        20127   /* Error in attempting to install custom
  544.                                  * format.
  545.                                  */
  546. #define SYBEADST        20128   /* Error in attempting to determine the size
  547.                                  * of a pair of translation tables.
  548.                                  */
  549. #define SYBEALTT        20129   /* Error in attempting to load a pair
  550.                                  * of translation tables.
  551.                                  */
  552. #define SYBEAPCT        20130   /* Error in attempting to perform a
  553.                                  * character-set translation.
  554.                                  */
  555. #define SYBEXOCI        20131   /* A character-set translation overflowed its
  556.                                  * destination buffer while using bcp to copy
  557.                                  * data from a host-file to the SQL Server.
  558.                                  */
  559. #define SYBEFSHD        20132   /* Error in attempting to find the Sybase
  560.                                  * home directory.
  561.                                  */
  562. #define SYBEAOLF        20133   /* Error in attempting to open a localization
  563.                                  * file.
  564.                                  */
  565. #define SYBEARDI        20134   /* Error in attempting to read datetime
  566.                                  * information from a localization file.
  567.                                  */
  568. #define SYBEURCI        20135   /* Unable to read copyright information
  569.                                  * from the dblib localization file.
  570.                                  */
  571. #define SYBEARDL        20136   /* Error in attempting to read the dblib.loc
  572.                                  * localization file.
  573.                                  */
  574. #define SYBEURMI        20137   /* Unable to read money-format information
  575.                                  * from the dblib localization file.
  576.                                  */
  577. #define SYBEUREM        20138   /* Unable to read error mnemonic
  578.                                  * from the dblib localization file.
  579.                                  */
  580. #define SYBEURES        20139   /* Unable to read error string
  581.                                  * from the dblib localization file.
  582.                                  */
  583. #define SYBEUREI        20140   /* Unable to read error information from
  584.                                  * the dblib localization file.
  585.                                  */
  586. #define SYBEOREN        20141   /* Warning: an out-of-range error-number was
  587.                                  * encountered in dblib.loc. The maximum
  588.                                  * permissible error-number is defined
  589.                                  * as DBERRCOUNT in sybdb.h.
  590.                                  */
  591. #define SYBEISOI        20142   /* Invalid sort-order information found. */
  592. #define SYBEIDCL        20143   /* Illegal datetime column length returned by
  593.                                  * DataServer. Legal datetime lengths are 4
  594.                                  * and 8 bytes.
  595.                                  */
  596. #define SYBEIMCL        20144   /* Illegal money column length returned by
  597.                                  * DataServer. Legal money lengths are 4
  598.                                  * and 8 bytes.
  599.                                  */
  600. #define SYBEIFCL        20145   /* Illegal floating-point column length
  601.                                  * returned by DataServer. Legal floating-point
  602.                                  * lengths are 4 and 8 bytes.
  603.                                  */
  604. #define SYBEUTDS        20146   /* Unrecognized TDS version received from
  605.                                  * SQL Server.
  606.                                  */
  607. #define SYBEBUFF        20147   /* Bcp: Unable to create format-file. */
  608. #define SYBEACNV        20148   /* Attemp to do conversion with NULL destination
  609.                                  * variable.
  610.                                  */
  611. #define SYBEDPOR        20149   /* Out-of-range datepart constant. */
  612. #define SYBENDC         20150   /* Cannot have negative component in date
  613.                                 ** in numeric form.
  614.                                 */
  615. #define SYBEMVOR        20151   /* Month values must be between 1 and 12. */
  616. #define SYBEDVOR        20152   /* Day values must be between 1 and 7. */
  617. #define SYBENBVP        20153   /* Cannot pass dbsetnull() a NULL bindval
  618.                                 ** pointer.
  619.                                 */
  620. #define SYBESPID        20154   /* Called dbspid() with a NULL dbproc. */
  621. #define SYBENDTP        20155   /* Called dbdatecrack() with a NULL datetime 
  622.                                 ** parameter.
  623.                                 */
  624. #define SYBEXTN         20156   /* The xlt_todisp and xlt_tosrv parameters
  625.                                 ** to dbfree_xlate() were NULL.
  626.                                 */
  627. #define SYBEXTDN        20157   /* Warning:  the xlt_todisp parameter to
  628.                                 ** dbfree_xlate() was NULL.  The space
  629.                                 ** associated with the xlt_tosrv parameter
  630.                                 ** has been freed.
  631.                                 */
  632. #define SYBEXTSN        20158   /* Warning:  the xlt_tosrv parameter to
  633.                                 ** dbfree_xlate() was NULL.  The space
  634.                                 ** associated with the xlt_todisp parameter
  635.                                 ** has been freed.
  636.                                 */
  637. #define SYBENUM         20159   /* Incorrect number of arguments given 
  638.                                  ** to DB-Library. 
  639.                                  */
  640. #define SYBETYPE        20160   /* Invalid argument type given to DB-Library. */
  641. #define SYBEGENOS       20161   /* General Operating System Error.*/
  642. #define SYBEPAGE        20162   /* wrong resource type or length given for 
  643.                                 ** dbpage() operation. 
  644.                                 */
  645. #define SYBEOPTNO       20163   /* Option is not allowed or is unreconized*/
  646. #define SYBEETD         20164   /*"Failure to send the expected amount of 
  647.                                 ** TEXT or IMAGE data via dbmoretext().
  648.                                 */
  649. #define SYBERTYPE       20165   /* Invalid resource type given to DB-Library. */
  650. #define SYBERFILE       20166   /* "Can not open resource file." */
  651. #define SYBEFMODE       20167   /* Read/Write/Append mode denied on file.*/
  652. #define SYBESLCT        20168   /* Could not select or copy field specified */
  653. #define SYBEZTXT        20169   /* Attempt to send zero length TEXT or 
  654.                                 ** IMAGE to dataserver via dbwritetext().
  655.                                 */
  656. #define SYBENTST        20170   /* The file being opened must be a stream_lf.
  657.                                 */
  658. #define SYBEOSSL        20171   /* Operating system login level not in range
  659.                                  * of Secure SQL Server
  660.                                  */
  661. #define SYBEESSL        20172   /* Login security level entered does not agree
  662.                                  * with operating system level
  663.                                  */
  664. #define SYBENLNL        20173   /* Program not linked with specified
  665.                                 ** network library.
  666.                                 */
  667. #define SYBENHAN        20174   /* called dbrecvpassthru() with a NULL
  668.                                 ** handler parameter.
  669.                                 */
  670. #define SYBENBUF        20175   /* called dbsendpassthru() with a NULL
  671.                                 ** buf pointer.
  672.                                 */
  673. #define SYBENULP        20176   /* Called %s with a NULL %s parameter.
  674.                                 */
  675. #define SYBENOTI        20177   /* No event handler installed. */
  676. #define SYBEEVOP        20178   /* Called dbregwatch() with a bad
  677.                                 ** options parameter.
  678.                                 */
  679. #define SYBENEHA        20179   /* Called dbreghandle() with a NULL
  680.                                 ** handler parameter.
  681.                                 */
  682. #define SYBETRAN        20180   /* DBPROCESS is being used for another
  683.                                 ** transaction.
  684.                                 */
  685. #define SYBEEVST        20181   /* Must initiate a transaction before
  686.                                 ** calling dbregparam().
  687.                                 */
  688. #define SYBEEINI        20182   /* Must call dbreginit() before
  689.                                 ** dbregraise().
  690.                                 */
  691. #define SYBEECRT        20183   /* Must call dbregdefine() before
  692.                                 ** dbregcreate().
  693.                                 */
  694. #define SYBEECAN        20184   /* Attempted to cancel unrequested
  695.                                 ** event notification.
  696.                                 */
  697. #define SYBEEUNR        20185   /* Unsolicited event notification received.
  698.                                 */
  699. #define SYBERPCS        20186   /* Must call dbrpcinit() before dbrpcparam().
  700.                                 */
  701. #define SYBETPAR        20187   /* No SYBTEXT or SYBIMAGE parameters were
  702.                                 ** defined.
  703.                                 */
  704. #define SYBETEXS        20188   /* Called dbmoretext() with a bad size
  705.                                 ** parameter.
  706.                                 */
  707. #define SYBETRAC        20189   /* Attempted to turn off a trace flag
  708.                                 ** that was not on.
  709.                                 */
  710. #define SYBETRAS        20190   /* DB-Library internal error - trace
  711.                                 ** structure not found.
  712.                                 */
  713. #define SYBEPRTF        20191   /* dbtracestring() may only be called
  714.                                 ** from a printfunc().
  715.                                 */
  716. #define SYBETRSN        20192   /* Bad numbytes parameter passed to
  717.                                 ** dbtracestring().
  718.                                 */
  719. #define SYBEBPKS        20193   /* In DBSETLPACKET(), the packet size parameter
  720.                                 ** must be between 0 and 999999.
  721.                                 */
  722. #define SYBEIPV         20194   /* %1! is an illegal value for the %2!
  723.                                 ** parameter of %3!.
  724.                                 */
  725. #define SYBEMOV         20195   /* Money arithmetic resulted in overflow in
  726.                                 ** function %1!.
  727.                                 */
  728. #define SYBEDIVZ        20196   /* Attempt to divide by $0.00 in function
  729.                                 ** %1!.
  730.                                 */
  731. #define SYBEASTL        20197   /* Synchronous I/O attempted at AST level.
  732.                                 */
  733. #define SYBESEFA        20198   /* DBSETNOTIFS cannot be called if
  734.                                 ** connections are present.
  735.                                 */ 
  736. #define SYBEPOLL 20199 /* Only one dbpoll() can be active at a
  737. ** time.
  738. */
  739. #define SYBENOEV 20200 /* dbpoll() cannot be called if registered
  740. ** procedure notifications have been disabled.
  741. */
  742. #define SYBEBADPK 20201 /* Packet size of %1! not supported. --
  743. ** size of %2! used instead.
  744. */
  745. #define SYBESECURE 20202 /* Secure Server function not supported in
  746. ** this version.
  747. */
  748. #define SYBECAP 20203 /* DB-Library capabilities not accepted by
  749. ** the Server.
  750. */
  751. #define SYBEFUNC 20204 /* Functionality not supported at the specified
  752. ** version level.
  753. */
  754. #define SYBERESP 20205 /* Response function address passed to
  755. ** dbresponse() must be non-NULL.
  756. */
  757. #define SYBEIVERS       20206   /* Illegal version level specified. */
  758. #define SYBEONCE 20207 /* Function can be called only once. */
  759. #define SYBERPNULL 20208 /* value parameter for dbprcparam() can be
  760. ** NULL, only if the datalen parameter is 0
  761. */
  762. #define SYBERPTXTIM 20209 /* RPC parameters cannot be of type Text/Image.
  763. */
  764. #define SYBENEG 20210 /* Negotiated login attempt failed. */
  765. #define SYBELBLEN 20211 /* Security labels should be less than 256
  766. ** characters long.
  767. */
  768. #define SYBEUMSG 20212 /* Unknown message-id in MSG datastream. */
  769. #define SYBECAPTYP 20213 /* Unexpected capability type in CAPABILITY
  770. ** datastream.
  771. */
  772. #define SYBEBNUM 20214 /* Bad numbytes parameter passed to dbstrcpy()
  773. */
  774. #define SYBEBBL 20215 /* Bad bindlen parameter passed to dbsetnull()
  775. */
  776. #define SYBEBPREC 20216 /* Illegal precision specified */
  777. #define SYBEBSCALE 20217 /* Illegal scale specified */
  778. #define SYBECDOMAIN 20218 /* Source field value is not within the domain
  779. ** of legal values.
  780. */
  781. #define SYBECINTERNAL 20219 /* Internal Conversion error. */
  782. #define SYBEBTYPSRV 20220 /* Datatype is not supported by the server. */
  783. #define SYBEBCSET 20221 /* Unknown character-set encountered." */
  784. #define SYBEFENC 20222 /* Password Encryption failed." */
  785. #define SYBEFRES 20223 /* Challenge-Response function failed.", */
  786. #define SYBEISRVPREC 20224 /* Illegal precision value returned by the
  787. ** server.
  788. */
  789. #define SYBEISRVSCL 20225 /* Illegal scale value returned by the server.
  790. */
  791. #define SYBEINUMCL 20226 /* Invalid numeric column length returned by the
  792. ** server.
  793. */
  794. #define SYBEIDECCL 20227 /* Invalid decimal column length returned by the
  795. ** server.
  796. */
  797. #define SYBEBCMTXT 20228 /* bcp_moretext() may be used only when there
  798. ** is at least one text or image column in the
  799. ** server table.
  800. */
  801. #define SYBEBCPREC 20229 /* Column %1!: Illegal precision value
  802. ** encountered.
  803. */
  804. #define SYBEBCBNPR 20230 /* bcp_bind(): if varaddr is NULL, prefixlen
  805. ** must be 0 and no terminator should be
  806. ** specified.
  807. */
  808. #define SYBEBCBNTYP 20231 /* bcp_bind(): if varaddr is NULL and varlen
  809. ** greater than 0, the table column type must be
  810. ** SYBTEXT or SYBIMAGE and the program variable
  811. ** type must be SYBTEXT, SYBCHAR, SYBIMAGE or
  812. ** SYBBINARY.
  813. */
  814. #define SYBEBCSNTYP 20232 /* column number %1!: if varaddr is NULL and
  815. ** varlen greater than 0, the table column type
  816. ** must be SYBTEXT or SYBIMAGE and the program
  817. ** variable type must be SYBTEXT, SYBCHAR,
  818. ** SYBIMAGE or SYBBINARY.
  819. */
  820. #define SYBEBCPCTYP 20233 /* bcp_colfmt(): If table_colnum is 0,
  821. ** host_type cannot be 0.
  822. */
  823. #define SYBEBCVLEN 20234 /* varlen should be greater than or equal to -1.
  824. */
  825. #define SYBEBCHLEN 20235 /* host_collen should be greater than or equal
  826. ** to -1.
  827. */
  828. #define SYBEBCBPREF 20236 /* Illegal prefix length. Legal values are 0, 1,
  829. ** 2 or 4.
  830. */
  831. #define SYBEBCPREF 20237 /* Illegal prefix length. Legal values are -1,
  832. ** 0, 1, 2 or 4.
  833. */
  834. #define SYBEBCITBNM 20238 /* bcp_init(): tblname parameter cannot be NULL.
  835. */
  836. #define SYBEBCITBLEN 20239 /* bcp_init(): tblname parameter is too long. */
  837. #define SYBEBCSNDROW 20240 /* bcp_sendrow() may NOT be called unless all
  838. ** text data for the previous row has been sent
  839. ** using bcp_moretext().
  840. */
  841. #define SYBEBPROCOL 20241 /* bcp protocol error: returned column count
  842. ** differs from the actual number of columns
  843. ** received.
  844. */
  845. #define SYBEBPRODEF 20242 /* bcp protocol error: expected default
  846. ** information and got none.
  847. */
  848. #define SYBEBPRONUMDEF 20243 /* bcp protocol error: expected number of
  849. ** defaults differs from the actual number of
  850. ** defaults received.
  851. */
  852. #define SYBEBPRODEFID 20244 /* bcp protocol error: default column id and
  853. ** actual column id are not same
  854. */
  855. #define SYBEBPRONODEF 20245 /* bcp protocol error:  default value received
  856. ** for column that does not have default.
  857. */
  858. #define SYBEBPRODEFTYP 20246 /* bcp protocol error:  default value datatype
  859. ** differs from column datatype.
  860. */
  861. #define SYBEBPROEXTDEF 20247 /* bcp protocol error: more than one row of
  862. ** default information received.
  863. */
  864. #define SYBEBPROEXTRES 20248 /* bcp protocol error: unexpected set of results
  865. ** received.
  866. */
  867. #define SYBEBPROBADDEF 20249 /* bcp protocol error: illegal default column
  868. ** id received.
  869. */
  870. #define SYBEBPROBADTYP 20250 /* bcp protocol error: unknown column datatype.
  871. */
  872. #define SYBEBPROBADLEN 20251 /* bcp protocol error: illegal datatype length
  873. ** received.
  874. */
  875. #define SYBEBPROBADPREC 20252 /* bcp protocol error: illegal precision value
  876. ** received.
  877. */
  878. #define SYBEBPROBADSCL 20253 /* bcp protocol error: illegal scale value
  879. ** received.
  880. */
  881. #define SYBEBADTYPE 20254 /* Illegal value for type parameter 
  882. ** given to %1!.
  883. */
  884. #define SYBECRSNORES  20255 /* Cursor statement generated no results. */
  885. #define SYBECRSNOIND 20256 /* One of the tables involved in the cursor 
  886.  * statement does not have a unique index. */
  887. #define SYBECRSVIEW 20257 /* A view cannot be joined with another table 
  888.  * or a view in a cursor statement.
  889. */
  890. #define SYBECRSVIIND 20258 /* The view used in the cursor statement does 
  891.  * not include all the unique index columns of 
  892.  * the underlying tables.
  893. */
  894. #define SYBECRSORD 20259 /* Only fully keyset driven cursors can have 
  895.  * 'order by', ' group by', or 'having' phrases.
  896. */
  897. #define SYBECRSBUFR 20260 /* Row buffering should not be turned on when 
  898.  * using cursor APIs.
  899. */
  900. #define SYBECRSNOFREE 20261 /* The DBNOAUTOFREE option should not be 
  901.  * turned on when using cursor APIs.
  902. */
  903. #define SYBECRSDIS 20262 /* Cursor statement contains one of the 
  904.  * disallowed phrases 'compute', 'union', 
  905.  * 'for browse', or 'select into'.
  906. */
  907. #define SYBECRSAGR 20263 /* Aggregate functions are not allowed in a 
  908.  * cursor statement.
  909. */
  910. #define SYBECRSFRAND 20264 /* Fetch types RANDOM and RELATIVE can only be 
  911.  * used within the keyset of keyset driven 
  912.  * cursors.
  913. */
  914. #define SYBECRSFLAST 20265 /* Fetch type LAST requires fully keyset 
  915.  * driven cursors.
  916. */
  917. #define SYBECRSBROL 20266 /* Backward scrolling cannot be used in a 
  918.  * forward scrolling cursor.
  919. */
  920. #define SYBECRSFROWN 20267 /* Row number to be fetched is outside valid 
  921.  * range.
  922. */
  923. #define SYBECRSBSKEY 20268 /* Keyset cannot be scrolled backward in mixed 
  924.  * cursors with a previous fetch type.
  925. */
  926. #define SYBECRSRO 20269 /* Data locking or modifications cannot be 
  927.  * made in a READONLY cursor.
  928. */
  929. #define SYBECRSNOCOUNT 20270 /* The DBNOCOUNT option should not be 
  930.  * turned on when doing updates or deletes with 
  931.  * dbcursor().
  932. */
  933. #define SYBECRSTAB 20271 /* Table name must be determined in operations 
  934.  * involving data locking or modifications.
  935. */
  936. #define SYBECRSUPDNB 20272 /* Update or insert operations cannot use bind 
  937.  * variables when binding type is NOBIND.
  938. */
  939. #define SYBECRSNOWHERE 20273 /* A WHERE clause is not allowed in a cursor 
  940.  * update or insert.
  941. */
  942. #define SYBECRSSET 20274 /* A SET clause is required for a cursor 
  943.  * update or insert. 
  944. */
  945. #define SYBECRSUPDTAB 20275 /* Update or insert operations using bind 
  946.  * variables require single table cursors.
  947. */
  948. #define SYBECRSNOUPD 20276 /* Update or delete operation did not affect 
  949.  * any rows.
  950. */
  951. #define SYBECRSINV 20277 /* Invalid cursor statement. */
  952. #define SYBECRSNOKEYS 20278 /* The entire keyset must be defined for KEYSET cursors.*/
  953. #define SYBECRSNOBIND  20279/* Cursor bind must be called prior to updating cursor */
  954. #define SYBECRSFTYPE    20280 /* Unknown fetch type.*/
  955. #define SYBECRSINVALID  20281 /* The cursor handle is invalid.*/
  956. #define SYBECRSMROWS  20282 /* Multiple rows are returned, only one is expected.*/
  957. #define SYBECRSNROWS 20283  /* No rows returned, at least one is expected.*/
  958. #define SYBECRSNOLEN  20284 /* No unique index found.*/
  959. #define SYBECRSNOPTCC 20285  /* No OPTCC was found.*/
  960. #define SYBECRSNORDER  20286 /* The order of clauses must be from, where, and order by.*/ 
  961. #define SYBECRSNOTABLE  20287 /* Table name is NULL.*/
  962. #define SYBECRSNUNIQUE  20288 /* No unique keys associated with this view.*/
  963. #define SYBECRSVAR  20289 /* There is no valid address associated with this bind.*/
  964. #define SYBENOVALUE  20290 /* Security labels require both a name and a value */
  965. #define SYBEVOIDRET 20291 /* Parameter of type SYBVOID cannot 
  966. ** be a return parameter.
  967. */
  968. #define SYBECLOSEIN 20292 /* Unable to close interface file. */
  969. #define SYBEBOOL 20293   /* Boolean parameters must be TRUE or FALSE. */
  970. #define SYBEBCPOPT 20294   /* The %s option cannot be called while a bulk
  971. ** copy operation is progress.
  972. */
  973. #define SYBEERRLABEL 20295   /* An illegal value was returned from the
  974. ** security label handler.
  975. */
  976. #define SYBEATTNACK 20296   /* Timed out waiting for server to
  977. ** acknowledge attention."
  978. */
  979. #define SYBEBBFL 20297 /* -001-
  980. ** Batch failed in bulk-copy to SQL Server
  981. */
  982. #define SYBEDCL 20298 /* -004-
  983. ** DCL Error
  984. */
  985. #define SYBECS 20299 /* -004-
  986. ** cs context Error
  987. */
  988. /* WARNING: whenever a new DB-Library error message is added,
  989.  * increment DBERRCOUNT.
  990.  */
  991. #define DBERRCOUNT 299
  992. /*
  993. ** Define timeout period for attention acknowlegemets.
  994. */
  995. #define ATTN_TIMEOUT    30
  996. /*
  997. ** Define the symbol which denotes a null-terminated string length.
  998. */
  999. #define DBNULLTERM      -1
  1000.  
  1001. /* These are the codes returned by dbpoll(): */
  1002. #define DBRESULT        1
  1003. #define DBNOTIFICATION  2
  1004. #define DBTIMEOUT       3
  1005. #define DBINTERRUPT     4
  1006.  
  1007. /* Define the flags for db_netflags */
  1008. #define DBRPFILL 0x0001 /* pending recvfill_a completed */
  1009. #define DBRPENDING 0x0002 /* pending recvfill_a still pending */
  1010. #define DBRPSFILLW 0x0004 /* sync fill invoked and waiting */
  1011. #define DBRPASFILLW 0x0008 /* async fill invoked and waiting */
  1012. #define DBPOLLWAIT 0x0010 /* dbproc specific dbpoll waiting */
  1013. #define DBRPSTART 0x0020 /* read pending start up */
  1014. #define DBRPSHUT 0x0040 /* socket/channel shutting down ignore
  1015.                                         ** and recvfill_a error */
  1016. #define DBRNOMORE 0x0080 /* do not read next token */
  1017. #define DBRINOPEN 0x0100 /* dbproc is still being opened and
  1018.                                         ** may need to resize buffers.
  1019.                                         ** Therefore, we won't do any read
  1020.                                         ** ahead until after the buffers
  1021.                                         ** would have been resized.
  1022.                                         */
  1023. #define DBPOLLWAIT_A 0x0200 /* asynchronous dbpoll waiting */
  1024. #define DBPOLL_TIMER 0x0400 /* The timer is still set for dbpoll */
  1025. #define DBPWTIMEOUT 0x0800 /* The recvpendwait was timed out */
  1026. #define DBRPARANOID 0x1000 /* Beware of AST interrupts (on VMS) */
  1027. #define DBREADCOMP 0x2000 /* Read completed */
  1028. #define DBWRITECOMP 0x4000 /* Write completed */
  1029. #define DBURGECOMP 0x8000 /* Urgent write completed */
  1030. /* The DBSORTORDER structure is used by dbloadsort(), dbstrcmp(), dbstrsort(),
  1031.  * and dbfreesort().
  1032.  */
  1033. typedef struct dbsortorder
  1034. {
  1035.         DBVOIDPTR       sort;
  1036. } DBSORTORDER;
  1037. /*
  1038. ** 001
  1039. **
  1040. ** Function Prototype for the functions refered thru a function pointer.
  1041. */
  1042. CS_START_EXTERN_C
  1043. typedef int (CS_PUBLIC DBFAR *DBWAITFUNC) PROTOTYPE((
  1044. void
  1045. ));
  1046. typedef RETCODE (CS_PUBLIC DBFAR * DB_ATTN_FUNC)PROTOTYPE((
  1047. CS_VOID DBFAR *dbproc,
  1048. int data));
  1049. typedef RETCODE (CS_PUBLIC DBFAR * DB_READ_FUNC)PROTOTYPE((
  1050. CS_VOID DBFAR *dbproc,
  1051. BYTE DBFAR *buffer,
  1052. DBINT count,
  1053. DBBOOL unused,
  1054. DBINT DBFAR *timeout));
  1055. typedef RETCODE (CS_PUBLIC DBFAR *DB_AST_PROC)PROTOTYPE((
  1056. CS_VOID DBFAR *param));
  1057. typedef RETCODE (CS_PUBLIC DBFAR *DB_READ_A_FUNC)PROTOTYPE((
  1058. CS_VOID DBFAR *dbproc,
  1059. BYTE DBFAR *buffer,
  1060. DBINT count,
  1061. DBINT DBFAR *bytes_read,
  1062. RETCODE DBFAR *final_result,
  1063. DB_AST_PROC ast_proc,
  1064. BYTE DBFAR *ast_param));
  1065. typedef RETCODE (CS_PUBLIC DBFAR *DB_WRIT_FUNC)PROTOTYPE((
  1066. CS_VOID DBFAR *dbproc,
  1067. BYTE DBFAR *buffer,
  1068. DBINT count,
  1069. DBBOOL wait_for_response));
  1070. typedef RETCODE (CS_PUBLIC DBFAR *DB_CLOS_FUNC)PROTOTYPE((
  1071. CS_VOID DBFAR *dbproc));
  1072. typedef RETCODE (CS_PUBLIC DBFAR *DB_BINDPROC_FUNC)PROTOTYPE((
  1073. BYTE DBFAR *srctype,
  1074. DBINT srclen,
  1075. BYTE DBFAR *desttype,
  1076. DBINT destlen));
  1077. typedef RETCODE (CS_PUBLIC DBFAR *DB_HCONVERT_FUNC)PROTOTYPE((
  1078. BYTE DBFAR *srctype,
  1079. DBINT srclen,
  1080. BYTE DBFAR *desttype,
  1081. DBINT destlen));
  1082. typedef RETCODE (CS_PUBLIC DBFAR * DBFAR * DB_BUSYRETVAL_FUNC)PROTOTYPE((
  1083. CS_VOID DBFAR *));
  1084. typedef void (CS_PUBLIC DBFAR *DB_DBIDLE_FUNC) PROTOTYPE((
  1085. DBWAITFUNC dfunc,
  1086. CS_VOID DBFAR *dbproc
  1087. ));
  1088. typedef int (CS_PUBLIC DBFAR *DB_DBCHKINTR_FUNC)PROTOTYPE((
  1089. CS_VOID DBFAR *dbproc));
  1090. typedef int (CS_PUBLIC DBFAR *DB_DBHNDLINTR_FUNC)PROTOTYPE((
  1091. CS_VOID DBFAR *dbproc));
  1092. typedef DBWAITFUNC (CS_PUBLIC DBFAR *DB_DBBUSY_FUNC) PROTOTYPE((
  1093. CS_VOID DBFAR *dbproc
  1094. ));
  1095. typedef CS_INT (CS_PUBLIC DBFAR *EVENTHANDLEFUNC) PROTOTYPE((
  1096. CS_VOID DBFAR *dbproc,
  1097. DBCHAR DBFAR *event,
  1098. DBUSMALLINT level,
  1099. DBUSMALLINT option));
  1100. CS_END_EXTERN_C
  1101. /*
  1102. ** HOSTSERVER.h - structures and defines for communicating with server
  1103. **
  1104. */
  1105. /*
  1106. ** Structure forward declaration to get rid of C++ compilers' warning.
  1107. */
  1108. struct dbprlist;
  1109. struct dbprlist;
  1110. /*
  1111. ** Data structure used by both send and recv
  1112. */
  1113. typedef struct servbuf
  1114. {
  1115.         BYTE    *serv_sbuf;     /* send: start of send buffer */
  1116.         BYTE    *serv_snb;      /* send: next place in buffer */
  1117.         int     serv_sleft;     /* send: room left in send buffer */
  1118.         int     serv_sbsize;    /* send: buffer size */
  1119.         int     serv_snum;      /* send # for network */
  1120.         int     serv_sstat;     /* send: status bits */
  1121.         BYTE    *serv_rbuf;     /* recv: start of recv buffer */
  1122.         BYTE    *serv_rnb;      /* recv: next place in buffer */
  1123.         int     serv_rleft;     /* recv: room left in recv buffer */
  1124.         int     serv_rbsize;    /* recv: buffer size */
  1125.         int     serv_rnum;      /* recv # for network */
  1126.         int     serv_rstat;     /* recv: status bits */
  1127.         int     serv_commtype;  /* communications type (tcp, etc.) */
  1128. DB_ATTN_FUNC serv_attn;  /* network-dependent routine to send
  1129.                                  * an ATTN packet to the SQL Server.
  1130.                                  */
  1131. DB_READ_FUNC serv_read;  /* network-dependent routine to read
  1132.                                  * a byte stream from the SQL Server.
  1133.                                  */
  1134. DB_READ_A_FUNC serv_read_a; /* async version of serv_read(). */
  1135. DB_WRIT_FUNC serv_writ; /* network-dependent routine to write
  1136.                                  * a byte stream to the SQL Server.
  1137.                                  */
  1138. DB_CLOS_FUNC serv_clos; /* network-dependent routine to close
  1139.                                  * a connection to the SQL Server.
  1140.                                  */
  1141.         BYTE    serv_rbuftype;  /* packet type of the last read buffer */
  1142. void *serv_endpoint;
  1143. void *serv_ioreadevent;
  1144. void *serv_iowriteevent;
  1145. } SERVBUF;
  1146. /*
  1147. **  DBSTRING - This structure is just used for stringing text or parameters
  1148. **      together.
  1149. */
  1150. struct dbstring
  1151. {
  1152.         BYTE    *strtext;       /* actual byte string */
  1153.         DBINT   strtotlen;      /* allocated length of the byte string */
  1154.         struct dbstring *strnext;
  1155. };
  1156. typedef struct dbstring DBSTRING;
  1157. /*
  1158. **      DBROWDATA - This structure is used to hold the actual data that
  1159. **      comes back for every column in every row. The DBPROCESS structure
  1160. **      points to a linked-list of DBROW structures. Each DBROW strcture points
  1161. **      to an array of DBROWDATA structures. Since every DBROWDATA structure
  1162. **      contains pointers to separately allocated buffers, the members of
  1163. **      each array are linked together in a singly-linked list, to facilitate
  1164. **      the operation of simple row-freeing routines.
  1165. */
  1166. struct dbrowdata
  1167. {
  1168.         BYTE            *data;          /* actual data for this column in this
  1169.                                          * row
  1170.                                          */
  1171.         DBINT           datlen;         /* length, in bytes, of this data */
  1172. DBINT maxtxtlen; /* This used to keep track of the 
  1173.  * largest SYBTEXT/SYBIMAGE column
  1174.  * received so far.
  1175.  */
  1176.         DBBINARY        dattxptr[DBTXPLEN];/* This data's text-ptr, if it's of
  1177.                                          * type SYBTEXT.
  1178.                                          */
  1179.         DBTINYINT       dattxplen;      /* Length, in bytes, of the text-ptr. */
  1180.         DBBINARY        dattxts[DBTXTSLEN];/* The text-timestamp of this text
  1181.                                          * value.
  1182.                                          */
  1183.         DBTINYINT       dattxtslen;     /* Length, in bytes, of the
  1184.                                          * text-timestamp.
  1185.                                          */
  1186.         struct dbrowdata        *datnext;
  1187. };
  1188. typedef struct dbrowdata        DBROWDATA;
  1189. /*
  1190. ** DBTYPEINFO - This is the structure through which precision and scale
  1191. ** information for Numeric/Decimal datatypes gets passed
  1192. */
  1193. typedef struct dbtypeinfo
  1194. {
  1195. DBINT precision;
  1196. DBINT scale;
  1197. } DBTYPEINFO;
  1198. /*
  1199. **  BINDREC - This is the structure used to store information about
  1200. **      which columns should be bound to which programming variables
  1201. */
  1202. struct  bindrec
  1203. {
  1204.         BYTE            *bindvar;       /* ptr to program variable */
  1205.         DBINT           bindlen;        /* length of program variable */
  1206.         DB_BINDPROC_FUNC bindproc;   /* procedure to use for data copy. */
  1207.         DBINT           *bindnullind;   /* IBM-type indicator variable. */
  1208.         DBINT           bindtype;       /* variable for indexing convertfunc
  1209.                                         ** tables.
  1210.                                         */
  1211. DBTYPEINFO bindtypeinfo; /* precision/scale info */
  1212. };
  1213. typedef struct bindrec  BINDREC;
  1214. /*
  1215. ** NULLBIND - This structure is attached to the DBPROCESS and is used
  1216. **      to determine what to bind when bind values are NULL.
  1217. */
  1218. struct  nullbind
  1219. {
  1220.         DBBIT           nullbit;
  1221.         DBTINYINT       nulltiny;
  1222.         DBSMALLINT      nullsmall;
  1223.         DBINT           nullint;
  1224.         DBCHAR          *nullchar;
  1225.         DBINT           nulllchar;      /* length of char string */
  1226.         DBBINARY        *nullbinary;
  1227.         DBINT           nulllbinary;    /* length of binary string */
  1228.         DBDATETIME      nulldatetime;
  1229.         DBMONEY         nullmoney;
  1230.         DBFLT8          nullflt8;
  1231.         DBCHAR          *nullstring;
  1232.         DBCHAR          *nullntbstring;
  1233.         DBVARYCHAR      nullvarychar;
  1234.         DBVARYBIN       nullvarybin;
  1235.         DBDATETIME4     nullsmalldatetime;
  1236.         DBMONEY4        nullsmallmoney;
  1237.         DBREAL          nullflt4;
  1238.         DBNUMERIC       nullnumeric;
  1239.         DBDECIMAL       nulldecimal;
  1240.         DBCHAR          *nullsensitivity;
  1241.         DBCHAR          *nullboundary;
  1242. };
  1243. typedef struct nullbind NULLBIND;
  1244. /*
  1245. **  DBCOLINFO - This structure contains the format information about a column.
  1246. **      There is a linked list of DBCOLINFO structures in the DBPROCESS
  1247. **      structure.  There is one DBCOLINFO structure for each column in the
  1248. **      target list of the current command.  Format information for
  1249. **      alternate rows, like compute, is kept in the DBALTHEAD and
  1250. **      DBALTINFO structures.
  1251. */
  1252. struct dbcolinfo
  1253. {
  1254.         char    colname[DBMAXCOLNAME+1];/* column name */
  1255.         BYTE    coltype;                /* column type */
  1256.         DBINT   coludtype;              /* user-defined type */
  1257.         DBINT   collen;                 /* max length of column */
  1258.         DBINT   colprlen;               /* max printing length of column */
  1259.         char    *colcontrol;            /* control format, if any */
  1260.         struct bindrec  colbind;        /* binding info, if any */
  1261.         int     coltable;               /* for browse mode: which table
  1262.                                          * did this column come from?
  1263.                                          */
  1264.         BYTE            colstatus;      /* for browse mode: what kind of column
  1265.                                          * is this?
  1266.                                          */
  1267. BYTE colrowstatus; /* for holding status in the 
  1268.  * TDS_ROWFMT data stream
  1269.  */
  1270.         char    colorigname[DBMAXCOLNAME+1];/* for browse mode: what is the name
  1271.                                          * of the table column that provided
  1272.                                          * this select-list member?
  1273.                                          */
  1274.         char    *coltxobjname;          /* the SQL Server always returns the
  1275.                                          * qualified object-name for TEXT
  1276.                                          * columns.
  1277.                                          */
  1278. DBTYPEINFO coltypeinfo; /* precision/scale info for Numeric or
  1279.  * Decimal columns.
  1280.  */
  1281. DBBOOL colhasnull; /* Is column data null? */
  1282.         struct dbcolinfo        *colnext;       /* next column */
  1283. };
  1284. typedef struct dbcolinfo        DBCOLINFO;
  1285. /*
  1286. **  DBTABNAME - This structure contains information about the tables which
  1287. **      were used to produce the current set of results. The SQL Server only
  1288. **      provides this info for queries that are executed in "browse mode".
  1289. **
  1290. **      There is a linked list of DBTABNAME structures in the DBPROCESS
  1291. **      structure.  There is one DBTABNAME structure for each table used to
  1292. **      produce the target list of the current command.
  1293. **
  1294. **      If this query was executed without "browse mode", then this list will
  1295. **      have no members.
  1296. */
  1297. struct dbtabname
  1298. {
  1299.         char                    tabname[DBMAXNAME+1];   /* column name */
  1300.         struct dbtabname        *tabnext;               /* next column */
  1301. };
  1302. typedef struct dbtabname        DBTABNAME;
  1303. /*
  1304. **  DBALTHEAD - This structure contains information for ALT rows.  ALT
  1305. **      rows are COMPUTE results.  There is one DBALTHEAD for each COMPUTE
  1306. **      statement.  All the COMPUTE operators in a particular COMPUTE statement
  1307. **      must have the same bylist -- this is enforced by the SQL Server.
  1308. **      Off of each DBALTHEAD is a linked list of DBALTINFO structures that
  1309. **      describe the format for each particular COMPUTE operation in the
  1310. **      COMPUTE.
  1311. */
  1312. struct  dbalthead
  1313. {
  1314.         DBUSMALLINT     althid;         /* id for this COMPUTE statement */
  1315.         BYTE    althalts;       /* number of DBALTINFO structures in althlist */
  1316.         BYTE    althsizeby;     /* number of elements in the bylist */
  1317.         BYTE    althbylist[DBMAXBYLIST];        /* colids of bylist elements */
  1318.         struct dbaltinfo        *althlist;      /* linked list of DBALTINFOs */
  1319.         struct dbprlist         *althprlist;    /* order print list for aops */
  1320.         struct dbalthead        *althnext;      /* next dbalthead */
  1321. };
  1322. typedef struct dbalthead        DBALTHEAD;
  1323. typedef struct dbxlate
  1324. {
  1325.         void DBFAR *bufstart;    /* For use when freeing translation tables. */
  1326.         void DBFAR *xlate;       /* Points to an INTL_XLATE structure. */
  1327. } DBXLATE;
  1328. /*
  1329. **  DBPRLIST - This structure is used to create an 'ordered' printing list
  1330. **      for computes.  For example a compute might be:
  1331. **              compute sum(col1), avg(col2), sum(col2), avg(col3), avg(col1)
  1332. **      For printing, it would be nice to have a list that pointed to the
  1333. **      right DBALTINFO structures like this:
  1334. **              sum(col1)-->sum(col2)
  1335. **                |
  1336. **               |/
  1337. **              avg(col1)-->avg(col2)-->avg(col3)
  1338. **      It is used by the praltrow function that dbprrow uses but the
  1339. **      information could be used by any DBLIB client.
  1340. */
  1341. struct  dbprlist
  1342. {
  1343.         DBROWDATA       *prdata;        /* actual data for the compute */
  1344.         struct dbaltinfo        *prtarget;      /* related ALTINFO struct */
  1345.         struct dbprlist         *prright;       /* next aop in compute */
  1346.         struct dbprlist         *prdown;        /* next compute in query */
  1347. };
  1348. typedef struct dbprlist DBPRLIST;
  1349. /*
  1350. **  DBALTINFO - This structure contains the format information about
  1351. **      alternate rows.  Compute clauses produce alternate rows of data,
  1352. **      interspersed with the regular data rows returned by the dataserver.
  1353. **      There is a linked list of DBALTHEAD structures in the DBPROCESS
  1354. **      structure.  There is one DBALTHEAD structure for each possible
  1355. **      type of alternate row of the current command.  Format information for
  1356. **      regular data rows is kept in the DBCOLINFO structure.
  1357. */
  1358. struct dbaltinfo
  1359. {
  1360.         char    *altname;       /* null terminated string to alt header */
  1361.         BYTE    alttoken;       /* type of alternate information */
  1362.         BYTE    altcolid;       /* which target list member referenced */
  1363.         BYTE    alttype;        /* column type */
  1364.         DBINT   altudtype;      /* user-defined type */
  1365.         DBINT   altlen;         /* max length of column */
  1366.         DBINT   altprlen;       /* printing length of data */
  1367.         char    *altcontrol;            /* control format, if any */
  1368. DBTYPEINFO alttypeinfo; /* precision/scale info for Numeric or
  1369.  * Decimal columns.
  1370.  */
  1371.         struct dbprlist *altprlist;     /* ptr to ordered printing list */
  1372.         struct bindrec  altbind;        /* binding info, if any */
  1373.         struct dbaltinfo        *altnext;       /* next column */
  1374. };
  1375. typedef struct dbaltinfo        DBALTINFO;
  1376. /*
  1377. **  DBROW - This structure is used to store the actual row and alternate row
  1378. **      data returned by the dataserver.  The member of the DBPROCESS structure 
  1379. **      called dbfirstdata stores the doubly-linked list of rows.  If buffering
  1380. **      is off, only one row is stored.  The rows are stored in the order that
  1381. **      they are received from the server.
  1382. */
  1383. struct dbrow
  1384. {
  1385.         DBINT           rowid;          /* this is the returned row number */
  1386.         DBUSMALLINT     rowaltid;       /* for ALT rows, this is
  1387.                                          * DBALTINFO.altid
  1388.                                          */
  1389.         DBROWDATA       *rowdata;       /* actual data */
  1390.         DBBOOL          rowhasnull;     /* are there any NULLS in this row of
  1391.                                          * data?
  1392.                                          */
  1393.         struct dbrow    *rowprev;       /* previous row if buffering on */
  1394.         struct dbrow    *rownext;       /* next row if buffering on */
  1395. };
  1396. typedef struct dbrow    DBROW;
  1397. /*
  1398. **  DBINFO - This structure is used to store information and error messages
  1399. **      returned by the dataserver.
  1400. **
  1401. **      NOTE - This structure is used by APT.
  1402. **              Adding or deleting structure members should be done with
  1403. **              care.
  1404. */
  1405. struct dbinfo
  1406. {
  1407.         DBINT infonum;        /* error or info number */
  1408.         DBTINYINT infostate;      /* error state number */
  1409.         DBTINYINT infoclass;      /* info class or error severity */
  1410.         char DBFAR *infotext;      /* null terminated message */
  1411.         char DBFAR *infoservname;  /* null terminated Server-name */
  1412.         char DBFAR *infoprocname;  /* null terminated procedure-name */
  1413.         DBUSMALLINT     infolinenum;    /* stored-procedure line-number */
  1414.         struct dbinfo DBFAR *infonext;
  1415. };
  1416. typedef struct dbinfo   DBINFO;
  1417. struct dbparam
  1418. {
  1419. BYTE namelen;
  1420. DBCHAR paramname[DBMAXNAME + 1];
  1421. BYTE status;
  1422. DBINT usertype;
  1423. BYTE datatype;
  1424. DBINT maxdatalen;
  1425. DBTYPEINFO paramtypeinfo;
  1426. DBINT datalen;
  1427. BYTE *data;
  1428. struct dbparam  *paramnext;
  1429. };
  1430. typedef struct dbparam       DBPARAM;
  1431. struct dbmsg
  1432. {
  1433. DBUSMALLINT msgid;
  1434. DBUSMALLINT nummsgparams;
  1435. DBPARAM *param;
  1436. };
  1437. typedef struct dbmsg        DBMSG;
  1438. /*
  1439. **  Options - both for the dataserver and DBLIB
  1440. **      As additional options are added, they should be added here and in
  1441. **      the Dboptdict array.
  1442. */
  1443. /*
  1444. ** dataserver options are defined in pss.h
  1445. ** dataserver options and their index into the Dboptdict array
  1446. ** Dboptdict is defined in options.c
  1447. */
  1448. #define DBPARSEONLY     0
  1449. #define DBESTIMATE      1       
  1450. #define DBSHOWPLAN      2
  1451. #define DBNOEXEC        3
  1452. #define DBARITHIGNORE   4
  1453. #define DBNOCOUNT       5
  1454. #define DBARITHABORT    6
  1455. #define DBTEXTLIMIT     7
  1456. #define DBBROWSE        8
  1457. #define DBOFFSET        9
  1458. #define DBSTAT          10
  1459. #define DBERRLVL        11
  1460. #define DBCONFIRM       12
  1461. #define DBSTORPROCID    13
  1462. #define DBBUFFER        14
  1463. #define DBNOAUTOFREE    15
  1464. #define DBROWCOUNT      16
  1465. #define DBTEXTSIZE      17
  1466. #define DBNATLANG       18
  1467. #define DBDATEFORMAT    19
  1468. #define DBPRPAD         20
  1469. #define DBPRCOLSEP      21
  1470. #define DBPRLINELEN     22
  1471. #define DBPRLINESEP     23
  1472. #define DBLFCONVERT     24
  1473. #define DBDATEFIRST 25
  1474. #define DBCHAINXACTS 26
  1475. #define DBFIPSFLAG 27
  1476. #define DBISOLATION 28
  1477. #define DBAUTH 29
  1478. #define DBIDENTITY 30
  1479. #define DBNOIDCOL       31
  1480. #define DBDATESHORT 32
  1481. #define DBNUMOPTIONS    33      /* total number of Db-Lib options */
  1482. #define DBPADOFF        0
  1483. #define DBPADON         1
  1484. #define OFF             0
  1485. #define ON              1
  1486. /* RETCODES for option routines */
  1487. #define NOSUCHOPTION    2
  1488. /*
  1489. **  DBOPTION - This structure is used to store the current dataserver
  1490. **      options. This will be used if TDS version is less than 5.0.
  1491. */
  1492. #define MAXOPTTEXT      32
  1493. struct dboption
  1494. {
  1495.         char    opttext[MAXOPTTEXT];
  1496.         DBSTRING        *optparam;      /* param to the option */
  1497.         DBUSMALLINT     optstatus;      /* status of option */
  1498.         DBBOOL  optactive;      /* is this structure active (being used?) */
  1499.         struct dboption *optnext;       /* for different versions of an option */
  1500. };
  1501. typedef struct dboption DBOPTION;
  1502. /*
  1503. ** These are the offset types recognized by the SQL Server
  1504. ** They are contained in the SQL Server header pss.h.  The _defines
  1505. ** come from y.tab.h.
  1506. */
  1507. #define OFF_SELECT      (DBUSMALLINT) _SELECT
  1508. #define OFF_EXEC        (DBUSMALLINT) _EXECUTE
  1509. #define OFF_FROM        (DBUSMALLINT) _FROM
  1510. #define OFF_ORDER       (DBUSMALLINT) _ORDER
  1511. #define OFF_COMPUTE     (DBUSMALLINT) _COMPUTE
  1512. #define OFF_TABLE       (DBUSMALLINT) _TABLE
  1513. #define OFF_PROCEDURE   (DBUSMALLINT) _PROCEDURE
  1514. #define OFF_STATEMENT   (DBUSMALLINT) _STATEMENT
  1515. #define OFF_PARAM       (DBUSMALLINT) _PARAM
  1516. /*
  1517. **  DBOFF - This structure is used to store text offset information.
  1518. **      This information is used to send back to the dataserver new
  1519. **      control formats.  
  1520. */
  1521. struct dboff
  1522. {
  1523.         DBUSMALLINT     offtype;        /* type of offset */
  1524.         DBUSMALLINT     offset;         /* actual offset */
  1525.         struct dboff    *offnext;
  1526. };
  1527. typedef struct dboff    DBOFF;
  1528. /*
  1529. **  DBDONE - This structure is just the dataserver done packet.
  1530. **      It has information about the completion of a command.
  1531. */
  1532. struct dbdone
  1533. {
  1534.         DBUSMALLINT     donestatus;     /* done status bits */
  1535.         DBUSMALLINT     doneinfo;       /* command specific info */
  1536.         DBINT           donecount;      /* done count -- rows for example */
  1537. };
  1538. typedef struct dbdone   DBDONE;
  1539. /* Status bits for DBPROCESS dbstatus */
  1540. #define READROW                 ((DBINT) 0x2)
  1541. #define INSPROC                 ((DBINT) 0x4)
  1542. #define EXECDONE                ((DBINT) 0x8)
  1543. #define NEWDB                   ((DBINT) 0x10)
  1544. #define DB__INRPC               ((DBINT) 0x20)
  1545. #define DB__INEVENTRAISE        ((DBINT) 0x40)
  1546. #define DB__INEVENTCREATE       ((DBINT) 0x80)
  1547. #define DB__GOTEVENT            ((DBINT) 0x0100)
  1548. #define DB__PASSTHRU            ((DBINT) 0x0200)
  1549. #define DB__TDSPRINTFUNC        ((DBINT) 0x0400)
  1550. #define DB__INLINENOTIFY        ((DBINT) 0x0800)
  1551. #define DB__READING_NOTIFY      ((DBINT) 0x1000)
  1552. #define DB__IN_EVENT_HANDLER    ((DBINT) 0x2000)
  1553. #define DB__TEXTPARAMS          ((DBINT) 0x4000)
  1554. #define DB__POLLEVENT           ((DBINT) 0x8000)
  1555. #define DBCANCELLING            ((DBINT) 0x10000)
  1556. #define DBTIMING_OUT            ((DBINT) 0x20000)
  1557. #define DB__NEEDSWAP            ((DBINT) 0x40000)
  1558. #define DB__INTCANCEL           ((DBINT) 0x80000)
  1559. #define DB__SEENEOM ((DBINT) 0x100000)
  1560. #define DB__CANCELLED           ((DBINT) 0x200000)
  1561. /* Possible flags for dbback_compatible(). Currently the only
  1562. ** one is DBEXTRARESULTS.
  1563. */
  1564. #define DBEXTRARESULTS  (DBUSMALLINT) 0x1
  1565. /* Bulk-copy information -- */
  1566. #define PERIOD  '.'     /* the separator... */
  1567. #define STATNULL        (BYTE) 0x08
  1568. #ifndef IN
  1569. #define IN              (BYTE) 1 /* TEMPORARY - for backward compatibility. */
  1570. #endif /* IN */
  1571. #ifndef OUT
  1572. #define OUT             (BYTE) 2 /* TEMPORARY - for backward compatibility. */
  1573. #endif /* OUT */
  1574. #define DB_IN           (BYTE) 1
  1575. #define DB_OUT          (BYTE) 2
  1576. #define BCPNAMELEN      255
  1577. #define DEFABORT        10              /* # of errors before we give up */
  1578. #define ERRFILE         "bcp.error"     /* default error file name */
  1579. /* BCP macros: */
  1580. #define BCP_SETL(a,b)           dbsetlbool((a), (b), DBSETBCP)
  1581. #define BCP_SETLABELED(a,b) dbsetlbool((a), (b), DBSETLABELED)
  1582. /* The fields for calls to bcpcontrol. */
  1583. #define BCPMAXERRS      1
  1584. #define BCPFIRST        2
  1585. #define BCPLAST         3
  1586. #define BCPBATCH        4
  1587. #define BCPERRFILE      5       /* TEMPORARY - for backward compatibility. */
  1588. /* The fields for calls to bcp_options(). */
  1589. #define BCPLABELED 1
  1590. /* This macro is used by the Non-C interfaces to BCP-Library: */
  1591. #define BCP_HOSTTYPE(a, b)      bcp_hosttype(a, b)
  1592. typedef struct  bcpparsetable
  1593. {
  1594.         char    dbname[DBMAXNAME+1];
  1595.         char    ownername[DBMAXNAME+1];
  1596.         char    tabname[DBMAXNAME+1];
  1597. } BCPPARSETABLE;
  1598. /*
  1599. **  BCPCOLDESC
  1600. **      This is the basic unit of information used for bulkcopy.
  1601. **      All the bulkcopy routines that talk with the SQL Server
  1602. **      routines pass an array of these.
  1603. */
  1604. typedef struct  bcpcoldesc
  1605. {
  1606.         BYTE    *cd_dvalue;             /* current value to be inserted */
  1607.         BYTE    *cd_defvalue;           /* default value to be inserted */
  1608.         DBINT   cd_defaultid;           /* default's object id */
  1609.         DBINT   cd_dlen;                /* current length to be inserted */
  1610.         DBINT   cd_deflen;              /* length of default to be inserted */
  1611.         DBINT   cd_colen;               /* max length allowed in column */
  1612.         short   cd_coloff;              /* column offset in row */
  1613.         BYTE    cd_colid;               /* id of column */
  1614.         BYTE    cd_type;                /* storage type of column */
  1615.         BYTE    cd_status;              /* status bits */
  1616.         DBBOOL  cd_nullok;              /* is a NULL ok here? */
  1617.         char    cd_name[DBMAXNAME+1];   /* column name */
  1618.         DBBOOL  cd_moretext;            /* Is this text to be sent via bcp__moretext? */
  1619.         long    cd_textpos;             /* file-position of a long TEXT or IMAGE */
  1620. DBTYPEINFO cd_typeinfo; /* precision/scale info */
  1621. DBBOOL  cd_nodata;              /* no data for this column; bcp will
  1622. ** insert a placeholder instead
  1623. */
  1624. DBINT   cd_nodata_len;          /* length of placeholder; valid only
  1625. ** if cd_nodata is TRUE
  1626. */
  1627. } BCPCOLDESC;
  1628. #define  IDENTITYCOL  0x80   /* value in status column in syscolumns
  1629.                                 table for the identity column */
  1630. /*
  1631. **  BCPROWDESC
  1632. **      This is the basic unit of information used for bulkcopy.
  1633. **      All the bulkcopy routines that talk with the SQL Server
  1634. **      routines pass it.
  1635. */
  1636. typedef struct bcprowdesc
  1637. {
  1638.         BCPCOLDESC      *rd_coldesc;    /* ptr to base address of COLDESC
  1639.                                          * array
  1640.                                          */
  1641.         short           rd_colcount;    /* number of columns in COLDESC */
  1642.         short           rd_minlen;      /* minimum length of a row */
  1643.         short           rd_maxlen;      /* maximum length of a row */
  1644. short           rd_viscols;     /* number of user-visible columns
  1645.                                         ** in COLDESC
  1646.                                         */
  1647. } BCPROWDESC;
  1648. /*
  1649. ** BCPHOSTDESC
  1650. **      This is the structure that has information about the type and
  1651. **      format of the input or output data.  An array of these is used
  1652. **      to read/write data to or from the host.
  1653. */
  1654. typedef struct  bcphostdesc
  1655. {
  1656.         BCPCOLDESC      *h_tabcol; /* which table column we are referring to */
  1657.         int     h_tabcolnum;    /* which table column we are referring to */
  1658.         DB_HCONVERT_FUNC hconvert;  /* conversion function, if applicable */
  1659.         BYTE    htype;          /* host data type for this column */
  1660.         DBINT   hcollen;        /* max length of hostfile column */
  1661.         BYTE    *hdata;         /* host-format data for this column */
  1662.         DBINT   hdatlen;        /* length of actual hostfile data */
  1663.         BYTE    *hxdata;        /* This buffer holds the host-format data
  1664.                                  * after it has been translated from
  1665.                                  * one character-set to another.
  1666.                                  */
  1667.         DBINT   hxbuflen;       /* The length of the hxdata buffer. */
  1668.         DBINT   hxdatlen;       /* This is the length of the hostfile data,
  1669.                                  * after it has undergone any character-set
  1670.                                  * translation.
  1671.                                  */
  1672.         int     hprefixlen;     /* length of length-prefix for this column */
  1673.         BYTE    *hterm;         /* terminator for this column, if applicable */
  1674.         int     htermlen;       /* length of terminator for this column */
  1675.         DBBOOL  hmoretext;      /* Is this text to be sent via
  1676.                                  * bcp__moretext?
  1677.                                  */
  1678.         long    htextpos;       /* file-position of a long TEXT or IMAGE */
  1679. DBTYPEINFO  htypeinfo; /* precision/scale info */
  1680. } BCPHOSTDESC;
  1681. /* This structure contains information about any partially-sent TEXT or IMAGE
  1682.  * values, which are still to be sent by bcp_moretext().
  1683.  */
  1684. typedef struct bcptextrec
  1685. {
  1686.         DBINT           len;
  1687.         BYTE            *val;
  1688.         BYTE            type;
  1689.         DBSMALLINT      rowoffset;
  1690.         BYTE            coloffset;
  1691. } BCPTEXTREC;
  1692. /*
  1693. **  BCPDESC
  1694. **      This structure is used to pass the information contained in the
  1695. **      Bulk Copy property sheet around (if in the form version), or 
  1696. **      information typed in by the user (in dblib/stand alone version).
  1697. **      In the form version, this information comes from the main form, while
  1698. **      in the stand alone version this comes from the command line.
  1699. */
  1700. typedef struct bcpdesc
  1701. {
  1702.         BCPROWDESC      *bd_rowdesc;            /* the associated rowdesc */
  1703.         BCPHOSTDESC     *bd_hostdesc;           /* ptr to base address of
  1704.                                                  * BCPHOSTDESC array
  1705.                                                  */
  1706.         DBXLATE         *bd_xlt_tosrv;          /* For use when transferring
  1707.                                                  * character strings from the
  1708.                                                  * front-end to the SQL Server
  1709.                                                  * (DB_IN).
  1710.                                                  */
  1711.         DBXLATE         *bd_xlt_todisp;         /* For use when transferring
  1712.                                                  * character strings from the
  1713.                                                  * SQL Server to the front-end
  1714.                                                  * (DB_OUT).
  1715.                                                  */
  1716.         int             bd_hcolcount;           /* number of (cols) BCPHOSTDESC 
  1717.                                                 ** structs */
  1718.         BCPPARSETABLE   *bd_ptable;             /* ptr to tbl name components
  1719.                                                  */
  1720.         char            bd_table[(3 * DBMAXNAME) + 3]; /* full table name */
  1721.         char            bd_filename[BCPNAMELEN+1];/* host filename */
  1722.         BYTE            bd_direction;           /* in/out */
  1723.         char            *bd_errfilename;        /* host err file name */
  1724.         BYTE            *bd_errfile;            /* host err file pointer */
  1725.         DBINT           bd_abort;               /* # of errors allowable */
  1726.         DBINT           bd_firstrow;            /* begin copy at this row */
  1727.         DBINT           bd_lastrow;             /* end copy at this row */
  1728.         DBINT           bd_batch;               /* # of rows per batch */
  1729.         int             bd_textcount;           /* # of text-columns in the
  1730.                                                  * current row.
  1731.                                                  */
  1732.         int             bd_textcol;             /* # of the text-column now
  1733.                                                  * being sent by bcp_moretext().
  1734.                                                  * Starts at zero.
  1735.                                                  */
  1736.         DBINT           bd_textbytes;           /* # of bytes already sent of
  1737.                                                  * the current bcp_moretext()
  1738.                                                  * column.
  1739.                                                  */
  1740.         BCPTEXTREC      *bd_textarray;
  1741.         char            bd_orgdb[DBMAXNAME+1];   /* the name of the original
  1742.   * database that we started
  1743.   * with
  1744.   */
  1745. int             bd_senscount;           /* # of sensitivity-columns in
  1746.  * the current row; includes
  1747.  * sensitivity label even if
  1748.  * the "labeled" option is not
  1749.  * set.
  1750.  */
  1751. BCPTEXTREC      *bd_sensarray;
  1752. DBBOOL          bd_mapcols;             /* TRUE if user-supplied
  1753.  * column numbers need to
  1754.  * be mapped.
  1755.  */
  1756. BYTE            dbconnstatus;
  1757. } BCPDESC;
  1758. /*
  1759. ** Define flag to check dbconnstatus in BCPDESC structure.
  1760. */
  1761. #define BULKCMDSENT 0x01 /* set when bcp__bulkcmd is done */
  1762. /* Structures and constants for localization information: */
  1763. #define DBMAXMNYSYM     5       /* Max length of a currency symbol. */
  1764. #define DBMAXECLEN      8       /* Max length of a DB-Library error-number
  1765.                                  * mnemonic.
  1766.                                  */
  1767. #define DBMAXESLEN      256     /* Max length of a DB-Library error-string. */
  1768. #define DBMAXCPYRTLEN   512     /* Max length of a DB-Library copyright
  1769.                                  * notice.
  1770.                                  */
  1771. /* Each DBMNYFMT structure defines one of the acceptable money formats
  1772.  * for a given locale.
  1773.  */
  1774. typedef struct dbmnyfmt
  1775. {
  1776.         DBBOOL  symbol_first;           /* Should this currency symbol
  1777.                                          * appear before the currency
  1778.                                          * amount?
  1779.                                          */
  1780.         char    symbol[DBMAXMNYSYM+1]; /* The money-symbol itself. */
  1781.         struct dbmnyfmt         *next;
  1782. } DBMNYFMT;
  1783. /* Each DBERRSTR structure will define one of the DB-Library error codes
  1784.  * for a given locale.
  1785.  */
  1786. typedef struct dberrstr
  1787. {
  1788.         char    errcode[DBMAXECLEN+1];
  1789.                                         /* The short mnemonic string
  1790.                                          * which describes this error.
  1791.                                          */
  1792.         char    string[DBMAXESLEN+1];
  1793.                                                 /* The error-string itself. */
  1794. } DBERRSTR;
  1795. typedef struct dblocale
  1796. {
  1797.         char            name[DBMAXNAME+1]; /* This locale's name. */
  1798.         DBVOIDPTR       dateinfo;       /* All of the month-names,
  1799.                                          * day-names, and date-format
  1800.                                          * information for this locale.
  1801.                                          * This is defined as a void
  1802.                                          * pointer, to avoid exposing
  1803.                                          * the INTL_DATEINFO structure
  1804.                                          * to customers.
  1805.                                          */
  1806.         int             dateorder;      /* An integer code which describes
  1807.                                          * this locale's default date-order.
  1808.                                          * This code is used by datetime.c.
  1809.                                          */
  1810.         char            copyright[DBMAXCPYRTLEN];
  1811.                                         /* The copyright notice, in the
  1812.                                          * appropriate language.
  1813.                                          */
  1814.         DBMNYFMT        *moneyfmt;      /* A linked-list of money-format
  1815.                                          * structures.
  1816.                                          */
  1817. #if WIN3 || SYB_MAC 
  1818.         DBERRSTR        *errlist[DBERRCOUNT];
  1819. /* The original DBERRSTR array is
  1820.  * greater than 64K.  It won't work
  1821.  * in Windows.  We make it an array
  1822.  * of pointers instead.
  1823.  */
  1824. #else
  1825.         DBERRSTR        errlist[DBERRCOUNT];
  1826.                                         /* An array of error-code
  1827.                                          * structures.
  1828.                                          */
  1829. #endif /* WIN3 || SYB_MAC */
  1830.         int             usecount;       /* How many DBPROCESSes are
  1831.                                          * using this localization
  1832.                                          * information? When the count
  1833.                                          * drops to zero, this whole
  1834.                                          * structure can be freed.
  1835.                                          */
  1836.         struct dblocale                 *next;
  1837. } DBLOCALE;
  1838.  
  1839. /*
  1840. ** 4.6 additions begin here.
  1841. */
  1842. /*
  1843. ** DBEVENTREC
  1844. **
  1845. ** This structure is used by dblibrary to keep track of event
  1846. ** notifications, event invocations, and all other event-related
  1847. ** activities.
  1848. */
  1849. typedef struct db__event_rec
  1850. {
  1851.         DBCHAR          name[DBMAXNAME+1];      /* event name */
  1852.         DBUSMALLINT     status;                 /* bit field */
  1853.         DBUSMALLINT     options;                /* notification flags */
  1854.         EVENTHANDLEFUNC handler;                /* event handler */
  1855. DBPARAM        *evtparams;              /* event parameters */
  1856.         DBSMALLINT      numparams;              /* how many params? */
  1857.         struct db__event_rec *next;             /* next event struct. */
  1858. } DBEVENTREC;
  1859. /*
  1860. ** DBEVENTREC status bits.
  1861. */
  1862. #define DB__PENDING_NOTIFY      ((DBUSMALLINT)0x01)
  1863.  
  1864. /*
  1865. ** DBRPCREC
  1866. **
  1867. ** This structure is used by dblib to build a remote procedure call
  1868. ** data stream.
  1869. */
  1870. typedef struct db__rpc_rec
  1871. {
  1872.         DBCHAR          *name;                  /* rpc name */
  1873.         DBUSMALLINT     options;                /* bit options */
  1874. DBPARAM        *rpcparams;                /* list of params */
  1875.         DBSMALLINT      numparams;              /* how many params? */
  1876.         DBSMALLINT      textparams;             /* any text/image params? */
  1877.         DBSMALLINT      textsent;               /* how many text/image
  1878.                                                 ** parameters have been sent.
  1879.                                                 */
  1880.         DBUSMALLINT     status;                 /* bit field */
  1881. } DBRPCREC;
  1882.  
  1883. /*
  1884. ** values for dbrpcrec->status.
  1885. */
  1886. #define DB__READ_END_OF_PARAM   ((DBUSMALLINT)0x0001)
  1887. #define DB__READ_ALL_PARAMS     ((DBUSMALLINT)0x0002)
  1888.  
  1889. /*
  1890. ** DBTRACEREC
  1891. **
  1892. ** This structure is used by dblib to store information regarding
  1893. ** Tabular Data Stream tracing.
  1894. */
  1895. typedef struct db__trace_rec
  1896. {
  1897.         DBUSMALLINT     trace_flag;             /* bit field */
  1898.         DBVOIDPTR       outfp;
  1899.         INTFUNCPTR      printfunc;              /* trace routine */
  1900.         struct db__trace_rec *next;
  1901. } DBTRACEREC;
  1902.  
  1903.  /*
  1904. ** DBTRACEBUF
  1905. **
  1906. ** This structure is used to store trace information that will be
  1907. ** made available to the user via the dbtracestring() routine.
  1908. */
  1909. typedef struct db__tracebuf
  1910. {
  1911.         BYTE            *tbuf;
  1912.         DBSMALLINT      bufsize;
  1913.         BYTE            *next_byte;
  1914.         DBSMALLINT      bytes_left;
  1915. } DBTRACEBUF;
  1916.  
  1917.  
  1918. /*
  1919. ** Trace flag symbols.