home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 December / PCWorld_1998-12_cd.iso / software / sybase / ASA / asa60.exe / data1.cab / h_files / sqlca.h < prev    next >
C/C++ Source or Header  |  1998-07-27  |  12KB  |  449 lines

  1.  /****************************************************************
  2.  *       Copyright (C) 1988-1998, by Sybase, Inc.                *
  3.  *       All rights reserved. No part of this software may be    *
  4.  *       reproduced in any form or by any means - graphic,       *
  5.  *       electronic or mechanical, including photocopying,       *
  6.  *       recording, taping or information storage and retrieval  *
  7.  *       systems - except with the written permission of         *
  8.  *       Sybase, Inc.                                            *
  9.  ****************************************************************/
  10.  
  11. #ifndef _SQLCA_H_INCLUDED
  12. #define _SQLCA_H_INCLUDED
  13. #define II_SQLCA
  14.  
  15. /******************************************************************/
  16. /*  NOTE: _SQL_OS_<operating-system> will be defined by the       */
  17. /*        preprocessor -o option.                                 */
  18. /*      - also use macros that are defined in various environments*/
  19. /*        by various compilers to set the appropriate _SQL_OS     */
  20. /*        macro for those files that are not preprocessed         */
  21. /******************************************************************/
  22.  
  23. #if defined( __MWERKS__ ) || defined( SC ) || defined( THINK_C )
  24.     #define _SQL_OS_MAC
  25. #endif
  26.  
  27. /* As the macintosh Windows.h file also defines __WINDOWS__ */
  28.  
  29. #if defined( __WINDOWS__ ) && !defined( _SQL_OS_MAC )
  30.     #ifdef __386__
  31.         #define _SQL_OS_WIN386
  32.     #else
  33.     #define _SQL_OS_WINDOWS
  34.     #endif
  35. #endif
  36.  
  37. #if defined( WINNT ) || defined( WIN32S )
  38.     #define _SQL_OS_WINNT
  39. #endif
  40.  
  41. #if defined( __QNX__ )
  42.     #if defined( __386__ )
  43.     #define _SQL_OS_QNX32
  44.     #else
  45.     #define _SQL_OS_QNX
  46.     #endif
  47. #endif
  48.  
  49. #if defined( __OS2__ ) && defined( __WATCOMC__ )
  50.     #define _SQL_OS_OS232
  51. #endif
  52.  
  53. #if defined( _SQL_OS_OS2 )
  54.     // 16-bit development for OS/2 is not supported.
  55.     #define _SQL_OS_OS232
  56. #endif
  57.  
  58. #if defined( PHAR_286 )
  59.     #define _SQL_OS_DOS286
  60. #endif
  61.  
  62. #if defined( UNIX )
  63.     #define _SQL_OS_UNIX
  64. #endif
  65.  
  66. #if defined( NLM )
  67.     #define _SQL_OS_NETWARE
  68. #endif
  69.  
  70. /******************************************************************/
  71. /*  Make sure that one of the _SQL_OS_ macros has been defined    */
  72. /******************************************************************/
  73.  
  74. #if !defined( _SQL_OS_DOS )    \
  75. &&  !defined( _SQL_OS_DOS286 )    \
  76. &&  !defined( _SQL_OS_DOS386 )    \
  77. &&  !defined( _SQL_OS_WINDOWS ) \
  78. &&  !defined( _SQL_OS_WIN386 )    \
  79. &&  !defined( _SQL_OS_WINNT )    \
  80. &&  !defined( _SQL_OS_QNX )    \
  81. &&  !defined( _SQL_OS_QNX32 )    \
  82. &&  !defined( _SQL_OS_OS232 )    \
  83. &&  !defined( _SQL_OS_MAC )    \
  84. &&  !defined( _SQL_OS_UNIX )    \
  85. &&  !defined( _SQL_OS_NETWARE )
  86.     #error The appropriate _SQL_OS macro has not been defined
  87. #endif
  88.  
  89.  
  90. /******************************************************************/
  91. /*  Define _SQL16 or _SQL32 based on target operating-system.     */
  92. /******************************************************************/
  93.  
  94. #if defined( __386__ )        \
  95. ||  defined( _SQL_OS_DOS386 )    \
  96. ||  defined( _SQL_OS_WIN386 )    \
  97. ||  defined( _SQL_OS_WINNT )    \
  98. ||  defined( _SQL_OS_QNX32 )    \
  99. ||  defined( _SQL_OS_OS232 )    \
  100. ||  defined( _SQL_OS_MAC )    \
  101. ||  defined( _SQL_OS_UNIX )    \
  102. ||  defined( _SQL_OS_NETWARE )
  103.     #define _SQL32
  104. #else
  105.     #define _SQL16
  106. #endif
  107.  
  108.  
  109. /******************************************************************/
  110. /*  Define _sqlfar macro based on environment                     */
  111. /******************************************************************/
  112.  
  113. #if defined( __386__ )        \
  114. ||  defined( _SQL_OS_DOS386 )    \
  115. ||  defined( _SQL_OS_QNX32 )    \
  116. ||  defined( _SQL_OS_WINNT )    \
  117. ||  defined( _SQL_OS_OS232 )    \
  118. ||  defined( _SQL_OS_MAC )    \
  119. ||  defined( _SQL_OS_UNIX )
  120.     #define _sqlfar
  121.     #define _sqlfar_isfar    0
  122. #else
  123.     #define _sqlfar        far
  124.     #define _sqlfar_isfar    1
  125. #endif
  126.  
  127. /*********************************************/
  128. /* Version check for sqlpp-to-dblib interface*/
  129. /*********************************************/
  130.  
  131. typedef unsigned short          a_sqlpp_version_number;
  132.  
  133. #define SQLPP_DBLIB_VERSION_INITIAL     1
  134. #define SQLPP_DBLIB_VERSION_WSQL32      2
  135. #define SQLPP_DBLIB_VERSION_REENTRANCY  3
  136. #define SQLPP_DBLIB_VERSION_WSQL40      4
  137. #define SQLPP_DBLIB_VERSION_SA50        4
  138. #define SQLPP_DBLIB_VERSION            6
  139.  
  140. #if defined( _SQL_SQLPP_VERSION_MAJOR )  \
  141. &&  _SQL_SQLPP_VERSION_MAJOR != SQLPP_DBLIB_VERSION
  142.     #error Incorrect version of SQLPP used for this header file
  143. #endif
  144.  
  145. /******************************************************************/
  146. /*  Define structure packing macro based on environment           */
  147. /******************************************************************/
  148.  
  149. #if defined( _SQL_OS_DOS )    \
  150. ||  defined( _SQL_OS_DOS286 )    \
  151. ||  defined( _SQL_OS_DOS386 )    \
  152. ||  defined( _SQL_OS_WINDOWS ) \
  153. ||  defined( _SQL_OS_WIN386 )    \
  154. ||  defined( _SQL_OS_WINNT )    \
  155. ||  defined( _SQL_OS_QNX )    \
  156. ||  defined( _SQL_OS_QNX32 )    \
  157. ||  defined( _SQL_OS_OS232 )    \
  158. ||  defined( _SQL_OS_MAC )    \
  159. ||  defined( _SQL_OS_NETWARE )
  160.     #define _SQL_PACK_STRUCTURES    1
  161. #endif
  162.  
  163. /******************************************************************/
  164. /*  Structure definitions                                         */
  165. /******************************************************************/
  166.  
  167. #if defined( _SQL_PACK_STRUCTURES )
  168. #include "pshpk1.h"
  169. #endif
  170.  
  171. typedef long int        an_sql_code;
  172. typedef char            an_sql_state[6];
  173.  
  174. struct sqlwarn{
  175.     unsigned char   sqlwarn0;
  176.     unsigned char   sqlwarn1;
  177.     unsigned char   sqlwarn2;
  178.     unsigned char   sqlwarn3;
  179.     unsigned char   sqlwarn4;
  180.     unsigned char   sqlwarn5;
  181.     unsigned char   sqlwarn6;
  182.     unsigned char   sqlwarn7;
  183.     unsigned char   sqlwarn8;
  184.     unsigned char   sqlwarn9;
  185. };
  186.  
  187. #ifdef __cplusplus
  188. typedef struct _sqlca{
  189. #else
  190. typedef struct sqlca{
  191. #endif
  192.     unsigned char       sqlcaid[8];
  193.     long                sqlcabc;
  194.     an_sql_code         sqlcode;
  195.     short               sqlerrml;
  196.     unsigned char       sqlerrmc[70];
  197.     unsigned char       sqlerrp[8];
  198.     long                sqlerrd[6];
  199.     struct sqlwarn    sqlwarn;
  200.     an_sql_state    sqlstate;
  201. } SQLCA;
  202.  
  203. #ifndef SQLCAPTR
  204.     #define SQLCAPTR        sqlcaptr
  205. #endif
  206.  
  207. #ifndef SQLCODE
  208.     #define SQLCODE         SQLCAPTR->sqlcode
  209.     #define SQLWARN0        SQLCAPTR->sqlwarn.sqlwarn0
  210.     #define SQLWARN1        SQLCAPTR->sqlwarn.sqlwarn1
  211.     #define SQLWARN2        SQLCAPTR->sqlwarn.sqlwarn2
  212.     #define SQLWARN3        SQLCAPTR->sqlwarn.sqlwarn3
  213.     #define SQLWARN4        SQLCAPTR->sqlwarn.sqlwarn4
  214.     #define SQLWARN5        SQLCAPTR->sqlwarn.sqlwarn5
  215.     #define SQLWARN6        SQLCAPTR->sqlwarn.sqlwarn6
  216.     #define SQLWARN7        SQLCAPTR->sqlwarn.sqlwarn7
  217.     #define SQLWARN8        SQLCAPTR->sqlwarn.sqlwarn8
  218.     #define SQLWARN9        SQLCAPTR->sqlwarn.sqlwarn9
  219.     #define SQLSTATE        SQLCAPTR->sqlstate
  220.     
  221.     #define SQLIOCOUNT_F    sqlerrd[1]
  222.     #define SQLCOUNT_F      sqlerrd[2]
  223.     #define SQLIOESTIMATE_F sqlerrd[3]
  224.  
  225.     #define SQLIOCOUNT      SQLCAPTR->SQLIOCOUNT_F
  226.     #define SQLCOUNT        SQLCAPTR->SQLCOUNT_F
  227.     #define SQLIOESTIMATE   SQLCAPTR->SQLIOESTIMATE_F
  228. #endif
  229.  
  230.  
  231. #define DECL_VARCHAR( size )  \
  232.         struct { unsigned short int len; \
  233.                  unsigned char array[size+1];  \
  234.         } 
  235.  
  236. #define DECL_LONGVARCHAR( size )  \
  237.         struct { unsigned long int len; \
  238.                  unsigned char array[size+1];  \
  239.         } 
  240.  
  241. #define DECL_BINARY( size )  \
  242.         struct { unsigned short int len; \
  243.                  unsigned char array[size];  \
  244.         } 
  245.  
  246. #define DECL_LONGBINARY( size )  \
  247.         struct { unsigned long int len; \
  248.                  unsigned char array[size];  \
  249.         } 
  250.  
  251. #define DECL_DECIMAL( prec, scale )  \
  252.         struct { char   array[ ((prec)/2) + 1 ]; \
  253.         }
  254.  
  255. #define DECL_FIXCHAR( size )  \
  256.         struct { char   array[ size ]; \
  257.     }
  258.  
  259. #define DECL_DATETIME  \
  260.         struct sqldatetime
  261.  
  262. #define DECL_BIT \
  263.         unsigned char
  264.  
  265. #if defined(__WATCOMC__) || defined(_MSC_VER)
  266.  
  267. #define DECL_BIGINT             __int64
  268. #define DECL_UNSIGNED_BIGINT    unsigned __int64
  269.  
  270. #else
  271.  
  272. #define DECL_BIGINT             long long
  273. #define DECL_UNSIGNED_BIGINT    unsigned long long
  274.  
  275. #endif
  276.  
  277. typedef struct VARCHAR {
  278.     unsigned short int  len;
  279.     char                array[1];
  280. } VARCHAR;
  281.  
  282. typedef struct BINARY {
  283.     unsigned short int  len;
  284.     char                array[1];
  285. } BINARY;
  286.  
  287. typedef struct TYPE_DECIMAL {
  288.     char                array[1];
  289. } TYPE_DECIMAL;
  290.  
  291. typedef struct sqldatetime {
  292.     unsigned short    year;        /* e.g. 1992            */
  293.     unsigned char    month;        /* 0-11                */
  294.     unsigned char    day_of_week;    /* 0-6  0=Sunday, 1=Monday, ... */
  295.     unsigned short    day_of_year;    /* 0-365            */
  296.     unsigned char    day;        /* 1-31                */
  297.     unsigned char    hour;        /* 0-23                */
  298.     unsigned char    minute;        /* 0-59                */
  299.     unsigned char    second;        /* 0-59                */
  300.     unsigned long    microsecond;    /* 0-999999            */
  301. } SQLDATETIME;
  302.  
  303. #if !defined( _SQL_OS_OS232 )
  304.     typedef SQLDATETIME        DATETIME;
  305. #endif
  306.  
  307. typedef short int       a_sql_statement_number;
  308.  
  309. struct a_dblib_info;
  310.  
  311. struct sqlda;
  312.  
  313. #if defined( _SQL_PACK_STRUCTURES )
  314. #include "poppk.h"
  315. #endif
  316.  
  317. /******************************************************************/
  318. /*  Define __SMALLDATA__ based on other compiler macros           */
  319. /******************************************************************/
  320.  
  321. #ifndef __SMALLDATA__
  322.     #ifdef M_I86SM
  323.     #define __SMALLDATA__
  324.     #endif
  325.     #ifdef M_I86MM
  326.     #define __SMALLDATA__
  327.     #endif
  328.     #ifdef __TURBOC__
  329.     #if defined( __TINY__) || defined(__SMALL__) || defined(__MEDIUM__)
  330.         #define __SMALLDATA__
  331.     #endif
  332.     #endif
  333. #endif
  334.  
  335.  
  336. /******************************************************************/
  337. /*  PLATFORM specific definitions                                 */
  338. /******************************************************************/
  339.  
  340. #if defined( _SQL_OS_WINDOWS )
  341.     #define _esqlentry_         far pascal
  342.     #ifdef __SMALLDATA__
  343.     #undef _SQL_FAR_PTRS
  344.     #define _SQL_FAR_PTRS
  345.     #endif
  346. #elif defined( _SQL_OS_OS232 )
  347.     #define _esqlentry_        __syscall
  348. #elif defined( _SQL_OS_WINNT )
  349.     #define _esqlentry_        __stdcall
  350. #elif defined( _SQL_OS_DOS286 )
  351.     #define _esqlentry_
  352. #endif
  353.  
  354. #ifdef _SQL_FAR_PTRS
  355.     #define _fd_            far
  356.     #define _sql_ptrchk_(p)        ((p) == 0 ? (void far *)0L : (void far *)p)
  357.     #define _sql_ptrtypechk_(p,t)   ((p) == 0 ? (t far *)0L : (t far *)p)
  358. #else
  359.     #define _fd_ 
  360.     #define _sql_ptrchk_(p)        ((void *) (p))
  361.     #define _sql_ptrtypechk_(p,t)   ((t *)p)
  362. #endif
  363.  
  364. #ifndef _esqlentry_
  365.     #define _esqlentry_
  366. #endif
  367.  
  368. #ifdef __cplusplus
  369.     #define SQLNULL            0
  370.     #define SQLFARNULL            0
  371. #else
  372.     #define SQLNULL            (void _fd_ *)0
  373.     #define SQLFARNULL            (void _sqlfar *)0
  374. #endif
  375.  
  376. /* Windows callback index */
  377. typedef enum {
  378.     DB_CALLBACK_START = 0,
  379.     DB_CALLBACK_WAIT,
  380.     DB_CALLBACK_FINISH,
  381.     DB_CALLBACK_ASYNC_RESPONSE,
  382.     DB_CALLBACK_TRANSLATE_IN,
  383.     DB_CALLBACK_TRANSLATE_OUT,
  384.     DB_CALLBACK_UNKNOWN_EVENT,        /* For Macintosh, initially */
  385.     DB_MAX_CALLBACK
  386. } a_db_callback_index;
  387.  
  388.  
  389. typedef enum {
  390.     SQLDA_CLEAR,
  391.     SQLDA_NOCLEAR,
  392.     SQLDA_NOEXEC
  393. } a_descriptor_behaviour;
  394.  
  395. typedef enum {
  396.     SQLDA_TYPE,
  397.     SQLDA_LENGTH,
  398.     SQLDA_RETURNED_LENGTH,
  399.     SQLDA_PRECISION,
  400.     SQLDA_SCALE,
  401.     SQLDA_NULLABLE,
  402.     SQLDA_INDICATOR
  403. } a_descriptor_field;
  404.  
  405.  
  406. #ifndef II_SQL_FUNCS
  407. #define II_SQL_FUNCS
  408.  
  409. #ifdef __cplusplus
  410.     extern "C" {
  411. #endif
  412.  
  413. /* external sqlca data structure */
  414.  
  415. extern SQLCA        sqlca;
  416. extern SQLCA        _fd_ *sqlcaptr;
  417.  
  418.  
  419. /* Macros for multiple sqlca management */
  420.  
  421. #define db_set_sqlca( sqlca )        sqlcaptr = sqlca
  422. #define db_get_sqlca()            sqlcaptr
  423.  
  424.  
  425. /* Generate function pointers or function prototypes */
  426.  
  427. #ifndef _NO_FUNC_INFO
  428. #ifdef _USE_ESQLDLL
  429. #define FUNC_INFO( scope, rettype, call, fname, parms ) \
  430.         extern rettype ( call * fname ) parms;
  431. #include "sqlfuncs.h"
  432. #undef FUNC_INFO
  433. #else
  434. #define FUNC_INFO( scope, rettype, call, fname, parms ) \
  435.         scope rettype call fname parms;
  436. #include "sqlfuncs.h"
  437. #undef FUNC_INFO
  438. #endif
  439. #endif
  440.  
  441. #ifdef __cplusplus
  442.     }
  443. #endif
  444.  
  445. #endif
  446.  
  447. #endif
  448.  
  449.