home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / vgserv45.zip / BASE / HPTWGS2 / include / fcwxocib.h < prev   
C/C++ Source or Header  |  2001-03-21  |  12KB  |  262 lines

  1. /*****************************************************************************/
  2. /*                                                                           */
  3. /*                           OCO SOURCE MATERIALS                            */
  4. /*                             IBM CONFIDENTIAL                              */
  5. /*                                    OR                                     */
  6. /*                        IBM CONFIDENTIAL RESTRICTED                        */
  7. /*            WHEN COMBINED WITH THE AGGREGATED OCO SOURCE MODULES           */
  8. /*                           FOR THIS PROGRAM PRODUCT                        */
  9. /*                                                                           */
  10. /*      VisualAge Generator Server for OS/2, AIX, HP-UX, and Windows NT      */
  11. /*                          Version 3.0  5697-C28                            */
  12. /*                    (C) COPYRIGHT IBM CORP. 1994,1997                      */
  13. /*                                                                           */
  14. /*  Type    Date     Userid   Description of problem                         */
  15. /*                                                                           */
  16. /*  A1    2/02/99  dewittsc   PQ23998 - Add ODBC data format error           */
  17. /*                                                                           */
  18. /*****************************************************************************/
  19. #ifndef  FCWXOCIB_H
  20. #define  FCWXOCIB_H
  21.  
  22. // -----------------------------------------------------------------
  23. //   Unit Of Work connection options
  24. // -----------------------------------------------------------------
  25. static char*  XOCONCT_RUOW     = "R";
  26. static char*  XOCONCT_D1A      = "D1A";
  27. static char*  XOCONCT_D1C      = "D1C";
  28. static char*  XOCONCT_D1E      = "D1E";
  29. static char*  XOCONCT_D2A      = "D2A";
  30. static char*  XOCONCT_D2C      = "D2C";
  31. static char*  XOCONCT_D2E      = "D2E";
  32.  
  33. static char*  XOCONCT_DISC     = "DISC";
  34. static char*  XOCONCT_DCURRENT = "DCURRENT";
  35. static char*  XOCONCT_DALL     = "DALL";
  36. static char*  XOCONCT_SET      = "SET";
  37. static char*  XOCONCT_QUERYDB  = "QUERYDB";
  38.  
  39.  
  40. // -----------------------------------------------------------------
  41. //    EZECONCT connection reason and option values
  42. // -----------------------------------------------------------------
  43. // enum ConnReason { dft_connection = 1, eze_connection };
  44. // enum ConnOption { xoRUOW=1, xoD1A, xoD1C, xoD1E, xoD2A, xoD2C, xoD2E, xoDISC, xoDCURRENT, xoDALL, xoSET, xoERROR };
  45. enum ConnOption { RUOW=1, D1A, D1C, D1E, D2A, D2C, D2E, DISC, DCURRENT, DALL, SET, QUERYDB,  ERROPT };
  46. enum ConnType   { type_1 = 1, type_2, undefined };
  47. enum RCodeType { from_SQL = 1, from_CPP };
  48. enum ConnState { connected, not_connected };
  49.  
  50. enum StmtState { unprepared = 0, prepared,  executed };
  51.  
  52.  
  53. // -----------------------------------------------------------------
  54. //    Non SQL error codes ( when RCodeType == from_CPP )
  55. // -----------------------------------------------------------------
  56. const   short int  XO_UOW_OPTION_ERROR       =  -1;
  57. const   short int  XO_RESOURCE_ERROR         =  -2;
  58. const   short int  XO_NO_CONNECTION_ERROR    =  -3;
  59. const   short int  XO_NO_OPEN_CURSOR_ERROR   =  -4;
  60. const   short int  XO_DATA_FORMAT_ERROR      =  -5;                            /*@A1*/
  61.  
  62. // ------------------------------------------------------------------
  63. //   Misc. macro constants ...
  64. // ------------------------------------------------------------------
  65. const  int   SQLMSG_MAX_LEN                  =   1024;
  66. const  int   SQLSTATE_MAX_LEN                =   5;
  67.  
  68. const  int   DBM_TYPE_DB2                    = 1;
  69. const  int   DBM_TYPE_ODBC                   = 2;
  70.  
  71. const  int   CURSOR_NAME_LENGTH              = 19;
  72. const  int   SQLSTATE_LENGTH                 = 6;
  73. const  int   MSG_BUFFER_LENGTH               = 1032;
  74.  
  75. enum   ConvType { ct_dft = 0, ct_char = 1, ct_pack = 2 };
  76. enum   FsOption { fs_close = 1, fs_drop = 2 };
  77.  
  78. // -----------------------------------------------------------------
  79. //    Interface Parameter Block for ITF/C++ to ODBC driver.
  80. //    It contains both input and output parameter for interface.
  81. // -----------------------------------------------------------------
  82. struct FCWXOCIB
  83. {
  84.     int            connID;
  85.  
  86.     void*          henv;                // environment handle
  87.     void*          hdbc;                // connection handle
  88.     void*          hstmt;               // statement handle
  89.  
  90.     void*          pConnObj;            // connection object
  91.     void*          pStmtObj;            // statement object
  92.  
  93.     void*          pSQLCA;              // ptr to sqlca
  94.  
  95.                                         //       Connect()
  96.     long           hCsoConn;            // CSO connection handle
  97.     char*          pDSN;                // connection data source name
  98.     short          dsnLength;
  99.     char*          pUSR;                // connection user id
  100.     short          usrLength;
  101.     char*          pPSW;                // connection authorization string
  102.     short          pswLength;
  103.  
  104.     void*          pUOW;                // unit of work connection option
  105.     void*          pProduct;            // DBMS identification
  106.     void*          pRelease;            // DBMS version
  107.  
  108.     long           connReason;          // Connection reason
  109.     ConnOption     connOption;          // Connection option
  110.  
  111.                                         //      GetStmtObj()
  112.     char*          pAppName;            // appl name or EZEVGITF
  113.     char*          pRcdName;            // name of SQL row
  114.     int            stmtID;              // statement handle id
  115.     short          numIParm;            // no. of input parm for stmt
  116.     short          numOParm;            // no. of output parm for stmt
  117.  
  118.     char*          pStmtStr;            // SQL statement string
  119.     int            stmtStrLength;       // length of SQL statement string
  120.     short          execOption;          // stmt exec option
  121.  
  122.                                         //      GetCurrentCursor()
  123.     int            prcOption;           // process option
  124.     unsigned char  cursorName[CURSOR_NAME_LENGTH];      // cursor name
  125.  
  126.                                         //    SetParm() or BindCol()
  127.     unsigned short parmNum;             // parameter number, left to right
  128.     short int      parmType;            // parameter type: I, I/O or O
  129.     short int      cType;               // C type
  130.     short int      sqlType;             // SQL data type
  131.     unsigned long int  colDef;          // column precision
  132.     short int      colScale;            // scale of column
  133.     void*          rgbValue;            // ptr to buffer
  134.     signed long int  cbValueMax;        // length of rbgValue buffer
  135.     signed long int *pcbValue;          // ptr to pcbValue
  136.     signed long int  cbValue;           // content of pcbValue
  137.     void*            pNull;             // ptr to SQL NULL indicator
  138.     void*            pRetLen;           // ptr to SQL returned length (short*)
  139.     ConvType       convType;            // SQL and C data type conversion
  140.  
  141.                                         //    GetResultCols() / GetColDesc()
  142.     short int      nResultCols;         // number of columns in a result set
  143.     unsigned char  *colName;
  144.     short int      maxColNameLen;
  145.     short int      colNameLen;
  146.     short int      nullIndicator;
  147.                                         //    Close()  (SQLFreeStmt())
  148.     FsOption       fsOption;            // either CLOSE or DROP
  149.  
  150.                                         //        ERROR
  151.     RCodeType      retType;             // error due to SQL or non-SQL
  152.     long           retCode;             // return code from call
  153.     long           errLoc;              // where error is detected ...
  154.     unsigned short ioStatus;            // VG I/O status mask: EOF, NRF ...
  155.     char           sqlState[SQLSTATE_LENGTH];        // SQL state
  156.     long int       nativeErrorCode;     // Native error code
  157.     CMCOMP         cmComp;              // cso error struct
  158.     short int      lengthMsgText;       // length of text in msgBuffer
  159.     char           msgBuffer[MSG_BUFFER_LENGTH];     // buffer for msg text
  160. };
  161.  
  162. typedef struct FCWXOCIB  FCWXOCIB;
  163.  
  164. // -----------------------------------------------------------------
  165. //  Function:  Interface to ODBC <database object, connection and
  166. //             statement handles> for C++ and ITF
  167. // -----------------------------------------------------------------
  168. class FCWXOITF
  169. {
  170.    public:
  171.       virtual int EZEConnect( FCWXOCIB* pCIB ) = 0;
  172.       virtual int Commit( FCWXOCIB* pCIB ) = 0;
  173.       virtual int RollBack( FCWXOCIB* pCIB ) = 0;
  174.  
  175.       virtual int SetParm( FCWXOCIB* pCIB ) = 0;
  176.       virtual int BindCol( FCWXOCIB* pCIB ) = 0;
  177.  
  178.       virtual int Prepare( FCWXOCIB* pCIB ) = 0;
  179.       virtual int Execute( FCWXOCIB* pCIB ) = 0;
  180.       virtual int ExecDirect( FCWXOCIB* pCIB ) = 0;
  181.       virtual int Fetch( FCWXOCIB* pCIB ) = 0;
  182.       virtual int Close( FCWXOCIB* pCIB ) = 0;
  183.  
  184.       virtual void* GetStmtObj( FCWXOCIB* pCIB ) = 0;
  185.       virtual void  SetCbValue( FCWXOCIB* pCIB ) = 0;
  186.       virtual char* GetCharBuffer( FCWXOCIB* pCIB ) = 0;
  187.       //virtual void  FixupBindCol( FCWXOCIB* pCIB ) = 0;                     /*@A1*/
  188.       virtual int   FixupBindCol( FCWXOCIB* pCIB ) = 0;                       /*@A1*/
  189.       virtual signed long int* GetPcbValue( FCWXOCIB* pCIB ) = 0;
  190.       virtual int   StmtNeedPrepare( FCWXOCIB* pCIB ) = 0;
  191.  
  192.       virtual short int  MapItemTypeToC( ItemType  itmType ) = 0;
  193.       virtual short int  MapItemTypeToODBC( ItemType  itmType ) = 0;  // ????
  194.       virtual short int  MapDB2CodeToODBC( int db2Code ) = 0;
  195.  
  196.       virtual int   SetCurrentCursor( FCWXOCIB* pCIB ) = 0;
  197.       virtual int   GetCurrentCursorName( FCWXOCIB* pCIB ) = 0;
  198.       virtual int   GetCurrentCursorStmt( FCWXOCIB* pCIB ) = 0;
  199.       virtual int   CloseCurrentCursor( FCWXOCIB* pCIB ) = 0;
  200.  
  201.                                                           // ITF requirements
  202.       virtual int   InitStmtOParm( FCWXOCIB* pCIB ) = 0;
  203.       virtual int   InitStmtIParm( FCWXOCIB* pCIB ) = 0;
  204.       virtual int   GetResultCols( FCWXOCIB* pCIB ) = 0;
  205.       virtual int   GetColDesc( FCWXOCIB* pCIB ) = 0;
  206.       virtual int   SetCursorName( FCWXOCIB* pCIB ) = 0;
  207.  
  208. };
  209.  
  210.  
  211.  
  212. typedef FCWXOITF* (*PFXOITF) ();
  213.  
  214.  
  215.  
  216. // ---------------------------------------------------------
  217. //   Abstract interface class for database object
  218. // ---------------------------------------------------------
  219.  
  220. enum SFDBValue  { sql_DB = 1,  file_DB = 2 };             // PQ01395
  221.  
  222. class FCWDBOBJ
  223. {
  224.   public:
  225.    virtual int   EZEConnect( char* id, char* psw, char* dbname, char* product,
  226.                              char* release, char* uow, void* pCA ) = 0;
  227.    virtual int   Commit( int option ) = 0;
  228.    virtual int   RollBack( int option ) = 0;
  229.    virtual int   Close( char opt ) = 0;
  230.    virtual void* Register( void* p) = 0;
  231.    virtual int   DeRegister( void* p ) = 0;
  232.    virtual void  SetIO( Bool f ) = 0;
  233.    virtual Bool  IOPending() = 0;
  234.    virtual void  SaveOpenCursor( char* App, char* Rec, short CursorID, Bool bWithHold ) = 0;
  235.    virtual void  GetOpenCursor( char* App, char* Rec, short& cursor, Bool& bWithHold ) = 0;
  236.  
  237.    virtual InitValue DbmType() = 0;
  238.    virtual int   SwitchSFDB( SFDBValue ) = 0;
  239.    virtual Bool FileSystemIsManagedByDB2() = 0;            // PQ01395
  240.    virtual void SetDBNameForNextSQLIO( char* n ) = 0;
  241.  
  242.    virtual Bool DriverExists() = 0;                        // PQ19733
  243. };
  244.  
  245.  
  246.  
  247. // ---------------------------------------------------------
  248. //   Interface to FCWXOCMN library via GetDbDrv()
  249. // ---------------------------------------------------------
  250.  
  251. const int from_CSO  =   1;
  252. const int from_WGS  =   2;
  253.  
  254. struct GDD_WGS {
  255.    void*    xoItf;
  256. };
  257.  
  258. // typedef int  (*PFXOItf) ( void *p, int k );
  259. typedef int (* SYSCALL PFXOItf) ( void *p, int k );
  260.  
  261. #endif
  262.