home *** CD-ROM | disk | FTP | other *** search
/ C Programming Starter Kit 2.0 / SamsPublishing-CProgrammingStarterKit-v2.0-Win31.iso / bde / sdkunit.pak / DBIPROCS.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1997-07-24  |  72.9 KB  |  1,554 lines

  1. {*******************************************************}
  2. {                                                       }
  3. {       BDE Procedure Interface Unit                    }
  4. {                                                       }
  5. {       Copyright (c) 1995 Borland International        }
  6. {                                                       }
  7. {*******************************************************}
  8.  
  9. unit DbiProcs;
  10.  
  11. interface
  12.  
  13. uses
  14. {$IFNDEF VER80}
  15.   Win31,
  16. {$ENDIF}
  17.   Wintypes, WinProcs, DbiTypes;
  18.  
  19. type
  20.   DbiDate = Date;  
  21.  
  22. const
  23.   DBIINTFVER         = 119;             { Version of the interface }
  24.   DBIENGVERSION      = 120;             { Version of the engine (1.20) }
  25.  
  26. {============================================================================}
  27. {                          DBI prototypes                                    }
  28. {============================================================================}
  29. {                          Environmental                                     }
  30. {----------------------------------------------------------------------------}
  31.  
  32. function DbiInitFn (                    { Initialize the Engine }
  33.       iVer          : Word;             { Interface Version }
  34.       pEnv          : pDBIEnv           { Environment Structure/NULL }
  35.    ): DBIResult;
  36.  { DO NOT CALL THIS DIRECTLY. Use the 'DbiInit' define below. }
  37.  
  38.  { Initializes the engine environment. Default settings can be overwritten  }
  39.  { by supplying the appropriate settings. Defaults are read from the system }
  40.  { configuration file. pEnv can be NULLP to get the system defautls.        }
  41.  
  42. function DbiInit (pEnv: PDbiEnv): DBIResult;
  43.  
  44. function DbiExit: DBIResult;            { Exit engine }
  45.  
  46.  
  47. {============================================================================}
  48. {                         System Level Info                                  }
  49. {============================================================================}
  50.  
  51. function DbiGetSysVersion (             { Get system version info }
  52. var   sysVersion    : SYSVersion
  53.    ): DBIResult;
  54.  
  55. function DbiGetSysConfig (              { System configuration }
  56. var   sysConfig     : SYSConfig
  57.    ): DBIResult;
  58.  
  59. function DbiGetClientInfo (             { Get Client info }
  60. var   clientInfo    : CLIENTInfo
  61.    ): DBIResult;
  62.  
  63. function DbiGetSysInfo (                { Get system status/info }
  64. var   sysInfo       : SYSInfo
  65.    ): DBIResult;
  66.  
  67. function DbiLoadDriver (                { Load a given driver }
  68.       pszDriverType : PChar             { Driver name }
  69.    ): DBIResult;
  70.  
  71. {============================================================================}
  72. {                            Sessions                                        }
  73. {============================================================================}
  74.  
  75. function DbiStartSession (              { Start a new session }
  76.       pszName       : PChar;            { Name (Optional) }
  77. var   hSes          : hDBISes;          { Session }
  78.       pNetDir       : PChar             { Netfile directory for session (opt) }
  79.    ): DbiResult;
  80.  
  81. function DbiGetCurrSession (            { Get the current session }
  82. var   hSes          : hDBISes           { Session }
  83.    ): DbiResult;
  84.  
  85. function DbiSetCurrSession (            { Set the current session }
  86.       hSes          : hDBISes           { Session/NULL }
  87.    ): DbiResult;
  88.  
  89. function DbiCloseSession (              { Close the current session }
  90.       hSes          : hDBISes           { Session }
  91.    ): DbiResult;
  92.  
  93. function DbiGetSesInfo (                { Get current session info }
  94. var   sesInfo       : SESInfo
  95.    ): DbiResult;
  96.  
  97. function DbiSetPrivateDir (             { Set Private Directory for session }
  98.       pszDir        : PChar             { Directory name/NULL }
  99.    ): DbiResult;
  100.  
  101.  
  102. {============================================================================}
  103. {                     Datababase, Schema and File inquiry                    }
  104. {============================================================================}
  105.  
  106. function DbiOpenDatabase (              { Open a database }
  107.       pszDbName     : PChar;            { Database name }
  108.       pszDbType     : PChar;            { Database type (NULL: Universal) }
  109.       eOpenMode     : DBIOpenMode;      { Open type }
  110.       eShareMode    : DBIShareMode;     { Share type }
  111.       pszPassword   : PChar;            { Password }
  112.       iOptFlds      : Word;             { Number of optional Params }
  113.       pOptFldDesc   : pFLDDesc;         { Optional Field Descriptors }
  114.       pOptParams    : Pointer;          { Optional Params }
  115. var   hDb           : hDBIDb            { Returnd database handle }
  116.    ): DBIResult;
  117.  
  118. function DbiSetDirectory (              { Set the current directory }
  119.       hDb           : hDBIDb;           { Universal database handle }
  120.       pszDir        : PChar             { Directory/NULL }
  121.    ): DBIResult;
  122.  
  123. function DbiGetDirectory (              { Get the current/default directory }
  124.       hDb           : hDBIDb;           { Universal database handle }
  125.       bDefault      : Bool;             { True for default }
  126.       pszDir        : PChar             { Returned directory }
  127.    ): DBIResult;
  128.  
  129. function DbiOpenTableList (             { Open a cursor on "Tables" }
  130.       hDb           : hDBIDb;           { Database handle }
  131.       bExtended     : Bool;             { True for extended info }
  132.       bSystem       : Bool;             { True to include system tables }
  133.       pszWild       : PChar;            { Wild card name }
  134. var   hCur          : hDBICur           { Returned cursor }
  135.    ): DBIResult;
  136.  
  137. function DbiOpenFileList (              { Open a cursor on "Files" }
  138.       hDb           : hDBIDb;           { Universal database handle }
  139.       pszWild       : PChar;            { Wild card name }
  140. var   hCur          : hDBICur           { Returned cursor }
  141.    ): DBIResult;
  142.  
  143. function DbiOpenIndexList (             { Return "Indexes" for a table }
  144.       hDb           : hDBIDb;           { Database handle }
  145.       pszTableName  : PChar;            { Table name }
  146.       pszDriverType : PChar;            { Driver type }
  147. var   hCur          : hDBICur           { Returned cursor on "Indexes" }
  148.    ): DBIResult;
  149.  
  150. function DbiOpenFieldList (             { Return "Fields" for a table }
  151.       hDb           : hDBIDb;           { Database handle }
  152.       pszTableName  : PChar;            { Table name }
  153.       pszDriverType : PChar;            { Driver type }
  154.       bPhyTypes     : Bool;             { True, for physical types }
  155. var   hCur          : hDBICur           { Returned cursor on "Fields" }
  156.    ): DBIResult;
  157.  
  158. function DbiOpenVchkList (              { Return "Checks" for a table }
  159.       hDb           : hDBIDb;           { Database handle }
  160.       pszTableName  : PChar;            { Table name }
  161.       pszDriverType : PChar;            { Driver Type }
  162. var   hChkCur       : hDBICur           { Returned cursor on "Checks" }
  163.    ): DBIResult;
  164.  
  165. function DbiOpenRintList (              { Return Integrity checks }
  166.       hDb           : hDBIDb;           { Database handle }
  167.       pszTableName  : PChar;            { Table name }
  168.       pszDriverType : PChar;            { Driver type }
  169. var   hChkCur       : hDBICur           { Returned cursor on "Ref Int". }
  170.    ): DBIResult;
  171.  
  172. function DbiOpenSecurityList (          { Return security descriptions }
  173.       hDb           : hDBIDb;           { Database handle }
  174.       pszTableName  : PChar;            { Table name }
  175.       pszDriverType : PChar;            { Driver type }
  176. var   hSecCur       : hDBICur           { Returned cursor on sec list }
  177.    ): DBIResult;
  178.  
  179. function DbiOpenFamilyList (            { Return family members }
  180.       hDb           : hDBIDb;           { Database handle }
  181.       pszTableName  : PChar;            { Table name }
  182.       pszDriverType : PChar;            { Driver type }
  183. var   hFmlCur       : hDBICur           { Returned cursor on "Family" }
  184.    ): DBIResult;
  185.  
  186. function DbiOpenSPList (                { Open a cursor on "Stored Procedures" }
  187.       hDb           : hDBIDb;           { Universal database handle }
  188.       bExtended     : Bool;             { True for extended info (N/A) }
  189.       bSystem       : Bool;             { True to include system procedures }
  190.       pszQual       : PChar;            { Qualifier (N/A) }
  191. var   hCur          : hDBICur           { Returned cursor }
  192.    ): DBIResult;
  193.  
  194. function DbiOpenSPParamList (           { Return "Parameters" for a stored procedure }
  195.       hDb           : hDBIDb;           { Database handle }
  196.       pszSPName     : PChar;            { Stored procedure name }
  197.       bPhyTypes     : Bool;             { True, for physical types }
  198.       uOverload     : Word;             { Overload number }
  199. var   hCur          : hDBICur           { Returned cursor on "Parameters" }
  200.    ): DBIResult;
  201.  
  202. function DbiCloseDatabase (             { Close a database }
  203. var   hDb           : hDBIDb            { Pointer to database handle }
  204.    ): DBIResult;
  205.  
  206. {============================================================================}
  207. {                                  Capabilities                              }
  208. {============================================================================}
  209.  
  210. function DbiOpenDriverList (            { Get a list of driver names }
  211. var   hCur          : hDBICur           { Returned cursor }
  212.    ): DBIResult;
  213.  
  214. function DbiGetDriverDesc (             { Get description for a given type }
  215.       pszDriverType : PChar;            { Symbolic name for driver type }
  216. var   drvType       : DRVType           { Driver type description }
  217.    ): DBIResult;
  218.  
  219. function DbiOpenDatabaseList (          { Get a list of registered databases }
  220. var   hCur          : hDBICur           { Returned cursor }
  221.    ): DBIResult;
  222.  
  223. function DbiGetDatabaseDesc (           { Get a description of a logical db }
  224.       pszName       : PChar;            { Name of logical database }
  225.       pdbDesc       : pDBDesc           { Database description }
  226.    ): DBIResult;
  227.  
  228. function DbiOpenTableTypesList (        { Get a list of table types }
  229.       pszDriverType : PChar;            { Driver type }
  230. var   hCur          : hDBICur           { Returned cursor }
  231.    ): DBIResult;
  232.  
  233. function DbiGetTableTypeDesc (          { Get Table capabilities }
  234.       pszDriverType : PChar;            { Driver type }
  235.       pszTableType  : PChar;            { Table type }
  236. var   tblType       : TBLType           { Table Capabilities }
  237.    ): DBIResult;
  238.  
  239.  
  240. function DbiOpenFieldTypesList (        { Get a list of field types }
  241.       pszDriverType : PChar;            { Driver type }
  242.       pszTblType    : PChar;            { Table type (Optional) }
  243. var   hCur          : hDBICur           { Returned cursor }
  244.    ): DBIResult;
  245.  
  246. function DbiGetFieldTypeDesc (          { Get list of field types }
  247.       pszDriverType : PChar;            { Driver type }
  248.       pszTableType  : PChar;            { Table type }
  249.       pszFieldType  : PChar;            { Field type  (Physical only) }
  250. var   fldType       : FLDType           { Field type description }
  251.    ): DBIResult;
  252.  
  253. function DbiOpenIndexTypesList (        { Get list of index types }
  254.       pszDriverType : PChar;            { Driver type }
  255. var   hCur          : hDBICur           { Returned cursor }
  256.    ): DBIResult;
  257.  
  258. function DbiGetIndexTypeDesc (          { Get description of given idx type }
  259.       pszDriverType : PChar;            { Driver type }
  260.       pszIndexType  : PChar;            { Index type }
  261. var   idxType       : IDXType           { Index description }
  262.    ): DBIResult;
  263.  
  264. function DbiOpenLdList (                { Get a list of Lang Drivers }
  265. var   hCur          : hDBICur           { Returned cursor }
  266.    ): DBIResult;
  267.  
  268. {===========================================================================}
  269. {                      Table Open, Properties & Structure                   }
  270. {===========================================================================}
  271.  
  272. function DbiOpenTable (                 { Open a table }
  273.       hDb           : hDBIDb;           { Database handle }
  274.       pszTableName  : PChar;            { Table name or file name }
  275.       pszDriverType : PChar;            { Driver type                 /NULL }
  276.       pszIndexName  : PChar;            { Index to be used for access /NULL }
  277.       pszIndexTagName : PChar;          { Index tag name              /NULL }
  278.       iIndexId      : Word;             { Index number                /0 }
  279.       eOpenMode     : DBIOpenMode;      { Read or RW }
  280.       eShareMode    : DBIShareMode;     { Excl or Share }
  281.       exltMode      : XLTMode;          { Xlate mode }
  282.       bUniDirectional : Bool;           { Uni or Bi directional }
  283.       pOptParams    : Pointer;          { Optional params /NULL }
  284. var   hCursor       : hDBICur           { Returns Cursor handle }
  285.    ): DBIResult;
  286.  
  287.  
  288. function DbiGetCursorProps (            { Get Cursor properties }
  289.       hCursor       : hDBICur;          { Cursor handle }
  290. var   curProps      : CURProps          { Cursor properties }
  291.    ): DBIResult;
  292.  
  293. function DbiGetObjFromName (            { Get object from name }
  294.       eObjType      : DBIOBJType;       { Object handle }
  295.       pszObjName    : PChar;            { Name of object /NULL }
  296. var   hObj          : hDBIObj           { Returned object handle }
  297.    ): DBIResult;
  298.  
  299. function DbiGetObjFromObj (             { Get associated object }
  300.       hObj          : hDBIObj;          { Object handle }
  301.       eObjType      : DBIOBJType;       { Type of associated object }
  302. var   hObj          : hDBIObj           { Returns object of eObjType }
  303.    ): DBIResult;
  304.  
  305. function DbiGetProp (                   { Get property }
  306.       hObj          : hDBIObj;          { Object handle }
  307.       iProp         : Longint;          { Property to retrieve }
  308.       PropValue     : Pointer;          { == NULL, validate iProp for getting }
  309.       iMaxLen       : Word;             { Length of buffer pPropValue }
  310. var   iLen          : Word              { Returns required length }
  311.    ): DBIResult;
  312.  
  313. function DbiSetProp (                   { Set property }
  314.       hObj          : hDBIObj;          { Object handle }
  315.       iProp         : Longint;          { Property to set }
  316.       iPropValue    : Longint           { Property value }
  317.    ): DBIResult;
  318.  
  319. function DbiValidateProp (              { Validate a property }
  320.       hObj          : hDBIObj;          { Object handle }
  321.       iProp         : Longint;          { property to validate }
  322.       bSetting      : Bool              { TRUE:setting, FALSE:getting }
  323.    ): DBIResult;
  324.  
  325. function DbiGetFieldDescs (             { Get field descriptions }
  326.       hCursor       : hDBICur;          { Cursor handle }
  327.       pfldDesc      : pFLDDesc          { Array of field descriptors }
  328.    ): DBIResult;
  329.  
  330. function DbiGetCursorForTable (         { Find cursor for a given table }
  331.       hDb           : hDBIDb;           { Database handle }
  332.       pszTableName  : PChar;            { Table name }
  333.       pszDriverType : PChar;            { Driver type / NULL }
  334. var   hCursor       : hDBICur           { Returned cursor }
  335.    ): DBIResult;
  336.  
  337. function DbiCloneCursor (               { Return a duplicate cursor }
  338.       hCurSrc       : hDBICur;          { Source cursor }
  339.       bReadOnly     : Bool;             { If TRUE, read only mode }
  340.       bUniDirectional : Bool;           { If TRUE, Uni directional }
  341. var   hCurNew       : hDBICur           { Destination cursor address }
  342.    ): DBIResult;
  343.  
  344. function DbiCloseCursor (               { Closes cursor }
  345. var   hCursor       : hDBICur           { Pntr to Cursor handle }
  346.    ): DBIResult;
  347.  
  348.  
  349. {============================================================================}
  350. {                      Index Manipulation & Usage                            }
  351. {============================================================================}
  352.  
  353. function DbiOpenIndex (                 { Open an index }
  354.       hCursor       : hDBICur;          { Cursor handle }
  355.       pszIndexName  : PChar;            { Index Name }
  356.       iIndexId      : Word              { Index number (if applicable) }
  357.    ): DBIResult;
  358.  
  359. function DbiCloseIndex (                { Close an index }
  360.       hCursor       : hDBICur;          { Cursor handle }
  361.       pszIndexName  : PChar;            { Index Name }
  362.       iIndexId      : Word              { Index number }
  363.    ): DBIResult;
  364.  
  365. function DbiSwitchToIndex (             { Change index order of access }
  366. var   hCursor       : hDBICur;          { Cursor handle (In/Out) }
  367.       pszIndexName  : PChar;            { Index name }
  368.       pszTagName    : PChar;            { Tag name (if applicable) }
  369.       iIndexId      : Word;             { Index number }
  370.       bCurrRec      : Bool              { Position at current rec }
  371.    ): DBIResult;
  372.  
  373. function DbiGetIndexDesc (              { Get index properties }
  374.       hCursor       : hDBICur;          { Cursor handle }
  375.       iIndexSeqNo   : Word;             { Index number }
  376. var   idxDesc       : IDXDesc           { Returned index description }
  377.    ): DBIResult;
  378.  
  379. function DbiGetIndexDescs (             { Get index properties }
  380.       hCursor       : hDBICur;          { Cursor handle }
  381. var   idxDesc       : IDXDesc           { Returned index descriptors }
  382.    ): DBIResult;
  383.  
  384. function DbiGetIndexForField (          { Get index desc for given field }
  385.       hCursor       : hDBICur;          { Cursor handle }
  386.       iFld          : Word;             { Field Number (1..N) }
  387.       bProdTagOnly  : Bool;             { If TRUE, only xBASE prod tags will be returned }
  388. var   idxDesc       : IDXDesc           { (Optional) }
  389.    ): DBIResult;
  390.  
  391. function DbiGetIndexSeqNo (             { Get index sequence number }
  392.       hCursor       : hDBICur;          { Cursor handle }
  393.       pszIndexName  : PChar;            { Index name }
  394.       pszTagName    : PChar;            { Tag name (if applicable) }
  395.       iIndexId      : Word;             { Index number }
  396. var   iIndexSeqNo   : Word              { Index number }
  397.    ): DBIResult;
  398.  
  399. function DbiSetToKey (                  { Set key condition }
  400.       hCursor       : hDBICur;          { Cursor handle }
  401.       eSearchCond   : DBISearchCond;    { Search condition (default is =) }
  402.       bDirectKey    : Bool;             { Key is supplied directly }
  403.       iFields       : Word;             { No of full fields to match }
  404.       iLen          : Word;             { Partial key len of last field }
  405.       pBuff         : Pointer           { Either Record buffer or Key itself }
  406.    ): DBIResult;
  407.  
  408. function DbiExtractKey (                { Get the key value of current record }
  409.       hCursor       : hDBICur;          { Cursor handle }
  410.       pRecBuf       : Pointer;          { Record buffer (optional) }
  411.       pKeyBuf       : Pointer           { Returned. Key bytes. }
  412.    ): DBIResult;
  413.  
  414. function DbiSetRange (                  { Set cursor to a range }
  415.       hCursor       : hDBICur;          { Cursor }
  416.       bKeyItself    : Bool;             { Whether Key or Record buffer }
  417.       iFields1      : Word;             { Key fields to be mathced in full }
  418.       iLen1         : Word;             { Key length to compare }
  419.       pKey1         : Pointer;          { Top/Left key in Range }
  420.       bKey1Incl     : Bool;             { If Inclusive of Key1 }
  421.       iFields2      : Word;             { Key fields to be mathced in full }
  422.       iLen2         : Word;             { Key length to compare }
  423.       pKey2         : Pointer;          { Bottom/Right key in Range }
  424.       bKey2Incl     : Bool              { If Inclusive of Key2 }
  425.    ): DBIResult;
  426.  
  427. function DbiResetRange (                { Reset range }
  428.       hCursor       : hDBICur           { cursor handle }
  429.    ): DBIResult;
  430.  
  431. function DbiCompareKeys (               { Compare two keys }
  432.       hCursor       : hDBICur;          { Cursor handle }
  433.       pKey1         : Pointer;          { Key buffer 1 to compare }
  434.       pKey2         : Pointer;          { Key buffer 2 (Or NULL) }
  435.       iFields       : Word;             { Fields to compare in full }
  436.       iLen          : Word;             { Partial key to compare }
  437. var   iResult       : Integer           { Compare result }
  438.    ): DBIResult;
  439.  
  440. function DbiGetRecordForKey (           { Find a record matching key }
  441.       hCursor       : hDBICur;          { Cursor handle }
  442.       bDirectKey    : Bool;             { Key is supplied directly }
  443.       iFields       : Word;             { No of full fields to match }
  444.       iLen          : Word;             { Partial key len of last field }
  445.       pKey          : Pointer;          { Either Record buffer or Key itself }
  446.       pRecBuff      : Pointer           { (Optional) Record buffer }
  447.    ): DBIResult;
  448.  
  449. {=============================================================================}
  450. {                          Validity check and referential integrity           }
  451. {=============================================================================}
  452.  
  453. function DbiGetVchkDesc (               { Get valcheck descriptor }
  454.       hCursor       : hDBICur;          { Cursor handle }
  455.       iValSeqNo     : Word;             { Valcheck sequence number }
  456.       pvalDesc      : pVCHKDesc         { Returned valcheck description }
  457.    ): DBIResult;
  458.  
  459. function DbiGetRintDesc (               { Get referential integrity descriptor }
  460.       hCursor       : hDBICur;          { Cursor handle }
  461.       iRintSeqNo    : Word;             { Rint sequence number }
  462.       printDesc     : pRINTDesc         { Returned rint description }
  463.    ): DBIResult;
  464.  
  465. {=============================================================================}
  466. {                              Cursor Maintenance                             }
  467. {=============================================================================}
  468.  
  469.  
  470. function DbiSetToBegin (                { Reset cursor to beginning }
  471.       hCursor       : hDBICur           { Cursor handle }
  472.    ): DBIResult;
  473.  
  474. function DbiSetToEnd (                  { Reset cursor to ending }
  475.       hCursor       : hDBICur           { Cursor handle }
  476.    ): DBIResult;
  477.  
  478. function DbiSetToCursor (               { Set cursor to another cursor position }
  479.       hDest         : hDBICur;          { Destination cursor }
  480.       hSrc          : hDBICur           { Source cursor }
  481.    ): DBIResult;
  482.  
  483. function DbiGetBookMark (               { Get a book-mark }
  484.       hCur          : hDBICur;          { Cursor }
  485.       pBookMark     : Pointer           { Pointer to Book-Mark }
  486.    ): DBIResult;
  487.  
  488. function DbiSetToBookMark (             { Position to a Book-Mark }
  489.       hCur          : hDBICur;          { Cursor }
  490.       pBookMark     : Pointer           { Pointer to Book-Mark }
  491.    ): DBIResult;
  492.  
  493. function DbiCompareBookMarks (          { Compare two Book-marks }
  494.       hCur          : hDBICur;          { Cursor }
  495.       pBookMark1    : Pointer;          { Book mark 1 }
  496.       pBookMark2    : Pointer;          { Book mark 2 }
  497. var   CmpBkmkResult : Word              { Compare result }
  498.    ): DBIResult;
  499.  
  500. {============================================================================}
  501. {                      Data Access: Logical Record Level                     }
  502. {============================================================================}
  503.  
  504.  
  505. function DbiGetNextRecord (             { Find/Get the next record }
  506.       hCursor       : hDBICur;          { Cursor handle }
  507.       eLock         : DBILockType;      { Optional lock request }
  508.       pRecBuff      : Pointer;          { Record buffer(client) }
  509.       precProps     : pRECProps         { Optional record properties }
  510.    ): DBIResult;
  511.  
  512. function DbiGetPriorRecord (            { Find/Get the prior record }
  513.       hCursor       : hDBICur;          { Cursor handle }
  514.       eLock         : DBILockType;      { Optional lock request }
  515.       pRecBuff      : Pointer;          { Record buffer (client) }
  516.       precProps     : pRECProps         { Optional record properties }
  517.    ): DBIResult;
  518.  
  519. function DbiGetRecord (                 { Gets the current record }
  520.       hCursor       : hDBICur;          { Cursor handle }
  521.       eLock         : DBILockType;      { Optional lock request }
  522.       pRecBuff      : Pointer;          { Record buffer(client) }
  523.       precProps     : pRECProps         { Optional record properties }
  524.    ): DBIResult;
  525.  
  526. function DbiGetRelativeRecord (         { Find/Get a record by record number }
  527.       hCursor       : hDBICur;          { Cursor handle }
  528.       iPosOffset    : Longint;          { offset from current position }
  529.       eLock         : DBILockType;      { Optional lock request }
  530.       pRecBuff      : Pointer;          { Record buffer(client) }
  531.       precProps     : pRECProps         { Optional record properties }
  532.    ): DBIResult;
  533.  
  534. function DbiInitRecord (                { Initialize record area }
  535.       hCursor       : hDBICur;          { Cursor handle }
  536.       pRecBuff      : Pointer           { Record buffer }
  537.    ): DBIResult;
  538.  
  539. function DbiInsertRecord (              { Inserts a new record }
  540.       hCursor       : hDBICur;          { Cursor handle }
  541.       eLock         : DBILockType;      { Optional lock on this rec }
  542.       pRecBuff      : Pointer           { New Record (client) }
  543.    ): DBIResult;
  544.  
  545. function DbiModifyRecord (              { Updates the current record }
  546.       hCursor       : hDBICur;          { Cursor handle }
  547.       pRecBuf       : Pointer;          { Modified record }
  548.       bFreeLock     : Bool              { Free record lock }
  549.    ): DBIResult;
  550.  
  551. function DbiDeleteRecord (              { Deletes the current record }
  552.       hCursor       : hDBICur;          { Cursor handle }
  553.       pRecBuf       : Pointer           { Copy of deleted record }
  554.    ): DBIResult;
  555.  
  556. function DbiReadBlock (                 { Read a block of records }
  557.       hCursor       : hDBICur;          { Cursor handle }
  558. var   iRecords      : Longint;          { Number of records to read }
  559.       pBuf          : Pointer           { Buffer }
  560.    ): DBIResult;
  561.  
  562. function DbiWriteBlock (                { Write a block of records }
  563.       hCursor       : hDBICur;          { Cursor handle }
  564. var   iRecords      : Longint;          { Number of records to write/written }
  565.       pBuf          : Pointer           { Buffer }
  566.    ): DBIResult;
  567.  
  568. function DbiAppendRecord (              { Inserts a new record }
  569.       hCursor       : hDBICur;          { Cursor handle }
  570.       pRecBuff      : Pointer           { New Record (client) }
  571.    ): DBIResult;
  572.  
  573. function DbiUndeleteRecord (            { Undeletes the current record }
  574.       hCursor       : hDBICur           { Cursor handle }
  575.    ): DBIResult;
  576.  
  577. function DbiGetSeqNo (                  { Get logical record number }
  578.       hCursor       : hDBICur;          { Cursor handle }
  579. var   iSeqNo        : Longint           { Pointer to sequence number }
  580.    ): DBIResult;
  581.  
  582. function DbiSetToSeqNo (                { Position to a logical record number }
  583.       hCursor       : hDBICur;          { Cursor handle }
  584.       iSeqNo        : Longint           { Sequence number }
  585.    ): DBIResult;
  586.  
  587. function DbiGetRecordCount (            { Get the current number of records }
  588.       hCursor       : hDBICur;          { Cursor handle }
  589. var   iRecCount     : Longint           { Number of records }
  590.    ): DBIResult;
  591.  
  592.  
  593. function DbiSetToRecordNo (             { Position to Physical Rec# }
  594.       hCursor       : hDBICur;          { Cursor handle }
  595.       iRecNo        : Longint           { Physical record number }
  596.    ): DBIResult;
  597.  
  598. function DbiSaveChanges (               { Flush all buffered changes }
  599.       hCursor       : hDBICur           { Cursor handle }
  600.    ): DBIResult;
  601.  
  602. function DbiForceReread (               { Force Reread of buffers from Disk }
  603.       hCursor       : hDBICur           { Cursor }
  604.    ): DBIResult;
  605.  
  606. function DbiCheckRefresh: DBIResult;    { Check refresh for session }
  607.  
  608. function DbiMakePermanent (             { Make temporary table permanent }
  609.       hCursor       : hDBICur;          { Cursor handle }
  610.       pszName       : PChar;            { Rename temporary table }
  611.       bOverWrite    : Bool              { Overwrite existing file }
  612.    ): DBIResult;
  613.  
  614. {============================================================================}
  615. {                            Field Level Access                              }
  616. {============================================================================}
  617.  
  618. function DbiGetField (                  { Get Field value }
  619.       hCursor       : hDBICur;          { Cursor }
  620.       iField        : Word;             { Field # (1..n) }
  621.       pRecBuff      : Pointer;          { Record buffer }
  622.       pDest         : Pointer;          { Destination field buffer }
  623. var   bBlank        : Bool              { Returned : is field blank }
  624.    ): DBIResult;
  625.  
  626. function DbiPutField (                  { Put a value in the record buffer }
  627.       hCursor       : hDBICur;          { Cursor }
  628.       iField        : Word;             { Field # (1..n) }
  629.       pRecBuff      : Pointer;          { Record buffer }
  630.       pSrc          : Pointer           { Source field buffer }
  631.    ): DBIResult;
  632.  
  633. function DbiVerifyField (               { Verifies the field value }
  634.       hCursor       : hDBICur;          { Cursor }
  635.       iField        : Word;             { Field # (1..n) }
  636.       pSrc          : Pointer;          { Field Value }
  637. var   bBlank        : Bool              { Field is Blank (Returned) }
  638.    ): DBIResult;
  639.  
  640. function DbiOpenBlob (                  { Open a blob for access }
  641.       hCursor       : hDBICur;          { Cursor handle }
  642.       pRecBuf       : Pointer;          { Record Buffer }
  643.       iField        : Word;             { Field number (1..n) }
  644.       eOpenMode     : DBIOpenMode       { Open for Read or RW }
  645.    ): DBIResult;
  646.  
  647. function DbiGetBlobSize (               { Gets the size of a blob }
  648.       hCursor       : hDBICur;          { Cursor handle }
  649.       pRecBuf       : Pointer;          { Record Buffer }
  650.       iField        : Word;             { Field number of blob (1..n) }
  651. var   iSize         : Longint           { Blob size in bytes }
  652.    ): DBIResult;
  653.  
  654. function DbiGetBlob (                   { Read bytes from blob }
  655.       hCursor       : hDBICur;          { Cursor handle }
  656.       pRecBuf       : Pointer;          { Record Buffer }
  657.       iField        : Word;             { Field number of blob (1..n) }
  658.       iOffSet       : Longint;          { Starting position   }
  659.       iLen          : Longint;          { No of bytes to be read   }
  660.       pDest         : Pointer;          { Destination }
  661. var   iRead         : Longint           { Actual no of bytes read }
  662.    ): DBIResult;
  663.  
  664. function DbiPutBlob (                   { Write bytes to blob }
  665.       hCursor       : hDBICur;          { Cursor handle }
  666.       pRecBuf       : Pointer;          { Record Buffer }
  667.       iField        : Word;             { Field number of blob (1..n) }
  668.       iOffSet       : Longint;          { Starting position   }
  669.       iLen          : Longint;          { No of bytes to put   }
  670.       pSrc          : Pointer           { pntr to Source }
  671.    ): DBIResult;
  672.  
  673. function DbiTruncateBlob (              { Reduces the blob size }
  674.       hCursor       : hDBICur;          { Cursor handle }
  675.       pRecBuf       : Pointer;          { Record Buffer }
  676.       iField        : Word;             { Field number of blob (1..n) }
  677.       iLen          : Longint           { New blob length }
  678.    ): DBIResult;
  679.  
  680. function DbiFreeBlob (                  { Closes the blob }
  681.       hCursor       : hDBICur;          { Cursor handle }
  682.       pRecBuf       : Pointer;          { Record Buffer }
  683.       iField        : Word              { Field number of blob (0..n) }
  684.    ): DBIResult;
  685.  
  686. function DbiGetBlobHeading (            { Get Blob Heading }
  687.       hCursor       : hDBICur;          { Cursor handle }
  688.       iField        : Word;             { Field number of blob (1..n) }
  689.       pRecBuf       : Pointer;          { Record buffer of owner record }
  690.       pDest         : Pointer           { Destination buffer }
  691.    ): DBIResult;
  692.  
  693. function DbiSetFieldMap (               { Set a fieldmap }
  694.       hCur          : hDBICur;          { Cursor handle }
  695.       iFields       : Word;             { Number of fields }
  696.       pFldDesc      : pFLDDesc          { Array of field descriptions }
  697.    ): DBIResult;
  698.  
  699.  
  700. {=============================================================================}
  701. {                                TRANSACTIONS                                 }
  702. {=============================================================================}
  703.  
  704. function DbiBeginTran (                 { Begin a transaction }
  705.       hDb           : hDBIDb;           { Database handle }
  706.       eXIL          : eXILType;         { Transaction isolation level }
  707. var   hXact         : hDBIXact          { Returned Xact handle }
  708.    ): DBIResult;
  709.  
  710. function DbiEndTran (                   { End a transaction }
  711.       hDb           : hDBIDb;           { Database handle }
  712.       hXact         : hDBIXact;         { Xact handle }
  713.       eEnd          : eXEnd             { Xact end type }
  714.    ): DBIResult;
  715.  
  716. function DbiGetTranInfo (               { Get transaction info }
  717.       hDb           : hDBIDb;           { Database handle }
  718.       hXact         : hDBIXact;         { Xact handle }
  719.       pxInfo        : pXInfo            { Xact info }
  720.    ): DBIResult;
  721.  
  722. {=============================================================================}
  723. {                                  LOCKING                                    }
  724. {=============================================================================}
  725.  
  726. function DbiAcqTableLock (              { Lock a table }
  727.       hCursor       : hDBICur;          { Cursor handle }
  728.       eLockType     : DBILockType       { Lock type }
  729.    ): DBIResult;
  730.  
  731. function DbiAcqPersistTableLock (       { Get a persistent lock }
  732.       hDb           : hDBIDb;           { Database handle }
  733.       pszTableName  : PChar;            { Table name }
  734.       pszDriverType : PChar             { Driver type / NULL }
  735.    ): DBIResult;
  736.  
  737. function DbiRelPersistTableLock (       { Releases a persistent lock }
  738.       hDb           : hDBIDb;           { Database handle }
  739.       pszTableName  : PChar;            { Table name }
  740.       pszDriverType : PChar             { Driver type / NULL }
  741.    ): DBIResult;
  742.  
  743. function DbiRelTableLock (              { Unlocks Table level locks }
  744.       hCursor       : hDBICur;          { Cursor handle }
  745.       bAll          : Bool;             { True for all table level locks }
  746.       eLockType     : DBILockType       { Specific lock type }
  747.    ): DBIResult;
  748.  
  749. function DbiRelRecordLock (             { Releases record level locks }
  750.       hCursor       : hDBICur;          { Cursor handle }
  751.       bAll          : Bool              { True for all. Default Current. }
  752.    ): DBIResult;
  753.  
  754. function DbiIsRecordLocked (            { Check if current record is locked }
  755.       hCursor       : hDBICur;          { Cursor handle }
  756. var   bLocked       : Bool              { Rec lock status }
  757.    ): DBIResult;
  758.  
  759. function DbiIsTableLocked (             { Verify if Table is locked }
  760.       hCursor       : hDBICur;          { Cursor handle }
  761.       epdxLock      : DBILockType;      { Lock type to verify }
  762. var   iLocks        : Word              { Nbr of locks of the given type }
  763.    ): DBIResult;
  764.  
  765. function DbiIsTableShared (             { Verify if this is a shared table }
  766.       hCursor       : hDBICur;          { Cursor handle }
  767. var   bShared       : Bool              { Shared status }
  768.    ): DBIResult;
  769.  
  770. function DbiOpenLockList (              { Get a list of locks }
  771.       hCursor       : hDBICur;          { Cursor handle }
  772.       bAllUsers     : Bool;             { True, for all Users locks }
  773.       bAllLockTypes : Bool;             { True, for all lock types }
  774. var   hLocks        : hDBICur           { Returned cursor on Lock list }
  775.    ): DBIResult;
  776.  
  777. function DbiOpenUserList (              { Get a list of users loggedin }
  778. var   hUsers        : hDBICur           { Returned cursor on user list }
  779.    ): DBIResult;
  780.  
  781. function DbiSetLockRetry (              { Set Lock wait time }
  782.       iWait         : Integer           { Time in seconds }
  783.    ): DBIResult;
  784.  
  785.  
  786. {============================================================================}
  787. {                              Batch Operations                              }
  788. {============================================================================}
  789.  
  790.  
  791. function DbiBatchMove (                 { Copy records to destination table }
  792.       pSrcTblDesc   : pBATTblDesc;      { Source table identification, }
  793.       hSrcCur       : hDBICur;          {  OR source cursor  ( one must be NULL ) }
  794.       pDstTblDesc   : pBATTblDesc;      { Destination table identification, }
  795.       hDstCur       : hDBICur;          {  OR destination cursor ( one must be NULL ) }
  796.       ebatMode      : eBATMode;         { Batch mode }
  797.       iFldCount     : Word;             { size of field maps }
  798.       pSrcFldMap    : PWord;            { Array of source field numbers }
  799.       pszIndexName  : PChar;            { If update mode, used to match records }
  800.       pszIndexTagName : PChar;          { Index tag name }
  801.       iIndexId      : Word;             { Index  id }
  802.       pszKeyviolName : PChar;           { Keyviol table name  (optional) }
  803.       pszProblemsName : PChar;          { Problems table name (optional) }
  804.       pszChangedName : PChar;           { Changed table name (optional) }
  805.       lProbRecs     : PLongint;         { Number of records to read from source }
  806.       lKeyvRecs     : PLongint;         { Number of records to read from source }
  807.       lChangedRecs  : PLongint;         { Number of records to read from source }
  808.       bAbortOnFirstProb : Bool;         { If TRUE, abort on first problem rec }
  809.       bAbortOnFirstKeyviol : Bool;      { If TRUE, abort on first keyviol rec }
  810. var   lRecsToMove   : Longint;          { Number of records to read from source }
  811.       bTransliterate : Bool             { If TRUE, transliterate character data }
  812.    ): DBIResult;
  813.  
  814. function DbiCopyTable (                 { Copy one table to another }
  815.       hDb           : hDBIDb;           { Database handle }
  816.       bOverWrite    : Bool;             { True, to overwrite existing file }
  817.       pszSrcTableName : PChar;          { Source table name }
  818.       pszSrcDriverType : PChar;         { Source driver type }
  819.       pszDestTableName : PChar          { Destination table name }
  820.    ): DBIResult;
  821.  
  822. function DbiEmptyTable (                { Deletes all records }
  823.       hDb           : hDBIDb;           { Database handle }
  824.       hCursor       : hDBICur;          { Cursor (OR) }
  825.       pszTableName  : PChar;            { Table name }
  826.       pszDriverType : PChar             { Driver type /NULL }
  827.    ): DBIResult;
  828.  
  829. function DbiPackTable (                 { Pack a table }
  830.       hDb           : hDBIDb;           { Database handle }
  831.       hCursor       : hDBICur;          { Cursor (OR) }
  832.       pszTableName  : PChar;            { Table name }
  833.       pszDriverType : PChar;            { Driver type /NULL }
  834.       bRegenIdxs    : Bool              { Regenerate indexes }
  835.    ): DBIResult;
  836.  
  837. function DbiRegenIndex (                { Regenerate an index }
  838.       hDb           : hDBIDb;           { Database handle }
  839.       hCursor       : hDBICur;          { Cursor (OR) }
  840.       pszTableName  : PChar;            { Table name }
  841.       pszDriverType : PChar;            { Driver type /NULL }
  842.       pszIndexName  : PChar;            { Index name }
  843.       pszIndexTagName : PChar;          { Index tagname (xbase MDX) }
  844.       iIndexId      : Word              { Index number }
  845.    ): DBIResult;
  846.  
  847. function DbiRegenIndexes (              { Regenerate all indexes }
  848.       hCursor       : hDBICur           { Cursor }
  849.    ): DBIResult;
  850.  
  851. function DbiSortTable (                 { Sort table }
  852.       hDb           : hDBIDb;           { Database handle }
  853.       pszTableName  : PChar;            { Table name of source }
  854.       pszDriverType : PChar;            { Driver type /NULL }
  855.       hSrcCur       : hDBICur;          { OR cursor of table to sort }
  856.       pszSortedName : PChar;            { Destination table (NULL if sort to self) }
  857.       phSortedCur   : phDBICur;         { If non-null, return cursor on destination }
  858.       hDstCur       : hDBICur;          { OR cursor of destination }
  859.       iSortFields   : Word;             { Number of sort fields }
  860.       piFieldNum    : PWord;            { Array of field numbers }
  861.       pbCaseInsensitive : PBool;        { Which fields should sort c-i (Opt) }
  862.       pSortOrder    : pSORTOrder;       { Array of Sort orders (Opt) }
  863.       ppfSortFn     : ppfSORTCompFn;    { Array of compare fn pntrs (Opt) }
  864.       bRemoveDups   : Bool;             { TRUE : Remove duplicates }
  865.       hDuplicatesCur : hDBICur;         { Cursor to duplicates table (Opt) }
  866. var   lRecsSort     : Longint           { in/out param. - sort this number }
  867.    ): DBIResult;
  868.  
  869.  
  870. {============================================================================}
  871. {                           Create & Restructure                             }
  872. {============================================================================}
  873.  
  874. function DbiCreateTable (               { Create a new table }
  875.       hDb           : hDBIDb;           { Database handle }
  876.       bOverWrite    : Bool;             { True, to overwrite existing file. }
  877. var   crTblDsc      : CRTblDesc         { Table description }
  878.    ): DBIResult;
  879.  
  880. function DbiCreateInMemTable (          { Create a temporary table (Logical) }
  881.       hDb           : hDBIDb;           { Database handle }
  882.       pszName       : PChar;            { Logical Name }
  883.       iFields       : Word;             { No of fields }
  884.       pfldDesc      : pFLDDesc;         { Array of field descriptors }
  885. var   hCursor       : hDBICur           { Returned cursor handle }
  886.    ): DBIResult;
  887.  
  888. function DbiCreateTempTable (           { Create temporary table (Physical) }
  889.       hDb           : hDBIDb;           { Database handle }
  890. var   crTblDsc      : CRTblDesc;        { Table description }
  891. var   hCursor       : hDBICur           { Returned cursor on table }
  892.    ): DBIResult;
  893.  
  894. function DbiDoRestructure (             { Restructure a table }
  895.       hDb           : hDBIDb;           { Database handle }
  896.       iTblDescCount : Word;             { Number of table descriptors (1) }
  897.       pTblDesc      : pCRTblDesc;       { Array of table descs }
  898.       pszSaveAs     : PChar;            { Restructure to this table }
  899.       pszKeyviolName : PChar;           { Keyviol table name  (optional) }
  900.       pszProblemsName : PChar;          { Problems table name (optional) }
  901.       bAnalyzeOnly  : Bool              { Analyze restructure }
  902.    ): DBIResult;
  903.  
  904. function DbiRenameTable (               { Rename table & family }
  905.       hDb           : hDBIDb;           { Database handle }
  906.       pszOldName    : PChar;            { Old name }
  907.       pszDriverType : PChar;            { Driver type /NULL }
  908.       pszNewName    : PChar             { New name }
  909.    ): DBIResult;
  910.  
  911. function DbiDeleteTable (               { Delete a table }
  912.       hDb           : hDBIDb;           { Database handle }
  913.       pszTableName  : PChar;            { Name including any path }
  914.       pszDriverType : PChar             { Driver type /NULL }
  915.    ): DBIResult;
  916.  
  917. function DbiAddIndex (                  { Add a new index }
  918.       hDb           : hDBIDb;           { Database handle }
  919.       hCursor       : hDBICur;          { Cursor (OR) }
  920.       pszTableName  : PChar;            { Table name including any path }
  921.       pszDriverType : PChar;            { Driver type /NULL }
  922. var   IdxDesc       : IDXDesc;          { Description of the index }
  923.       pszKeyviolName : PChar            { Keyviol table name (optional) }
  924.    ): DBIResult;
  925.  
  926. function DbiDeleteIndex (               { Delete index }
  927.       hDb           : hDBIDb;           { Database handle }
  928.       hCursor       : hDBICur;          { Cursor (OR) }
  929.       pszTableName  : PChar;            { Table name }
  930.       pszDriverType : PChar;            { Driver type /NULL }
  931.       pszIndexName  : PChar;            { Index name }
  932.       pszIndexTagName : PChar;          { Index tagname (xbase MDX) }
  933.       iIndexId      : Word              { Index number }
  934.    ): DBIResult;
  935.  
  936. {===========================================================================}
  937. {                            Error Info                                     }
  938. {===========================================================================}
  939.  
  940. function DbiGetErrorEntry (             { Get error entry }
  941.       uEntry        : Word;             { Error stack entry }
  942. var   ulNativeError : Longint;          { Returned. Native error code, if any }
  943.       pszError      : PChar             { Returned. Error string, if any }
  944.    ): DBIResult;
  945.  
  946. function DbiGetErrorInfo (              { Return info on last error }
  947.       bFull         : Bool;             { If Full details }
  948. var   ErrInfo       : DBIErrInfo        { Error Info }
  949.    ): DBIResult;
  950.  
  951. function DbiGetErrorString (            { Get message for error code }
  952.       rslt          : DBIResult;        { Engine error code }
  953.       pszError      : PChar             { Error string for the error }
  954.    ): DBIResult;
  955.  
  956. function DbiGetErrorContext (           { Get specific Context if available }
  957.       eContext      : Integer;          { Context type }
  958.       pszContext    : PChar             { Context string (MAXMSGLEN +1) }
  959.    ): DBIResult;
  960.  
  961. {============================================================================}
  962. {                              Dbi Services                                  }
  963. {============================================================================}
  964.  
  965. function DbiDateEncode (                { Encode Date components into Date }
  966.       iMon          : Word;             { Month    (1..12) }
  967.       iDay          : Word;             { Day      (1..31) }
  968.       iYear         : Integer;         { Year     (0..2**16-1) }
  969. var   dateD         : DbiDate           { Encoded date }
  970.    ): DBIResult;
  971.  
  972. function DbiDateDecode (                { Decode Date into components }
  973.       dateD         : DbiDate;          { Encoded Date }
  974. var   iMon          : Word;             { Month }
  975. var   iDay          : Word;             { Day }
  976. var   iYear         : Integer          { Year }
  977.    ): DBIResult;
  978.  
  979. function DbiTimeEncode (                { Encode Time components into TIME }
  980.       iHour         : Word;             { Hours (0..23) }
  981.       iMin          : Word;             { Minutes (0..59) }
  982.       iMilSec       : Word;             { Milli Seconds (0..59999) }
  983. var   timeT         : Time              { Encoded Time }
  984.    ): DBIResult;
  985.  
  986. function DbiTimeDecode (                { Decode TIME into components }
  987.       timeT         : Time;             { Encoded Time }
  988. var   iHour         : Word;             { Hours (0..23) }
  989. var   iMin          : Word;             { Minutes (0..59) }
  990. var   iMilSec       : Word              { Milli Seconds (0..59999) }
  991.    ): DBIResult;
  992.  
  993. function DbiTimeStampEncode (           { Encode Date & TIme into Date+Time }
  994.       dateD         : DbiDate;          { Encoded Date }
  995.       timeT         : Time;             { Encoded Time }
  996. var   tsTS          : TimeStamp         { Encoded Date+Time }
  997.    ): DBIResult;
  998.  
  999. function DbiTimeStampDecode (           { Decode Date & Time from Date+Time }
  1000.       tsTS          : TIMESTAMP;        { Encoded Date+Time }
  1001. var   dateD         : DbiDate;          { Encoded Date }
  1002. var   timeT         : Time              { Encoded Time }
  1003.    ): DBIResult;
  1004.  
  1005.  
  1006. function DbiBcdFromFloat (              { Converts FLOAT number into FMTBcd format }
  1007. var   iVal          : Double;           { Float to convert }
  1008.       iPrecision    : Word;             { Precision of BCD }
  1009.       iPlaces       : Word;             { Number of decimals }
  1010. var   Bcd           : FMTBcd            { returns Bcd number (length = iPrecision +2) }
  1011.    ): DBIResult;
  1012.  
  1013. function DbiBcdToFloat (                { Converts FMTBcd number to FLOAT }
  1014. var   Bcd           : FMTBcd;           { Bcd number to convert }
  1015. var   iVal          : Double            { Returns converted float }
  1016.    ): DBIResult;
  1017.  
  1018. {===========================================================================}
  1019. {                           CallBacks                                       }
  1020. {===========================================================================}
  1021.  
  1022. function DbiRegisterCallBack (          { Register a call back fn }
  1023.       hCursor       : hDBICur;          { Cursor (Optional) }
  1024.       ecbType       : CBType;           { Type of call back }
  1025.       iClientData   : Longint;          { Pass-thru client data }
  1026.       iCbBufLen     : Word;             { Callback buffer len }
  1027.       CbBuf         : Pointer;          { Pointer to callback buffer }
  1028.       pfCb          : pfDBICallBack     { Call back fn being registered }
  1029.    ): DBIResult;
  1030.  
  1031. function DbiGetCallBack (               { Register a call back fn }
  1032.       hCursor       : hDBICur;          { Cursor (Optional) }
  1033.       ecbType       : CBType;           { Type of call back }
  1034. var   iClientData   : Longint;          { Pass-thru client data }
  1035. var   iCbBufLen     : Word;             { Callback buffer len }
  1036. var   pCbBuf        : Pointer;          { Pointer to callback buffer }
  1037.       ppfCb         : ppfDBICallBack    { Call back fn being registered }
  1038.    ): DBIResult;
  1039.  
  1040. {============================================================================}
  1041. {                           Date, time formats                                 }
  1042. {============================================================================}
  1043.  
  1044.  
  1045. function DbiGetDateFormat (             { Get current date format }
  1046. var   fmtDate       : FMTDate
  1047.    ): DBIResult;
  1048.  
  1049. function DbiSetDateFormat (             { Set current date format }
  1050. var   fmtDate       : FMTDate
  1051.    ): DBIResult;
  1052.  
  1053. function DbiGetTimeFormat (             { Get current time format }
  1054. var   fmtTime       : FMTTime
  1055.    ): DBIResult;
  1056.  
  1057. function DbiSetTimeFormat (             { Set current time format }
  1058. var   fmtTime       : FMTTime
  1059.    ): DBIResult;
  1060.  
  1061. function DbiGetNumberFormat (           { Get current number format }
  1062. var   fmtNumber     : FMTNumber
  1063.    ): DBIResult;
  1064.  
  1065. function DbiSetNumberFormat (           { Set current number format }
  1066. var   fmtNumber     : FMTNumber
  1067.    ): DBIResult;
  1068.  
  1069. {============================================================================}
  1070. {                      Conversions                                           }
  1071. {============================================================================}
  1072.  
  1073. function DbiNativeToAnsi (              { Convert from native to Ansi }
  1074.       LdObj         : Pointer;          { Language driver }
  1075.       pAnsiStr      : PChar;            { Destination buffer (opt) }
  1076.       pNativeStr    : PChar;            { Source buffer }
  1077.       iLen          : Word;             { Length of buffer (opt) }
  1078. var   bDataLoss     : Bool              { Returns TRUE if conversion will loose data (opt) }
  1079.    ): DBIResult;
  1080.  
  1081. function DbiAnsiToNative (              { Convert from Ansi to native }
  1082.       LdObj         : Pointer;          { Language driver }
  1083.       pNativeStr    : PChar;            { Destination buffer (opt) }
  1084.       pAnsiStr      : PChar;            { Source buffer }
  1085.       iLen          : Word;             { Length of buffer (opt) }
  1086. var   bDataLoss     : Bool              { Returns TRUE if conversion will loose data (opt) }
  1087.    ): DBIResult;
  1088.  
  1089. {============================================================================}
  1090. {                            Filters                                         }
  1091. {============================================================================}
  1092.  
  1093. function DbiAddFilter (                 { Add a filter to the cursor }
  1094.       hCursor       : hDBICur;          { Cursor handle }
  1095.       iClientData   : Longint;          { Client supplied data      (opt) }
  1096.       iPriority     : Word;             { 1..N with 1 being highest (opt) }
  1097.       bCanAbort     : Bool;             { TRUE if pfFiltercan return ABORT (opt) }
  1098.       pcanExpr      : pCANExpr;         { Expression tree        (opt) }
  1099.       pfFilter      : pfGENFilter;      { ptr to filter function (opt) }
  1100. var   hFilter       : hDBIFilter        { Returns filter handle }
  1101.    ): DBIResult;
  1102.  
  1103. function DbiDropFilter (                { Drop a filter }
  1104.       hCursor       : hDBICur;          { Cursor handle }
  1105.       hFilter       : hDBIFilter        { Filter handle }
  1106.    ): DBIResult;
  1107.  
  1108. function DbiActivateFilter (            { Activate a Filter }
  1109.       hCursor       : hDBICur;          { Cursor handle }
  1110.       hFilter       : hDBIFilter        { Filter handle }
  1111.    ): DBIResult;
  1112.  
  1113. function DbiDeactivateFilter (          { Deactivate Filter }
  1114.       hCursor       : hDBICur;          { Cursor handle }
  1115.       hFilter       : hDBIFilter        { Filter handle }
  1116.    ): DBIResult;
  1117.  
  1118. function DbiGetFilterInfo (             { Get filter information }
  1119.       hCur          : hDBICur;          { Cursor handle }
  1120.       hFilter       : hDBIFilter;       { Filter handle          /NULL }
  1121.       iFilterId     : Word;             { Filter id              /0 }
  1122.       iFilterSeqNo  : Word;             { Filter sequence number /0 }
  1123. var   Filterinfo    : FilterInfo        { Returns filter info }
  1124.    ): DBIResult;
  1125.  
  1126. {============================================================================}
  1127. {                            Linked Cursors                                  }
  1128. {============================================================================}
  1129.  
  1130. function DbiBeginLinkMode (             { Convert cursor to a link cursor }
  1131. var   hCursor       : hDBICur           { In/Out : returns new cursor }
  1132.    ): DBIResult;
  1133.  
  1134. function DbiEndLinkMode (               { Convert cursor back to normal cursor }
  1135. var   hCursor       : hDBICur           { In/Out : returns original cursor }
  1136.    ): DBIResult;
  1137.  
  1138. function DbiLinkDetail (                { Link detail to master }
  1139.       hMstrCursor   : hDBICur;          { Master cursor }
  1140.       hDetlCursor   : hDBICur;          { Detail cursor }
  1141.       iLnkFields    : Word;             { Number of link fields }
  1142.       piMstrFields  : PWord;            { Array of fields in master }
  1143.       piDetlFields  : PWord             { Array of fields in detail }
  1144.    ): DBIResult;
  1145.  
  1146. function DbiLinkDetailToExp (           { Link detail to a master using exp }
  1147.       hCursorMstr   : hDBICur;          { Master cursor }
  1148.       hCursorDetl   : hDBICur;          { Detail cursor }
  1149.       iKeyLen       : Word;             { Key length to match }
  1150.       pszMstrExp    : PChar             { Expression string }
  1151.    ): DBIResult;
  1152.  
  1153. function DbiUnlinkDetail (              { Unlink detail from master }
  1154.       hDetlCursor   : hDBICur           { Detail cursor to unlink }
  1155.    ): DBIResult;
  1156.  
  1157. function DbiGetLinkStatus (             { Query linkage info for table }
  1158.       hCursor       : hDBICur;          { Cursor handle }
  1159. var   hCursorMstr   : hDBICur;          { Returns master cursor, if any   (opt) }
  1160. var   hCursorDet    : hDBICur;          { Returns first detail cursor, if any (opt) }
  1161. var   hCursorSib    : hDBICur           { Returns next sibling detail cursor, if any (opt) }
  1162.    ): DBIResult;
  1163.  
  1164.  
  1165. {===========================================================================}
  1166. {                            Translation                                    }
  1167. {===========================================================================}
  1168.  
  1169.  
  1170. function DbiTranslateRecordStructure (  { Translate a record }
  1171.       pszSrcDriverType : PChar;         { Source driver type }
  1172.       iFlds         : Word;             { Number of fields }
  1173.       pfldsSrc      : pFLDDesc;         { Array of source fields: logical or physical types }
  1174.       pszDstDriverType : PChar;         { Destination driver type }
  1175.       pszLangDriver : PChar;            { Language driver for destination }
  1176.       pfldsDst      : pFLDDesc          { Array of dest. fields returned }
  1177.    ): DBIResult;
  1178.  
  1179. function DbiOpenFieldXlt (              { Open translation object }
  1180.       pszSrcTblType : PChar;            { NULL for Logical }
  1181.       pszSrcLangDrv : PChar;            { NULL if no tranliteration }
  1182.       pfldSrc       : pFLDDesc;         { source field descriptor }
  1183.       pszDestTblType : PChar;           { NULL for Logical }
  1184.       pszDstLangDrv : PChar;            { NULL if no tranliteration }
  1185.       pfldDest      : pFLDDesc;         { Source field descriptor }
  1186. var   bDataLoss     : Bool;             { Set to TRUE, for data loss }
  1187. var   hXlt          : hDBIXlt           { Returned translate handle }
  1188.    ): DBIResult;
  1189.  
  1190. function DbiTranslateField (            { Translate a field }
  1191.       hXlt          : hDBIXlt;          { Translation handle }
  1192.       pSrc          : Pointer;          { Source field }
  1193.       pDest         : Pointer           { Destination field }
  1194.    ): DBIResult;
  1195.  
  1196. function DbiCloseFieldXlt (             { Close translation object }
  1197.       hXlt          : hDBIXlt           { Translation handle }
  1198.    ): DBIResult;
  1199.  
  1200.  
  1201. {===========================================================================}
  1202. {                                 MISC.                                     }
  1203. {===========================================================================}
  1204.  
  1205.  
  1206. function DbiGetTableOpenCount (         {  Get local cursor count }
  1207.       hDb           : hDBIDb;           { Database }
  1208.       pszTableName  : PChar;            { Table name }
  1209.       pszDriverType : PChar;            { Driver type /NULL }
  1210. var   iOpenCount    : Word              { returned number of cursors }
  1211.    ): DBIResult;
  1212.  
  1213. function DbiUseIdleTime: DBIResult;
  1214.  
  1215. function DbiGetLdObj (                  { Get language driver }
  1216.       hCursor       : hDBICur;          { Cursor handle }
  1217. var   pLdObj        : Pointer           { Returned language driver object }
  1218.    ): DBIResult;
  1219.  
  1220. function DbiGetLdName (                 { Get language driver name from table }
  1221.       pszDriver     : PChar;            { Driver name }
  1222.       pObjName      : PChar;            { Name of object, i.e. table name }
  1223.       pLdName       : PChar             { Returned language driver name }
  1224.    ): DBIResult;
  1225.  
  1226. function DbiFormFullName (              { Form Full Name }
  1227.       hDb           : hDBIDb;           { Database handle }
  1228.       pszTableName  : PChar;            { Table name }
  1229.       pszDriverType : PChar;            { Driver type /NULL }
  1230.       pszFullName   : PChar             { Returns full name }
  1231.    ): DBIResult;
  1232.  
  1233. function DbiAddPassword (               { Add a password to current session }
  1234.       pszPassword   : PChar             { Password }
  1235.    ): DBIResult;
  1236.  
  1237. function DbiDropPassword (              { Drop a password from current session }
  1238.       pszPassword   : PChar             { password/NULL }
  1239.    ): DBIResult;
  1240.  
  1241. function DbiGetNetUserName (            { Get network username }
  1242.       pszNetUserName : PChar            { Returns username }
  1243.    ): DBIResult;
  1244.  
  1245.  
  1246. function DbiDebugLayerOptions (         { Get SDK debug layer options }
  1247.       iOption       : Word;             { Option }
  1248.       pDebugFile    : PChar
  1249.    ): DBIResult;
  1250.  
  1251. function DbiOpenCfgInfoList (           { Open a cursor on "Config" }
  1252.       hCfg          : hDBICfg;          { NULL }
  1253.       eOpenMode     : DBIOpenMode;      { ReadWrite or readonly }
  1254.       eConfigMode   : CFGMode;          { Config mode }
  1255.       pszCfgPath    : PChar;            { Path }
  1256. var   hCur          : hDBICur           { Returned cursor }
  1257.    ): DBIResult;
  1258.  
  1259. function DbiAddAlias (                  { Add a new alias }
  1260.       hCfg          : hDBICfg;          { Config Handle/NULL }
  1261.       pszAliasName  : PChar;            { Alias name }
  1262.       pszDriverType : PChar;            { Driver type for alias }
  1263.       pszParams     : PChar;            { Optional parameters }
  1264.       bPersist      : Bool              { Persistent or session relative }
  1265.    ): DBIResult;
  1266.  
  1267. function DbiDeleteAlias (               { Delete an alias }
  1268.       hCfg          : hDBICfg;          { Config Handle/NULL }
  1269.       pszAliasName  : PChar             { Alias name }
  1270.    ): DBIResult;
  1271.  
  1272.  
  1273.  
  1274.  
  1275. {===========================================================================}
  1276. {                      Query Management                                     }
  1277. {===========================================================================}
  1278.  
  1279. function DbiQExecDirect (               { Execute query }
  1280.       hDb           : hDBIDb;           { Database handle }
  1281.       eQryLang      : DBIQryLang;       { Query language }
  1282.       pszQuery      : PChar;            { Query }
  1283.       phCur         : phDBICur          { Returned cursor on result set }
  1284.    ): DBIResult;
  1285.  
  1286. function DbiQPrepare (                  { Prepare a query }
  1287.       hDb           : hDBIDb;           { Database handle }
  1288.       eQryLang      : DBIQryLang;       { Query language }
  1289.       pszQuery      : PChar;            { Query }
  1290. var   hStmt         : hDBIStmt          { Returned statment handle }
  1291.    ): DBIResult;
  1292.  
  1293. function DbiQPrepareExt (               { Prepare a query }
  1294.       hDb           : hDBIDb;           { Database handle }
  1295.       eQryLang      : DBIQryLang;       { Query language }
  1296.       pszQuery      : PChar;            { Query }
  1297.       propBits      : Word;             { properties for Prepare, e.g. qprepFORUPDATE }
  1298. var   hStmt         : hDBIStmt          { Returned statment handle }
  1299.    ): DBIResult;
  1300.  
  1301. function DbiQExec (                     { Execute prepared query }
  1302.       hStmt         : hDBIStmt;         { Statement handle }
  1303.       phCur         : phDBICur          { Returned handle on result set }
  1304.    ): DBIResult;
  1305.  
  1306. function DbiQFree (                     { Free statement handle }
  1307. var   hStmt         : hDBIStmt          { Statement handle }
  1308.    ): DBIResult;
  1309.  
  1310. function DbiQSetParams (                { Set query options }
  1311.       hStmt         : hDBIStmt;         { Statement handle }
  1312.       uFldDescs     : Word;             { Number of parameter field descriptors }
  1313.       paFldDescs    : pFLDDesc;         { Array of parameter field descriptors }
  1314.       pRecBuff      : Pointer           { Record buffer }
  1315.    ): DBIResult;
  1316.  
  1317. function DbiQInstantiateAnswer (        { Create answer table }
  1318.       hStmt         : hDBIStmt;         { Statement Handle }
  1319.       hCur          : hDBICur;          { Cursor Handle }
  1320.       pszAnswerName : PChar;            { Answer Table Name/NULL }
  1321.       pszAnswerType : PChar;            { Answer Table Type/NULL }
  1322.       bOverWrite    : Bool;             { Overwrite Flag }
  1323. var   hCur          : hDBICur           { cursor to instantiated table (output)(optional) }
  1324.    ): DBIResult;
  1325.  
  1326. function DbiQExecProcDirect (           { Direct execution of stored procedure }
  1327.       hDb           : hDBIDb;           { Database handle }
  1328.       pszProc       : PChar;            { Stored procedure name }
  1329.       uParamDescs   : Word;             { Number of parameter descriptors }
  1330.       paParamDescs  : pSPParamDesc;     { Array of parameter descriptors }
  1331.       pRecBuff      : Pointer;          { Record buffer }
  1332. var   hCur          : hDBICur           { Returned handle on result set }
  1333.    ): DBIResult;
  1334.  
  1335. function DbiQPrepareProc (              { Prepare a stored procedure }
  1336.       hDb           : hDBIDb;           { Database handle }
  1337.       pszProc       : PChar;            { Stored procedure name }
  1338.       uParamDescs   : Word;             { Number of parameter descriptors }
  1339.       paParamDescs  : pSPParamDesc;     { Array of parameter descriptors }
  1340.       pRecBuff      : Pointer;          { Record buffer }
  1341. var   hStmt         : hDBIStmt          { Returned statment handle }
  1342.    ): DBIResult;
  1343.  
  1344. function DbiQSetProcParams (            { Set procedure params }
  1345.       hStmt         : hDBIStmt;         { Statement handle }
  1346.       uParamDescs   : Word;             { Number of parameter descriptors }
  1347.       paParamDescs  : pSPParamDesc;     { Array of parameter descriptors }
  1348.       pRecBuff      : Pointer           { Record buffer }
  1349.    ): DBIResult;
  1350.  
  1351.  
  1352. implementation
  1353.  
  1354. function DbiInit(pEnv: PDBIEnv): DbiResult;
  1355. begin
  1356.   DbiInit := DbiInitFn(DbiINTFVER, pEnv);
  1357. end;
  1358.  
  1359. {$L IDPAS01.OBJ}
  1360. {$L INTFPAS.OBJ}
  1361. {$L DBI.OBJ}
  1362. function DBIINITFN;                     external;
  1363. function DBIEXIT;                       external;
  1364. function DBIGETSYSVERSION;              external;
  1365. function DBIGETSYSCONFIG;               external;
  1366. function DBIGETCLIENTINFO;              external;
  1367. function DBIGETSYSINFO;                 external;
  1368. function DBILOADDRIVER;                 external;
  1369. function DBISTARTSESSION;               external;
  1370. function DBIGETCURRSESSION;             external;
  1371. function DBISETCURRSESSION;             external;
  1372. function DBICLOSESESSION;               external;
  1373. function DBIGETSESINFO;                 external;
  1374. function DBISETPRIVATEDIR;              external;
  1375. function DBIOPENDATABASE;               external;
  1376. function DBISETDIRECTORY;               external;
  1377. function DBIGETDIRECTORY;               external;
  1378. function DBIOPENTABLELIST;              external;
  1379. function DBIOPENFILELIST;               external;
  1380. function DBIOPENINDEXLIST;              external;
  1381. function DBIOPENFIELDLIST;              external;
  1382. function DBIOPENVCHKLIST;               external;
  1383. function DBIOPENRINTLIST;               external;
  1384. function DBIOPENSECURITYLIST;           external;
  1385. function DBIOPENFAMILYLIST;             external;
  1386. function DBIOPENSPLIST;                 external;
  1387. function DBIOPENSPPARAMLIST;            external;
  1388. function DBICLOSEDATABASE;              external;
  1389. function DBIOPENDRIVERLIST;             external;
  1390. function DBIGETDRIVERDESC;              external;
  1391. function DBIOPENDATABASELIST;           external;
  1392. function DBIGETDATABASEDESC;            external;
  1393. function DBIOPENTABLETYPESLIST;         external;
  1394. function DBIGETTABLETYPEDESC;           external;
  1395. function DBIOPENFIELDTYPESLIST;         external;
  1396. function DBIGETFIELDTYPEDESC;           external;
  1397. function DBIOPENINDEXTYPESLIST;         external;
  1398. function DBIGETINDEXTYPEDESC;           external;
  1399. function DBIOPENLDLIST;                 external;
  1400. function DBIOPENTABLE;                  external;
  1401. function DBIGETCURSORPROPS;             external;
  1402. function DBIGETOBJFROMNAME;             external;
  1403. function DBIGETOBJFROMOBJ;              external;
  1404. function DBIGETPROP;                    external;
  1405. function DBISETPROP;                    external;
  1406. function DBIVALIDATEPROP;               external;
  1407. function DBIGETFIELDDESCS;              external;
  1408. function DBIGETCURSORFORTABLE;          external;
  1409. function DBICLONECURSOR;                external;
  1410. function DBICLOSECURSOR;                external;
  1411. function DBIOPENINDEX;                  external;
  1412. function DBICLOSEINDEX;                 external;
  1413. function DBISWITCHTOINDEX;              external;
  1414. function DBIGETINDEXDESC;               external;
  1415. function DBIGETINDEXDESCS;              external;
  1416. function DBIGETINDEXFORFIELD;           external;
  1417. function DBIGETINDEXSEQNO;              external;
  1418. function DBISETTOKEY;                   external;
  1419. function DBIEXTRACTKEY;                 external;
  1420. function DBISETRANGE;                   external;
  1421. function DBIRESETRANGE;                 external;
  1422. function DBICOMPAREKEYS;                external;
  1423. function DBIGETRECORDFORKEY;            external;
  1424. function DBIGETVCHKDESC;                external;
  1425. function DBIGETRINTDESC;                external;
  1426. function DBISETTOBEGIN;                 external;
  1427. function DBISETTOEND;                   external;
  1428. function DBISETTOCURSOR;                external;
  1429. function DBIGETBOOKMARK;                external;
  1430. function DBISETTOBOOKMARK;              external;
  1431. function DBICOMPAREBOOKMARKS;           external;
  1432. function DBIGETNEXTRECORD;              external;
  1433. function DBIGETPRIORRECORD;             external;
  1434. function DBIGETRECORD;                  external;
  1435. function DBIGETRELATIVERECORD;          external;
  1436. function DBIINITRECORD;                 external;
  1437. function DBIINSERTRECORD;               external;
  1438. function DBIMODIFYRECORD;               external;
  1439. function DBIDELETERECORD;               external;
  1440. function DBIREADBLOCK;                  external;
  1441. function DBIWRITEBLOCK;                 external;
  1442. function DBIAPPENDRECORD;               external;
  1443. function DBIUNDELETERECORD;             external;
  1444. function DBIGETSEQNO;                   external;
  1445. function DBISETTOSEQNO;                 external;
  1446. function DBIGETRECORDCOUNT;             external;
  1447. function DBISETTORECORDNO;              external;
  1448. function DBISAVECHANGES;                external;
  1449. function DBIFORCEREREAD;                external;
  1450. function DBICHECKREFRESH;               external;
  1451. function DBIMAKEPERMANENT;              external;
  1452. function DBIGETFIELD;                   external;
  1453. function DBIPUTFIELD;                   external;
  1454. function DBIVERIFYFIELD;                external;
  1455. function DBIOPENBLOB;                   external;
  1456. function DBIGETBLOBSIZE;                external;
  1457. function DBIGETBLOB;                    external;
  1458. function DBIPUTBLOB;                    external;
  1459. function DBITRUNCATEBLOB;               external;
  1460. function DBIFREEBLOB;                   external;
  1461. function DBIGETBLOBHEADING;             external;
  1462. function DBISETFIELDMAP;                external;
  1463. function DBIBEGINTRAN;                  external;
  1464. function DBIENDTRAN;                    external;
  1465. function DBIGETTRANINFO;                external;
  1466. function DBIACQTABLELOCK;               external;
  1467. function DBIACQPERSISTTABLELOCK;        external;
  1468. function DBIRELPERSISTTABLELOCK;        external;
  1469. function DBIRELTABLELOCK;               external;
  1470. function DBIRELRECORDLOCK;              external;
  1471. function DBIISRECORDLOCKED;             external;
  1472. function DBIISTABLELOCKED;              external;
  1473. function DBIISTABLESHARED;              external;
  1474. function DBIOPENLOCKLIST;               external;
  1475. function DBIOPENUSERLIST;               external;
  1476. function DBISETLOCKRETRY;               external;
  1477. function DBIBATCHMOVE;                  external;
  1478. function DBICOPYTABLE;                  external;
  1479. function DBIEMPTYTABLE;                 external;
  1480. function DBIPACKTABLE;                  external;
  1481. function DBIREGENINDEX;                 external;
  1482. function DBIREGENINDEXES;               external;
  1483. function DBISORTTABLE;                  external;
  1484. function DBICREATETABLE;                external;
  1485. function DBICREATEINMEMTABLE;           external;
  1486. function DBICREATETEMPTABLE;            external;
  1487. function DBIDORESTRUCTURE;              external;
  1488. function DBIRENAMETABLE;                external;
  1489. function DBIDELETETABLE;                external;
  1490. function DBIADDINDEX;                   external;
  1491. function DBIDELETEINDEX;                external;
  1492. function DBIGETERRORENTRY;              external;
  1493. function DBIGETERRORINFO;               external;
  1494. function DBIGETERRORSTRING;             external;
  1495. function DBIGETERRORCONTEXT;            external;
  1496. function DBIDATEENCODE;                 external;
  1497. function DBIDATEDECODE;                 external;
  1498. function DBITIMEENCODE;                 external;
  1499. function DBITIMEDECODE;                 external;
  1500. function DBITIMESTAMPENCODE;            external;
  1501. function DBITIMESTAMPDECODE;            external;
  1502. function DBIBCDFROMFLOAT;               external;
  1503. function DBIBCDTOFLOAT;                 external;
  1504. function DBIREGISTERCALLBACK;           external;
  1505. function DBIGETCALLBACK;                external;
  1506. function DBIGETDATEFORMAT;              external;
  1507. function DBISETDATEFORMAT;              external;
  1508. function DBIGETTIMEFORMAT;              external;
  1509. function DBISETTIMEFORMAT;              external;
  1510. function DBIGETNUMBERFORMAT;            external;
  1511. function DBISETNUMBERFORMAT;            external;
  1512. function DBINATIVETOANSI;               external;
  1513. function DBIANSITONATIVE;               external;
  1514. function DBIADDFILTER;                  external;
  1515. function DBIDROPFILTER;                 external;
  1516. function DBIACTIVATEFILTER;             external;
  1517. function DBIDEACTIVATEFILTER;           external;
  1518. function DBIGETFILTERINFO;              external;
  1519. function DBIBEGINLINKMODE;              external;
  1520. function DBIENDLINKMODE;                external;
  1521. function DBILINKDETAIL;                 external;
  1522. function DBILINKDETAILTOEXP;            external;
  1523. function DBIUNLINKDETAIL;               external;
  1524. function DBIGETLINKSTATUS;              external;
  1525. function DBITRANSLATERECORDSTRUCTURE;   external;
  1526. function DBIOPENFIELDXLT;               external;
  1527. function DBITRANSLATEFIELD;             external;
  1528. function DBICLOSEFIELDXLT;              external;
  1529. function DBIGETTABLEOPENCOUNT;          external;
  1530. function DBIUSEIDLETIME;                external;
  1531. function DBIGETLDOBJ;                   external;
  1532. function DBIGETLDNAME;                  external;
  1533. function DBIFORMFULLNAME;               external;
  1534. function DBIADDPASSWORD;                external;
  1535. function DBIDROPPASSWORD;               external;
  1536. function DBIGETNETUSERNAME;             external;
  1537. function DBIDEBUGLAYEROPTIONS;          external;
  1538. function DBIOPENCFGINFOLIST;            external;
  1539. function DBIQEXECDIRECT;                external;
  1540. function DBIQPREPARE;                   external;
  1541. function DBIQEXEC;                      external;
  1542. function DBIQFREE;                      external;
  1543. function DBIQSETPARAMS;                 external;
  1544. function DBIQPREPAREEXT;                external;
  1545. function DbiQInstantiateAnswer;         external;
  1546. function DbiQExecProcDirect;            external;
  1547. function DbiQPrepareProc;               external;
  1548. function DbiQSetProcParams;             external;
  1549. function DbiAddAlias;                   external;
  1550. function DbiDeleteAlias;                external;
  1551.  
  1552.  
  1553. end.
  1554.