{
}
{$ifdef FPC}{$MODE objfpc}{$MACRO on}{$endif}

interface

{$IFDEF LinkDynamically}
uses
 {$ifdef FPC}Dynlibs,{$else}{$endif} sysutils, msetypes{msestrings},msectypes;

const
 {$define cvcall}
{$ifdef mswindows}
 {$define wincall}
 fbembedlib: array[0..0] of filenamety = ('fbembed.dll');
 fbcgdslib: array[0..1] of filenamety = ('fbclient.dll','gds32.dll');
{$else}
 fbembedlib: array[0..4] of filenamety = (
           'libfbembed.so.2.5','libfbembed.so.2.1','libfbembed.so.2',
                                          'libfbembed.so.1','libfbembed.so');
 fbcgdslib: array[0..3] of filenamety = ('libfbclient.so.2',
                          'libfbclient.so.1','libfbclient.so','libgds.so');
{$endif}

var
 useembeddedfirebird : boolean = false;

procedure initializeibase60(const sonames: array of filenamety); 
                                     //[] = default
procedure releaseibase60;

{$ENDIF}
(*
{$DEFINE extdeclvararg:= cdecl}

{$IFDEF Unix}
  {$DEFINE extdecl:=cdecl}
{
  const
    gdslib = 'libgds.so';
    fbclib = 'libfbclient.so';
    fbembedlib = 'libfbembed.so';
}
{$ENDIF}
{$IFDEF Win32}
  {$DEFINE extdecl:=stdcall}
{
  const
    gdslib = 'gds32.dll';
    fbclib = 'fbclient.dll';
    fbembedlib = 'fbembed.dll';
}
{$ENDIF}
{$IFDEF Wince}
  {$DEFINE extdecl:=stdcall}
{
  const
    gdslib = 'gds32.dll';
    fbclib = 'fbclient.dll';
    fbembedlib = 'fbembed.dll';
}
{$ENDIF}

*)
type
  {  Unsigned types }

  UChar                = Byte;
  UShort               = Word;
  UInt                 = DWord;
  ULong                = DWord;

  { Signed types }

  Int                  = LongInt;
  Long                 = LongInt;
  Short                = SmallInt;
  Float                = Single;

  { Pointers to basic types }

  PInt                 = ^Int;
  PShort               = ^Short;
  PUShort              = ^UShort;
  PLong                = ^Long;
  PULong               = ^ULong;
  PFloat               = ^Float;
  PUChar               = ^UChar;
  PVoid                = ^Pointer;

{$ifdef FPC}
 {$PACKRECORDS C}
{$else}
 {$ALIGN 4}
 {$MINENUMSIZE 4}
{$endif}

  const
     ISC_TRUE = 1;
     ISC_FALSE = 0;
  const
     ISC__TRUE = ISC_TRUE;
     ISC__FALSE = ISC_FALSE;

Type
   ISC_USHORT    = word;
   ISC_STATUS    = ptrint; //defined as intptr_t in types_pub.h
   ISC_INT64     = int64;
   ISC_UINT64    = qword;
   ISC_LONG      = Longint;

   PISC_USHORT = ^ISC_USHORT;
   PISC_STATUS = ^ISC_STATUS;
   PPISC_STATUS = ^PISC_STATUS;
   PISC_INT64 = ^ISC_INT64;
   PISC_UINT64 = ^ISC_UINT64;
   PISC_LONG = ^ISC_LONG;

   {$IFDEF CPU64}
    FB_API_HANDLE = cuint;
   {$ELSE}
    FB_API_HANDLE = pointer;
   {$ENDIF}


  const
     {$IFDEF CPU64}
     FB_API_NULLHANDLE = 0;
     {$ELSE}
     FB_API_NULLHANDLE = nil;
     {$ENDIF}
     DSQL_close = 1;
     DSQL_drop = 2;

  {!!MVC
    Removed all ISC_FAR, ISC_EXPORT_VARARG and ISC_EXPORT
    macros.
    They confuse h2pas...
  !!MVC }
  {                                                                  }
  { Time & Date Support                                              }
  {                                                                  }
{$ifndef _ISC_TIMESTAMP_}

  type

     ISC_DATE = longint;
     ISC_TIME = dword;
     ISC_TIMESTAMP = record
          timestamp_date : ISC_DATE;
          timestamp_time : ISC_TIME;
       end;
     TISC_DATE = ISC_DATE;
     TISC_TIME = ISC_TIME;
     TISC_TIMESTAMP = ISC_TIMESTAMP;
     PISC_DATE = ^ISC_DATE;
     PISC_TIME = ^ISC_TIME;
     PISC_TIMESTAMP = ^ISC_TIMESTAMP;
  const
     _ISC_TIMESTAMP_ = 1;
{$endif}

  const
     ISC_TIME_SECONDS_PRECISION = 10000;
     ISC_TIME_SECONDS_PRECISION_SCALE = -4;
  {                                                                  }
  { Blob id structure                                                }
  {                                                                  }

Type

   GDS_QUAD = record
      gds_quad_high : ISC_LONG;
      gds_quad_low : ISC_LONG;
   end;
   TGDS_QUAD = GDS_QUAD;
   PGDS_QUAD = ^GDS_QUAD;

Type
     ISC_QUAD = GDS_QUAD;
     TISC_QUAD = ISC_QUAD;
     PISC_QUAD = ^ISC_QUAD;

{ !!field redefinitions !!
     isc_quad_high = gds_quad_high;
     isc_quad_low = gds_quad_low;
}

type

     ISC_ARRAY_BOUND = record
          array_bound_lower : smallint;
          array_bound_upper : smallint;
       end;
     TISC_ARRAY_BOUND = ISC_ARRAY_BOUND;
     PISC_ARRAY_BOUND = ^ISC_ARRAY_BOUND;

     ISC_ARRAY_DESC = record
          array_desc_dtype : byte;
          array_desc_scale : char;
          array_desc_length : word;
          array_desc_field_name : array[0..31] of char;
          array_desc_relation_name : array[0..31] of char;
          array_desc_dimensions : smallint;
          array_desc_flags : smallint;
          array_desc_bounds : array[0..15] of ISC_ARRAY_BOUND;
       end;
     TISC_ARRAY_DESC = ISC_ARRAY_DESC;
     PISC_ARRAY_DESC = ^ISC_ARRAY_DESC;

     ISC_BLOB_DESC = record
          blob_desc_subtype : smallint;
          blob_desc_charset : smallint;
          blob_desc_segment_size : smallint;
          blob_desc_field_name : array[0..31] of byte;
          blob_desc_relation_name : array[0..31] of byte;
       end;
     TISC_BLOB_DESC = ISC_BLOB_DESC;
     PISC_BLOB_DESC = ^ISC_BLOB_DESC ;
  {                          }
  { Blob control structure   }
  {                          }
  {!!MVC
  !!MVC }
  { Source filter  }
  {!!MVC
  !!MVC }
  { Argument to pass to source  }
  { filter  }
  { Target type  }
  { Source type  }
  { Length of buffer  }
  { Length of current segment  }
  { Length of blob parameter  }
  { block  }
  { Address of blob parameter  }
  { block  }
  { Address of segment buffer  }
  { Length of longest segment  }
  { Total number of segments  }
  { Total length of blob  }
  { Address of status vector  }
  { Application specific data  }
  TCTLSourceFunction  = function : isc_long;

     PISC_BLOB_CTL = ^ISC_BLOB_CTL ;
     ISC_BLOB_CTL = record
          ctl_source : TCTLSourceFunction;     //  was ISC_STATUS ( *ctl_source)();
          ctl_source_handle : pisc_blob_ctl  ; // was struct isc_blob_ctl  * ctl_source_handle;
          ctl_to_sub_type : smallint;
          ctl_from_sub_type : smallint;
          ctl_buffer_length : word;
          ctl_segment_length : word;
          ctl_bpb_length : word;
          ctl_bpb : Pchar;
          ctl_buffer : Pbyte;
          ctl_max_segment : ISC_LONG;
          ctl_number_segments : ISC_LONG;
          ctl_total_length : ISC_LONG;
          ctl_status : PISC_STATUS;
          ctl_data : array[0..7] of longint;
       end;
     TISC_BLOB_CTL = ISC_BLOB_CTL;

  {                          }
  { Blob stream definitions  }
  {                          }
  { Blob handle  }
  { Address of buffer  }
  { Next character  }
  { Length of buffer  }
  { Characters in buffer  }
  { (mode) ? OUTPUT : INPUT  }

     BSTREAM = record
          bstr_blob : pointer;
          bstr_buffer : Pchar;
          bstr_ptr : Pchar;
          bstr_length : smallint;
          bstr_cnt : smallint;
          bstr_mode : char;
       end;
     TBSTREAM = BSTREAM;
     PBstream = ^BSTREAM;
  {                          }
  { Dynamic SQL definitions  }
  {                          }
  {                             }
  { Declare the extended SQLDA  }
  {                             }
  { datatype of field  }
  { scale factor  }
  { datatype subtype - BLOBs & Text  }
  { types only  }
  { length of data area  }
  { address of data  }
  { address of indicator variable  }
  { length of sqlname field  }
  { name of field, name length + space  }
  { for NULL  }
  { length of relation name  }
  { field's relation name + space for  }
  { NULL  }
  { length of owner name  }
  { relation's owner name + space for  }
  { NULL  }
  { length of alias name  }
  { relation's alias name + space for  }
  { NULL  }

     XSQLVAR = record
          sqltype : smallint;
          sqlscale : smallint;
          sqlsubtype : smallint;
          sqllen : smallint;
          sqldata : Pchar;
          sqlind : Psmallint;
          sqlname_length : smallint;
          sqlname : array[0..31] of char;
          relname_length : smallint;
          relname : array[0..31] of char;
          ownname_length : smallint;
          ownname : array[0..31] of char;
          aliasname_length : smallint;
          aliasname : array[0..31] of char;
       end;
     TXSQLVAR = XSQLVAR;
     PXSQLVAR =^XSQLVAR;
  { version of this XSQLDA  }
  { XSQLDA name field  }
  { length in bytes of SQLDA  }
  { number of fields allocated  }
  { actual number of fields  }
  { first field address  }

     XSQLDA = record
          version : smallint;
          sqldaid : array[0..7] of char;
          sqldabc : ISC_LONG;
          sqln : smallint;
          sqld : smallint;
          sqlvar : array[0..0] of XSQLVAR;
       end;
     TXSQLDA = XSQLDA;
     PXSQLDA =^XSQLDA;

  function XSQLDA_LENGTH(n: Integer): Integer;


  const
     SQLDA_VERSION1 = 1;
  { meaning is same as DIALECT_xsqlda  }
     SQL_DIALECT_V5 = 1;
  { flagging anything that is delimited
                                              by double quotes as an error and
                                              flagging keyword DATE as an error  }
     SQL_DIALECT_V6_TRANSITION = 2;
  { supports SQL delimited identifier,
                                              SQLDATE/DATE, TIME, TIMESTAMP,
                                              CURRENT_DATE, CURRENT_TIME,
                                              CURRENT_TIMESTAMP, and 64-bit exact
                                              numeric type  }
     SQL_DIALECT_V6 = 3;
  { latest IB DIALECT  }
     SQL_DIALECT_CURRENT = SQL_DIALECT_V6;
  {                               }
  { InterBase Handle Definitions  }
  {                               }

  type
     isc_att_handle = FB_API_HANDLE;
     isc_blob_handle = FB_API_HANDLE;
     isc_db_handle = FB_API_HANDLE;
     isc_form_handle = FB_API_HANDLE;
     isc_req_handle = FB_API_HANDLE;
     isc_stmt_handle = FB_API_HANDLE;
     isc_svc_handle = FB_API_HANDLE;
     isc_tr_handle = FB_API_HANDLE;
     isc_win_handle = FB_API_HANDLE;
     isc_callback = procedure; {$ifdef wincall}cdecl{stdcall}{$else}cdecl{$endif};
     isc_versioncallback = procedure(user_arg: pointer; atext: pchar); 
                                {$ifdef wincall}cdecl{stdcall}{$else}cdecl{$endif};
     isc_resv_handle = ISC_LONG;
     tisc_att_handle = isc_att_handle;
     tisc_blob_handle = isc_blob_handle;
     tisc_db_handle = isc_db_handle;
     tisc_form_handle = isc_form_handle;
     tisc_req_handle = isc_req_handle;
     tisc_stmt_handle = isc_stmt_handle;
     tisc_svc_handle = isc_svc_handle;
     tisc_tr_handle = isc_tr_handle;
     tisc_win_handle = isc_win_handle;
     tisc_callback = isc_callback;
     tisc_resv_handle = isc_resv_handle;
     pisc_att_handle  =^isc_att_handle ;
     pisc_blob_handle  =^isc_blob_handle ;
     pisc_db_handle  =^isc_db_handle ;
     pisc_form_handle  =^isc_form_handle ;
     pisc_req_handle  =^isc_req_handle ;
     pisc_stmt_handle  =^isc_stmt_handle ;
     pisc_svc_handle  =^isc_svc_handle ;
     pisc_tr_handle  =^isc_tr_handle ;
     pisc_win_handle  =^isc_win_handle ;
     pisc_callback  = ^isc_callback;
     pisc_resv_handle  =^isc_resv_handle ;


  {                                    }
  { Security structures                }
  {                                    }

  const
     sec_uid_spec = $01;
     sec_gid_spec = $02;
     sec_server_spec = $04;
     sec_password_spec = $08;
     sec_group_name_spec = $10;
     sec_first_name_spec = $20;
     sec_middle_name_spec = $40;
     sec_last_name_spec = $80;
     sec_dba_user_name_spec = $100;
     sec_dba_password_spec = $200;
     sec_protocol_tcpip = 1;
     sec_protocol_netbeui = 2;
     sec_protocol_spx = 3;
     sec_protocol_local = 4;
  { which fields are specified  }
  { the user's id  }
  { the user's group id  }
  { protocol to use for connection  }
  { server to administer  }
  { the user's name  }
  { the user's password  }
  { the group name  }
  { the user's first name  }
  { the user's middle name  }
  { the user's last name  }
  { the dba user name  }
  { the dba password  }

  type

     USER_SEC_DATA = record
          sec_flags : smallint;
          uid : longint;
          gid : longint;
          protocol : longint;
          server : Pchar;
          user_name : Pchar;
          password : Pchar;
          group_name : Pchar;
          first_name : Pchar;
          middle_name : Pchar;
          last_name : Pchar;
          dba_user_name : Pchar;
          dba_password : Pchar;
       end;
     TUSER_SEC_DATA = USER_SEC_DATA;
     PUSER_SEC_DATA = ^USER_SEC_DATA;

  {                                                  }
  { Actions to pass to the blob filter (ctl_source)  }
  {                                                  }

  const
     isc_blob_filter_open = 0;
     isc_blob_filter_get_segment = 1;
     isc_blob_filter_close = 2;
     isc_blob_filter_create = 3;
     isc_blob_filter_put_segment = 4;
     isc_blob_filter_alloc = 5;
     isc_blob_filter_free = 6;
     isc_blob_filter_seek = 7;
  {                  }
  { Blr definitions  }
  {                  }
{$ifndef _JRD_BLR_H_}

  const
     blr_text = 14;
     blr_text2 = 15;
     blr_short = 7;
     blr_long = 8;
     blr_quad = 9;
     blr_int64 = 16;
     blr_float = 10;
     blr_double = 27;
     blr_d_float = 11;
     blr_timestamp = 35;
     blr_varying = 37;
     blr_varying2 = 38;
     blr_blob = 261;
     blr_cstring = 40;
     blr_cstring2 = 41;
     blr_blob_id = 45;
     blr_sql_date = 12;
     blr_sql_time = 13;
  { Historical alias for pre V6 applications  }
     blr_date = blr_timestamp;
     blr_inner = 0;
     blr_left = 1;
     blr_right = 2;
     blr_full = 3;
     blr_gds_code = 0;
     blr_sql_code = 1;
     blr_exception = 2;
     blr_trigger_code = 3;
     blr_default_code = 4;
     blr_version4 = 4;
     blr_version5 = 5;
     blr_eoc = 76;
     blr_end = 255;
     blr_assignment = 1;
     blr_begin = 2;
     blr_dcl_variable = 3;
     blr_message = 4;
     blr_erase = 5;
     blr_fetch = 6;
     blr_for = 7;
     blr_if = 8;
     blr_loop = 9;
     blr_modify = 10;
     blr_handler = 11;
     blr_receive = 12;
     blr_select = 13;
     blr_send = 14;
     blr_store = 15;
     blr_label = 17;
     blr_leave = 18;
     blr_store2 = 19;
     blr_post = 20;
     blr_literal = 21;
     blr_dbkey = 22;
     blr_field = 23;
     blr_fid = 24;
     blr_parameter = 25;
     blr_variable = 26;
     blr_average = 27;
     blr_count = 28;
     blr_maximum = 29;
     blr_minimum = 30;
     blr_total = 31;
     blr_add = 34;
     blr_subtract = 35;
     blr_multiply = 36;
     blr_divide = 37;
     blr_negate = 38;
     blr_concatenate = 39;
     blr_substring = 40;
     blr_parameter2 = 41;
     blr_from = 42;
     blr_via = 43;
     blr_user_name = 44;
     blr_null = 45;
     blr_eql = 47;
     blr_neq = 48;
     blr_gtr = 49;
     blr_geq = 50;
     blr_lss = 51;
     blr_leq = 52;
     blr_containing = 53;
     blr_matching = 54;
     blr_starting = 55;
     blr_between = 56;
     blr_or = 57;
     blr_and = 58;
     blr_not = 59;
     blr_any = 60;
     blr_missing = 61;
     blr_unique = 62;
     blr_like = 63;
     blr_stream = 65;
     blr_set_index = 66;
     blr_rse = 67;
     blr_first = 68;
     blr_project = 69;
     blr_sort = 70;
     blr_boolean = 71;
     blr_ascending = 72;
     blr_descending = 73;
     blr_relation = 74;
     blr_rid = 75;
     blr_union = 76;
     blr_map = 77;
     blr_group_by = 78;
     blr_aggregate = 79;
     blr_join_type = 80;
     blr_agg_count = 83;
     blr_agg_max = 84;
     blr_agg_min = 85;
     blr_agg_total = 86;
     blr_agg_average = 87;
     blr_parameter3 = 88;
     blr_run_count = 118;
     blr_run_max = 89;
     blr_run_min = 90;
     blr_run_total = 91;
     blr_run_average = 92;
     blr_agg_count2 = 93;
     blr_agg_count_distinct = 94;
     blr_agg_total_distinct = 95;
     blr_agg_average_distinct = 96;
     blr_function = 100;
     blr_gen_id = 101;
     blr_prot_mask = 102;
     blr_upcase = 103;
     blr_lock_state = 104;
     blr_value_if = 105;
     blr_matching2 = 106;
     blr_index = 107;
     blr_ansi_like = 108;
     blr_bookmark = 109;
     blr_crack = 110;
     blr_force_crack = 111;
     blr_seek = 112;
     blr_find = 113;
     blr_continue = 0;
     blr_forward = 1;
     blr_backward = 2;
     blr_bof_forward = 3;
     blr_eof_backward = 4;
     blr_lock_relation = 114;
     blr_lock_record = 115;
     blr_set_bookmark = 116;
     blr_get_bookmark = 117;
     blr_rs_stream = 119;
     blr_exec_proc = 120;
     blr_begin_range = 121;
     blr_end_range = 122;
     blr_delete_range = 123;
     blr_procedure = 124;
     blr_pid = 125;
     blr_exec_pid = 126;
     blr_singular = 127;
     blr_abort = 128;
     blr_block = 129;
     blr_error_handler = 130;
     blr_cast = 131;
     blr_release_lock = 132;
     blr_release_locks = 133;
     blr_start_savepoint = 134;
     blr_end_savepoint = 135;
     blr_find_dbkey = 136;
     blr_range_relation = 137;
     blr_delete_ranges = 138;
     blr_plan = 139;
     blr_merge = 140;
     blr_join = 141;
     blr_sequential = 142;
     blr_navigational = 143;
     blr_indices = 144;
     blr_retrieve = 145;
     blr_relation2 = 146;
     blr_rid2 = 147;
     blr_reset_stream = 148;
     blr_release_bookmark = 149;
     blr_set_generator = 150;
     blr_ansi_any = 151;
     blr_exists = 152;
     blr_cardinality = 153;
  { get tid of record  }
     blr_record_version = 154;
  { fake server stall  }
     blr_stall = 155;
     blr_seek_no_warn = 156;
     blr_find_dbkey_version = 157;
     blr_ansi_all = 158;
     blr_extract = 159;
  { sub parameters for blr_extract  }
     blr_extract_year = 0;
     blr_extract_month = 1;
     blr_extract_day = 2;
     blr_extract_hour = 3;
     blr_extract_minute = 4;
     blr_extract_second = 5;
     blr_extract_weekday = 6;
     blr_extract_yearday = 7;
     blr_current_date = 160;
     blr_current_timestamp = 161;
     blr_current_time = 162;
  { These verbs were added in 6.0, primarily to support 64-bit integers  }
     blr_add2 = 163;
     blr_subtract2 = 164;
     blr_multiply2 = 165;
     blr_divide2 = 166;
     blr_agg_total2 = 167;
     blr_agg_total_distinct2 = 168;
     blr_agg_average2 = 169;
     blr_agg_average_distinct2 = 170;
     blr_average2 = 171;
     blr_gen_id2 = 172;
     blr_set_generator2 = 173;
{$endif}
  { _JRD_BLR_H_  }
  {                                 }
  { Database parameter block stuff  }
  {                                 }

  const
     isc_dpb_version1 = 1;
     isc_dpb_cdd_pathname = 1;
     isc_dpb_allocation = 2;
     isc_dpb_journal = 3;
     isc_dpb_page_size = 4;
     isc_dpb_num_buffers = 5;
     isc_dpb_buffer_length = 6;
     isc_dpb_debug = 7;
     isc_dpb_garbage_collect = 8;
     isc_dpb_verify = 9;
     isc_dpb_sweep = 10;
     isc_dpb_enable_journal = 11;
     isc_dpb_disable_journal = 12;
     isc_dpb_dbkey_scope = 13;
     isc_dpb_number_of_users = 14;
     isc_dpb_trace = 15;
     isc_dpb_no_garbage_collect = 16;
     isc_dpb_damaged = 17;
     isc_dpb_license = 18;
     isc_dpb_sys_user_name = 19;
     isc_dpb_encrypt_key = 20;
     isc_dpb_activate_shadow = 21;
     isc_dpb_sweep_interval = 22;
     isc_dpb_delete_shadow = 23;
     isc_dpb_force_write = 24;
     isc_dpb_begin_log = 25;
     isc_dpb_quit_log = 26;
     isc_dpb_no_reserve = 27;
     isc_dpb_user_name = 28;
     isc_dpb_password = 29;
     isc_dpb_password_enc = 30;
     isc_dpb_sys_user_name_enc = 31;
     isc_dpb_interp = 32;
     isc_dpb_online_dump = 33;
     isc_dpb_old_file_size = 34;
     isc_dpb_old_num_files = 35;
     isc_dpb_old_file = 36;
     isc_dpb_old_start_page = 37;
     isc_dpb_old_start_seqno = 38;
     isc_dpb_old_start_file = 39;
     isc_dpb_drop_walfile = 40;
     isc_dpb_old_dump_id = 41;
     isc_dpb_wal_backup_dir = 42;
     isc_dpb_wal_chkptlen = 43;
     isc_dpb_wal_numbufs = 44;
     isc_dpb_wal_bufsize = 45;
     isc_dpb_wal_grp_cmt_wait = 46;
     isc_dpb_lc_messages = 47;
     isc_dpb_lc_ctype = 48;
     isc_dpb_cache_manager = 49;
     isc_dpb_shutdown = 50;
     isc_dpb_online = 51;
     isc_dpb_shutdown_delay = 52;
     isc_dpb_reserved = 53;
     isc_dpb_overwrite = 54;
     isc_dpb_sec_attach = 55;
     isc_dpb_disable_wal = 56;
     isc_dpb_connect_timeout = 57;
     isc_dpb_dummy_packet_interval = 58;
     isc_dpb_gbak_attach = 59;
     isc_dpb_sql_role_name = 60;
     isc_dpb_set_page_buffers = 61;
     isc_dpb_working_directory = 62;
     isc_dpb_SQL_dialect = 63;
     isc_dpb_set_db_readonly = 64;
     isc_dpb_set_db_SQL_dialect = 65;
     isc_dpb_gfix_attach = 66;
     isc_dpb_gstat_attach = 67;
  {                                }
  { isc_dpb_verify specific flags  }
  {                                }
     isc_dpb_pages = 1;
     isc_dpb_records = 2;
     isc_dpb_indices = 4;
     isc_dpb_transactions = 8;
     isc_dpb_no_update = 16;
     isc_dpb_repair = 32;
     isc_dpb_ignore = 64;
  {                                  }
  { isc_dpb_shutdown specific flags  }
  {                                  }
     isc_dpb_shut_cache = 1;
     isc_dpb_shut_attachment = 2;
     isc_dpb_shut_transaction = 4;
     isc_dpb_shut_force = 8;
  {                                     }
  { Bit assignments in RDB$SYSTEM_FLAG  }
  {                                     }
     RDB_system = 1;
     RDB_id_assigned = 2;
  {                                    }
  { Transaction parameter block stuff  }
  {                                    }
     isc_tpb_version1 = 1;
     isc_tpb_version3 = 3;
     isc_tpb_consistency = 1;
     isc_tpb_concurrency = 2;
     isc_tpb_shared = 3;
     isc_tpb_protected = 4;
     isc_tpb_exclusive = 5;
     isc_tpb_wait = 6;
     isc_tpb_nowait = 7;
     isc_tpb_read = 8;
     isc_tpb_write = 9;
     isc_tpb_lock_read = 10;
     isc_tpb_lock_write = 11;
     isc_tpb_verb_time = 12;
     isc_tpb_commit_time = 13;
     isc_tpb_ignore_limbo = 14;
     isc_tpb_read_committed = 15;
     isc_tpb_autocommit = 16;
     isc_tpb_rec_version = 17;
     isc_tpb_no_rec_version = 18;
     isc_tpb_restart_requests = 19;
     isc_tpb_no_auto_undo = 20;
     isc_tpb_lock_timeout = 21; //TPB = #21,#4,<int32 seconds, -1 = infinite>
     
  { Blob Parameter Block  }
  {                       }
     isc_bpb_version1 = 1;
     isc_bpb_source_type = 1;
     isc_bpb_target_type = 2;
     isc_bpb_type = 3;
     isc_bpb_source_interp = 4;
     isc_bpb_target_interp = 5;
     isc_bpb_filter_parameter = 6;
     isc_bpb_type_segmented = 0;
     isc_bpb_type_stream = 1;
     
  {                                }
  { Service parameter block stuff  }
  {                                }
     isc_spb_version1 = 1;
     isc_spb_current_version = 2;
     isc_spb_version = isc_spb_current_version;
     isc_spb_user_name = isc_dpb_user_name;           //shortstring
     isc_spb_sys_user_name = isc_dpb_sys_user_name;
     isc_spb_sys_user_name_enc = isc_dpb_sys_user_name_enc;
     isc_spb_password = isc_dpb_password;             //shortstring
     isc_spb_password_enc = isc_dpb_password_enc;
     isc_spb_command_line = 105;
     isc_spb_dbname = 106;
     isc_spb_verbose = 107;
     isc_spb_options = 108;
     isc_spb_address_path = 109;
     isc_spb_process_id = 110;
     isc_spb_trusted_auth = 111;
     isc_spb_process_name = 112;
     isc_spb_trusted_role = 113;

     isc_spb_connect_timeout = isc_dpb_connect_timeout;
     isc_spb_dummy_packet_interval = isc_dpb_dummy_packet_interval;
     isc_spb_sql_role_name = isc_dpb_sql_role_name;
  {
     Service action items
                                }
  { Starts database backup process on the server  }
     isc_action_svc_backup = 1;
  { Starts database restore process on the server  }
     isc_action_svc_restore = 2;
  { Starts database repair process on the server  }
     isc_action_svc_repair = 3;
  { Adds a new user to the security database  }
     isc_action_svc_add_user = 4;
  { Deletes a user record from the security database  }
     isc_action_svc_delete_user = 5;
  { Modifies a user record in the security database  }
     isc_action_svc_modify_user = 6;
  { Displays a user record from the security database  }
     isc_action_svc_display_user = 7;
  { Sets database properties  }
     isc_action_svc_properties = 8;
  { Adds a license to the license file  }
     isc_action_svc_add_license = 9;
  { Removes a license from the license file  }
     isc_action_svc_remove_license = 10;
  { Retrieves database statistics  }
     isc_action_svc_db_stats = 11;
  { Retrieves the InterBase log file from the server  }
     isc_action_svc_get_ib_log = 12;
     isc_action_svc_get_fb_log = 12; 
         //* Retrieves the Firebird log file from the server */
     isc_action_svc_nbak = 20; //* Incremental nbackup */
     isc_action_svc_nrest = 21; //* Incremental database restore */
     isc_action_svc_trace_start = 22; // Start trace session
     isc_action_svc_trace_stop = 23; // Stop trace session
     isc_action_svc_trace_suspend = 24; // Suspend trace session
     isc_action_svc_trace_resume = 25; // Resume trace session
     isc_action_svc_trace_list = 26; // List existing sessions
     isc_action_svc_set_mapping = 27; 
             // Set auto admins mapping in security database
     isc_action_svc_drop_mapping = 28; 
             // Drop auto admins mapping in security database
     isc_action_svc_display_user_adm = 29; 
             // Displays user(s) from security database with admin info
     isc_action_svc_validate = 30; // Starts database online validation
     isc_action_svc_last = 31; // keep it last !
  {
     Service information items
                                }
  { Retrieves the number of attachments and databases  }
     isc_info_svc_svr_db_info = 50;
  { Retrieves all license keys and IDs from the license file  }
     isc_info_svc_get_license = 51;
  { Retrieves a bitmask representing licensed options on the server  }
     isc_info_svc_get_license_mask = 52;
  { Retrieves the parameters and values for IB_CONFIG  }
     isc_info_svc_get_config = 53; //mse: not implemented in fb 2.5.5
  { Retrieves the version of the services manager  }
     isc_info_svc_version = 54;                         //card32
  { Retrieves the version of the InterBase server  }
     isc_info_svc_server_version = 55;                  //string
  { Retrieves the implementation of the InterBase server  }
     isc_info_svc_implementation = 56;                  //string
  { Retrieves a bitmask representing the server's capabilities  }
     isc_info_svc_capabilities = 57;                    //card32
  { Retrieves the path to the security database in use by the server  }
     isc_info_svc_user_dbpath = 58;                     //string
  { Retrieves the setting of $INTERBASE  }
     isc_info_svc_get_env = 59;                         //string
  { Retrieves the setting of $INTERBASE_LCK  }
     isc_info_svc_get_env_lock = 60;                    //string
  { Retrieves the setting of $INTERBASE_MSG  }
     isc_info_svc_get_env_msg = 61;                     //string
  { Retrieves 1 line of service output per call 
       mse: up to the size of buffer, remaining text of line in next call
            adds a ' ' at end if line, string length 0 -> eof}
     isc_info_svc_line = 62;
  { Retrieves as much of the server output as will fit in the supplied buffer  }
          //mse: length 0 -> eof
     isc_info_svc_to_eof = 63;
  { Sets / signifies a timeout value for reading service information  }
     isc_info_svc_timeout = 64;
     //                                       4byte  4byte
     //mse send params = isc_info_svc_timeout <4> <timeout> isc_info_end
  { Retrieves the number of users licensed for accessing the server  }
     isc_info_svc_get_licensed_users = 65;
  { Retrieve the limbo transactions  }
     isc_info_svc_limbo_trans = 66;
  { Checks to see if a service is running on an attachment  }
     isc_info_svc_running = 67;
  { Returns the user information from isc_action_svc_display_users  }
     isc_info_svc_get_users = 68;
     isc_info_svc_stdin = 78;
                //* Returns size of data, needed as stdin for service */
  {
     Parameters for isc_action_(add|delete|modify)_user
   }
     isc_spb_sec_userid = 5;                     //card32
     isc_spb_sec_groupid = 6;                    //card32
     isc_spb_sec_username = 7;                   //string
     isc_spb_sec_password = 8;
     isc_spb_sec_groupname = 9;
     isc_spb_sec_firstname = 10;                 //string
     isc_spb_sec_middlename = 11;
     isc_spb_sec_lastname = 12;                  //string
     isc_spb_sec_admin = 13;                     //card32
  {
     Parameters for isc_action_svc_(add|remove)_license,
     isc_info_svc_get_license
                                                          }
     isc_spb_lic_key = 5;
     isc_spb_lic_id = 6;
     isc_spb_lic_desc = 7;
  {
     Parameters for isc_action_svc_properties
                                               }
     isc_spb_prp_page_buffers = 5;
     isc_spb_prp_sweep_interval = 6;
     isc_spb_prp_shutdown_db = 7;
     isc_spb_prp_deny_new_attachments = 9;
     isc_spb_prp_deny_new_transactions = 10;
     isc_spb_prp_reserve_space = 11;
     isc_spb_prp_write_mode = 12;
     isc_spb_prp_access_mode = 13;
     isc_spb_prp_set_sql_dialect = 14;
     isc_spb_prp_activate = $0100;
     isc_spb_prp_db_online = $0200;
     isc_spb_prp_force_shutdown = 41;
     isc_spb_prp_attachments_shutdown = 42;
     isc_spb_prp_transactions_shutdown = 43;
     isc_spb_prp_shutdown_mode = 44;
     isc_spb_prp_online_mode = 45;
///********************************************
// * Parameters for isc_spb_prp_shutdown_mode *
// *            and isc_spb_prp_online_mode   *
// ********************************************/
     isc_spb_prp_sm_normal = 0;
     isc_spb_prp_sm_multi = 1;
     isc_spb_prp_sm_single = 2;
     isc_spb_prp_sm_full = 3;

  {
     Parameters for isc_spb_prp_reserve_space
                                               }
     isc_spb_prp_res_use_full = 35;
     isc_spb_prp_res = 36;
  {
     Parameters for isc_spb_prp_write_mode
                                             }
     isc_spb_prp_wm_async = 37;
     isc_spb_prp_wm_sync = 38;
  {
     Parameters for isc_spb_prp_access_mode
                                             }
     isc_spb_prp_am_readonly = 39;
     isc_spb_prp_am_readwrite = 40;
  {
     Parameters for isc_action_svc_backup
                                            }
     isc_spb_bkp_file = 5;
     isc_spb_bkp_factor = 6;
     isc_spb_bkp_length = 7;
     isc_spb_bkp_stat = 15;
     isc_spb_bkp_ignore_checksums = $01;
     isc_spb_bkp_ignore_limbo = $02;
     isc_spb_bkp_metadata_only = $04;
     isc_spb_bkp_no_garbage_collect = $08;
     isc_spb_bkp_old_descriptions = $10;
     isc_spb_bkp_non_transportable = $20;
     isc_spb_bkp_convert = $40;
     isc_spb_bkp_expand = $80;
     isc_spb_bkp_no_triggers = $8000;
  {
     Parameters for isc_action_svc_restore
                                            }
     isc_spb_res_buffers = 9;
     isc_spb_res_page_size = 10;
     isc_spb_res_length = 11;
     isc_spb_res_access_mode = 12;
     isc_spb_res_fix_fss_data = 13;
     isc_spb_res_fix_fss_metadata = 14;
     isc_spb_res_stat = isc_spb_bkp_stat;
     isc_spb_res_metadata_only = isc_spb_bkp_metadata_only;
     isc_spb_res_deactivate_idx = $0100;
     isc_spb_res_no_shadow = $0200;
     isc_spb_res_no_validity = $0400;
     isc_spb_res_one_at_a_time = $0800;
     isc_spb_res_replace = $1000;
     isc_spb_res_create = $2000;
     isc_spb_res_use_all_space = $4000;

///*****************************************
// * Parameters for isc_action_svc_validate *
// *****************************************/
     isc_spb_val_tab_incl = 1; // include filter based on regular expression
     isc_spb_val_tab_excl = 2; // exclude filter based on regular expression
     isc_spb_val_idx_incl = 3; // regexp of indices to validate
     isc_spb_val_idx_excl = 4; // regexp of indices to NOT validate
     isc_spb_val_lock_timeout = 5; // how long to wait for table lock
  {
     Parameters for isc_action_svc_repair
                                            }
     isc_spb_rpr_commit_trans = 15;
     isc_spb_rpr_rollback_trans = 34;
     isc_spb_rpr_recover_two_phase = 17;
     isc_spb_tra_id = 18;
     isc_spb_single_tra_id = 19;
     isc_spb_multi_tra_id = 20;
     isc_spb_tra_state = 21;
     isc_spb_tra_state_limbo = 22;
     isc_spb_tra_state_commit = 23;
     isc_spb_tra_state_rollback = 24;
     isc_spb_tra_state_unknown = 25;
     isc_spb_tra_host_site = 26;
     isc_spb_tra_remote_site = 27;
     isc_spb_tra_db_path = 28;
     isc_spb_tra_advise = 29;
     isc_spb_tra_advise_commit = 30;
     isc_spb_tra_advise_rollback = 31;
     isc_spb_tra_advise_unknown = 33;
     isc_spb_rpr_validate_db = $01;
     isc_spb_rpr_sweep_db = $02;
     isc_spb_rpr_mend_db = $04;
     isc_spb_rpr_list_limbo_trans = $08;
     isc_spb_rpr_check_db = $10;
     isc_spb_rpr_ignore_checksum = $20;
     isc_spb_rpr_kill_shadows = $40;
     isc_spb_rpr_full = $80;
  {
     Parameters for isc_spb_res_access_mode
                                             }
     isc_spb_res_am_readonly = isc_spb_prp_am_readonly;
     isc_spb_res_am_readwrite = isc_spb_prp_am_readwrite;
  {
     Parameters for isc_info_svc_svr_db_info
                                              }
     isc_spb_num_att = 5;
     isc_spb_num_db = 6;
  {
     Parameters for isc_info_svc_db_stats
                                            }
     isc_spb_sts_data_pages = $01;
     isc_spb_sts_db_log = $02;
     isc_spb_sts_hdr_pages = $04;
     isc_spb_sts_idx_pages = $08;
     isc_spb_sts_sys_relations = $10;
     isc_spb_sts_record_versions = $20;
     isc_spb_sts_table = $40;
     isc_spb_sts_nocreation = $80;

//* Not available in Firebird 1.5 */

///***************************************
// * Parameters for isc_action_svc_nbak  *
// ***************************************/

     isc_spb_nbk_level = 5;
     isc_spb_nbk_file = 6;
     isc_spb_nbk_direct = 7;
     isc_spb_nbk_no_triggers = $01;

///***************************************
// * Parameters for isc_action_svc_trace *
// ***************************************/

     isc_spb_trc_id = 1;
     isc_spb_trc_name = 2;
     isc_spb_trc_cfg = 3;


  {                                }
  { Information call declarations  }
  {                                }
  {                           }
  { Common, structural codes  }
  {                           }
     isc_info_end = 1;
     isc_info_truncated = 2;
     isc_info_error = 3;
     isc_info_data_not_ready = 4;
     isc_info_flag_end = 127;
  {                             }
  { Database information items  }
  {                             }
     isc_info_db_id = 4;
     isc_info_reads = 5;
     isc_info_writes = 6;
     isc_info_fetches = 7;
     isc_info_marks = 8;
     isc_info_implementation = 11;
     isc_info_version = 12;
     isc_info_base_level = 13;
     isc_info_page_size = 14;
     isc_info_num_buffers = 15;
     isc_info_limbo = 16;
     isc_info_current_memory = 17;
     isc_info_max_memory = 18;
     isc_info_window_turns = 19;
     isc_info_license = 20;
     isc_info_allocation = 21;
     isc_info_attachment_id = 22;
     isc_info_read_seq_count = 23;
     isc_info_read_idx_count = 24;
     isc_info_insert_count = 25;
     isc_info_update_count = 26;
     isc_info_delete_count = 27;
     isc_info_backout_count = 28;
     isc_info_purge_count = 29;
     isc_info_expunge_count = 30;
     isc_info_sweep_interval = 31;
     isc_info_ods_version = 32;
     isc_info_ods_minor_version = 33;
     isc_info_no_reserve = 34;
     isc_info_logfile = 35;
     isc_info_cur_logfile_name = 36;
     isc_info_cur_log_part_offset = 37;
     isc_info_num_wal_buffers = 38;
     isc_info_wal_buffer_size = 39;
     isc_info_wal_ckpt_length = 40;
     isc_info_wal_cur_ckpt_interval = 41;
     isc_info_wal_prv_ckpt_fname = 42;
     isc_info_wal_prv_ckpt_poffset = 43;
     isc_info_wal_recv_ckpt_fname = 44;
     isc_info_wal_recv_ckpt_poffset = 45;
     isc_info_wal_grpc_wait_usecs = 47;
     isc_info_wal_num_io = 48;
     isc_info_wal_avg_io_size = 49;
     isc_info_wal_num_commits = 50;
     isc_info_wal_avg_grpc_size = 51;
     isc_info_forced_writes = 52;
     isc_info_user_names = 53;
     isc_info_page_errors = 54;
     isc_info_record_errors = 55;
     isc_info_bpage_errors = 56;
     isc_info_dpage_errors = 57;
     isc_info_ipage_errors = 58;
     isc_info_ppage_errors = 59;
     isc_info_tpage_errors = 60;
     isc_info_set_page_buffers = 61;
     isc_info_db_SQL_dialect = 62;
     isc_info_db_read_only = 63;
     isc_info_db_size_in_pages = 64;
  {                                     }
  { Database information return values  }
  {                                     }
     isc_info_db_impl_rdb_vms = 1;
     isc_info_db_impl_rdb_eln = 2;
     isc_info_db_impl_rdb_eln_dev = 3;
     isc_info_db_impl_rdb_vms_y = 4;
     isc_info_db_impl_rdb_eln_y = 5;
     isc_info_db_impl_jri = 6;
     isc_info_db_impl_jsv = 7;
     isc_info_db_impl_isc_a = 25;
     isc_info_db_impl_isc_u = 26;
     isc_info_db_impl_isc_v = 27;
     isc_info_db_impl_isc_s = 28;
     isc_info_db_impl_isc_apl_68K = 25;
     isc_info_db_impl_isc_vax_ultr = 26;
     isc_info_db_impl_isc_vms = 27;
     isc_info_db_impl_isc_sun_68k = 28;
     isc_info_db_impl_isc_os2 = 29;
     isc_info_db_impl_isc_sun4 = 30;
     isc_info_db_impl_isc_hp_ux = 31;
     isc_info_db_impl_isc_sun_386i = 32;
     isc_info_db_impl_isc_vms_orcl = 33;
     isc_info_db_impl_isc_mac_aux = 34;
     isc_info_db_impl_isc_rt_aix = 35;
     isc_info_db_impl_isc_mips_ult = 36;
     isc_info_db_impl_isc_xenix = 37;
     isc_info_db_impl_isc_dg = 38;
     isc_info_db_impl_isc_hp_mpexl = 39;
     isc_info_db_impl_isc_hp_ux68K = 40;
     isc_info_db_impl_isc_sgi = 41;
     isc_info_db_impl_isc_sco_unix = 42;
     isc_info_db_impl_isc_cray = 43;
     isc_info_db_impl_isc_imp = 44;
     isc_info_db_impl_isc_delta = 45;
     isc_info_db_impl_isc_next = 46;
     isc_info_db_impl_isc_dos = 47;
     isc_info_db_impl_isc_winnt = 48;
     isc_info_db_impl_isc_epson = 49;
     isc_info_db_class_access = 1;
     isc_info_db_class_y_valve = 2;
     isc_info_db_class_rem_int = 3;
     isc_info_db_class_rem_srvr = 4;
     isc_info_db_class_pipe_int = 7;
     isc_info_db_class_pipe_srvr = 8;
     isc_info_db_class_sam_int = 9;
     isc_info_db_class_sam_srvr = 10;
     isc_info_db_class_gateway = 11;
     isc_info_db_class_cache = 12;
  {                            }
  { Request information items  }
  {                            }
     isc_info_number_messages = 4;
     isc_info_max_message = 5;
     isc_info_max_send = 6;
     isc_info_max_receive = 7;
     isc_info_state = 8;
     isc_info_message_number = 9;
     isc_info_message_size = 10;
     isc_info_request_cost = 11;
     isc_info_access_path = 12;
     isc_info_req_select_count = 13;
     isc_info_req_insert_count = 14;
     isc_info_req_update_count = 15;
     isc_info_req_delete_count = 16;
  {                    }
  { Access path items  }
  {                    }
     isc_info_rsb_end = 0;
     isc_info_rsb_begin = 1;
     isc_info_rsb_type = 2;
     isc_info_rsb_relation = 3;
     isc_info_rsb_plan = 4;
  {            }
  { Rsb types  }
  {            }
     isc_info_rsb_unknown = 1;
     isc_info_rsb_indexed = 2;
     isc_info_rsb_navigate = 3;
     isc_info_rsb_sequential = 4;
     isc_info_rsb_cross = 5;
     isc_info_rsb_sort = 6;
     isc_info_rsb_first = 7;
     isc_info_rsb_boolean = 8;
     isc_info_rsb_union = 9;
     isc_info_rsb_aggregate = 10;
     isc_info_rsb_merge = 11;
     isc_info_rsb_ext_sequential = 12;
     isc_info_rsb_ext_indexed = 13;
     isc_info_rsb_ext_dbkey = 14;
     isc_info_rsb_left_cross = 15;
     isc_info_rsb_select = 16;
     isc_info_rsb_sql_join = 17;
     isc_info_rsb_simulate = 18;
     isc_info_rsb_sim_cross = 19;
     isc_info_rsb_once = 20;
     isc_info_rsb_procedure = 21;
  {                     }
  { Bitmap expressions  }
  {                     }
     isc_info_rsb_and = 1;
     isc_info_rsb_or = 2;
     isc_info_rsb_dbkey = 3;
     isc_info_rsb_index = 4;
     isc_info_req_active = 2;
     isc_info_req_inactive = 3;
     isc_info_req_send = 4;
     isc_info_req_receive = 5;
     isc_info_req_select = 6;
     isc_info_req_sql_stall = 7;
  {                         }
  { Blob information items  }
  {                         }
     isc_info_blob_num_segments = 4;
     isc_info_blob_max_segment = 5;
     isc_info_blob_total_length = 6;
     isc_info_blob_type = 7;
  {                                }
  { Transaction information items  }
  {                                }
     isc_info_tra_id = 4;
  {                        }
  { SQL information items  }
  {                        }
     isc_info_sql_select = 4;
     isc_info_sql_bind = 5;
     isc_info_sql_num_variables = 6;
     isc_info_sql_describe_vars = 7;
     isc_info_sql_describe_end = 8;
     isc_info_sql_sqlda_seq = 9;
     isc_info_sql_message_seq = 10;
     isc_info_sql_type = 11;
     isc_info_sql_sub_type = 12;
     isc_info_sql_scale = 13;
     isc_info_sql_length = 14;
     isc_info_sql_null_ind = 15;
     isc_info_sql_field = 16;
     isc_info_sql_relation = 17;
     isc_info_sql_owner = 18;
     isc_info_sql_alias = 19;
     isc_info_sql_sqlda_start = 20;
     isc_info_sql_stmt_type = 21;
     isc_info_sql_get_plan = 22;
     isc_info_sql_records = 23;
     isc_info_sql_batch_fetch = 24;
  {                                }
  { SQL information return values  }
  {                                }
     isc_info_sql_stmt_select = 1;
     isc_info_sql_stmt_insert = 2;
     isc_info_sql_stmt_update = 3;
     isc_info_sql_stmt_delete = 4;
     isc_info_sql_stmt_ddl = 5;
     isc_info_sql_stmt_get_segment = 6;
     isc_info_sql_stmt_put_segment = 7;
     isc_info_sql_stmt_exec_procedure = 8;
     isc_info_sql_stmt_start_trans = 9;
     isc_info_sql_stmt_commit = 10;
     isc_info_sql_stmt_rollback = 11;
     isc_info_sql_stmt_select_for_upd = 12;
     isc_info_sql_stmt_set_generator = 13;
  {                                  }
  { Server configuration key values  }
  {                                  }
     ISCCFG_LOCKMEM_KEY = 0;
     ISCCFG_LOCKSEM_KEY = 1;
     ISCCFG_LOCKSIG_KEY = 2;
     ISCCFG_EVNTMEM_KEY = 3;
     ISCCFG_DBCACHE_KEY = 4;
     ISCCFG_PRIORITY_KEY = 5;
     ISCCFG_IPCMAP_KEY = 6;
     ISCCFG_MEMMIN_KEY = 7;
     ISCCFG_MEMMAX_KEY = 8;
     ISCCFG_LOCKORDER_KEY = 9;
     ISCCFG_ANYLOCKMEM_KEY = 10;
     ISCCFG_ANYLOCKSEM_KEY = 11;
     ISCCFG_ANYLOCKSIG_KEY = 12;
     ISCCFG_ANYEVNTMEM_KEY = 13;
     ISCCFG_LOCKHASH_KEY = 14;
     ISCCFG_DEADLOCK_KEY = 15;
     ISCCFG_LOCKSPIN_KEY = 16;
     ISCCFG_CONN_TIMEOUT_KEY = 17;
     ISCCFG_DUMMY_INTRVL_KEY = 18;
  { Internal Use only  }
     ISCCFG_TRACE_POOLS_KEY = 19;
     ISCCFG_REMOTE_BUFFER_KEY = 20;
  {              }
  { Error codes  }
  {              }
     isc_facility = 20;
     isc_err_base = 335544320;
     isc_err_factor = 1;
     isc_arg_end = 0;
     isc_arg_gds = 1;
     isc_arg_string = 2;
     isc_arg_cstring = 3;
     isc_arg_number = 4;
     isc_arg_interpreted = 5;
     isc_arg_vms = 6;
     isc_arg_unix = 7;
     isc_arg_domain = 8;
     isc_arg_dos = 9;
     isc_arg_mpexl = 10;
     isc_arg_mpexl_ipc = 11;
     isc_arg_next_mach = 15;
     isc_arg_netware = 16;
     isc_arg_win32 = 17;
     isc_arg_warning = 18;

  {                                             }
  { Dynamic Data Definition Language operators  }
  {                                             }
  {                 }
  { Version number  }
  {                 }

  const
     isc_dyn_version_1 = 1;
     isc_dyn_eoc = 255;
  {                             }
  { Operations (may be nested)  }
  {                             }
     isc_dyn_begin = 2;
     isc_dyn_end = 3;
     isc_dyn_if = 4;
     isc_dyn_def_database = 5;
     isc_dyn_def_global_fld = 6;
     isc_dyn_def_local_fld = 7;
     isc_dyn_def_idx = 8;
     isc_dyn_def_rel = 9;
     isc_dyn_def_sql_fld = 10;
     isc_dyn_def_view = 12;
     isc_dyn_def_trigger = 15;
     isc_dyn_def_security_class = 120;
     isc_dyn_def_dimension = 140;
     isc_dyn_def_generator = 24;
     isc_dyn_def_function = 25;
     isc_dyn_def_filter = 26;
     isc_dyn_def_function_arg = 27;
     isc_dyn_def_shadow = 34;
     isc_dyn_def_trigger_msg = 17;
     isc_dyn_def_file = 36;
     isc_dyn_mod_database = 39;
     isc_dyn_mod_rel = 11;
     isc_dyn_mod_global_fld = 13;
     isc_dyn_mod_idx = 102;
     isc_dyn_mod_local_fld = 14;
     isc_dyn_mod_sql_fld = 216;
     isc_dyn_mod_view = 16;
     isc_dyn_mod_security_class = 122;
     isc_dyn_mod_trigger = 113;
     isc_dyn_mod_trigger_msg = 28;
     isc_dyn_delete_database = 18;
     isc_dyn_delete_rel = 19;
     isc_dyn_delete_global_fld = 20;
     isc_dyn_delete_local_fld = 21;
     isc_dyn_delete_idx = 22;
     isc_dyn_delete_security_class = 123;
     isc_dyn_delete_dimensions = 143;
     isc_dyn_delete_trigger = 23;
     isc_dyn_delete_trigger_msg = 29;
     isc_dyn_delete_filter = 32;
     isc_dyn_delete_function = 33;
     isc_dyn_delete_shadow = 35;
     isc_dyn_grant = 30;
     isc_dyn_revoke = 31;
     isc_dyn_def_primary_key = 37;
     isc_dyn_def_foreign_key = 38;
     isc_dyn_def_unique = 40;
     isc_dyn_def_procedure = 164;
     isc_dyn_delete_procedure = 165;
     isc_dyn_def_parameter = 135;
     isc_dyn_delete_parameter = 136;
     isc_dyn_mod_procedure = 175;
     isc_dyn_def_log_file = 176;
     isc_dyn_def_cache_file = 180;
     isc_dyn_def_exception = 181;
     isc_dyn_mod_exception = 182;
     isc_dyn_del_exception = 183;
     isc_dyn_drop_log = 194;
     isc_dyn_drop_cache = 195;
     isc_dyn_def_default_log = 202;
  {                      }
  { View specific stuff  }
  {                      }
     isc_dyn_view_blr = 43;
     isc_dyn_view_source = 44;
     isc_dyn_view_relation = 45;
     isc_dyn_view_context = 46;
     isc_dyn_view_context_name = 47;
  {                     }
  { Generic attributes  }
  {                     }
     isc_dyn_rel_name = 50;
     isc_dyn_fld_name = 51;
     isc_dyn_new_fld_name = 215;
     isc_dyn_idx_name = 52;
     isc_dyn_description = 53;
     isc_dyn_security_class = 54;
     isc_dyn_system_flag = 55;
     isc_dyn_update_flag = 56;
     isc_dyn_prc_name = 166;
     isc_dyn_prm_name = 137;
     isc_dyn_sql_object = 196;
     isc_dyn_fld_character_set_name = 174;
  {                               }
  { Relation specific attributes  }
  {                               }
     isc_dyn_rel_dbkey_length = 61;
     isc_dyn_rel_store_trig = 62;
     isc_dyn_rel_modify_trig = 63;
     isc_dyn_rel_erase_trig = 64;
     isc_dyn_rel_store_trig_source = 65;
     isc_dyn_rel_modify_trig_source = 66;
     isc_dyn_rel_erase_trig_source = 67;
     isc_dyn_rel_ext_file = 68;
     isc_dyn_rel_sql_protection = 69;
     isc_dyn_rel_constraint = 162;
     isc_dyn_delete_rel_constraint = 163;
  {                                   }
  { Global field specific attributes  }
  {                                   }
     isc_dyn_fld_type = 70;
     isc_dyn_fld_length = 71;
     isc_dyn_fld_scale = 72;
     isc_dyn_fld_sub_type = 73;
     isc_dyn_fld_segment_length = 74;
     isc_dyn_fld_query_header = 75;
     isc_dyn_fld_edit_string = 76;
     isc_dyn_fld_validation_blr = 77;
     isc_dyn_fld_validation_source = 78;
     isc_dyn_fld_computed_blr = 79;
     isc_dyn_fld_computed_source = 80;
     isc_dyn_fld_missing_value = 81;
     isc_dyn_fld_default_value = 82;
     isc_dyn_fld_query_name = 83;
     isc_dyn_fld_dimensions = 84;
     isc_dyn_fld_not_null = 85;
     isc_dyn_fld_precision = 86;
     isc_dyn_fld_char_length = 172;
     isc_dyn_fld_collation = 173;
     isc_dyn_fld_default_source = 193;
     isc_dyn_del_default = 197;
     isc_dyn_del_validation = 198;
     isc_dyn_single_validation = 199;
     isc_dyn_fld_character_set = 203;
  {                                  }
  { Local field specific attributes  }
  {                                  }
     isc_dyn_fld_source = 90;
     isc_dyn_fld_base_fld = 91;
     isc_dyn_fld_position = 92;
     isc_dyn_fld_update_flag = 93;
  {                            }
  { Index specific attributes  }
  {                            }
     isc_dyn_idx_unique = 100;
     isc_dyn_idx_inactive = 101;
     isc_dyn_idx_type = 103;
     isc_dyn_idx_foreign_key = 104;
     isc_dyn_idx_ref_column = 105;
     isc_dyn_idx_statistic = 204;
  {                              }
  { Trigger specific attributes  }
  {                              }
     isc_dyn_trg_type = 110;
     isc_dyn_trg_blr = 111;
     isc_dyn_trg_source = 112;
     isc_dyn_trg_name = 114;
     isc_dyn_trg_sequence = 115;
     isc_dyn_trg_inactive = 116;
     isc_dyn_trg_msg_number = 117;
     isc_dyn_trg_msg = 118;
  {                                     }
  { Security Class specific attributes  }
  {                                     }
     isc_dyn_scl_acl = 121;
     isc_dyn_grant_user = 130;
     isc_dyn_grant_proc = 186;
     isc_dyn_grant_trig = 187;
     isc_dyn_grant_view = 188;
     isc_dyn_grant_options = 132;
     isc_dyn_grant_user_group = 205;
  {                                 }
  { Dimension specific information  }
  {                                 }
     isc_dyn_dim_lower = 141;
     isc_dyn_dim_upper = 142;
  {                           }
  { File specific attributes  }
  {                           }
     isc_dyn_file_name = 125;
     isc_dyn_file_start = 126;
     isc_dyn_file_length = 127;
     isc_dyn_shadow_number = 128;
     isc_dyn_shadow_man_auto = 129;
     isc_dyn_shadow_conditional = 130;
  {                               }
  { Log file specific attributes  }
  {                               }
     isc_dyn_log_file_sequence = 177;
     isc_dyn_log_file_partitions = 178;
     isc_dyn_log_file_serial = 179;
     isc_dyn_log_file_overflow = 200;
     isc_dyn_log_file_raw = 201;
  {                          }
  { Log specific attributes  }
  {                          }
     isc_dyn_log_group_commit_wait = 189;
     isc_dyn_log_buffer_size = 190;
     isc_dyn_log_check_point_length = 191;
     isc_dyn_log_num_of_buffers = 192;
  {                               }
  { Function specific attributes  }
  {                               }
     isc_dyn_function_name = 145;
     isc_dyn_function_type = 146;
     isc_dyn_func_module_name = 147;
     isc_dyn_func_entry_point = 148;
     isc_dyn_func_return_argument = 149;
     isc_dyn_func_arg_position = 150;
     isc_dyn_func_mechanism = 151;
     isc_dyn_filter_in_subtype = 152;
     isc_dyn_filter_out_subtype = 153;
     isc_dyn_description2 = 154;
     isc_dyn_fld_computed_source2 = 155;
     isc_dyn_fld_edit_string2 = 156;
     isc_dyn_fld_query_header2 = 157;
     isc_dyn_fld_validation_source2 = 158;
     isc_dyn_trg_msg2 = 159;
     isc_dyn_trg_source2 = 160;
     isc_dyn_view_source2 = 161;
     isc_dyn_xcp_msg2 = 184;
  {                                }
  { Generator specific attributes  }
  {                                }
     isc_dyn_generator_name = 95;
     isc_dyn_generator_id = 96;
  {                                }
  { Procedure specific attributes  }
  {                                }
     isc_dyn_prc_inputs = 167;
     isc_dyn_prc_outputs = 168;
     isc_dyn_prc_source = 169;
     isc_dyn_prc_blr = 170;
     isc_dyn_prc_source2 = 171;
  {                                }
  { Parameter specific attributes  }
  {                                }
     isc_dyn_prm_number = 138;
     isc_dyn_prm_type = 139;
  {                               }
  { Relation specific attributes  }
  {                               }
     isc_dyn_xcp_msg = 185;
  {                                             }
  { Cascading referential integrity values      }
  {                                             }
     isc_dyn_foreign_key_update = 205;
     isc_dyn_foreign_key_delete = 206;
     isc_dyn_foreign_key_cascade = 207;
     isc_dyn_foreign_key_default = 208;
     isc_dyn_foreign_key_null = 209;
     isc_dyn_foreign_key_none = 210;
  {                      }
  { SQL role values      }
  {                      }
     isc_dyn_def_sql_role = 211;
     isc_dyn_sql_role_name = 212;
     isc_dyn_grant_admin_options = 213;
     isc_dyn_del_sql_role = 214;
  {                           }
  { Last $dyn value assigned  }
  {                           }
     isc_dyn_last_dyn_value = 216;
  {                                         }
  { Array slice description language (SDL)  }
  {                                         }
     isc_sdl_version1 = 1;
     isc_sdl_eoc = 255;
     isc_sdl_relation = 2;
     isc_sdl_rid = 3;
     isc_sdl_field = 4;
     isc_sdl_fid = 5;
     isc_sdl_struct = 6;
     isc_sdl_variable = 7;
     isc_sdl_scalar = 8;
     isc_sdl_tiny_integer = 9;
     isc_sdl_short_integer = 10;
     isc_sdl_long_integer = 11;
     isc_sdl_literal = 12;
     isc_sdl_add = 13;
     isc_sdl_subtract = 14;
     isc_sdl_multiply = 15;
     isc_sdl_divide = 16;
     isc_sdl_negate = 17;
     isc_sdl_eql = 18;
     isc_sdl_neq = 19;
     isc_sdl_gtr = 20;
     isc_sdl_geq = 21;
     isc_sdl_lss = 22;
     isc_sdl_leq = 23;
     isc_sdl_and = 24;
     isc_sdl_or = 25;
     isc_sdl_not = 26;
     isc_sdl_while = 27;
     isc_sdl_assignment = 28;
     isc_sdl_label = 29;
     isc_sdl_leave = 30;
     isc_sdl_begin = 31;
     isc_sdl_end = 32;
     isc_sdl_do3 = 33;
     isc_sdl_do2 = 34;
     isc_sdl_do1 = 35;
     isc_sdl_element = 36;
  {                                           }
  { International text interpretation values  }
  {                                           }
     isc_interp_eng_ascii = 0;
     isc_interp_jpn_sjis = 5;
     isc_interp_jpn_euc = 6;
  {                  }
  { SQL definitions  }
  {                  }
     SQL_TEXT = 452;
     SQL_VARYING = 448;
     SQL_SHORT = 500;
     SQL_LONG = 496;
     SQL_FLOAT = 482;
     SQL_DOUBLE = 480;
     SQL_D_FLOAT = 530;
     SQL_TIMESTAMP = 510;
     SQL_BLOB = 520;
     SQL_ARRAY = 540;
     SQL_QUAD = 550;
     SQL_TYPE_TIME = 560;
     SQL_TYPE_DATE = 570;
     SQL_INT64 = 580;
  { Historical alias for pre V6 applications  }
     SQL_DATE = SQL_TIMESTAMP;
  {                }
  { Blob Subtypes  }
  {                }
  { types less than zero are reserved for customer use  }
     isc_blob_untyped = 0;
  { internal subtypes  }
     isc_blob_text = 1;
     isc_blob_blr = 2;
     isc_blob_acl = 3;
     isc_blob_ranges = 4;
     isc_blob_summary = 5;
     isc_blob_format = 6;
     isc_blob_tra = 7;
     isc_blob_extfile = 8;
  { the range 20-30 is reserved for dBASE and Paradox types  }
     isc_blob_formatted_memo = 20;
     isc_blob_paradox_ole = 21;
     isc_blob_graphic = 22;
     isc_blob_dbase_ole = 23;
     isc_blob_typed_binary = 24;

//****************************************/
//* Shutdown reasons, used by engine     */
//* Users should provide positive values */
//****************************************/

 fb_shutrsn_svc_stopped = -1;
 fb_shutrsn_no_connection = -2;
 fb_shutrsn_app_stopped = -3;
 fb_shutrsn_device_removed = -4;
 fb_shutrsn_signal = -5;
 fb_shutrsn_services = -6;
 fb_shutrsn_exit_called = -7;

{$IFNDEF LinkDynamically}

  {                          }
  { OSRI database functions  }
  {                          }

  function isc_attach_database(_para1:PISC_STATUS; _para2:smallint; _para3:Pchar; _para4:Pisc_db_handle; _para5:smallint;
             _para6:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_array_gen_sdl(_para1:PISC_STATUS; _para2:PISC_ARRAY_DESC; _para3:Psmallint; _para4:Pchar; _para5:Psmallint):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_array_get_slice(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:PISC_QUAD; _para5:PISC_ARRAY_DESC;
             _para6:pointer; _para7:PISC_LONG):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_array_lookup_bounds(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pchar; _para5:Pchar;
             _para6:PISC_ARRAY_DESC):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_array_lookup_desc(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pchar; _para5:Pchar;
             _para6:PISC_ARRAY_DESC):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_array_set_desc(_para1:PISC_STATUS; _para2:Pchar; _para3:Pchar; _para4:Psmallint; _para5:Psmallint;
             _para6:Psmallint; _para7:PISC_ARRAY_DESC):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_array_put_slice(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:PISC_QUAD; _para5:PISC_ARRAY_DESC;
             _para6:pointer; _para7:PISC_LONG):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_blob_default_desc(_para1:PISC_BLOB_DESC; _para2:Pbyte; _para3:Pbyte); {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_blob_gen_bpb(_para1:PISC_STATUS; _para2:PISC_BLOB_DESC; _para3:PISC_BLOB_DESC; _para4:word; _para5:Pbyte;
             _para6:Pword):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_blob_info(_para1:PISC_STATUS; _para2:Pisc_blob_handle; _para3:smallint; _para4:Pchar; _para5:smallint;
             _para6:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_blob_lookup_desc(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pbyte; _para5:Pbyte;
             _para6:PISC_BLOB_DESC; _para7:Pbyte):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_blob_set_desc(_para1:PISC_STATUS; _para2:Pbyte; _para3:Pbyte; _para4:smallint; _para5:smallint;
             _para6:smallint; _para7:PISC_BLOB_DESC):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_cancel_blob(_para1:PISC_STATUS; _para2:Pisc_blob_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_cancel_events(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:PISC_LONG):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_close_blob(_para1:PISC_STATUS; _para2:Pisc_blob_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_commit_retaining(_para1:PISC_STATUS; _para2:Pisc_tr_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_commit_transaction(_para1:PISC_STATUS; _para2:Pisc_tr_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_create_blob(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pisc_blob_handle; _para5:PISC_QUAD):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_create_blob2(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pisc_blob_handle; _para5:PISC_QUAD;
             _para6:smallint; _para7:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_create_database(_para1:PISC_STATUS; _para2:smallint; _para3:Pchar; _para4:Pisc_db_handle; _para5:smallint;
             _para6:Pchar; _para7:smallint):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_database_info(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:smallint; _para4:Pchar; _para5:smallint;
             _para6:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_decode_date(_para1:PISC_QUAD; _para2:pointer); {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_decode_sql_date(_para1:PISC_DATE; _para2:pointer); {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_decode_sql_time(_para1:PISC_TIME; _para2:pointer); {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_decode_timestamp(_para1:PISC_TIMESTAMP; _para2:pointer); {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_detach_database(_para1:PISC_STATUS; _para2:Pisc_db_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_drop_database(_para1:PISC_STATUS; _para2:Pisc_db_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_dsql_allocate_statement(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_stmt_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_dsql_alloc_statement2(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_stmt_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_dsql_describe(_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:word; _para4:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_dsql_describe_bind(_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:word; _para4:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_dsql_exec_immed2(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:word; _para5:Pchar;
             _para6:word; _para7:PXSQLDA; _para8:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_dsql_execute(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pisc_stmt_handle; _para4:word; _para5:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_dsql_execute2(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pisc_stmt_handle; _para4:word; _para5:PXSQLDA;
             _para6:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_dsql_execute_immediate(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:word; _para5:Pchar;
             _para6:word; _para7:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_dsql_fetch(_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:word; _para4:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_dsql_finish(_para1:Pisc_db_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_dsql_free_statement(_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:word):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_dsql_insert(_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:word; _para4:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_dsql_prepare(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pisc_stmt_handle; _para4:word; _para5:Pchar;
             _para6:word; _para7:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_dsql_set_cursor_name(_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:Pchar; _para4:word):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_dsql_sql_info(_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:smallint; _para4:Pchar; _para5:smallint;
             _para6:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_encode_date(_para1:pointer; _para2:PISC_QUAD); {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_encode_sql_date(_para1:pointer; _para2:PISC_DATE); {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_encode_sql_time(_para1:pointer; _para2:PISC_TIME); {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_encode_timestamp(_para1:pointer; _para2:PISC_TIMESTAMP); {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_event_block(_para1:PPchar; _para2:PPchar; _para3:word;
                      args: array of const):ISC_LONG; {$ifdef cvcall}cdecl{$else}error{$endif}; external gdslib;
  procedure isc_event_count(_para1: PISC_STATUS; _para2: short;
                     _para3: pchar; _para4: pchar); {$ifdef wincall}stdcall{$else}cdecl{$endif};  external gdslib;
  (*!!MVC
  void         isc_event_counts (unsigned ISC_LONG   ,
                                         short,
                                         char   ,
                                         char   ); {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;
  !!MVC *)
  procedure isc_expand_dpb(_para1:PPchar; _para2:Psmallint; args:array of const);
                        {$ifdef cvcall}cdecl{$else}error{$endif}; external gdslib;

  function isc_modify_dpb(_para1:PPchar; _para2:Psmallint; _para3:word; _para4:Pchar; _para5:smallint):longint; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_free(_para1:Pchar):ISC_LONG; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_get_segment(_para1:PISC_STATUS; _para2:Pisc_blob_handle; _para3:Pword; _para4:word; _para5:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_get_slice(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:PISC_QUAD; _para5:smallint;
             _para6:Pchar; _para7:smallint; _para8:PISC_LONG; _para9:ISC_LONG; _para10:pointer;
             _para11:PISC_LONG):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_interprete(_para1:Pchar; _para2:PPISC_STATUS):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_open_blob(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pisc_blob_handle; _para5:PISC_QUAD):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_open_blob2(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pisc_blob_handle; _para5:PISC_QUAD;
             _para6:smallint; _para7:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_prepare_transaction2(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:smallint; _para4:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_print_sqlerror(_para1:smallint; _para2:PISC_STATUS); {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_print_status(_para1:PISC_STATUS):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_put_segment(_para1:PISC_STATUS; _para2:Pisc_blob_handle; _para3:word; _para4:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_put_slice(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:PISC_QUAD; _para5:smallint;
             _para6:Pchar; _para7:smallint; _para8:PISC_LONG; _para9:ISC_LONG; _para10:pointer):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_que_events(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:PISC_LONG; _para4:smallint; _para5:Pchar;
             _para6:isc_callback; _para7:pointer):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_rollback_retaining(_para1:PISC_STATUS; _para2:Pisc_tr_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_rollback_transaction(_para1:PISC_STATUS; _para2:Pisc_tr_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_start_multiple(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:smallint; _para4:pointer):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_start_transaction(_para1:PISC_STATUS; _para2:Pisc_tr_handle;
    _para3:smallint; args:array of const):ISC_STATUS; {$ifdef cvcall}cdecl{$else}error{$endif}; external gdslib;

  function isc_sqlcode(_para1:PISC_STATUS):ISC_LONG; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_sql_interprete(_para1:smallint; _para2:Pchar; _para3:smallint); {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_transaction_info(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:smallint; _para4:Pchar; _para5:smallint;
             _para6:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_transact_request(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:word; _para5:Pchar;
             _para6:word; _para7:Pchar; _para8:word; _para9:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_vax_integer(_para1:Pchar; _para2:smallint):ISC_LONG; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_portable_integer(_para1:Pbyte; _para2:smallint):ISC_INT64; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  {                                    }
  { Security Functions                 }
  {                                    }


  function isc_add_user(_para1:PISC_STATUS; _para2:PUSER_SEC_DATA):longint; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_delete_user(_para1:PISC_STATUS; _para2:PUSER_SEC_DATA):longint; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_modify_user(_para1:PISC_STATUS; _para2:PUSER_SEC_DATA):longint; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  {                                 }
  {  Other OSRI functions           }
  {                                 }
  function isc_compile_request(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_req_handle; _para4:smallint; _para5:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_compile_request2(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_req_handle; _para4:smallint; _para5:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_ddl(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:smallint; _para5:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_prepare_transaction(_para1:PISC_STATUS; _para2:Pisc_tr_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_receive(_para1:PISC_STATUS; _para2:Pisc_req_handle; _para3:smallint; _para4:smallint; _para5:pointer;
             _para6:smallint):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_reconnect_transaction(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:smallint; _para5:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_release_request(_para1:PISC_STATUS; _para2:Pisc_req_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_request_info(_para1:PISC_STATUS; _para2:Pisc_req_handle; _para3:smallint; _para4:smallint; _para5:Pchar;
             _para6:smallint; _para7:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_seek_blob(_para1:PISC_STATUS; _para2:Pisc_blob_handle; _para3:smallint; _para4:ISC_LONG; _para5:PISC_LONG):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_send(_para1:PISC_STATUS; _para2:Pisc_req_handle; _para3:smallint; _para4:smallint; _para5:pointer;
             _para6:smallint):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_start_and_send(_para1:PISC_STATUS; _para2:Pisc_req_handle; _para3:Pisc_tr_handle; _para4:smallint; _para5:smallint;
             _para6:pointer; _para7:smallint):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_start_request(_para1:PISC_STATUS; _para2:Pisc_req_handle; _para3:Pisc_tr_handle; _para4:smallint):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_unwind_request(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:smallint):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_wait_for_event(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:smallint; _para4:Pchar; _para5:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  {                            }
  { Other Sql functions        }
  {                            }
  function isc_close(_para1:PISC_STATUS; _para2:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_declare(_para1:PISC_STATUS; _para2:Pchar; _para3:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_describe(_para1:PISC_STATUS; _para2:Pchar; _para3:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_describe_bind(_para1:PISC_STATUS; _para2:Pchar; _para3:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_execute(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pchar; _para4:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_execute_immediate(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Psmallint; _para5:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_fetch(_para1:PISC_STATUS; _para2:Pchar; _para3:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_open(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pchar; _para4:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_prepare(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pchar; _para5:Psmallint;
             _para6:Pchar; _para7:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  {                                    }
  { Other Dynamic sql functions        }
  {                                    }
  function isc_dsql_execute_m(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pisc_stmt_handle; _para4:word; _para5:Pchar;
             _para6:word; _para7:word; _para8:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_dsql_execute2_m(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pisc_stmt_handle; _para4:word; _para5:Pchar;
             _para6:word; _para7:word; _para8:Pchar; _para9:word; _para10:Pchar;
             _para11:word; _para12:word; _para13:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_dsql_execute_immediate_m(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:word; _para5:Pchar;
             _para6:word; _para7:word; _para8:Pchar; _para9:word; _para10:word;
             _para11:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_dsql_exec_immed3_m(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:word; _para5:Pchar;
             _para6:word; _para7:word; _para8:Pchar; _para9:word; _para10:word;
             _para11:Pchar; _para12:word; _para13:Pchar; _para14:word; _para15:word;
             _para16:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_dsql_fetch_m(_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:word; _para4:Pchar; _para5:word;
             _para6:word; _para7:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_dsql_insert_m(_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:word; _para4:Pchar; _para5:word;
             _para6:word; _para7:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_dsql_prepare_m(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pisc_stmt_handle; _para4:word; _para5:Pchar;
             _para6:word; _para7:word; _para8:Pchar; _para9:word; _para10:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_dsql_release(_para1:PISC_STATUS; _para2:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_embed_dsql_close(_para1:PISC_STATUS; _para2:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_embed_dsql_declare(_para1:PISC_STATUS; _para2:Pchar; _para3:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_embed_dsql_describe(_para1:PISC_STATUS; _para2:Pchar; _para3:word; _para4:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_embed_dsql_describe_bind(_para1:PISC_STATUS; _para2:Pchar; _para3:word; _para4:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_embed_dsql_execute(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pchar; _para4:word; _para5:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_embed_dsql_execute2(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pchar; _para4:word; _para5:PXSQLDA;
             _para6:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_embed_dsql_execute_immed(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:word; _para5:Pchar;
             _para6:word; _para7:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_embed_dsql_fetch(_para1:PISC_STATUS; _para2:Pchar; _para3:word; _para4:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_embed_dsql_open(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pchar; _para4:word; _para5:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_embed_dsql_open2(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pchar; _para4:word; _para5:PXSQLDA;
             _para6:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_embed_dsql_insert(_para1:PISC_STATUS; _para2:Pchar; _para3:word; _para4:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_embed_dsql_prepare(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pchar; _para5:word;
             _para6:Pchar; _para7:word; _para8:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_embed_dsql_release(_para1:PISC_STATUS; _para2:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  {                             }
  { Other Blob functions        }
  {                             }
  function BLOB_open(_para1:isc_blob_handle; _para2:Pchar; _para3:longint):PBSTREAM; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function BLOB_put(_para1:char; _para2:PBSTREAM):longint; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function BLOB_close(_para1:PBSTREAM):longint; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function BLOB_get(_para1:PBSTREAM):longint; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function BLOB_display(_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar):longint; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function BLOB_dump(_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar):longint; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function BLOB_edit(_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar):longint; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function BLOB_load(_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar):longint; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function BLOB_text_dump(_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar):longint; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function BLOB_text_load(_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar):longint; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function Bopen(_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar):PBSTREAM; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

{$IFDEF Unix}
  function Bopen2(_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar; _para5:word):PBSTREAM; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;
{$ENDIF}

  {                             }
  { Other Misc functions        }
  {                             }
  function isc_ftof(_para1:Pchar; _para2:word; _para3:Pchar; _para4:word):ISC_LONG; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_print_blr(_para1:Pchar; _para2:isc_callback; _para3:pointer; _para4:smallint):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_set_debug(_para1:longint); {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_qtoq(_para1:PISC_QUAD; _para2:PISC_QUAD); {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_vtof(_para1:Pchar; _para2:Pchar; _para3:word); {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_vtov(_para1:Pchar; _para2:Pchar; _para3:smallint); {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_version(_para1:Pisc_db_handle; _para2:isc_versioncallback; _para3:pointer):longint; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_get_client_version(aversion: pchar); {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;
  function isc_get_client_major_version: integer; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;
  function isc_get_client_minor_version: integer; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;
  
{$IFDEF Unix}
  function isc_reset_fpe(_para1:word):ISC_LONG; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;
{$ENDIF}

  {                                        }
  { Service manager functions              }
  {                                        }

  function isc_service_attach(status_vector: PISC_STATUS;
       service_length: word; service: Pchar; svc_handle: Pisc_svc_handle;
                                     spb_length: word; spb: Pchar): ISC_STATUS;
                  {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;
  function isc_service_detach(status_vector: PISC_STATUS;
                                        svc_handle: Pisc_svc_handle):ISC_STATUS; 
                  {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;
  function isc_service_query(status_vector: PISC_STATUS;
                        svc_handle: Pisc_svc_handle;
                        reserved: Pisc_resv_handle;
                         send_spb_length: word; send_sbp: Pchar;
                         request_spb_length: word; request_spb:Pchar;
                         buffer_length: word; buffer: Pchar):ISC_STATUS; 
                  {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;
  function isc_service_start(status_vector: PISC_STATUS;
               svc_handle: Pisc_svc_handle; reserved: Pisc_resv_handle; 
               spp_length: word; spb: Pchar):ISC_STATUS;
                 {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  {                              }
  { Forms functions              }
  {                              }
{$IFDEF Unix}
  function isc_compile_map(_para1:PISC_STATUS; _para2:Pisc_form_handle; _para3:Pisc_req_handle; _para4:Psmallint; _para5:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_compile_menu(_para1:PISC_STATUS; _para2:Pisc_form_handle; _para3:Pisc_req_handle; _para4:Psmallint; _para5:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_compile_sub_map(_para1:PISC_STATUS; _para2:Pisc_win_handle; _para3:Pisc_req_handle; _para4:Psmallint; _para5:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_create_window(_para1:PISC_STATUS; _para2:Pisc_win_handle; _para3:Psmallint; _para4:Pchar; _para5:Psmallint;
             _para6:Psmallint):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_delete_window(_para1:PISC_STATUS; _para2:Pisc_win_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_drive_form(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pisc_win_handle; _para5:Pisc_req_handle;
             _para6:Pbyte; _para7:Pbyte):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_drive_menu(_para1:PISC_STATUS; _para2:Pisc_win_handle; _para3:Pisc_req_handle; _para4:Psmallint; _para5:Pchar;
             _para6:Psmallint; _para7:Pchar; _para8:Psmallint; _para9:Psmallint; _para10:Pchar;
             _para11:PISC_LONG):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_form_delete(_para1:PISC_STATUS; _para2:Pisc_form_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_form_fetch(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pisc_req_handle; _para5:Pbyte):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_form_insert(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pisc_req_handle; _para5:Pbyte):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_get_entree(_para1:PISC_STATUS; _para2:Pisc_req_handle; _para3:Psmallint; _para4:Pchar; _para5:PISC_LONG;
             _para6:Psmallint):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_initialize_menu(_para1:PISC_STATUS; _para2:Pisc_req_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_menu(_para1:PISC_STATUS; _para2:Pisc_win_handle; _para3:Pisc_req_handle; _para4:Psmallint; _para5:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_load_form(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pisc_form_handle; _para5:Psmallint;
             _para6:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_pop_window(_para1:PISC_STATUS; _para2:Pisc_win_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_put_entree(_para1:PISC_STATUS; _para2:Pisc_req_handle; _para3:Psmallint; _para4:Pchar; _para5:PISC_LONG):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_reset_form(_para1:PISC_STATUS; _para2:Pisc_req_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_suspend_window(_para1:PISC_STATUS; _para2:Pisc_win_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;
{$ENDIF}

  function isc_attach_database:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_array_gen_sdl:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_array_get_slice:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_array_lookup_bounds:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_array_lookup_desc:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_array_set_desc:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_array_put_slice:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_blob_gen_bpb:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_blob_info:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_blob_lookup_desc:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_blob_set_desc:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_cancel_blob:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_cancel_events:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_close_blob:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_commit_retaining:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_commit_transaction:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_compile_request:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_compile_request2:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_create_blob:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_create_blob2:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_create_database:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_database_info:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_ddl:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_decode_date; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_decode_sql_date; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_decode_sql_time; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_decode_timestamp; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_detach_database:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_drop_database:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_encode_date; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_encode_sql_date; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_encode_sql_time; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_encode_timestamp; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_event_block:ISC_LONG; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_event_counts; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_expand_dpb; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_modify_dpb:longint; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_free:ISC_LONG; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_get_segment:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_get_slice:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_interprete:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_open_blob:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_open_blob2:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_prepare_transaction:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_prepare_transaction2:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_print_sqlerror; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_print_status:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_put_segment:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_put_slice:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_que_events:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_receive:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_reconnect_transaction:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_release_request:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_request_info:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

{$IFDEF Unix}
  function isc_reset_fpe:ISC_LONG; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;
{$ENDIF}

  function isc_rollback_transaction:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_rollback_retaining:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_seek_blob:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_send:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_service_attach:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_service_detach:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_service_query:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_service_start:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_start_and_send:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_start_multiple:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_start_request:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_start_transaction:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_sqlcode:ISC_LONG; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_transaction_info:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_transact_request:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_unwind_request:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_wait_for_event:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_ftof:ISC_LONG; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_print_blr:ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_set_debug; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_qtoq; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_vax_integer:ISC_LONG; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_vtof; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  procedure isc_vtov; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function isc_version:longint; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  {                 }
  { Blob functions  }
  {                 }

  function Bopen:PBSTREAM; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

  function BLOB_open:PBSTREAM; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;

{$IFDEF Unix}
  function Bopen2:PBSTREAM; {$ifdef wincall}stdcall{$else}cdecl{$endif}; external gdslib;
{$ENDIF}

{$ELSE} // LinkDynamically

var

{                          }
{ OSRI database functions  }
{                          }
  isc_attach_database : function (_para1:PISC_STATUS; _para2:smallint; _para3:Pchar; _para4:Pisc_db_handle; _para5:smallint;_para6:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif}; 
  isc_array_gen_sdl : function (_para1:PISC_STATUS; _para2:PISC_ARRAY_DESC; _para3:Psmallint; _para4:Pchar; _para5:Psmallint):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_array_get_slice : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:PISC_QUAD; _para5:PISC_ARRAY_DESC;_para6:pointer; _para7:PISC_LONG):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_array_lookup_bounds : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pchar; _para5:Pchar;_para6:PISC_ARRAY_DESC):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_array_lookup_desc : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pchar; _para5:Pchar;_para6:PISC_ARRAY_DESC):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_array_set_desc : function (_para1:PISC_STATUS; _para2:Pchar; _para3:Pchar; _para4:Psmallint; _para5:Psmallint;_para6:Psmallint; _para7:PISC_ARRAY_DESC):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_array_put_slice : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:PISC_QUAD; _para5:PISC_ARRAY_DESC;_para6:pointer; _para7:PISC_LONG):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_blob_default_desc : procedure (_para1:PISC_BLOB_DESC; _para2:Pbyte; _para3:Pbyte); {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_blob_gen_bpb : function (_para1:PISC_STATUS; _para2:PISC_BLOB_DESC; _para3:PISC_BLOB_DESC; _para4:word; _para5:Pbyte;_para6:Pword):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_blob_info : function (_para1:PISC_STATUS; _para2:Pisc_blob_handle; _para3:smallint; _para4:Pchar; _para5:smallint;_para6:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_blob_lookup_desc : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pbyte; _para5:Pbyte;_para6:PISC_BLOB_DESC; _para7:Pbyte):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_blob_set_desc : function (_para1:PISC_STATUS; _para2:Pbyte; _para3:Pbyte; _para4:smallint; _para5:smallint;_para6:smallint; _para7:PISC_BLOB_DESC):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_cancel_blob : function (_para1:PISC_STATUS; _para2:Pisc_blob_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_cancel_events : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:PISC_LONG):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_close_blob : function (_para1:PISC_STATUS; _para2:Pisc_blob_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_commit_retaining : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_commit_transaction : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_create_blob : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pisc_blob_handle; _para5:PISC_QUAD):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_create_blob2 : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pisc_blob_handle; _para5:PISC_QUAD;_para6:smallint; _para7:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_create_database : function (_para1:PISC_STATUS; _para2:smallint; _para3:Pchar; _para4:Pisc_db_handle; _para5:smallint;_para6:Pchar; _para7:smallint):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_database_info : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:smallint; _para4:Pchar; _para5:smallint;_para6:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_decode_date : procedure (_para1:PISC_QUAD; _para2:pointer); {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_decode_sql_date : procedure (_para1:PISC_DATE; _para2:pointer); {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_decode_sql_time : procedure (_para1:PISC_TIME; _para2:pointer); {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_decode_timestamp : procedure (_para1:PISC_TIMESTAMP; _para2:pointer); {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_detach_database : function (_para1:PISC_STATUS; _para2:Pisc_db_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_drop_database : function (_para1:PISC_STATUS; _para2:Pisc_db_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_dsql_allocate_statement : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_stmt_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_dsql_alloc_statement2 : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_stmt_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_dsql_describe : function (_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:word; _para4:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_dsql_describe_bind : function (_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:word; _para4:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_dsql_exec_immed2 : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:word; _para5:Pchar;_para6:word; _para7:PXSQLDA; _para8:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_dsql_execute : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pisc_stmt_handle; _para4:word; _para5:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_dsql_execute2 : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pisc_stmt_handle; _para4:word; _para5:PXSQLDA;_para6:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_dsql_execute_immediate : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:word; _para5:Pchar;_para6:word; _para7:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_dsql_fetch : function (_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:word; _para4:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_dsql_finish : function (_para1:Pisc_db_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_dsql_free_statement : function (_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:word):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_dsql_insert : function (_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:word; _para4:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_dsql_prepare : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pisc_stmt_handle; _para4:word; _para5:Pchar;_para6:word; _para7:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_dsql_set_cursor_name : function (_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:Pchar; _para4:word):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_dsql_sql_info : function (_para1:PISC_STATUS; _para2:Pisc_stmt_handle;
   _para3:smallint; _para4:Pchar; _para5:smallint;
                                 _para6:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_encode_date : procedure (_para1:pointer; _para2:PISC_QUAD); {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_encode_sql_date : procedure (_para1:pointer; _para2:PISC_DATE); {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_encode_sql_time : procedure (_para1:pointer; _para2:PISC_TIME); {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_encode_timestamp : procedure (_para1:pointer; _para2:PISC_TIMESTAMP); {$ifdef wincall}stdcall{$else}cdecl{$endif};
{$warnings off}
  isc_event_block : function (_para1:PPchar; _para2:PPchar; _para3:word;
                            args: array of const):ISC_LONG; {$ifdef cvcall}cdecl{$else}error{$endif}; {varargs;}
{$warnings on}
  isc_event_counts: procedure (_para1: PISC_STATUS; _para2: short;
                     _para3: pchar; _para4: pchar); {$ifdef wincall}stdcall{$else}cdecl{$endif};
{$warnings off}
  isc_expand_dpb : procedure (_para1:PPchar; _para2:Psmallint;
                args:array of const); {$ifdef cvcall}cdecl{$else}error{$endif};
{$warnings on}
  isc_modify_dpb : function (_para1:PPchar; _para2:Psmallint; _para3:word; _para4:Pchar; _para5:smallint):longint; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_free : function (_para1:Pchar):ISC_LONG; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_get_segment : function (_para1:PISC_STATUS; _para2:Pisc_blob_handle; _para3:Pword; _para4:word; _para5:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_get_slice : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:PISC_QUAD; _para5:smallint;_para6:Pchar; _para7:smallint; _para8:PISC_LONG; _para9:ISC_LONG; _para10:pointer;_para11:PISC_LONG):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_interprete : function (_para1:Pchar; _para2:PPISC_STATUS):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_open_blob : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pisc_blob_handle; _para5:PISC_QUAD):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_open_blob2 : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pisc_blob_handle; _para5:PISC_QUAD;_para6:smallint; _para7:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_prepare_transaction2 : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:smallint; _para4:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_print_sqlerror : procedure (_para1:smallint; _para2:PISC_STATUS); {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_print_status : function (_para1:PISC_STATUS):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_put_segment : function (_para1:PISC_STATUS; _para2:Pisc_blob_handle; _para3:word; _para4:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_put_slice : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:PISC_QUAD; _para5:smallint;_para6:Pchar; _para7:smallint; _para8:PISC_LONG; _para9:ISC_LONG; _para10:pointer):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_que_events : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:PISC_LONG; _para4:smallint; _para5:Pchar;_para6:isc_callback; _para7:pointer):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_rollback_retaining : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_rollback_transaction : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_start_multiple : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:smallint; _para4:pointer):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
{$warnings off}
  isc_start_transaction : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle;
         _para3:smallint; args:array of const):ISC_STATUS; 
                                     {$ifdef cvcall}cdecl{$else}error{$endif};
{$warnings on}
  isc_sqlcode : function (_para1:PISC_STATUS):ISC_LONG; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_sql_interprete : procedure (_para1:smallint; _para2:Pchar; _para3:smallint); {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_transaction_info : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:smallint; _para4:Pchar; _para5:smallint;_para6:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_transact_request : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:word; _para5:Pchar;_para6:word; _para7:Pchar; _para8:word; _para9:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_vax_integer : function (_para1:Pchar; _para2:smallint):ISC_LONG; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_portable_integer : function (_para1:Pbyte; _para2:smallint):ISC_INT64; {$ifdef wincall}stdcall{$else}cdecl{$endif};
{                                    }
{ Security Functions                 }
{                                    }
  isc_add_user : function (_para1:PISC_STATUS; _para2:PUSER_SEC_DATA):longint; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_delete_user : function (_para1:PISC_STATUS; _para2:PUSER_SEC_DATA):longint; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_modify_user : function (_para1:PISC_STATUS; _para2:PUSER_SEC_DATA):longint; {$ifdef wincall}stdcall{$else}cdecl{$endif};
{                                 }
{  Other OSRI functions           }
{                                 }
  isc_compile_request : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_req_handle; _para4:smallint; _para5:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_compile_request2 : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_req_handle; _para4:smallint; _para5:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_ddl : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:smallint; _para5:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_prepare_transaction : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_receive : function (_para1:PISC_STATUS; _para2:Pisc_req_handle; _para3:smallint; _para4:smallint; _para5:pointer;_para6:smallint):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_reconnect_transaction : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:smallint; _para5:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_release_request : function (_para1:PISC_STATUS; _para2:Pisc_req_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_request_info : function (_para1:PISC_STATUS; _para2:Pisc_req_handle; _para3:smallint; _para4:smallint; _para5:Pchar;_para6:smallint; _para7:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_seek_blob : function (_para1:PISC_STATUS; _para2:Pisc_blob_handle; _para3:smallint; _para4:ISC_LONG; _para5:PISC_LONG):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_send : function (_para1:PISC_STATUS; _para2:Pisc_req_handle; _para3:smallint; _para4:smallint; _para5:pointer;_para6:smallint):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_start_and_send : function (_para1:PISC_STATUS; _para2:Pisc_req_handle; _para3:Pisc_tr_handle; _para4:smallint; _para5:smallint;_para6:pointer; _para7:smallint):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_start_request : function (_para1:PISC_STATUS; _para2:Pisc_req_handle; _para3:Pisc_tr_handle; _para4:smallint):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_unwind_request : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:smallint):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_wait_for_event : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:smallint; _para4:Pchar; _para5:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
{                            }
{ Other Sql functions        }
{                            }
  isc_close : function (_para1:PISC_STATUS; _para2:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_declare : function (_para1:PISC_STATUS; _para2:Pchar; _para3:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_describe : function (_para1:PISC_STATUS; _para2:Pchar; _para3:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_describe_bind : function (_para1:PISC_STATUS; _para2:Pchar; _para3:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_execute : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pchar; _para4:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_execute_immediate : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Psmallint; _para5:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_fetch : function (_para1:PISC_STATUS; _para2:Pchar; _para3:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_open : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pchar; _para4:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_prepare : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pchar; _para5:Psmallint;_para6:Pchar; _para7:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
{                                    }
{ Other Dynamic sql functions        }
{                                    }
  isc_dsql_execute_m : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pisc_stmt_handle; _para4:word; _para5:Pchar;_para6:word; _para7:word; _para8:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_dsql_execute2_m : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pisc_stmt_handle; _para4:word; _para5:Pchar;_para6:word; _para7:word; _para8:Pchar; _para9:word; _para10:Pchar;_para11:word; _para12:word; _para13:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_dsql_execute_immediate_m : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:word; _para5:Pchar;_para6:word; _para7:word; _para8:Pchar; _para9:word; _para10:word;_para11:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_dsql_exec_immed3_m : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:word; _para5:Pchar;_para6:word; _para7:word; _para8:Pchar; _para9:word; _para10:word;_para11:Pchar; _para12:word; _para13:Pchar; _para14:word; _para15:word;_para16:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_dsql_fetch_m : function (_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:word; _para4:Pchar; _para5:word;_para6:word; _para7:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_dsql_insert_m : function (_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:word; _para4:Pchar; _para5:word;_para6:word; _para7:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_dsql_prepare_m : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pisc_stmt_handle; _para4:word; _para5:Pchar;_para6:word; _para7:word; _para8:Pchar; _para9:word; _para10:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_dsql_release : function (_para1:PISC_STATUS; _para2:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_embed_dsql_close : function (_para1:PISC_STATUS; _para2:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_embed_dsql_declare : function (_para1:PISC_STATUS; _para2:Pchar; _para3:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_embed_dsql_describe : function (_para1:PISC_STATUS; _para2:Pchar; _para3:word; _para4:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_embed_dsql_describe_bind : function (_para1:PISC_STATUS; _para2:Pchar; _para3:word; _para4:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_embed_dsql_execute : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pchar; _para4:word; _para5:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_embed_dsql_execute2 : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pchar; _para4:word; _para5:PXSQLDA;_para6:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_embed_dsql_execute_immed : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:word; _para5:Pchar;_para6:word; _para7:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_embed_dsql_fetch : function (_para1:PISC_STATUS; _para2:Pchar; _para3:word; _para4:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_embed_dsql_open : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pchar; _para4:word; _para5:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_embed_dsql_open2 : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pchar; _para4:word; _para5:PXSQLDA;_para6:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_embed_dsql_insert : function (_para1:PISC_STATUS; _para2:Pchar; _para3:word; _para4:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_embed_dsql_prepare : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pchar; _para5:word;_para6:Pchar; _para7:word; _para8:PXSQLDA):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_embed_dsql_release : function (_para1:PISC_STATUS; _para2:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
{                             }
{ Other Blob functions        }
{                             }
  BLOB_open : function (_para1:isc_blob_handle; _para2:Pchar; _para3:longint):PBSTREAM; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  BLOB_put : function (_para1:char; _para2:PBSTREAM):longint; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  BLOB_close : function (_para1:PBSTREAM):longint; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  BLOB_get : function (_para1:PBSTREAM):longint; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  BLOB_display : function (_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar):longint; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  BLOB_dump : function (_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar):longint; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  BLOB_edit : function (_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar):longint; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  BLOB_load : function (_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar):longint; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  BLOB_text_dump : function (_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar):longint; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  BLOB_text_load : function (_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar):longint; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  Bopen : function (_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar):PBSTREAM; {$ifdef wincall}stdcall{$else}cdecl{$endif};
{$IFDEF Unix}
  Bopen2 : function (_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar; _para5:word):PBSTREAM; {$ifdef wincall}stdcall{$else}cdecl{$endif};
{$ENDIF}
{                             }
{ Other Misc functions        }
{                             }
  isc_ftof : function (_para1:Pchar; _para2:word; _para3:Pchar; _para4:word):ISC_LONG; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_print_blr : function (_para1:Pchar; _para2:isc_callback; _para3:pointer; _para4:smallint):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_set_debug : procedure (_para1:longint); {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_qtoq : procedure (_para1:PISC_QUAD; _para2:PISC_QUAD); {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_vtof : procedure (_para1:Pchar; _para2:Pchar; _para3:word); {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_vtov : procedure (_para1:Pchar; _para2:Pchar; _para3:smallint); {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_version : function (_para1:Pisc_db_handle; _para2:isc_versioncallback;
                                _para3:pointer):longint; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_get_client_version: procedure (aversion: pchar); {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_get_client_major_version: function: integer; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_get_client_minor_version: function: integer; {$ifdef wincall}stdcall{$else}cdecl{$endif};
{$IFDEF Unix}
  isc_reset_fpe : function (_para1:word):ISC_LONG; {$ifdef wincall}stdcall{$else}cdecl{$endif};
{$ENDIF}
{                                        }
{ Service manager functions              }
{                                        }
  isc_service_attach: function (status_vector: PISC_STATUS;
       service_length: word; service: Pchar; svc_handle: Pisc_svc_handle;
                                     spb_length: word; spb: Pchar): ISC_STATUS;
                                   {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_service_detach: function (status_vector: PISC_STATUS;
                                        svc_handle: Pisc_svc_handle):ISC_STATUS; 
                                   {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_service_query: function (status_vector: PISC_STATUS;
                        svc_handle: Pisc_svc_handle;
                        reserved: Pisc_resv_handle;
                         send_spb_length: word; send_sbp: Pchar;
                         request_spb_length: word; request_spb:Pchar;
                         buffer_length: word; buffer: Pchar):ISC_STATUS; 
                                    {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_service_start: function (status_vector: PISC_STATUS;
               svc_handle: Pisc_svc_handle; reserved: Pisc_resv_handle; 
               spp_length: word; spb: Pchar):ISC_STATUS;
                                    {$ifdef wincall}stdcall{$else}cdecl{$endif};
{                              }
{ Forms functions              }
{                              }
{$IFDEF Unix}
  isc_compile_map : function (_para1:PISC_STATUS; _para2:Pisc_form_handle; _para3:Pisc_req_handle; _para4:Psmallint; _para5:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_compile_menu : function (_para1:PISC_STATUS; _para2:Pisc_form_handle; _para3:Pisc_req_handle; _para4:Psmallint; _para5:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_compile_sub_map : function (_para1:PISC_STATUS; _para2:Pisc_win_handle; _para3:Pisc_req_handle; _para4:Psmallint; _para5:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_create_window : function (_para1:PISC_STATUS; _para2:Pisc_win_handle; _para3:Psmallint; _para4:Pchar; _para5:Psmallint;_para6:Psmallint):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_delete_window : function (_para1:PISC_STATUS; _para2:Pisc_win_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_drive_form : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pisc_win_handle; _para5:Pisc_req_handle;_para6:Pbyte; _para7:Pbyte):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_drive_menu : function (_para1:PISC_STATUS; _para2:Pisc_win_handle; _para3:Pisc_req_handle; _para4:Psmallint; _para5:Pchar;_para6:Psmallint; _para7:Pchar; _para8:Psmallint; _para9:Psmallint; _para10:Pchar;_para11:PISC_LONG):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_form_delete : function (_para1:PISC_STATUS; _para2:Pisc_form_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_form_fetch : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pisc_req_handle; _para5:Pbyte):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_form_insert : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pisc_req_handle; _para5:Pbyte):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_get_entree : function (_para1:PISC_STATUS; _para2:Pisc_req_handle; _para3:Psmallint; _para4:Pchar; _para5:PISC_LONG;_para6:Psmallint):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_initialize_menu : function (_para1:PISC_STATUS; _para2:Pisc_req_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_menu : function (_para1:PISC_STATUS; _para2:Pisc_win_handle; _para3:Pisc_req_handle; _para4:Psmallint; _para5:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_load_form : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pisc_form_handle; _para5:Psmallint;_para6:Pchar):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_pop_window : function (_para1:PISC_STATUS; _para2:Pisc_win_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_put_entree : function (_para1:PISC_STATUS; _para2:Pisc_req_handle; _para3:Psmallint; _para4:Pchar; _para5:PISC_LONG):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_reset_form : function (_para1:PISC_STATUS; _para2:Pisc_req_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
  isc_suspend_window : function (_para1:PISC_STATUS; _para2:Pisc_win_handle):ISC_STATUS; {$ifdef wincall}stdcall{$else}cdecl{$endif};
{$ENDIF}

  fb_shutdown: function(timeout: cuint; reason: cint): cint;
                           {$ifdef wincall}stdcall{$else}cdecl{$endif};

{$ENDIF}

{$IFDEF LinkDynamically}
//var
// libname: filenamety;
{$endif}

implementation
uses
 msesys,msesonames,msedynload,msesysintf;

function XSQLDA_LENGTH(n: Integer): Integer;
begin
  Result := SizeOf(XSQLDA) + (n - 1) * SizeOf(XSQLVAR);
end;
 
{$IFDEF LinkDynamically}

ResourceString
  SErrEmbeddedFailed = 'Can not load embedded Firebird client "%s". Check your installation.';
  SErrDefaultsFailed = 'Can not load default Firebird clients ("%s" or "%s"). Check your installation.';
  SErrLoadFailed     = 'Can not load Firebird client library "%s". Check your installation.';
  SErrAlreadyLoaded  = 'Firebird interface already initialized from library %s.';
  
var 
 libinfo: dynlibinfoty;
//  RefCount : integer;
//  LoadedLibrary : String;
(*
Function TryInitialiseIBase60(Const LibraryNames: array of filenamety) : Boolean;
var
 mstr1: filenamety;
begin
 Result:=True;
 if (RefCount = 0) then begin
  try
   IBaseLibraryHandle:= LoadLib(LibraryNames,mstr1);
  except
   IBaseLibraryHandle:= nilhandle
  end;
  if IBaseLibraryHandle = nilhandle then begin
   result:= false;
   exit;
  end;
//  inc(RefCount);
  refcount:= 2; //releasing the library is unsafe!
  LoadedLibrary:= mstr1;
  getprocaddresses(ibaselibraryhandle,
   [
  'isc_attach_database',          //1
  'isc_array_gen_sdl',            //2
  'isc_array_get_slice',          //3
  'isc_array_lookup_bounds',      //4
  'isc_array_lookup_desc',        //5 
  'isc_array_set_desc',           //6
  'isc_array_put_slice',          //7
  'isc_blob_default_desc',        //8
  'isc_blob_gen_bpb',             //9
  'isc_blob_info',                //10
  'isc_blob_lookup_desc',         //11
  'isc_blob_set_desc',            //12
  'isc_cancel_blob',              //13
  'isc_cancel_events',            //14
  'isc_close_blob',               //15
  'isc_commit_retaining',         //16
  'isc_commit_transaction',       //17
  'isc_create_blob',              //18
  'isc_create_blob2',             //19
  'isc_create_database',          //20
  'isc_database_info',            //21
  'isc_decode_date',              //22
  'isc_decode_sql_date',          //23
  'isc_decode_sql_time',          //24
  'isc_decode_timestamp',         //25
  'isc_detach_database',          //26
  'isc_drop_database',            //27
  'isc_dsql_allocate_statement',  //28    
  'isc_dsql_alloc_statement2',    //29
  'isc_dsql_describe',            //30
  'isc_dsql_describe_bind',       //31
  'isc_dsql_exec_immed2',         //32
  'isc_dsql_execute',             //33
  'isc_dsql_execute2',            //34
  'isc_dsql_execute_immediate',   //35
  'isc_dsql_fetch',               //36
  'isc_dsql_finish',              //37
  'isc_dsql_free_statement',      //38  
  'isc_dsql_insert',              //39
  'isc_dsql_prepare',             //40
  'isc_dsql_set_cursor_name',     //41
  'isc_dsql_sql_info',            //42
  'isc_encode_date',              //43
  'isc_encode_sql_date',          //44
  'isc_encode_sql_time',          //45
  'isc_encode_timestamp',         //46
  'isc_event_block',              //47
  'isc_event_counts',             //48
  'isc_expand_dpb',               //49
  'isc_modify_dpb',               //50
  'isc_free',                     //51
  'isc_get_segment',              //52
  'isc_get_slice',                //53
  'isc_interprete',               //54
  'isc_open_blob',                //55
  'isc_open_blob2',               //56
  'isc_prepare_transaction2',     //57
  'isc_print_sqlerror',           //58
  'isc_print_status',             //69
  'isc_put_segment',              //60
  'isc_put_slice',                //61
  'isc_que_events',               //62
  'isc_rollback_retaining',       //63
  'isc_rollback_transaction',     //64
  'isc_start_multiple',           //65
  'isc_start_transaction',        //66
  'isc_sqlcode',                  //67
  'isc_sql_interprete',           //68
  'isc_transaction_info',         //69
  'isc_transact_request',         //70
  'isc_vax_integer',              //71
  'isc_portable_integer',         //72
  'isc_add_user',                 //73
  'isc_delete_user',              //74
  'isc_modify_user',              //75
  'isc_compile_request',          //76
  'isc_compile_request2',         //77
  'isc_ddl',                      //78
  'isc_prepare_transaction',      //79
  'isc_receive',                  //80
  'isc_reconnect_transaction',    //81
  'isc_release_request',          //82
  'isc_request_info',             //83
  'isc_seek_blob',                //84
  'isc_send',                     //85
  'isc_start_and_send',           //86
  'isc_start_request',            //87
  'isc_unwind_request',           //88
  'isc_wait_for_event',           //89
  'isc_close',                    //90
  'isc_declare',                  //91
  'isc_describe',                 //92
  'isc_describe_bind',            //93 
  'isc_execute',                  //94
  'isc_execute_immediate',        //95
  'isc_fetch',                    //96
  'isc_open',                     //97
  'isc_prepare',                  //98
  'isc_dsql_execute_m',           //99
  'isc_dsql_execute2_m',          //100
  'isc_dsql_execute_immediate_m', //101  
  'isc_dsql_exec_immed3_m',       //102
  'isc_dsql_fetch_m',             //103
  'isc_dsql_insert_m',            //104
  'isc_dsql_prepare_m',           //105
  'isc_dsql_release',             //106 
  'isc_embed_dsql_close',         //107
  'isc_embed_dsql_declare',       //108
  'isc_embed_dsql_describe',      //109
  'isc_embed_dsql_describe_bind', //110
  'isc_embed_dsql_execute',       //111
  'isc_embed_dsql_execute2',      //112
  'isc_embed_dsql_execute_immed', //113
  'isc_embed_dsql_fetch',         //114
  'isc_embed_dsql_open',          //115
  'isc_embed_dsql_open2',         //116
  'isc_embed_dsql_insert',        //117
  'isc_embed_dsql_prepare',       //118
  'isc_embed_dsql_release',       //119
  'BLOB_open',                    //120
  'BLOB_put',                     //121
  'BLOB_close',                   //122
  'BLOB_get',                     //123
  'BLOB_display',                 //124
  'BLOB_dump',                    //125
  'BLOB_edit',                    //126
  'BLOB_load',                    //127
  'BLOB_text_dump',               //128
  'BLOB_text_load',               //129
  'Bopen',                        //130
{$IFDEF Unix}              
  'Bopen2',                       //131
{$ENDIF}                       
  'isc_ftof',                     //132
  'isc_print_blr',                //133
  'isc_set_debug',                //134
  'isc_qtoq',                     //135
  'isc_vtof',                     //136
  'isc_vtov',                     //137
  'isc_version',                  //138
  'isc_get_client_version',       //139
  'isc_get_client_major_version', //140
  'isc_get_client_minor_version', //141
{$IFDEF Unix}
  'isc_reset_fpe',                //142
{$ENDIF}
  'isc_service_attach',           //143
  'isc_service_detach',           //144
  'isc_service_query',            //145
  'isc_service_start'             //146
{$IFDEF Unix}
  ,           
  'isc_compile_map',              //147
  'isc_compile_menu',             //148
  'isc_compile_sub_map',          //149
  'isc_create_window',            //150
  'isc_delete_window',            //151
  'isc_drive_form',               //152
  'isc_drive_menu',               //153
  'isc_form_delete',              //154
  'isc_form_fetch',               //155
  'isc_form_insert',              //156
  'isc_get_entree',               //157
  'isc_initialize_menu',          //158
  'isc_menu',                     //159
  'isc_load_form',                //160
  'isc_pop_window',               //161
  'isc_put_entree',               //162
  'isc_reset_form',               //163
  'isc_suspend_window'            //164
{$ENDIF} 
  ],
  [
  @isc_attach_database,           //1
  @isc_array_gen_sdl,             //2
  @isc_array_get_slice,           //3
  @isc_array_lookup_bounds,       //4
  @isc_array_lookup_desc,         //5
  @isc_array_set_desc,            //6
  @isc_array_put_slice,           //7
  @isc_blob_default_desc,         //8
  @isc_blob_gen_bpb,              //9
  @isc_blob_info,                 //10
  @isc_blob_lookup_desc,          //11
  @isc_blob_set_desc,             //12
  @isc_cancel_blob,               //13
  @isc_cancel_events,             //14
  @isc_close_blob,                //15
  @isc_commit_retaining,          //16
  @isc_commit_transaction,        //17
  @isc_create_blob,               //18
  @isc_create_blob2,              //19
  @isc_create_database,           //20
  @isc_database_info,             //21
  @isc_decode_date,               //22
  @isc_decode_sql_date,           //23
  @isc_decode_sql_time,           //24
  @isc_decode_timestamp,          //25
  @isc_detach_database,           //26
  @isc_drop_database,             //27
  @isc_dsql_allocate_statement,   //28
  @isc_dsql_alloc_statement2,     //29
  @isc_dsql_describe,             //30
  @isc_dsql_describe_bind,        //31
  @isc_dsql_exec_immed2,          //32
  @isc_dsql_execute,              //33
  @isc_dsql_execute2,             //34
  @isc_dsql_execute_immediate,    //35
  @isc_dsql_fetch,                //36
  @isc_dsql_finish,               //37
  @isc_dsql_free_statement,       //38
  @isc_dsql_insert,               //39
  @isc_dsql_prepare,              //40
  @isc_dsql_set_cursor_name,      //41
  @isc_dsql_sql_info,             //42
  @isc_encode_date,               //43
  @isc_encode_sql_date,           //44
  @isc_encode_sql_time,           //45
  @isc_encode_timestamp,          //46
  @isc_event_block,               //47
  @isc_event_counts,              //48
  @isc_expand_dpb,                //49
  @isc_modify_dpb,                //50
  @isc_free,                      //51
  @isc_get_segment,               //52
  @isc_get_slice,                 //53
  @isc_interprete,                //54
  @isc_open_blob,                 //55
  @isc_open_blob2,                //56
  @isc_prepare_transaction2,      //57
  @isc_print_sqlerror,            //58
  @isc_print_status,              //59
  @isc_put_segment,               //60
  @isc_put_slice,                 //61
  @isc_que_events,                //62
  @isc_rollback_retaining,        //63
  @isc_rollback_transaction,      //64
  @isc_start_multiple,            //65
  @isc_start_transaction,         //66
  @isc_sqlcode,                   //67
  @isc_sql_interprete,            //68
  @isc_transaction_info,          //69
  @isc_transact_request,          //70
  @isc_vax_integer,               //71
  @isc_portable_integer,          //72
  @isc_add_user,                  //73
  @isc_delete_user,               //74
  @isc_modify_user,               //75
  @isc_compile_request,           //76
  @isc_compile_request2,          //77
  @isc_ddl,                       //78
  @isc_prepare_transaction,       //79
  @isc_receive,                   //80
  @isc_reconnect_transaction,     //81
  @isc_release_request,           //82
  @isc_request_info,              //83
  @isc_seek_blob,                 //84
  @isc_send,                      //85
  @isc_start_and_send,            //86
  @isc_start_request,             //87
  @isc_unwind_request,            //88
  @isc_wait_for_event,            //89
  @isc_close,                     //90
  @isc_declare,                   //91
  @isc_describe,                  //92
  @isc_describe_bind,             //93
  @isc_execute,                   //94
  @isc_execute_immediate,         //95
  @isc_fetch,                     //96
  @isc_open,                      //97
  @isc_prepare,                   //98
  @isc_dsql_execute_m,            //99
  @isc_dsql_execute2_m,           //100
  @isc_dsql_execute_immediate_m,  //101
  @isc_dsql_exec_immed3_m,        //102
  @isc_dsql_fetch_m,              //103
  @isc_dsql_insert_m,             //104
  @isc_dsql_prepare_m,            //105
  @isc_dsql_release,              //106
  @isc_embed_dsql_close,          //107
  @isc_embed_dsql_declare,        //108
  @isc_embed_dsql_describe,       //109
  @isc_embed_dsql_describe_bind,  //110
  @isc_embed_dsql_execute,        //111
  @isc_embed_dsql_execute2,       //112
  @isc_embed_dsql_execute_immed,  //113
  @isc_embed_dsql_fetch,          //114
  @isc_embed_dsql_open,           //115
  @isc_embed_dsql_open2,          //116
  @isc_embed_dsql_insert,         //117
  @isc_embed_dsql_prepare,        //118
  @isc_embed_dsql_release,        //119
  @BLOB_open,                     //120
  @BLOB_put,                      //121
  @BLOB_close,                    //122
  @BLOB_get,                      //123
  @BLOB_display,                  //124
  @BLOB_dump,                     //125
  @BLOB_edit,                     //126
  @BLOB_load,                     //127
  @BLOB_text_dump,                //128
  @BLOB_text_load,                //129
  @Bopen,                         //130
{$IFDEF Unix}            
  @Bopen2,                        //131
{$ENDIF}
  @isc_ftof,                      //132
  @isc_print_blr,                 //133
  @isc_set_debug,                 //134
  @isc_qtoq,                      //135
  @isc_vtof,                      //136
  @isc_vtov,                      //137
  @isc_version,                   //138
  @isc_get_client_version,        //139
  @isc_get_client_major_version,  //140
  @isc_get_client_minor_version,  //141
{$IFDEF Unix}  
  @isc_reset_fpe,                 //142
{$ENDIF}
  @isc_service_attach,            //143
  @isc_service_detach,            //144
  @isc_service_query,             //145
  @isc_service_start              //146
{$IFDEF Unix}
  ,
  @isc_compile_map,               //147
  @isc_compile_menu,              //148
  @isc_compile_sub_map,           //149
  @isc_create_window,             //150
  @isc_delete_window,             //151
  @isc_drive_form,                //152
  @isc_drive_menu,                //153
  @isc_form_delete,               //154
  @isc_form_fetch,                //155
  @isc_form_insert,               //156
  @isc_get_entree,                //157
  @isc_initialize_menu,           //158
  @isc_menu,                      //159
  @isc_load_form,                 //160
  @isc_pop_window,                //161
  @isc_put_entree,                //162
  @isc_reset_form,                //163
  @isc_suspend_window             //164
{$ENDIF}          
  ],true);  //accept missing entries
 end
 else begin
//    If (LoadedLibrary<>LibraryName) then
//      Raise EInoutError.CreateFmt(SErrAlreadyLoaded,[LoadedLibrary]);
  if (loadedlibrary = mstr1) then begin
   inc(RefCount);     //mse 2006-11-23
  end;
 end;  
end;

procedure checkloaded;
begin
 if (loadedlibrary <> '') then begin
  raise einouterror.createfmt(serralreadyloaded,[loadedlibrary]);
 end;
end;
*)

Procedure InitializeIBase60(const sonames: array of filenamety);
const
 funcs: array[0..{$ifdef unix}164{$else}144{$endif}] of funcinfoty = (
  (n: 'isc_attach_database'; d: {$ifndef FPC}@{$endif}@isc_attach_database),
  (n: 'isc_array_gen_sdl'; d: {$ifndef FPC}@{$endif}@isc_array_gen_sdl),
  (n: 'isc_array_get_slice'; d: {$ifndef FPC}@{$endif}@isc_array_get_slice),
  (n: 'isc_array_lookup_bounds'; d: {$ifndef FPC}@{$endif}@isc_array_lookup_bounds),
  (n: 'isc_array_lookup_desc'; d: {$ifndef FPC}@{$endif}@isc_array_lookup_desc),
  (n: 'isc_array_set_desc'; d: {$ifndef FPC}@{$endif}@isc_array_set_desc),
  (n: 'isc_array_put_slice'; d: {$ifndef FPC}@{$endif}@isc_array_put_slice),
  (n: 'isc_blob_default_desc'; d: {$ifndef FPC}@{$endif}@isc_blob_default_desc),
  (n: 'isc_blob_gen_bpb'; d: {$ifndef FPC}@{$endif}@isc_blob_gen_bpb),
  (n: 'isc_blob_info'; d: {$ifndef FPC}@{$endif}@isc_blob_info),
  (n: 'isc_blob_lookup_desc'; d: {$ifndef FPC}@{$endif}@isc_blob_lookup_desc),
  (n: 'isc_blob_set_desc'; d: {$ifndef FPC}@{$endif}@isc_blob_set_desc),
  (n: 'isc_cancel_blob'; d: {$ifndef FPC}@{$endif}@isc_cancel_blob),
  (n: 'isc_cancel_events'; d: {$ifndef FPC}@{$endif}@isc_cancel_events),
  (n: 'isc_close_blob'; d: {$ifndef FPC}@{$endif}@isc_close_blob),
  (n: 'isc_commit_retaining'; d: {$ifndef FPC}@{$endif}@isc_commit_retaining),
  (n: 'isc_commit_transaction'; d: {$ifndef FPC}@{$endif}@isc_commit_transaction),
  (n: 'isc_create_blob'; d: {$ifndef FPC}@{$endif}@isc_create_blob),
  (n: 'isc_create_blob2'; d: {$ifndef FPC}@{$endif}@isc_create_blob2),
  (n: 'isc_create_database'; d: {$ifndef FPC}@{$endif}@isc_create_database),
  (n: 'isc_database_info'; d: {$ifndef FPC}@{$endif}@isc_database_info),
  (n: 'isc_decode_date'; d: {$ifndef FPC}@{$endif}@isc_decode_date),
  (n: 'isc_decode_sql_date'; d: {$ifndef FPC}@{$endif}@isc_decode_sql_date),
  (n: 'isc_decode_sql_time'; d: {$ifndef FPC}@{$endif}@isc_decode_sql_time),
  (n: 'isc_decode_timestamp'; d: {$ifndef FPC}@{$endif}@isc_decode_timestamp),
  (n: 'isc_detach_database'; d: {$ifndef FPC}@{$endif}@isc_detach_database),
  (n: 'isc_drop_database'; d: {$ifndef FPC}@{$endif}@isc_drop_database),
  (n: 'isc_dsql_allocate_statement'; d: {$ifndef FPC}@{$endif}@isc_dsql_allocate_statement),
  (n: 'isc_dsql_alloc_statement2'; d: {$ifndef FPC}@{$endif}@isc_dsql_alloc_statement2),
  (n: 'isc_dsql_describe'; d: {$ifndef FPC}@{$endif}@isc_dsql_describe),
  (n: 'isc_dsql_describe_bind'; d: {$ifndef FPC}@{$endif}@isc_dsql_describe_bind),
  (n: 'isc_dsql_exec_immed2'; d: {$ifndef FPC}@{$endif}@isc_dsql_exec_immed2),
  (n: 'isc_dsql_execute'; d: {$ifndef FPC}@{$endif}@isc_dsql_execute),
  (n: 'isc_dsql_execute2'; d: {$ifndef FPC}@{$endif}@isc_dsql_execute2),
  (n: 'isc_dsql_execute_immediate'; d: {$ifndef FPC}@{$endif}@isc_dsql_execute_immediate),
  (n: 'isc_dsql_fetch'; d: {$ifndef FPC}@{$endif}@isc_dsql_fetch),
  (n: 'isc_dsql_finish'; d: {$ifndef FPC}@{$endif}@isc_dsql_finish),
  (n: 'isc_dsql_free_statement'; d: {$ifndef FPC}@{$endif}@isc_dsql_free_statement),
  (n: 'isc_dsql_insert'; d: {$ifndef FPC}@{$endif}@isc_dsql_insert),
  (n: 'isc_dsql_prepare'; d: {$ifndef FPC}@{$endif}@isc_dsql_prepare),
  (n: 'isc_dsql_set_cursor_name'; d: {$ifndef FPC}@{$endif}@isc_dsql_set_cursor_name),
  (n: 'isc_dsql_sql_info'; d: {$ifndef FPC}@{$endif}@isc_dsql_sql_info),
  (n: 'isc_encode_date'; d: {$ifndef FPC}@{$endif}@isc_encode_date),
  (n: 'isc_encode_sql_date'; d: {$ifndef FPC}@{$endif}@isc_encode_sql_date),
  (n: 'isc_encode_sql_time'; d: {$ifndef FPC}@{$endif}@isc_encode_sql_time),
  (n: 'isc_encode_timestamp'; d: {$ifndef FPC}@{$endif}@isc_encode_timestamp),
  (n: 'isc_event_block'; d: {$ifndef FPC}@{$endif}@isc_event_block),
  (n: 'isc_event_counts'; d: {$ifndef FPC}@{$endif}@isc_event_counts),
  (n: 'isc_expand_dpb'; d: {$ifndef FPC}@{$endif}@isc_expand_dpb),
  (n: 'isc_modify_dpb'; d: {$ifndef FPC}@{$endif}@isc_modify_dpb),
  (n: 'isc_free'; d: {$ifndef FPC}@{$endif}@isc_free),
  (n: 'isc_get_segment'; d: {$ifndef FPC}@{$endif}@isc_get_segment),
  (n: 'isc_get_slice'; d: {$ifndef FPC}@{$endif}@isc_get_slice),
  (n: 'isc_interprete'; d: {$ifndef FPC}@{$endif}@isc_interprete),
  (n: 'isc_open_blob'; d: {$ifndef FPC}@{$endif}@isc_open_blob),
  (n: 'isc_open_blob2'; d: {$ifndef FPC}@{$endif}@isc_open_blob2),
  (n: 'isc_prepare_transaction2'; d: {$ifndef FPC}@{$endif}@isc_prepare_transaction2),
  (n: 'isc_print_sqlerror'; d: {$ifndef FPC}@{$endif}@isc_print_sqlerror),
  (n: 'isc_print_status'; d: {$ifndef FPC}@{$endif}@isc_print_status),
  (n: 'isc_put_segment'; d: {$ifndef FPC}@{$endif}@isc_put_segment),
  (n: 'isc_put_slice'; d: {$ifndef FPC}@{$endif}@isc_put_slice),
  (n: 'isc_que_events'; d: {$ifndef FPC}@{$endif}@isc_que_events),
  (n: 'isc_rollback_retaining'; d: {$ifndef FPC}@{$endif}@isc_rollback_retaining),
  (n: 'isc_rollback_transaction'; d: {$ifndef FPC}@{$endif}@isc_rollback_transaction),
  (n: 'isc_start_multiple'; d: {$ifndef FPC}@{$endif}@isc_start_multiple),
  (n: 'isc_start_transaction'; d: {$ifndef FPC}@{$endif}@isc_start_transaction),
  (n: 'isc_sqlcode'; d: {$ifndef FPC}@{$endif}@isc_sqlcode),
  (n: 'isc_sql_interprete'; d: {$ifndef FPC}@{$endif}@isc_sql_interprete),
  (n: 'isc_transaction_info'; d: {$ifndef FPC}@{$endif}@isc_transaction_info),
  (n: 'isc_transact_request'; d: {$ifndef FPC}@{$endif}@isc_transact_request),
  (n: 'isc_vax_integer'; d: {$ifndef FPC}@{$endif}@isc_vax_integer),
  (n: 'isc_portable_integer'; d: {$ifndef FPC}@{$endif}@isc_portable_integer),
  (n: 'isc_add_user'; d: {$ifndef FPC}@{$endif}@isc_add_user),
  (n: 'isc_delete_user'; d: {$ifndef FPC}@{$endif}@isc_delete_user),
  (n: 'isc_modify_user'; d: {$ifndef FPC}@{$endif}@isc_modify_user),
  (n: 'isc_compile_request'; d: {$ifndef FPC}@{$endif}@isc_compile_request),
  (n: 'isc_compile_request2'; d: {$ifndef FPC}@{$endif}@isc_compile_request2),
  (n: 'isc_ddl'; d: {$ifndef FPC}@{$endif}@isc_ddl),
  (n: 'isc_prepare_transaction'; d: {$ifndef FPC}@{$endif}@isc_prepare_transaction),
  (n: 'isc_receive'; d: {$ifndef FPC}@{$endif}@isc_receive),
  (n: 'isc_reconnect_transaction'; d: {$ifndef FPC}@{$endif}@isc_reconnect_transaction),
  (n: 'isc_release_request'; d: {$ifndef FPC}@{$endif}@isc_release_request),
  (n: 'isc_request_info'; d: {$ifndef FPC}@{$endif}@isc_request_info),
  (n: 'isc_seek_blob'; d: {$ifndef FPC}@{$endif}@isc_seek_blob),
  (n: 'isc_send'; d: {$ifndef FPC}@{$endif}@isc_send),
  (n: 'isc_start_and_send'; d: {$ifndef FPC}@{$endif}@isc_start_and_send),
  (n: 'isc_start_request'; d: {$ifndef FPC}@{$endif}@isc_start_request),
  (n: 'isc_unwind_request'; d: {$ifndef FPC}@{$endif}@isc_unwind_request),
  (n: 'isc_wait_for_event'; d: {$ifndef FPC}@{$endif}@isc_wait_for_event),
  (n: 'isc_close'; d: {$ifndef FPC}@{$endif}@isc_close),
  (n: 'isc_declare'; d: {$ifndef FPC}@{$endif}@isc_declare),
  (n: 'isc_describe'; d: {$ifndef FPC}@{$endif}@isc_describe),
  (n: 'isc_describe_bind'; d: {$ifndef FPC}@{$endif}@isc_describe_bind),
  (n: 'isc_execute'; d: {$ifndef FPC}@{$endif}@isc_execute),
  (n: 'isc_execute_immediate'; d: {$ifndef FPC}@{$endif}@isc_execute_immediate),
  (n: 'isc_fetch'; d: {$ifndef FPC}@{$endif}@isc_fetch),
  (n: 'isc_open'; d: {$ifndef FPC}@{$endif}@isc_open),
  (n: 'isc_prepare'; d: {$ifndef FPC}@{$endif}@isc_prepare),
  (n: 'isc_dsql_execute_m'; d: {$ifndef FPC}@{$endif}@isc_dsql_execute_m),
  (n: 'isc_dsql_execute2_m'; d: {$ifndef FPC}@{$endif}@isc_dsql_execute2_m),
  (n: 'isc_dsql_execute_immediate_m'; d: {$ifndef FPC}@{$endif}@isc_dsql_execute_immediate_m),
  (n: 'isc_dsql_exec_immed3_m'; d: {$ifndef FPC}@{$endif}@isc_dsql_exec_immed3_m),
  (n: 'isc_dsql_fetch_m'; d: {$ifndef FPC}@{$endif}@isc_dsql_fetch_m),
  (n: 'isc_dsql_insert_m'; d: {$ifndef FPC}@{$endif}@isc_dsql_insert_m),
  (n: 'isc_dsql_prepare_m'; d: {$ifndef FPC}@{$endif}@isc_dsql_prepare_m),
  (n: 'isc_dsql_release'; d: {$ifndef FPC}@{$endif}@isc_dsql_release),
  (n: 'isc_embed_dsql_close'; d: {$ifndef FPC}@{$endif}@isc_embed_dsql_close),
  (n: 'isc_embed_dsql_declare'; d: {$ifndef FPC}@{$endif}@isc_embed_dsql_declare),
  (n: 'isc_embed_dsql_describe'; d: {$ifndef FPC}@{$endif}@isc_embed_dsql_describe),
  (n: 'isc_embed_dsql_describe_bind'; d: {$ifndef FPC}@{$endif}@isc_embed_dsql_describe_bind),
  (n: 'isc_embed_dsql_execute'; d: {$ifndef FPC}@{$endif}@isc_embed_dsql_execute),
  (n: 'isc_embed_dsql_execute2'; d: {$ifndef FPC}@{$endif}@isc_embed_dsql_execute2),
  (n: 'isc_embed_dsql_execute_immed'; d: {$ifndef FPC}@{$endif}@isc_embed_dsql_execute_immed),
  (n: 'isc_embed_dsql_fetch'; d: {$ifndef FPC}@{$endif}@isc_embed_dsql_fetch),
  (n: 'isc_embed_dsql_open'; d: {$ifndef FPC}@{$endif}@isc_embed_dsql_open),
  (n: 'isc_embed_dsql_open2'; d: {$ifndef FPC}@{$endif}@isc_embed_dsql_open2),
  (n: 'isc_embed_dsql_insert'; d: {$ifndef FPC}@{$endif}@isc_embed_dsql_insert),
  (n: 'isc_embed_dsql_prepare'; d: {$ifndef FPC}@{$endif}@isc_embed_dsql_prepare),
  (n: 'isc_embed_dsql_release'; d: {$ifndef FPC}@{$endif}@isc_embed_dsql_release),
  (n: 'BLOB_open'; d: {$ifndef FPC}@{$endif}@BLOB_open),
  (n: 'BLOB_put'; d: {$ifndef FPC}@{$endif}@BLOB_put),
  (n: 'BLOB_close'; d: {$ifndef FPC}@{$endif}@BLOB_close),
  (n: 'BLOB_get'; d: {$ifndef FPC}@{$endif}@BLOB_get),
  (n: 'BLOB_display'; d: {$ifndef FPC}@{$endif}@BLOB_display),
  (n: 'BLOB_dump'; d: {$ifndef FPC}@{$endif}@BLOB_dump),
  (n: 'BLOB_edit'; d: {$ifndef FPC}@{$endif}@BLOB_edit),
  (n: 'BLOB_load'; d: {$ifndef FPC}@{$endif}@BLOB_load),
  (n: 'BLOB_text_dump'; d: {$ifndef FPC}@{$endif}@BLOB_text_dump),
  (n: 'BLOB_text_load'; d: {$ifndef FPC}@{$endif}@BLOB_text_load),
  (n: 'Bopen'; d: {$ifndef FPC}@{$endif}@Bopen),
  (n: 'isc_ftof'; d: {$ifndef FPC}@{$endif}@isc_ftof),
  (n: 'isc_print_blr'; d: {$ifndef FPC}@{$endif}@isc_print_blr),
  (n: 'isc_set_debug'; d: {$ifndef FPC}@{$endif}@isc_set_debug),
  (n: 'isc_qtoq'; d: {$ifndef FPC}@{$endif}@isc_qtoq),
  (n: 'isc_vtof'; d: {$ifndef FPC}@{$endif}@isc_vtof),
  (n: 'isc_vtov'; d: {$ifndef FPC}@{$endif}@isc_vtov),
  (n: 'isc_version'; d: {$ifndef FPC}@{$endif}@isc_version),
  (n: 'isc_get_client_version'; d: {$ifndef FPC}@{$endif}@isc_get_client_version),
  (n: 'isc_get_client_major_version'; d: {$ifndef FPC}@{$endif}@isc_get_client_major_version),
  (n: 'isc_get_client_minor_version'; d: {$ifndef FPC}@{$endif}@isc_get_client_minor_version),
  (n: 'isc_service_attach'; d: {$ifndef FPC}@{$endif}@isc_service_attach),
  (n: 'isc_service_detach'; d: {$ifndef FPC}@{$endif}@isc_service_detach),
  (n: 'isc_service_query'; d: {$ifndef FPC}@{$endif}@isc_service_query),
  (n: 'isc_service_start'; d: {$ifndef FPC}@{$endif}@isc_service_start)

{$IFDEF Unix}
  ,           
  (n: 'Bopen2'; d: {$ifndef FPC}@{$endif}@Bopen2),
  (n: 'isc_reset_fpe'; d: {$ifndef FPC}@{$endif}@isc_reset_fpe),
  (n: 'isc_compile_map'; d: {$ifndef FPC}@{$endif}@isc_compile_map),
  (n: 'isc_compile_menu'; d: {$ifndef FPC}@{$endif}@isc_compile_menu),
  (n: 'isc_compile_sub_map'; d: {$ifndef FPC}@{$endif}@isc_compile_sub_map),
  (n: 'isc_create_window'; d: {$ifndef FPC}@{$endif}@isc_create_window),
  (n: 'isc_delete_window'; d: {$ifndef FPC}@{$endif}@isc_delete_window),
  (n: 'isc_drive_form'; d: {$ifndef FPC}@{$endif}@isc_drive_form),
  (n: 'isc_drive_menu'; d: {$ifndef FPC}@{$endif}@isc_drive_menu),
  (n: 'isc_form_delete'; d: {$ifndef FPC}@{$endif}@isc_form_delete),
  (n: 'isc_form_fetch'; d: {$ifndef FPC}@{$endif}@isc_form_fetch),
  (n: 'isc_form_insert'; d: {$ifndef FPC}@{$endif}@isc_form_insert),
  (n: 'isc_get_entree'; d: {$ifndef FPC}@{$endif}@isc_get_entree),
  (n: 'isc_initialize_menu'; d: {$ifndef FPC}@{$endif}@isc_initialize_menu),
  (n: 'isc_menu'; d: {$ifndef FPC}@{$endif}@isc_menu),
  (n: 'isc_load_form'; d: {$ifndef FPC}@{$endif}@isc_load_form),
  (n: 'isc_pop_window'; d: {$ifndef FPC}@{$endif}@isc_pop_window),
  (n: 'isc_put_entree'; d: {$ifndef FPC}@{$endif}@isc_put_entree),
  (n: 'isc_reset_form'; d: {$ifndef FPC}@{$endif}@isc_reset_form),
  (n: 'isc_suspend_window'; d: {$ifndef FPC}@{$endif}@isc_suspend_window)
{$ENDIF} 
  ,
  (n: 'fb_shutdown'; d: @fb_shutdown)
  );

 errormessage = 'Can not load Firebird library. ';
begin
// if length(sonames) = 0 then begin
  if useembeddedfirebird then begin
   initializedynlib(libinfo,sonames,fbembedlib,[],funcs,errormessage);
                                       //accept missing entries
  end
  else begin
   initializedynlib(libinfo,sonames,fbcgdslib,[],funcs,errormessage);
                                      //accept missing entries
  end;
// end
// else begin
//  initializedynlib(libinfo,sonames,[],[],funcs,errormessage);
                                      //accept missing entries
// end;
end;

procedure shutdown(const data: pointer);
begin
 //FB-embedded crash on Linux exit, probably atexit() call in FB-lib,
 //fb_shutdown() call does not help
 //workarond: call 
 //  initializeibase60(fbembedlib);
 //at program start in order to prevent unloading of FB-lib 
 if fb_shutdown <> nil then begin
  fb_shutdown(100,-fb_shutrsn_app_stopped);
 end;
end;

Procedure ReleaseIBase60;

begin
 releasedynlib(libinfo,@shutdown);
end;

initialization
 initializelibinfo(libinfo);
finalization
 if libinfo.refcount > 0 then begin
  libinfo.refcount:= 1;
  releaseibase60();
 end;
 finalizelibinfo(libinfo);
{$ENDIF}

