1{
2}
3
4{$MODE objfpc}
5{$MACRO on}
6
7
8interface
9
10{$IFDEF LinkDynamically}
11uses Dynlibs, sysutils,ctypes;
12
13Var
14  UseEmbeddedFirebird : Boolean = False;
15
16{$ELSE}
17uses Dynlibs,ctypes;
18{$ENDIF}
19
20{$IFDEF Unix}
21  {$DEFINE extdecl:=cdecl}
22  const
23    gdslib = 'libgds.'+sharedsuffix; // Needs completion ?
24    libfc  = 'libfbclient.'+sharedsuffix;
25    libem  = 'libfbembed.'+sharedsuffix;
26    v2  = {$ifndef darwin}'.2'{$else}''{$endif};
27    v21 = {$ifndef darwin}'.2.1'{$else}''{$endif};
28    v25 = {$ifndef darwin}'.2.5'{$else}''{$endif};
29    v251 = {$ifndef darwin}'.2.5.1'{$else}''{$endif};
30    fbclib2      = libfc+v2;
31    fbembedlib2  = libem+v2;
32    fbclib21     = libfc+v21;
33    fbembedlib21 = libem+v21;
34    fbclib25     = libfc+v25;
35    fbembedlib25 = libem+v25;
36    fbclib251    = libfc+v251;
37    fbembedlib251 = libem+v25;
38    // Set default here
39    fbclib       = fbclib251;
40    fbembedlib   = fbembedlib251;
41{$ENDIF}
42{$IFDEF Windows}
43  {$DEFINE extdecl:=stdcall}
44  const
45    gdslib = 'gds32.dll';
46    fbclib = 'fbclient.dll';
47    fbembedlib = 'fbembed.dll';
48    libfc  = fbclib;
49    libem  = fbembedlib;
50{$ENDIF}
51
52type
53  {  Unsigned types }
54
55  UChar                = Byte;
56  UShort               = Word;
57  UInt                 = DWord;
58  ULong                = DWord;
59
60  { Signed types }
61
62  Int                  = LongInt;
63  Long                 = LongInt;
64  Short                = SmallInt;
65  Float                = Single;
66
67  { Pointers to basic types }
68
69  PInt                 = ^Int;
70  PShort               = ^Short;
71  PUShort              = ^UShort;
72  PLong                = ^Long;
73  PULong               = ^ULong;
74  PFloat               = ^Float;
75  PUChar               = ^UChar;
76  PVoid                = ^Pointer;
77
78{$PACKRECORDS C}
79
80  const
81     ISC_TRUE = 1;
82     ISC_FALSE = 0;
83  const
84     ISC__TRUE = ISC_TRUE;
85     ISC__FALSE = ISC_FALSE;
86
87Type
88   ISC_USHORT    = word;
89   ISC_STATUS    = ptrint;  { CLong according the sources but they ifdef
90				for win64, the only significant platform
91				where clong<>ptrint}
92   ISC_INT64     = int64;
93   ISC_UINT64    = qword;
94   ISC_LONG      = Longint;
95   ISC_ULONG     = dword;
96
97   PISC_USHORT = ^ISC_USHORT;
98   PISC_STATUS = ^ISC_STATUS;
99   PPISC_STATUS = ^PISC_STATUS;
100   PISC_INT64 = ^ISC_INT64;
101   PISC_UINT64 = ^ISC_UINT64;
102   PISC_LONG = ^ISC_LONG;
103
104   {$IFDEF CPU64}
105    FB_API_HANDLE = cuint;
106   {$ELSE}
107    FB_API_HANDLE = pointer;
108   {$ENDIF}
109
110
111  const
112     {$IFDEF CPU64}
113     FB_API_NULLHANDLE = 0;
114     {$ELSE}
115     FB_API_NULLHANDLE = nil;
116     {$ENDIF}
117     DSQL_close = 1;
118     DSQL_drop = 2;
119
120  {!!MVC
121    Removed all ISC_FAR, ISC_EXPORT_VARARG and ISC_EXPORT
122    macros.
123    They confuse h2pas...
124  !!MVC }
125  {                                                                  }
126  { Time & Date Support                                              }
127  {                                                                  }
128{$ifndef _ISC_TIMESTAMP_}
129
130  type
131
132     ISC_DATE = longint;
133     ISC_TIME = dword;
134     ISC_TIMESTAMP = record
135          timestamp_date : ISC_DATE;
136          timestamp_time : ISC_TIME;
137       end;
138     TISC_DATE = ISC_DATE;
139     TISC_TIME = ISC_TIME;
140     TISC_TIMESTAMP = ISC_TIMESTAMP;
141     PISC_DATE = ^ISC_DATE;
142     PISC_TIME = ^ISC_TIME;
143     PISC_TIMESTAMP = ^ISC_TIMESTAMP;
144  const
145     _ISC_TIMESTAMP_ = 1;
146{$endif}
147
148  const
149     ISC_TIME_SECONDS_PRECISION = 10000;
150     ISC_TIME_SECONDS_PRECISION_SCALE = -4;
151  {                                                                  }
152  { Blob id structure                                                }
153  {                                                                  }
154
155Type
156
157   GDS_QUAD = record
158      gds_quad_high : ISC_LONG;
159      gds_quad_low : ISC_ULONG;
160   end;
161   TGDS_QUAD = GDS_QUAD;
162   PGDS_QUAD = ^GDS_QUAD;
163
164Type
165     ISC_QUAD = GDS_QUAD;
166     TISC_QUAD = ISC_QUAD;
167     PISC_QUAD = ^ISC_QUAD;
168
169{ !!field redefinitions !!
170     isc_quad_high = gds_quad_high;
171     isc_quad_low = gds_quad_low;
172}
173
174type
175
176     ISC_ARRAY_BOUND = record
177          array_bound_lower : smallint;
178          array_bound_upper : smallint;
179       end;
180     TISC_ARRAY_BOUND = ISC_ARRAY_BOUND;
181     PISC_ARRAY_BOUND = ^ISC_ARRAY_BOUND;
182
183     ISC_ARRAY_DESC = record
184          array_desc_dtype : byte;
185          array_desc_scale : char;
186          array_desc_length : word;
187          array_desc_field_name : array[0..31] of char;
188          array_desc_relation_name : array[0..31] of char;
189          array_desc_dimensions : smallint;
190          array_desc_flags : smallint;
191          array_desc_bounds : array[0..15] of ISC_ARRAY_BOUND;
192       end;
193     TISC_ARRAY_DESC = ISC_ARRAY_DESC;
194     PISC_ARRAY_DESC = ^ISC_ARRAY_DESC;
195
196     ISC_BLOB_DESC = record
197          blob_desc_subtype : smallint;
198          blob_desc_charset : smallint;
199          blob_desc_segment_size : smallint;
200          blob_desc_field_name : array[0..31] of byte;
201          blob_desc_relation_name : array[0..31] of byte;
202       end;
203     TISC_BLOB_DESC = ISC_BLOB_DESC;
204     PISC_BLOB_DESC = ^ISC_BLOB_DESC ;
205  {                          }
206  { Blob control structure   }
207  {                          }
208  {!!MVC
209  !!MVC }
210  { Source filter  }
211  {!!MVC
212  !!MVC }
213  { Argument to pass to source  }
214  { filter  }
215  { Target type  }
216  { Source type  }
217  { Length of buffer  }
218  { Length of current segment  }
219  { Length of blob parameter  }
220  { block  }
221  { Address of blob parameter  }
222  { block  }
223  { Address of segment buffer  }
224  { Length of longest segment  }
225  { Total number of segments  }
226  { Total length of blob  }
227  { Address of status vector  }
228  { Application specific data  }
229  TCTLSourceFunction  = function : isc_long;
230
231     PISC_BLOB_CTL = ^ISC_BLOB_CTL ;
232     ISC_BLOB_CTL = record
233          ctl_source : TCTLSourceFunction;     //  was ISC_STATUS ( *ctl_source)();
234          ctl_source_handle : pisc_blob_ctl  ; // was struct isc_blob_ctl  * ctl_source_handle;
235          ctl_to_sub_type : smallint;
236          ctl_from_sub_type : smallint;
237          ctl_buffer_length : word;
238          ctl_segment_length : word;
239          ctl_bpb_length : word;
240          ctl_bpb : Pchar;
241          ctl_buffer : Pbyte;
242          ctl_max_segment : ISC_LONG;
243          ctl_number_segments : ISC_LONG;
244          ctl_total_length : ISC_LONG;
245          ctl_status : PISC_STATUS;
246          ctl_data : array[0..7] of longint;
247       end;
248     TISC_BLOB_CTL = ISC_BLOB_CTL;
249
250  {                          }
251  { Blob stream definitions  }
252  {                          }
253  { Blob handle  }
254  { Address of buffer  }
255  { Next character  }
256  { Length of buffer  }
257  { Characters in buffer  }
258  { (mode) ? OUTPUT : INPUT  }
259
260     BSTREAM = record
261          bstr_blob : pointer;
262          bstr_buffer : Pchar;
263          bstr_ptr : Pchar;
264          bstr_length : smallint;
265          bstr_cnt : smallint;
266          bstr_mode : char;
267       end;
268     TBSTREAM = BSTREAM;
269     PBstream = ^BSTREAM;
270  {!!MVC
271
272  #define getb(p)       (--(p)->bstr_cnt >= 0 ?  (p)->bstr_ptr++ & 0377: BLOB_get (p))
273  #define putb(x,p) (((x) == '\n' || (!(--(p)->bstr_cnt))) ? BLOB_put ((x),p) : ((int) ( (p)->bstr_ptr++ = (unsigned) (x))))
274  #define putbx(x,p) ((!(--(p)->bstr_cnt)) ? BLOB_put ((x),p) : ((int) ( (p)->bstr_ptr++ = (unsigned) (x))))
275
276  !!MVC  }
277  {                          }
278  { Dynamic SQL definitions  }
279  {                          }
280  {                             }
281  { Declare the extended SQLDA  }
282  {                             }
283  { datatype of field  }
284  { scale factor  }
285  { datatype subtype - BLOBs & Text  }
286  { types only  }
287  { length of data area  }
288  { address of data  }
289  { address of indicator variable  }
290  { length of sqlname field  }
291  { name of field, name length + space  }
292  { for NULL  }
293  { length of relation name  }
294  { field's relation name + space for  }
295  { NULL  }
296  { length of owner name  }
297  { relation's owner name + space for  }
298  { NULL  }
299  { length of alias name  }
300  { relation's alias name + space for  }
301  { NULL  }
302
303     XSQLVAR = record
304          sqltype : smallint;
305          sqlscale : smallint;
306          sqlsubtype : smallint;
307          sqllen : smallint;
308          sqldata : Pchar;
309          sqlind : Psmallint;
310          sqlname_length : smallint;
311          sqlname : array[0..31] of char;
312          relname_length : smallint;
313          relname : array[0..31] of char;
314          ownname_length : smallint;
315          ownname : array[0..31] of char;
316          aliasname_length : smallint;
317          aliasname : array[0..31] of char;
318       end;
319     TXSQLVAR = XSQLVAR;
320     PXSQLVAR =^XSQLVAR;
321  { version of this XSQLDA  }
322  { XSQLDA name field  }
323  { length in bytes of SQLDA  }
324  { number of fields allocated  }
325  { actual number of fields  }
326  { first field address  }
327
328     XSQLDA = record
329          version : smallint;
330          sqldaid : array[0..7] of char;
331          sqldabc : ISC_LONG;
332          sqln : smallint;
333          sqld : smallint;
334          sqlvar : array[0..0] of XSQLVAR;
335       end;
336     TXSQLDA = XSQLDA;
337     PXSQLDA =^XSQLDA;
338
339  function XSQLDA_LENGTH(n: Integer): Integer;
340
341
342  const
343     SQLDA_VERSION1 = 1;
344  { meaning is same as DIALECT_xsqlda  }
345     SQL_DIALECT_V5 = 1;
346  { flagging anything that is delimited
347                                              by double quotes as an error and
348                                              flagging keyword DATE as an error  }
349     SQL_DIALECT_V6_TRANSITION = 2;
350  { supports SQL delimited identifier,
351                                              SQLDATE/DATE, TIME, TIMESTAMP,
352                                              CURRENT_DATE, CURRENT_TIME,
353                                              CURRENT_TIMESTAMP, and 64-bit exact
354                                              numeric type  }
355     SQL_DIALECT_V6 = 3;
356  { latest IB DIALECT  }
357     SQL_DIALECT_CURRENT = SQL_DIALECT_V6;
358  {                               }
359  { InterBase Handle Definitions  }
360  {                               }
361
362  type
363
364     isc_att_handle  = FB_API_HANDLE;
365     isc_blob_handle = FB_API_HANDLE;
366     isc_db_handle   = FB_API_HANDLE;
367     isc_form_handle = FB_API_HANDLE; // can't find in 2.5.1
368     isc_req_handle  = FB_API_HANDLE;
369     isc_stmt_handle = FB_API_HANDLE;
370     isc_svc_handle  = FB_API_HANDLE;
371     isc_tr_handle   = FB_API_HANDLE;
372     isc_win_handle  = pointer;       // can't find in 2.5.1
373     isc_callback = procedure ;extdecl;
374     isc_resv_handle = ISC_LONG;
375     tisc_att_handle = isc_att_handle;
376     tisc_blob_handle = isc_blob_handle;
377     tisc_db_handle = isc_db_handle;
378     tisc_form_handle = isc_form_handle;
379     tisc_req_handle = isc_req_handle;
380     tisc_stmt_handle = isc_stmt_handle;
381     tisc_svc_handle = isc_svc_handle;
382     tisc_tr_handle = isc_tr_handle;
383     tisc_win_handle = isc_win_handle;
384     tisc_callback = isc_callback;
385     tisc_resv_handle = isc_resv_handle;
386     pisc_att_handle  =^isc_att_handle ;
387     pisc_blob_handle  =^isc_blob_handle ;
388     pisc_db_handle  =^isc_db_handle ;
389     pisc_form_handle  =^isc_form_handle ;
390     pisc_req_handle  =^isc_req_handle ;
391     pisc_stmt_handle  =^isc_stmt_handle ;
392     pisc_svc_handle  =^isc_svc_handle ;
393     pisc_tr_handle  =^isc_tr_handle ;
394     pisc_win_handle  =^isc_win_handle ;
395     pisc_callback  = ^isc_callback;
396     pisc_resv_handle  =^isc_resv_handle ;
397
398
399  {                                    }
400  { Security structures                }
401  {                                    }
402
403  const
404     sec_uid_spec = $01;
405     sec_gid_spec = $02;
406     sec_server_spec = $04;
407     sec_password_spec = $08;
408     sec_group_name_spec = $10;
409     sec_first_name_spec = $20;
410     sec_middle_name_spec = $40;
411     sec_last_name_spec = $80;
412     sec_dba_user_name_spec = $100;
413     sec_dba_password_spec = $200;
414     sec_protocol_tcpip = 1;
415     sec_protocol_netbeui = 2;
416     sec_protocol_spx = 3;
417     sec_protocol_local = 4;
418  { which fields are specified  }
419  { the user's id  }
420  { the user's group id  }
421  { protocol to use for connection  }
422  { server to administer  }
423  { the user's name  }
424  { the user's password  }
425  { the group name  }
426  { the user's first name  }
427  { the user's middle name  }
428  { the user's last name  }
429  { the dba user name  }
430  { the dba password  }
431
432  type
433
434     USER_SEC_DATA = record
435          sec_flags : smallint;
436          uid : longint;
437          gid : longint;
438          protocol : longint;
439          server : Pchar;
440          user_name : Pchar;
441          password : Pchar;
442          group_name : Pchar;
443          first_name : Pchar;
444          middle_name : Pchar;
445          last_name : Pchar;
446          dba_user_name : Pchar;
447          dba_password : Pchar;
448       end;
449     TUSER_SEC_DATA = USER_SEC_DATA;
450     PUSER_SEC_DATA = ^USER_SEC_DATA;
451
452  {                                                  }
453  { Actions to pass to the blob filter (ctl_source)  }
454  {                                                  }
455
456  const
457     isc_blob_filter_open = 0;
458     isc_blob_filter_get_segment = 1;
459     isc_blob_filter_close = 2;
460     isc_blob_filter_create = 3;
461     isc_blob_filter_put_segment = 4;
462     isc_blob_filter_alloc = 5;
463     isc_blob_filter_free = 6;
464     isc_blob_filter_seek = 7;
465  {                  }
466  { Blr definitions  }
467  {                  }
468{$ifndef _JRD_BLR_H_}
469  {!!MVC
470  #define blr_word(n) ((n) % 256), ((n) / 256)
471  !!MVC }
472
473  const
474     blr_text = 14;
475     blr_text2 = 15;
476     blr_short = 7;
477     blr_long = 8;
478     blr_quad = 9;
479     blr_int64 = 16;
480     blr_float = 10;
481     blr_double = 27;
482     blr_d_float = 11;
483     blr_timestamp = 35;
484     blr_varying = 37;
485     blr_varying2 = 38;
486     blr_blob = 261;
487     blr_cstring = 40;
488     blr_cstring2 = 41;
489     blr_blob_id = 45;
490     blr_sql_date = 12;
491     blr_sql_time = 13;
492  { Historical alias for pre V6 applications  }
493     blr_date = blr_timestamp;
494     blr_inner = 0;
495     blr_left = 1;
496     blr_right = 2;
497     blr_full = 3;
498     blr_gds_code = 0;
499     blr_sql_code = 1;
500     blr_exception = 2;
501     blr_trigger_code = 3;
502     blr_default_code = 4;
503     blr_version4 = 4;
504     blr_version5 = 5;
505     blr_eoc = 76;
506     blr_end = 255;
507     blr_assignment = 1;
508     blr_begin = 2;
509     blr_dcl_variable = 3;
510     blr_message = 4;
511     blr_erase = 5;
512     blr_fetch = 6;
513     blr_for = 7;
514     blr_if = 8;
515     blr_loop = 9;
516     blr_modify = 10;
517     blr_handler = 11;
518     blr_receive = 12;
519     blr_select = 13;
520     blr_send = 14;
521     blr_store = 15;
522     blr_label = 17;
523     blr_leave = 18;
524     blr_store2 = 19;
525     blr_post = 20;
526     blr_literal = 21;
527     blr_dbkey = 22;
528     blr_field = 23;
529     blr_fid = 24;
530     blr_parameter = 25;
531     blr_variable = 26;
532     blr_average = 27;
533     blr_count = 28;
534     blr_maximum = 29;
535     blr_minimum = 30;
536     blr_total = 31;
537     blr_add = 34;
538     blr_subtract = 35;
539     blr_multiply = 36;
540     blr_divide = 37;
541     blr_negate = 38;
542     blr_concatenate = 39;
543     blr_substring = 40;
544     blr_parameter2 = 41;
545     blr_from = 42;
546     blr_via = 43;
547     blr_user_name = 44;
548     blr_null = 45;
549     blr_eql = 47;
550     blr_neq = 48;
551     blr_gtr = 49;
552     blr_geq = 50;
553     blr_lss = 51;
554     blr_leq = 52;
555     blr_containing = 53;
556     blr_matching = 54;
557     blr_starting = 55;
558     blr_between = 56;
559     blr_or = 57;
560     blr_and = 58;
561     blr_not = 59;
562     blr_any = 60;
563     blr_missing = 61;
564     blr_unique = 62;
565     blr_like = 63;
566     blr_stream = 65;
567     blr_set_index = 66;
568     blr_rse = 67;
569     blr_first = 68;
570     blr_project = 69;
571     blr_sort = 70;
572     blr_boolean = 71;
573     blr_ascending = 72;
574     blr_descending = 73;
575     blr_relation = 74;
576     blr_rid = 75;
577     blr_union = 76;
578     blr_map = 77;
579     blr_group_by = 78;
580     blr_aggregate = 79;
581     blr_join_type = 80;
582     blr_agg_count = 83;
583     blr_agg_max = 84;
584     blr_agg_min = 85;
585     blr_agg_total = 86;
586     blr_agg_average = 87;
587     blr_parameter3 = 88;
588     blr_run_count = 118;
589     blr_run_max = 89;
590     blr_run_min = 90;
591     blr_run_total = 91;
592     blr_run_average = 92;
593     blr_agg_count2 = 93;
594     blr_agg_count_distinct = 94;
595     blr_agg_total_distinct = 95;
596     blr_agg_average_distinct = 96;
597     blr_function = 100;
598     blr_gen_id = 101;
599     blr_prot_mask = 102;
600     blr_upcase = 103;
601     blr_lock_state = 104;
602     blr_value_if = 105;
603     blr_matching2 = 106;
604     blr_index = 107;
605     blr_ansi_like = 108;
606     blr_bookmark = 109;
607     blr_crack = 110;
608     blr_force_crack = 111;
609     blr_seek = 112;
610     blr_find = 113;
611     blr_continue = 0;
612     blr_forward = 1;
613     blr_backward = 2;
614     blr_bof_forward = 3;
615     blr_eof_backward = 4;
616     blr_lock_relation = 114;
617     blr_lock_record = 115;
618     blr_set_bookmark = 116;
619     blr_get_bookmark = 117;
620     blr_rs_stream = 119;
621     blr_exec_proc = 120;
622     blr_begin_range = 121;
623     blr_end_range = 122;
624     blr_delete_range = 123;
625     blr_procedure = 124;
626     blr_pid = 125;
627     blr_exec_pid = 126;
628     blr_singular = 127;
629     blr_abort = 128;
630     blr_block = 129;
631     blr_error_handler = 130;
632     blr_cast = 131;
633     blr_release_lock = 132;
634     blr_release_locks = 133;
635     blr_start_savepoint = 134;
636     blr_end_savepoint = 135;
637     blr_find_dbkey = 136;
638     blr_range_relation = 137;
639     blr_delete_ranges = 138;
640     blr_plan = 139;
641     blr_merge = 140;
642     blr_join = 141;
643     blr_sequential = 142;
644     blr_navigational = 143;
645     blr_indices = 144;
646     blr_retrieve = 145;
647     blr_relation2 = 146;
648     blr_rid2 = 147;
649     blr_reset_stream = 148;
650     blr_release_bookmark = 149;
651     blr_set_generator = 150;
652     blr_ansi_any = 151;
653     blr_exists = 152;
654     blr_cardinality = 153;
655  { get tid of record  }
656     blr_record_version = 154;
657  { fake server stall  }
658     blr_stall = 155;
659     blr_seek_no_warn = 156;
660     blr_find_dbkey_version = 157;
661     blr_ansi_all = 158;
662     blr_extract = 159;
663  { sub parameters for blr_extract  }
664     blr_extract_year = 0;
665     blr_extract_month = 1;
666     blr_extract_day = 2;
667     blr_extract_hour = 3;
668     blr_extract_minute = 4;
669     blr_extract_second = 5;
670     blr_extract_weekday = 6;
671     blr_extract_yearday = 7;
672     blr_current_date = 160;
673     blr_current_timestamp = 161;
674     blr_current_time = 162;
675  { These verbs were added in 6.0, primarily to support 64-bit integers  }
676     blr_add2 = 163;
677     blr_subtract2 = 164;
678     blr_multiply2 = 165;
679     blr_divide2 = 166;
680     blr_agg_total2 = 167;
681     blr_agg_total_distinct2 = 168;
682     blr_agg_average2 = 169;
683     blr_agg_average_distinct2 = 170;
684     blr_average2 = 171;
685     blr_gen_id2 = 172;
686     blr_set_generator2 = 173;
687{$endif}
688  { _JRD_BLR_H_  }
689  {                                 }
690  { Database parameter block stuff  }
691  {                                 }
692
693  const
694     isc_dpb_version1 = 1;
695     isc_dpb_cdd_pathname = 1;
696     isc_dpb_allocation = 2;
697     isc_dpb_journal = 3;
698     isc_dpb_page_size = 4;
699     isc_dpb_num_buffers = 5;
700     isc_dpb_buffer_length = 6;
701     isc_dpb_debug = 7;
702     isc_dpb_garbage_collect = 8;
703     isc_dpb_verify = 9;
704     isc_dpb_sweep = 10;
705     isc_dpb_enable_journal = 11;
706     isc_dpb_disable_journal = 12;
707     isc_dpb_dbkey_scope = 13;
708     isc_dpb_number_of_users = 14;
709     isc_dpb_trace = 15;
710     isc_dpb_no_garbage_collect = 16;
711     isc_dpb_damaged = 17;
712     isc_dpb_license = 18;
713     isc_dpb_sys_user_name = 19;
714     isc_dpb_encrypt_key = 20;
715     isc_dpb_activate_shadow = 21;
716     isc_dpb_sweep_interval = 22;
717     isc_dpb_delete_shadow = 23;
718     isc_dpb_force_write = 24;
719     isc_dpb_begin_log = 25;
720     isc_dpb_quit_log = 26;
721     isc_dpb_no_reserve = 27;
722     isc_dpb_user_name = 28;
723     isc_dpb_password = 29;
724     isc_dpb_password_enc = 30;
725     isc_dpb_sys_user_name_enc = 31;
726     isc_dpb_interp = 32;
727     isc_dpb_online_dump = 33;
728     isc_dpb_old_file_size = 34;
729     isc_dpb_old_num_files = 35;
730     isc_dpb_old_file = 36;
731     isc_dpb_old_start_page = 37;
732     isc_dpb_old_start_seqno = 38;
733     isc_dpb_old_start_file = 39;
734     isc_dpb_drop_walfile = 40;
735     isc_dpb_old_dump_id = 41;
736     isc_dpb_wal_backup_dir = 42;
737     isc_dpb_wal_chkptlen = 43;
738     isc_dpb_wal_numbufs = 44;
739     isc_dpb_wal_bufsize = 45;
740     isc_dpb_wal_grp_cmt_wait = 46;
741     isc_dpb_lc_messages = 47;
742     isc_dpb_lc_ctype = 48;
743     isc_dpb_cache_manager = 49;
744     isc_dpb_shutdown = 50;
745     isc_dpb_online = 51;
746     isc_dpb_shutdown_delay = 52;
747     isc_dpb_reserved = 53;
748     isc_dpb_overwrite = 54;
749     isc_dpb_sec_attach = 55;
750     isc_dpb_disable_wal = 56;
751     isc_dpb_connect_timeout = 57;
752     isc_dpb_dummy_packet_interval = 58;
753     isc_dpb_gbak_attach = 59;
754     isc_dpb_sql_role_name = 60;
755     isc_dpb_set_page_buffers = 61;
756     isc_dpb_working_directory = 62;
757     isc_dpb_SQL_dialect = 63;
758     isc_dpb_set_db_readonly = 64;
759     isc_dpb_set_db_SQL_dialect = 65;
760     isc_dpb_gfix_attach = 66;
761     isc_dpb_gstat_attach = 67;
762  {                                }
763  { isc_dpb_verify specific flags  }
764  {                                }
765     isc_dpb_pages = 1;
766     isc_dpb_records = 2;
767     isc_dpb_indices = 4;
768     isc_dpb_transactions = 8;
769     isc_dpb_no_update = 16;
770     isc_dpb_repair = 32;
771     isc_dpb_ignore = 64;
772  {                                  }
773  { isc_dpb_shutdown specific flags  }
774  {                                  }
775     isc_dpb_shut_cache = 1;
776     isc_dpb_shut_attachment = 2;
777     isc_dpb_shut_transaction = 4;
778     isc_dpb_shut_force = 8;
779  {                                     }
780  { Bit assignments in RDB$SYSTEM_FLAG  }
781  {                                     }
782     RDB_system = 1;
783     RDB_id_assigned = 2;
784  {                                    }
785  { Transaction parameter block stuff  }
786  {                                    }
787     isc_tpb_version1 = 1;
788     isc_tpb_version3 = 3;
789     isc_tpb_consistency = 1;
790     isc_tpb_concurrency = 2;
791     isc_tpb_shared = 3;
792     isc_tpb_protected = 4;
793     isc_tpb_exclusive = 5;
794     isc_tpb_wait = 6;
795     isc_tpb_nowait = 7;
796     isc_tpb_read = 8;
797     isc_tpb_write = 9;
798     isc_tpb_lock_read = 10;
799     isc_tpb_lock_write = 11;
800     isc_tpb_verb_time = 12;
801     isc_tpb_commit_time = 13;
802     isc_tpb_ignore_limbo = 14;
803     isc_tpb_read_committed = 15;
804     isc_tpb_autocommit = 16;
805     isc_tpb_rec_version = 17;
806     isc_tpb_no_rec_version = 18;
807     isc_tpb_restart_requests = 19;
808     isc_tpb_no_auto_undo = 20;
809     isc_tpb_lock_timeout = 21;
810
811  {                       }
812  { Blob Parameter Block  }
813  {                       }
814     isc_bpb_version1 = 1;
815     isc_bpb_source_type = 1;
816     isc_bpb_target_type = 2;
817     isc_bpb_type = 3;
818     isc_bpb_source_interp = 4;
819     isc_bpb_target_interp = 5;
820     isc_bpb_filter_parameter = 6;
821     isc_bpb_type_segmented = 0;
822     isc_bpb_type_stream = 1;
823  {                                }
824  { Service parameter block stuff  }
825  {                                }
826     isc_spb_version1 = 1;
827     isc_spb_current_version = 2;
828     isc_spb_version = isc_spb_current_version;
829     isc_spb_user_name = isc_dpb_user_name;
830     isc_spb_sys_user_name = isc_dpb_sys_user_name;
831     isc_spb_sys_user_name_enc = isc_dpb_sys_user_name_enc;
832     isc_spb_password = isc_dpb_password;
833     isc_spb_password_enc = isc_dpb_password_enc;
834     isc_spb_command_line = 105;
835     isc_spb_dbname = 106;
836     isc_spb_verbose = 107;
837     isc_spb_options = 108;
838     isc_spb_connect_timeout = isc_dpb_connect_timeout;
839     isc_spb_dummy_packet_interval = isc_dpb_dummy_packet_interval;
840     isc_spb_sql_role_name = isc_dpb_sql_role_name;
841  {                                }
842  { Information call declarations  }
843  {                                }
844  {                           }
845  { Common, structural codes  }
846  {                           }
847     isc_info_end = 1;
848     isc_info_truncated = 2;
849     isc_info_error = 3;
850     isc_info_data_not_ready = 4;
851     isc_info_flag_end = 127;
852  {                             }
853  { Database information items  }
854  {                             }
855     isc_info_db_id = 4;
856     isc_info_reads = 5;
857     isc_info_writes = 6;
858     isc_info_fetches = 7;
859     isc_info_marks = 8;
860     isc_info_implementation = 11;
861     isc_info_version = 12;
862     isc_info_base_level = 13;
863     isc_info_page_size = 14;
864     isc_info_num_buffers = 15;
865     isc_info_limbo = 16;
866     isc_info_current_memory = 17;
867     isc_info_max_memory = 18;
868     isc_info_window_turns = 19;
869     isc_info_license = 20;
870     isc_info_allocation = 21;
871     isc_info_attachment_id = 22;
872     isc_info_read_seq_count = 23;
873     isc_info_read_idx_count = 24;
874     isc_info_insert_count = 25;
875     isc_info_update_count = 26;
876     isc_info_delete_count = 27;
877     isc_info_backout_count = 28;
878     isc_info_purge_count = 29;
879     isc_info_expunge_count = 30;
880     isc_info_sweep_interval = 31;
881     isc_info_ods_version = 32;
882     isc_info_ods_minor_version = 33;
883     isc_info_no_reserve = 34;
884     isc_info_logfile = 35;
885     isc_info_cur_logfile_name = 36;
886     isc_info_cur_log_part_offset = 37;
887     isc_info_num_wal_buffers = 38;
888     isc_info_wal_buffer_size = 39;
889     isc_info_wal_ckpt_length = 40;
890     isc_info_wal_cur_ckpt_interval = 41;
891     isc_info_wal_prv_ckpt_fname = 42;
892     isc_info_wal_prv_ckpt_poffset = 43;
893     isc_info_wal_recv_ckpt_fname = 44;
894     isc_info_wal_recv_ckpt_poffset = 45;
895     isc_info_wal_grpc_wait_usecs = 47;
896     isc_info_wal_num_io = 48;
897     isc_info_wal_avg_io_size = 49;
898     isc_info_wal_num_commits = 50;
899     isc_info_wal_avg_grpc_size = 51;
900     isc_info_forced_writes = 52;
901     isc_info_user_names = 53;
902     isc_info_page_errors = 54;
903     isc_info_record_errors = 55;
904     isc_info_bpage_errors = 56;
905     isc_info_dpage_errors = 57;
906     isc_info_ipage_errors = 58;
907     isc_info_ppage_errors = 59;
908     isc_info_tpage_errors = 60;
909     isc_info_set_page_buffers = 61;
910     isc_info_db_SQL_dialect = 62;
911     isc_info_db_read_only = 63;
912     isc_info_db_size_in_pages = 64;
913  {                                     }
914  { Database information return values  }
915  {                                     }
916     isc_info_db_impl_rdb_vms = 1;
917     isc_info_db_impl_rdb_eln = 2;
918     isc_info_db_impl_rdb_eln_dev = 3;
919     isc_info_db_impl_rdb_vms_y = 4;
920     isc_info_db_impl_rdb_eln_y = 5;
921     isc_info_db_impl_jri = 6;
922     isc_info_db_impl_jsv = 7;
923     isc_info_db_impl_isc_a = 25;
924     isc_info_db_impl_isc_u = 26;
925     isc_info_db_impl_isc_v = 27;
926     isc_info_db_impl_isc_s = 28;
927     isc_info_db_impl_isc_apl_68K = 25;
928     isc_info_db_impl_isc_vax_ultr = 26;
929     isc_info_db_impl_isc_vms = 27;
930     isc_info_db_impl_isc_sun_68k = 28;
931     isc_info_db_impl_isc_os2 = 29;
932     isc_info_db_impl_isc_sun4 = 30;
933     isc_info_db_impl_isc_hp_ux = 31;
934     isc_info_db_impl_isc_sun_386i = 32;
935     isc_info_db_impl_isc_vms_orcl = 33;
936     isc_info_db_impl_isc_mac_aux = 34;
937     isc_info_db_impl_isc_rt_aix = 35;
938     isc_info_db_impl_isc_mips_ult = 36;
939     isc_info_db_impl_isc_xenix = 37;
940     isc_info_db_impl_isc_dg = 38;
941     isc_info_db_impl_isc_hp_mpexl = 39;
942     isc_info_db_impl_isc_hp_ux68K = 40;
943     isc_info_db_impl_isc_sgi = 41;
944     isc_info_db_impl_isc_sco_unix = 42;
945     isc_info_db_impl_isc_cray = 43;
946     isc_info_db_impl_isc_imp = 44;
947     isc_info_db_impl_isc_delta = 45;
948     isc_info_db_impl_isc_next = 46;
949     isc_info_db_impl_isc_dos = 47;
950     isc_info_db_impl_isc_winnt = 48;
951     isc_info_db_impl_isc_epson = 49;
952     isc_info_db_class_access = 1;
953     isc_info_db_class_y_valve = 2;
954     isc_info_db_class_rem_int = 3;
955     isc_info_db_class_rem_srvr = 4;
956     isc_info_db_class_pipe_int = 7;
957     isc_info_db_class_pipe_srvr = 8;
958     isc_info_db_class_sam_int = 9;
959     isc_info_db_class_sam_srvr = 10;
960     isc_info_db_class_gateway = 11;
961     isc_info_db_class_cache = 12;
962  {                            }
963  { Request information items  }
964  {                            }
965     isc_info_number_messages = 4;
966     isc_info_max_message = 5;
967     isc_info_max_send = 6;
968     isc_info_max_receive = 7;
969     isc_info_state = 8;
970     isc_info_message_number = 9;
971     isc_info_message_size = 10;
972     isc_info_request_cost = 11;
973     isc_info_access_path = 12;
974     isc_info_req_select_count = 13;
975     isc_info_req_insert_count = 14;
976     isc_info_req_update_count = 15;
977     isc_info_req_delete_count = 16;
978  {                    }
979  { Access path items  }
980  {                    }
981     isc_info_rsb_end = 0;
982     isc_info_rsb_begin = 1;
983     isc_info_rsb_type = 2;
984     isc_info_rsb_relation = 3;
985     isc_info_rsb_plan = 4;
986  {            }
987  { Rsb types  }
988  {            }
989     isc_info_rsb_unknown = 1;
990     isc_info_rsb_indexed = 2;
991     isc_info_rsb_navigate = 3;
992     isc_info_rsb_sequential = 4;
993     isc_info_rsb_cross = 5;
994     isc_info_rsb_sort = 6;
995     isc_info_rsb_first = 7;
996     isc_info_rsb_boolean = 8;
997     isc_info_rsb_union = 9;
998     isc_info_rsb_aggregate = 10;
999     isc_info_rsb_merge = 11;
1000     isc_info_rsb_ext_sequential = 12;
1001     isc_info_rsb_ext_indexed = 13;
1002     isc_info_rsb_ext_dbkey = 14;
1003     isc_info_rsb_left_cross = 15;
1004     isc_info_rsb_select = 16;
1005     isc_info_rsb_sql_join = 17;
1006     isc_info_rsb_simulate = 18;
1007     isc_info_rsb_sim_cross = 19;
1008     isc_info_rsb_once = 20;
1009     isc_info_rsb_procedure = 21;
1010  {                     }
1011  { Bitmap expressions  }
1012  {                     }
1013     isc_info_rsb_and = 1;
1014     isc_info_rsb_or = 2;
1015     isc_info_rsb_dbkey = 3;
1016     isc_info_rsb_index = 4;
1017     isc_info_req_active = 2;
1018     isc_info_req_inactive = 3;
1019     isc_info_req_send = 4;
1020     isc_info_req_receive = 5;
1021     isc_info_req_select = 6;
1022     isc_info_req_sql_stall = 7;
1023  {                         }
1024  { Blob information items  }
1025  {                         }
1026     isc_info_blob_num_segments = 4;
1027     isc_info_blob_max_segment = 5;
1028     isc_info_blob_total_length = 6;
1029     isc_info_blob_type = 7;
1030  {                                }
1031  { Transaction information items  }
1032  {                                }
1033     isc_info_tra_id = 4;
1034  {
1035     Service action items
1036                                }
1037  { Starts database backup process on the server  }
1038     isc_action_svc_backup = 1;
1039  { Starts database restore process on the server  }
1040     isc_action_svc_restore = 2;
1041  { Starts database repair process on the server  }
1042     isc_action_svc_repair = 3;
1043  { Adds a new user to the security database  }
1044     isc_action_svc_add_user = 4;
1045  { Deletes a user record from the security database  }
1046     isc_action_svc_delete_user = 5;
1047  { Modifies a user record in the security database  }
1048     isc_action_svc_modify_user = 6;
1049  { Displays a user record from the security database  }
1050     isc_action_svc_display_user = 7;
1051  { Sets database properties  }
1052     isc_action_svc_properties = 8;
1053  { Adds a license to the license file  }
1054     isc_action_svc_add_license = 9;
1055  { Removes a license from the license file  }
1056     isc_action_svc_remove_license = 10;
1057  { Retrieves database statistics  }
1058     isc_action_svc_db_stats = 11;
1059  { Retrieves the InterBase log file from the server  }
1060     isc_action_svc_get_ib_log = 12;
1061  {
1062     Service information items
1063                                }
1064  { Retrieves the number of attachments and databases  }
1065     isc_info_svc_svr_db_info = 50;
1066  { Retrieves all license keys and IDs from the license file  }
1067     isc_info_svc_get_license = 51;
1068  { Retrieves a bitmask representing licensed options on the server  }
1069     isc_info_svc_get_license_mask = 52;
1070  { Retrieves the parameters and values for IB_CONFIG  }
1071     isc_info_svc_get_config = 53;
1072  { Retrieves the version of the services manager  }
1073     isc_info_svc_version = 54;
1074  { Retrieves the version of the InterBase server  }
1075     isc_info_svc_server_version = 55;
1076  { Retrieves the implementation of the InterBase server  }
1077     isc_info_svc_implementation = 56;
1078  { Retrieves a bitmask representing the server's capabilities  }
1079     isc_info_svc_capabilities = 57;
1080  { Retrieves the path to the security database in use by the server  }
1081     isc_info_svc_user_dbpath = 58;
1082  { Retrieves the setting of $INTERBASE  }
1083     isc_info_svc_get_env = 59;
1084  { Retrieves the setting of $INTERBASE_LCK  }
1085     isc_info_svc_get_env_lock = 60;
1086  { Retrieves the setting of $INTERBASE_MSG  }
1087     isc_info_svc_get_env_msg = 61;
1088  { Retrieves 1 line of service output per call  }
1089     isc_info_svc_line = 62;
1090  { Retrieves as much of the server output as will fit in the supplied buffer  }
1091     isc_info_svc_to_eof = 63;
1092  { Sets / signifies a timeout value for reading service information  }
1093     isc_info_svc_timeout = 64;
1094  { Retrieves the number of users licensed for accessing the server  }
1095     isc_info_svc_get_licensed_users = 65;
1096  { Retrieve the limbo transactions  }
1097     isc_info_svc_limbo_trans = 66;
1098  { Checks to see if a service is running on an attachment  }
1099     isc_info_svc_running = 67;
1100  { Returns the user information from isc_action_svc_display_users  }
1101     isc_info_svc_get_users = 68;
1102  {
1103     Parameters for isc_action_(add|delete|modify)_user
1104   }
1105     isc_spb_sec_userid = 5;
1106     isc_spb_sec_groupid = 6;
1107     isc_spb_sec_username = 7;
1108     isc_spb_sec_password = 8;
1109     isc_spb_sec_groupname = 9;
1110     isc_spb_sec_firstname = 10;
1111     isc_spb_sec_middlename = 11;
1112     isc_spb_sec_lastname = 12;
1113  {
1114     Parameters for isc_action_svc_(add|remove)_license,
1115     isc_info_svc_get_license
1116                                                          }
1117     isc_spb_lic_key = 5;
1118     isc_spb_lic_id = 6;
1119     isc_spb_lic_desc = 7;
1120  {
1121     Parameters for isc_action_svc_backup
1122                                            }
1123     isc_spb_bkp_file = 5;
1124     isc_spb_bkp_factor = 6;
1125     isc_spb_bkp_length = 7;
1126     isc_spb_bkp_ignore_checksums = $01;
1127     isc_spb_bkp_ignore_limbo = $02;
1128     isc_spb_bkp_metadata_only = $04;
1129     isc_spb_bkp_no_garbage_collect = $08;
1130     isc_spb_bkp_old_descriptions = $10;
1131     isc_spb_bkp_non_transportable = $20;
1132     isc_spb_bkp_convert = $40;
1133     isc_spb_bkp_expand = $80;
1134  {
1135     Parameters for isc_action_svc_properties
1136                                               }
1137     isc_spb_prp_page_buffers = 5;
1138     isc_spb_prp_sweep_interval = 6;
1139     isc_spb_prp_shutdown_db = 7;
1140     isc_spb_prp_deny_new_attachments = 9;
1141     isc_spb_prp_deny_new_transactions = 10;
1142     isc_spb_prp_reserve_space = 11;
1143     isc_spb_prp_write_mode = 12;
1144     isc_spb_prp_access_mode = 13;
1145     isc_spb_prp_set_sql_dialect = 14;
1146     isc_spb_prp_activate = $0100;
1147     isc_spb_prp_db_online = $0200;
1148  {
1149     Parameters for isc_spb_prp_reserve_space
1150                                               }
1151     isc_spb_prp_res_use_full = 35;
1152     isc_spb_prp_res = 36;
1153  {
1154     Parameters for isc_spb_prp_write_mode
1155                                             }
1156     isc_spb_prp_wm_async = 37;
1157     isc_spb_prp_wm_sync = 38;
1158  {
1159     Parameters for isc_spb_prp_access_mode
1160                                             }
1161     isc_spb_prp_am_readonly = 39;
1162     isc_spb_prp_am_readwrite = 40;
1163  {
1164     Parameters for isc_action_svc_repair
1165                                            }
1166     isc_spb_rpr_commit_trans = 15;
1167     isc_spb_rpr_rollback_trans = 34;
1168     isc_spb_rpr_recover_two_phase = 17;
1169     isc_spb_tra_id = 18;
1170     isc_spb_single_tra_id = 19;
1171     isc_spb_multi_tra_id = 20;
1172     isc_spb_tra_state = 21;
1173     isc_spb_tra_state_limbo = 22;
1174     isc_spb_tra_state_commit = 23;
1175     isc_spb_tra_state_rollback = 24;
1176     isc_spb_tra_state_unknown = 25;
1177     isc_spb_tra_host_site = 26;
1178     isc_spb_tra_remote_site = 27;
1179     isc_spb_tra_db_path = 28;
1180     isc_spb_tra_advise = 29;
1181     isc_spb_tra_advise_commit = 30;
1182     isc_spb_tra_advise_rollback = 31;
1183     isc_spb_tra_advise_unknown = 33;
1184     isc_spb_rpr_validate_db = $01;
1185     isc_spb_rpr_sweep_db = $02;
1186     isc_spb_rpr_mend_db = $04;
1187     isc_spb_rpr_list_limbo_trans = $08;
1188     isc_spb_rpr_check_db = $10;
1189     isc_spb_rpr_ignore_checksum = $20;
1190     isc_spb_rpr_kill_shadows = $40;
1191     isc_spb_rpr_full = $80;
1192  {
1193     Parameters for isc_action_svc_restore
1194                                            }
1195     isc_spb_res_buffers = 9;
1196     isc_spb_res_page_size = 10;
1197     isc_spb_res_length = 11;
1198     isc_spb_res_access_mode = 12;
1199     isc_spb_res_fix_fss_data = 13;
1200     isc_spb_res_fix_fss_metadata = 14;
1201     isc_spb_res_deactivate_idx = $0100;
1202     isc_spb_res_no_shadow = $0200;
1203     isc_spb_res_no_validity = $0400;
1204     isc_spb_res_one_at_a_time = $0800;
1205     isc_spb_res_replace = $1000;
1206     isc_spb_res_create = $2000;
1207     isc_spb_res_use_all_space = $4000;
1208  {
1209     Parameters for isc_spb_res_access_mode
1210                                             }
1211     isc_spb_res_am_readonly = isc_spb_prp_am_readonly;
1212     isc_spb_res_am_readwrite = isc_spb_prp_am_readwrite;
1213  {
1214     Parameters for isc_info_svc_svr_db_info
1215                                              }
1216     isc_spb_num_att = 5;
1217     isc_spb_num_db = 6;
1218  {
1219     Parameters for isc_info_svc_db_stats
1220                                            }
1221     isc_spb_sts_data_pages = $01;
1222     isc_spb_sts_db_log = $02;
1223     isc_spb_sts_hdr_pages = $04;
1224     isc_spb_sts_idx_pages = $08;
1225     isc_spb_sts_sys_relations = $10;
1226     isc_spb_sts_record_versions = $20;
1227     isc_spb_sts_table = $40;
1228     isc_spb_sts_nocreation = $80;
1229  {                        }
1230  { SQL information items  }
1231  {                        }
1232     isc_info_sql_select = 4;
1233     isc_info_sql_bind = 5;
1234     isc_info_sql_num_variables = 6;
1235     isc_info_sql_describe_vars = 7;
1236     isc_info_sql_describe_end = 8;
1237     isc_info_sql_sqlda_seq = 9;
1238     isc_info_sql_message_seq = 10;
1239     isc_info_sql_type = 11;
1240     isc_info_sql_sub_type = 12;
1241     isc_info_sql_scale = 13;
1242     isc_info_sql_length = 14;
1243     isc_info_sql_null_ind = 15;
1244     isc_info_sql_field = 16;
1245     isc_info_sql_relation = 17;
1246     isc_info_sql_owner = 18;
1247     isc_info_sql_alias = 19;
1248     isc_info_sql_sqlda_start = 20;
1249     isc_info_sql_stmt_type = 21;
1250     isc_info_sql_get_plan = 22;
1251     isc_info_sql_records = 23;
1252     isc_info_sql_batch_fetch = 24;
1253  {                                }
1254  { SQL information return values  }
1255  {                                }
1256     isc_info_sql_stmt_select = 1;
1257     isc_info_sql_stmt_insert = 2;
1258     isc_info_sql_stmt_update = 3;
1259     isc_info_sql_stmt_delete = 4;
1260     isc_info_sql_stmt_ddl = 5;
1261     isc_info_sql_stmt_get_segment = 6;
1262     isc_info_sql_stmt_put_segment = 7;
1263     isc_info_sql_stmt_exec_procedure = 8;
1264     isc_info_sql_stmt_start_trans = 9;
1265     isc_info_sql_stmt_commit = 10;
1266     isc_info_sql_stmt_rollback = 11;
1267     isc_info_sql_stmt_select_for_upd = 12;
1268     isc_info_sql_stmt_set_generator = 13;
1269  {                                  }
1270  { Server configuration key values  }
1271  {                                  }
1272     ISCCFG_LOCKMEM_KEY = 0;
1273     ISCCFG_LOCKSEM_KEY = 1;
1274     ISCCFG_LOCKSIG_KEY = 2;
1275     ISCCFG_EVNTMEM_KEY = 3;
1276     ISCCFG_DBCACHE_KEY = 4;
1277     ISCCFG_PRIORITY_KEY = 5;
1278     ISCCFG_IPCMAP_KEY = 6;
1279     ISCCFG_MEMMIN_KEY = 7;
1280     ISCCFG_MEMMAX_KEY = 8;
1281     ISCCFG_LOCKORDER_KEY = 9;
1282     ISCCFG_ANYLOCKMEM_KEY = 10;
1283     ISCCFG_ANYLOCKSEM_KEY = 11;
1284     ISCCFG_ANYLOCKSIG_KEY = 12;
1285     ISCCFG_ANYEVNTMEM_KEY = 13;
1286     ISCCFG_LOCKHASH_KEY = 14;
1287     ISCCFG_DEADLOCK_KEY = 15;
1288     ISCCFG_LOCKSPIN_KEY = 16;
1289     ISCCFG_CONN_TIMEOUT_KEY = 17;
1290     ISCCFG_DUMMY_INTRVL_KEY = 18;
1291  { Internal Use only  }
1292     ISCCFG_TRACE_POOLS_KEY = 19;
1293     ISCCFG_REMOTE_BUFFER_KEY = 20;
1294  {              }
1295  { Error codes  }
1296  {              }
1297     isc_facility = 20;
1298     isc_err_base = 335544320;
1299     isc_err_factor = 1;
1300     isc_arg_end = 0;
1301     isc_arg_gds = 1;
1302     isc_arg_string = 2;
1303     isc_arg_cstring = 3;
1304     isc_arg_number = 4;
1305     isc_arg_interpreted = 5;
1306     isc_arg_vms = 6;
1307     isc_arg_unix = 7;
1308     isc_arg_domain = 8;
1309     isc_arg_dos = 9;
1310     isc_arg_mpexl = 10;
1311     isc_arg_mpexl_ipc = 11;
1312     isc_arg_next_mach = 15;
1313     isc_arg_netware = 16;
1314     isc_arg_win32 = 17;
1315     isc_arg_warning = 18;
1316
1317  {                                             }
1318  { Dynamic Data Definition Language operators  }
1319  {                                             }
1320  {                 }
1321  { Version number  }
1322  {                 }
1323
1324  const
1325     isc_dyn_version_1 = 1;
1326     isc_dyn_eoc = 255;
1327  {                             }
1328  { Operations (may be nested)  }
1329  {                             }
1330     isc_dyn_begin = 2;
1331     isc_dyn_end = 3;
1332     isc_dyn_if = 4;
1333     isc_dyn_def_database = 5;
1334     isc_dyn_def_global_fld = 6;
1335     isc_dyn_def_local_fld = 7;
1336     isc_dyn_def_idx = 8;
1337     isc_dyn_def_rel = 9;
1338     isc_dyn_def_sql_fld = 10;
1339     isc_dyn_def_view = 12;
1340     isc_dyn_def_trigger = 15;
1341     isc_dyn_def_security_class = 120;
1342     isc_dyn_def_dimension = 140;
1343     isc_dyn_def_generator = 24;
1344     isc_dyn_def_function = 25;
1345     isc_dyn_def_filter = 26;
1346     isc_dyn_def_function_arg = 27;
1347     isc_dyn_def_shadow = 34;
1348     isc_dyn_def_trigger_msg = 17;
1349     isc_dyn_def_file = 36;
1350     isc_dyn_mod_database = 39;
1351     isc_dyn_mod_rel = 11;
1352     isc_dyn_mod_global_fld = 13;
1353     isc_dyn_mod_idx = 102;
1354     isc_dyn_mod_local_fld = 14;
1355     isc_dyn_mod_sql_fld = 216;
1356     isc_dyn_mod_view = 16;
1357     isc_dyn_mod_security_class = 122;
1358     isc_dyn_mod_trigger = 113;
1359     isc_dyn_mod_trigger_msg = 28;
1360     isc_dyn_delete_database = 18;
1361     isc_dyn_delete_rel = 19;
1362     isc_dyn_delete_global_fld = 20;
1363     isc_dyn_delete_local_fld = 21;
1364     isc_dyn_delete_idx = 22;
1365     isc_dyn_delete_security_class = 123;
1366     isc_dyn_delete_dimensions = 143;
1367     isc_dyn_delete_trigger = 23;
1368     isc_dyn_delete_trigger_msg = 29;
1369     isc_dyn_delete_filter = 32;
1370     isc_dyn_delete_function = 33;
1371     isc_dyn_delete_shadow = 35;
1372     isc_dyn_grant = 30;
1373     isc_dyn_revoke = 31;
1374     isc_dyn_def_primary_key = 37;
1375     isc_dyn_def_foreign_key = 38;
1376     isc_dyn_def_unique = 40;
1377     isc_dyn_def_procedure = 164;
1378     isc_dyn_delete_procedure = 165;
1379     isc_dyn_def_parameter = 135;
1380     isc_dyn_delete_parameter = 136;
1381     isc_dyn_mod_procedure = 175;
1382     isc_dyn_def_log_file = 176;
1383     isc_dyn_def_cache_file = 180;
1384     isc_dyn_def_exception = 181;
1385     isc_dyn_mod_exception = 182;
1386     isc_dyn_del_exception = 183;
1387     isc_dyn_drop_log = 194;
1388     isc_dyn_drop_cache = 195;
1389     isc_dyn_def_default_log = 202;
1390  {                      }
1391  { View specific stuff  }
1392  {                      }
1393     isc_dyn_view_blr = 43;
1394     isc_dyn_view_source = 44;
1395     isc_dyn_view_relation = 45;
1396     isc_dyn_view_context = 46;
1397     isc_dyn_view_context_name = 47;
1398  {                     }
1399  { Generic attributes  }
1400  {                     }
1401     isc_dyn_rel_name = 50;
1402     isc_dyn_fld_name = 51;
1403     isc_dyn_new_fld_name = 215;
1404     isc_dyn_idx_name = 52;
1405     isc_dyn_description = 53;
1406     isc_dyn_security_class = 54;
1407     isc_dyn_system_flag = 55;
1408     isc_dyn_update_flag = 56;
1409     isc_dyn_prc_name = 166;
1410     isc_dyn_prm_name = 137;
1411     isc_dyn_sql_object = 196;
1412     isc_dyn_fld_character_set_name = 174;
1413  {                               }
1414  { Relation specific attributes  }
1415  {                               }
1416     isc_dyn_rel_dbkey_length = 61;
1417     isc_dyn_rel_store_trig = 62;
1418     isc_dyn_rel_modify_trig = 63;
1419     isc_dyn_rel_erase_trig = 64;
1420     isc_dyn_rel_store_trig_source = 65;
1421     isc_dyn_rel_modify_trig_source = 66;
1422     isc_dyn_rel_erase_trig_source = 67;
1423     isc_dyn_rel_ext_file = 68;
1424     isc_dyn_rel_sql_protection = 69;
1425     isc_dyn_rel_constraint = 162;
1426     isc_dyn_delete_rel_constraint = 163;
1427  {                                   }
1428  { Global field specific attributes  }
1429  {                                   }
1430     isc_dyn_fld_type = 70;
1431     isc_dyn_fld_length = 71;
1432     isc_dyn_fld_scale = 72;
1433     isc_dyn_fld_sub_type = 73;
1434     isc_dyn_fld_segment_length = 74;
1435     isc_dyn_fld_query_header = 75;
1436     isc_dyn_fld_edit_string = 76;
1437     isc_dyn_fld_validation_blr = 77;
1438     isc_dyn_fld_validation_source = 78;
1439     isc_dyn_fld_computed_blr = 79;
1440     isc_dyn_fld_computed_source = 80;
1441     isc_dyn_fld_missing_value = 81;
1442     isc_dyn_fld_default_value = 82;
1443     isc_dyn_fld_query_name = 83;
1444     isc_dyn_fld_dimensions = 84;
1445     isc_dyn_fld_not_null = 85;
1446     isc_dyn_fld_precision = 86;
1447     isc_dyn_fld_char_length = 172;
1448     isc_dyn_fld_collation = 173;
1449     isc_dyn_fld_default_source = 193;
1450     isc_dyn_del_default = 197;
1451     isc_dyn_del_validation = 198;
1452     isc_dyn_single_validation = 199;
1453     isc_dyn_fld_character_set = 203;
1454  {                                  }
1455  { Local field specific attributes  }
1456  {                                  }
1457     isc_dyn_fld_source = 90;
1458     isc_dyn_fld_base_fld = 91;
1459     isc_dyn_fld_position = 92;
1460     isc_dyn_fld_update_flag = 93;
1461  {                            }
1462  { Index specific attributes  }
1463  {                            }
1464     isc_dyn_idx_unique = 100;
1465     isc_dyn_idx_inactive = 101;
1466     isc_dyn_idx_type = 103;
1467     isc_dyn_idx_foreign_key = 104;
1468     isc_dyn_idx_ref_column = 105;
1469     isc_dyn_idx_statistic = 204;
1470  {                              }
1471  { Trigger specific attributes  }
1472  {                              }
1473     isc_dyn_trg_type = 110;
1474     isc_dyn_trg_blr = 111;
1475     isc_dyn_trg_source = 112;
1476     isc_dyn_trg_name = 114;
1477     isc_dyn_trg_sequence = 115;
1478     isc_dyn_trg_inactive = 116;
1479     isc_dyn_trg_msg_number = 117;
1480     isc_dyn_trg_msg = 118;
1481  {                                     }
1482  { Security Class specific attributes  }
1483  {                                     }
1484     isc_dyn_scl_acl = 121;
1485     isc_dyn_grant_user = 130;
1486     isc_dyn_grant_proc = 186;
1487     isc_dyn_grant_trig = 187;
1488     isc_dyn_grant_view = 188;
1489     isc_dyn_grant_options = 132;
1490     isc_dyn_grant_user_group = 205;
1491  {                                 }
1492  { Dimension specific information  }
1493  {                                 }
1494     isc_dyn_dim_lower = 141;
1495     isc_dyn_dim_upper = 142;
1496  {                           }
1497  { File specific attributes  }
1498  {                           }
1499     isc_dyn_file_name = 125;
1500     isc_dyn_file_start = 126;
1501     isc_dyn_file_length = 127;
1502     isc_dyn_shadow_number = 128;
1503     isc_dyn_shadow_man_auto = 129;
1504     isc_dyn_shadow_conditional = 130;
1505  {                               }
1506  { Log file specific attributes  }
1507  {                               }
1508     isc_dyn_log_file_sequence = 177;
1509     isc_dyn_log_file_partitions = 178;
1510     isc_dyn_log_file_serial = 179;
1511     isc_dyn_log_file_overflow = 200;
1512     isc_dyn_log_file_raw = 201;
1513  {                          }
1514  { Log specific attributes  }
1515  {                          }
1516     isc_dyn_log_group_commit_wait = 189;
1517     isc_dyn_log_buffer_size = 190;
1518     isc_dyn_log_check_point_length = 191;
1519     isc_dyn_log_num_of_buffers = 192;
1520  {                               }
1521  { Function specific attributes  }
1522  {                               }
1523     isc_dyn_function_name = 145;
1524     isc_dyn_function_type = 146;
1525     isc_dyn_func_module_name = 147;
1526     isc_dyn_func_entry_point = 148;
1527     isc_dyn_func_return_argument = 149;
1528     isc_dyn_func_arg_position = 150;
1529     isc_dyn_func_mechanism = 151;
1530     isc_dyn_filter_in_subtype = 152;
1531     isc_dyn_filter_out_subtype = 153;
1532     isc_dyn_description2 = 154;
1533     isc_dyn_fld_computed_source2 = 155;
1534     isc_dyn_fld_edit_string2 = 156;
1535     isc_dyn_fld_query_header2 = 157;
1536     isc_dyn_fld_validation_source2 = 158;
1537     isc_dyn_trg_msg2 = 159;
1538     isc_dyn_trg_source2 = 160;
1539     isc_dyn_view_source2 = 161;
1540     isc_dyn_xcp_msg2 = 184;
1541  {                                }
1542  { Generator specific attributes  }
1543  {                                }
1544     isc_dyn_generator_name = 95;
1545     isc_dyn_generator_id = 96;
1546  {                                }
1547  { Procedure specific attributes  }
1548  {                                }
1549     isc_dyn_prc_inputs = 167;
1550     isc_dyn_prc_outputs = 168;
1551     isc_dyn_prc_source = 169;
1552     isc_dyn_prc_blr = 170;
1553     isc_dyn_prc_source2 = 171;
1554  {                                }
1555  { Parameter specific attributes  }
1556  {                                }
1557     isc_dyn_prm_number = 138;
1558     isc_dyn_prm_type = 139;
1559  {                               }
1560  { Relation specific attributes  }
1561  {                               }
1562     isc_dyn_xcp_msg = 185;
1563  {                                             }
1564  { Cascading referential integrity values      }
1565  {                                             }
1566     isc_dyn_foreign_key_update = 205;
1567     isc_dyn_foreign_key_delete = 206;
1568     isc_dyn_foreign_key_cascade = 207;
1569     isc_dyn_foreign_key_default = 208;
1570     isc_dyn_foreign_key_null = 209;
1571     isc_dyn_foreign_key_none = 210;
1572  {                      }
1573  { SQL role values      }
1574  {                      }
1575     isc_dyn_def_sql_role = 211;
1576     isc_dyn_sql_role_name = 212;
1577     isc_dyn_grant_admin_options = 213;
1578     isc_dyn_del_sql_role = 214;
1579  {                           }
1580  { Last $dyn value assigned  }
1581  {                           }
1582     isc_dyn_last_dyn_value = 216;
1583  {                                         }
1584  { Array slice description language (SDL)  }
1585  {                                         }
1586     isc_sdl_version1 = 1;
1587     isc_sdl_eoc = 255;
1588     isc_sdl_relation = 2;
1589     isc_sdl_rid = 3;
1590     isc_sdl_field = 4;
1591     isc_sdl_fid = 5;
1592     isc_sdl_struct = 6;
1593     isc_sdl_variable = 7;
1594     isc_sdl_scalar = 8;
1595     isc_sdl_tiny_integer = 9;
1596     isc_sdl_short_integer = 10;
1597     isc_sdl_long_integer = 11;
1598     isc_sdl_literal = 12;
1599     isc_sdl_add = 13;
1600     isc_sdl_subtract = 14;
1601     isc_sdl_multiply = 15;
1602     isc_sdl_divide = 16;
1603     isc_sdl_negate = 17;
1604     isc_sdl_eql = 18;
1605     isc_sdl_neq = 19;
1606     isc_sdl_gtr = 20;
1607     isc_sdl_geq = 21;
1608     isc_sdl_lss = 22;
1609     isc_sdl_leq = 23;
1610     isc_sdl_and = 24;
1611     isc_sdl_or = 25;
1612     isc_sdl_not = 26;
1613     isc_sdl_while = 27;
1614     isc_sdl_assignment = 28;
1615     isc_sdl_label = 29;
1616     isc_sdl_leave = 30;
1617     isc_sdl_begin = 31;
1618     isc_sdl_end = 32;
1619     isc_sdl_do3 = 33;
1620     isc_sdl_do2 = 34;
1621     isc_sdl_do1 = 35;
1622     isc_sdl_element = 36;
1623  {                                           }
1624  { International text interpretation values  }
1625  {                                           }
1626     isc_interp_eng_ascii = 0;
1627     isc_interp_jpn_sjis = 5;
1628     isc_interp_jpn_euc = 6;
1629  {                  }
1630  { SQL definitions  }
1631  {                  }
1632     SQL_TEXT = 452;
1633     SQL_VARYING = 448;
1634     SQL_SHORT = 500;
1635     SQL_LONG = 496;
1636     SQL_FLOAT = 482;
1637     SQL_DOUBLE = 480;
1638     SQL_D_FLOAT = 530;
1639     SQL_TIMESTAMP = 510;
1640     SQL_BLOB = 520;
1641     SQL_ARRAY = 540;
1642     SQL_QUAD = 550;
1643     SQL_TYPE_TIME = 560;
1644     SQL_TYPE_DATE = 570;
1645     SQL_INT64 = 580;
1646  { Historical alias for pre V6 applications  }
1647     SQL_DATE = SQL_TIMESTAMP;
1648  {                }
1649  { Blob Subtypes  }
1650  {                }
1651  { types less than zero are reserved for customer use  }
1652     isc_blob_untyped = 0;
1653  { internal subtypes  }
1654     isc_blob_text = 1;
1655     isc_blob_blr = 2;
1656     isc_blob_acl = 3;
1657     isc_blob_ranges = 4;
1658     isc_blob_summary = 5;
1659     isc_blob_format = 6;
1660     isc_blob_tra = 7;
1661     isc_blob_extfile = 8;
1662  { the range 20-30 is reserved for dBASE and Paradox types  }
1663     isc_blob_formatted_memo = 20;
1664     isc_blob_paradox_ole = 21;
1665     isc_blob_graphic = 22;
1666     isc_blob_dbase_ole = 23;
1667     isc_blob_typed_binary = 24;
1668
1669{$IFNDEF LinkDynamically}
1670
1671  {                          }
1672  { OSRI database functions  }
1673  {                          }
1674
1675  function isc_attach_database(_para1:PISC_STATUS; _para2:smallint; _para3:Pchar; _para4:Pisc_db_handle; _para5:smallint;
1676             _para6:Pchar):ISC_STATUS; extdecl; external gdslib;
1677
1678  function isc_array_gen_sdl(_para1:PISC_STATUS; _para2:PISC_ARRAY_DESC; _para3:Psmallint; _para4:Pchar; _para5:Psmallint):ISC_STATUS; extdecl; external gdslib;
1679
1680  function isc_array_get_slice(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:PISC_QUAD; _para5:PISC_ARRAY_DESC;
1681             _para6:pointer; _para7:PISC_LONG):ISC_STATUS; extdecl; external gdslib;
1682
1683  function isc_array_lookup_bounds(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pchar; _para5:Pchar;
1684             _para6:PISC_ARRAY_DESC):ISC_STATUS; extdecl; external gdslib;
1685
1686  function isc_array_lookup_desc(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pchar; _para5:Pchar;
1687             _para6:PISC_ARRAY_DESC):ISC_STATUS; extdecl; external gdslib;
1688
1689  function isc_array_set_desc(_para1:PISC_STATUS; _para2:Pchar; _para3:Pchar; _para4:Psmallint; _para5:Psmallint;
1690             _para6:Psmallint; _para7:PISC_ARRAY_DESC):ISC_STATUS; extdecl; external gdslib;
1691
1692  function isc_array_put_slice(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:PISC_QUAD; _para5:PISC_ARRAY_DESC;
1693             _para6:pointer; _para7:PISC_LONG):ISC_STATUS; extdecl; external gdslib;
1694
1695  procedure isc_blob_default_desc(_para1:PISC_BLOB_DESC; _para2:Pbyte; _para3:Pbyte); extdecl; external gdslib;
1696
1697  function isc_blob_gen_bpb(_para1:PISC_STATUS; _para2:PISC_BLOB_DESC; _para3:PISC_BLOB_DESC; _para4:word; _para5:Pbyte;
1698             _para6:Pword):ISC_STATUS; extdecl; external gdslib;
1699
1700  function isc_blob_info(_para1:PISC_STATUS; _para2:Pisc_blob_handle; _para3:smallint; _para4:Pchar; _para5:smallint;
1701             _para6:Pchar):ISC_STATUS; extdecl; external gdslib;
1702
1703  function isc_blob_lookup_desc(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pbyte; _para5:Pbyte;
1704             _para6:PISC_BLOB_DESC; _para7:Pbyte):ISC_STATUS; extdecl; external gdslib;
1705
1706  function isc_blob_set_desc(_para1:PISC_STATUS; _para2:Pbyte; _para3:Pbyte; _para4:smallint; _para5:smallint;
1707             _para6:smallint; _para7:PISC_BLOB_DESC):ISC_STATUS; extdecl; external gdslib;
1708
1709  function isc_cancel_blob(_para1:PISC_STATUS; _para2:Pisc_blob_handle):ISC_STATUS; extdecl; external gdslib;
1710
1711  function isc_cancel_events(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:PISC_LONG):ISC_STATUS; extdecl; external gdslib;
1712
1713  function isc_close_blob(_para1:PISC_STATUS; _para2:Pisc_blob_handle):ISC_STATUS; extdecl; external gdslib;
1714
1715  function isc_commit_retaining(_para1:PISC_STATUS; _para2:Pisc_tr_handle):ISC_STATUS; extdecl; external gdslib;
1716
1717  function isc_commit_transaction(_para1:PISC_STATUS; _para2:Pisc_tr_handle):ISC_STATUS; extdecl; external gdslib;
1718
1719  function isc_create_blob(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pisc_blob_handle; _para5:PISC_QUAD):ISC_STATUS; extdecl; external gdslib;
1720
1721  function isc_create_blob2(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pisc_blob_handle; _para5:PISC_QUAD;
1722             _para6:smallint; _para7:Pchar):ISC_STATUS; extdecl; external gdslib;
1723
1724  function isc_create_database(_para1:PISC_STATUS; _para2:smallint; _para3:Pchar; _para4:Pisc_db_handle; _para5:smallint;
1725             _para6:Pchar; _para7:smallint):ISC_STATUS; extdecl; external gdslib;
1726
1727  function isc_database_info(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:smallint; _para4:Pchar; _para5:smallint;
1728             _para6:Pchar):ISC_STATUS; extdecl; external gdslib;
1729
1730  procedure isc_decode_date(_para1:PISC_QUAD; _para2:pointer); extdecl; external gdslib;
1731
1732  procedure isc_decode_sql_date(_para1:PISC_DATE; _para2:pointer); extdecl; external gdslib;
1733
1734  procedure isc_decode_sql_time(_para1:PISC_TIME; _para2:pointer); extdecl; external gdslib;
1735
1736  procedure isc_decode_timestamp(_para1:PISC_TIMESTAMP; _para2:pointer); extdecl; external gdslib;
1737
1738  function isc_detach_database(_para1:PISC_STATUS; _para2:Pisc_db_handle):ISC_STATUS; extdecl; external gdslib;
1739
1740  function isc_drop_database(_para1:PISC_STATUS; _para2:Pisc_db_handle):ISC_STATUS; extdecl; external gdslib;
1741
1742  function isc_dsql_allocate_statement(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_stmt_handle):ISC_STATUS; extdecl; external gdslib;
1743
1744  function isc_dsql_alloc_statement2(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_stmt_handle):ISC_STATUS; extdecl; external gdslib;
1745
1746  function isc_dsql_describe(_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:word; _para4:PXSQLDA):ISC_STATUS; extdecl; external gdslib;
1747
1748  function isc_dsql_describe_bind(_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:word; _para4:PXSQLDA):ISC_STATUS; extdecl; external gdslib;
1749
1750  function isc_dsql_exec_immed2(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:word; _para5:Pchar;
1751             _para6:word; _para7:PXSQLDA; _para8:PXSQLDA):ISC_STATUS; extdecl; external gdslib;
1752
1753  function isc_dsql_execute(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pisc_stmt_handle; _para4:word; _para5:PXSQLDA):ISC_STATUS; extdecl; external gdslib;
1754
1755  function isc_dsql_execute2(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pisc_stmt_handle; _para4:word; _para5:PXSQLDA;
1756             _para6:PXSQLDA):ISC_STATUS; extdecl; external gdslib;
1757
1758  function isc_dsql_execute_immediate(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:word; _para5:Pchar;
1759             _para6:word; _para7:PXSQLDA):ISC_STATUS; extdecl; external gdslib;
1760
1761  function isc_dsql_fetch(_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:word; _para4:PXSQLDA):ISC_STATUS; extdecl; external gdslib;
1762
1763  function isc_dsql_finish(_para1:Pisc_db_handle):ISC_STATUS; extdecl; external gdslib;
1764
1765  function isc_dsql_free_statement(_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:word):ISC_STATUS; extdecl; external gdslib;
1766
1767  function isc_dsql_insert(_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:word; _para4:PXSQLDA):ISC_STATUS; extdecl; external gdslib;
1768
1769  function isc_dsql_prepare(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pisc_stmt_handle; _para4:word; _para5:Pchar;
1770             _para6:word; _para7:PXSQLDA):ISC_STATUS; extdecl; external gdslib;
1771
1772  function isc_dsql_set_cursor_name(_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:Pchar; _para4:word):ISC_STATUS; extdecl; external gdslib;
1773
1774  function isc_dsql_sql_info(_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:smallint; _para4:Pchar; _para5:smallint;
1775             _para6:Pchar):ISC_STATUS; extdecl; external gdslib;
1776
1777  procedure isc_encode_date(_para1:pointer; _para2:PISC_QUAD); extdecl; external gdslib;
1778
1779  procedure isc_encode_sql_date(_para1:pointer; _para2:PISC_DATE); extdecl; external gdslib;
1780
1781  procedure isc_encode_sql_time(_para1:pointer; _para2:PISC_TIME); extdecl; external gdslib;
1782
1783  procedure isc_encode_timestamp(_para1:pointer; _para2:PISC_TIMESTAMP); extdecl; external gdslib;
1784
1785  function isc_event_block(_para1:PPchar; _para2:PPchar; _para3:word; args:array of const):ISC_LONG; cdecl; external gdslib;
1786
1787  procedure isc_event_counts(_para1: PISC_STATUS; _para2: short; _para3: pchar; _para4: pchar); extdecl;  external gdslib;
1788
1789  procedure isc_expand_dpb(_para1:PPchar; _para2:Psmallint; args:array of const); cdecl; external gdslib;
1790
1791  function isc_modify_dpb(_para1:PPchar; _para2:Psmallint; _para3:word; _para4:Pchar; _para5:smallint):longint; extdecl; external gdslib;
1792
1793  function isc_free(_para1:Pchar):ISC_LONG; extdecl; external gdslib;
1794
1795  function isc_get_segment(_para1:PISC_STATUS; _para2:Pisc_blob_handle; _para3:Pword; _para4:word; _para5:Pchar):ISC_STATUS; extdecl; external gdslib;
1796
1797  function isc_get_slice(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:PISC_QUAD; _para5:smallint;
1798             _para6:Pchar; _para7:smallint; _para8:PISC_LONG; _para9:ISC_LONG; _para10:pointer;
1799             _para11:PISC_LONG):ISC_STATUS; extdecl; external gdslib;
1800
1801  function isc_interprete(_para1:Pchar; _para2:PPISC_STATUS):ISC_STATUS; extdecl; external gdslib;
1802
1803  function isc_open_blob(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pisc_blob_handle; _para5:PISC_QUAD):ISC_STATUS; extdecl; external gdslib;
1804
1805  function isc_open_blob2(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pisc_blob_handle; _para5:PISC_QUAD;
1806             _para6:smallint; _para7:Pchar):ISC_STATUS; extdecl; external gdslib;
1807
1808  function isc_prepare_transaction2(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:smallint; _para4:Pchar):ISC_STATUS; extdecl; external gdslib;
1809
1810  procedure isc_print_sqlerror(_para1:smallint; _para2:PISC_STATUS); extdecl; external gdslib;
1811
1812  function isc_print_status(_para1:PISC_STATUS):ISC_STATUS; extdecl; external gdslib;
1813
1814  function isc_put_segment(_para1:PISC_STATUS; _para2:Pisc_blob_handle; _para3:word; _para4:Pchar):ISC_STATUS; extdecl; external gdslib;
1815
1816  function isc_put_slice(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:PISC_QUAD; _para5:smallint;
1817             _para6:Pchar; _para7:smallint; _para8:PISC_LONG; _para9:ISC_LONG; _para10:pointer):ISC_STATUS; extdecl; external gdslib;
1818
1819  function isc_que_events(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:PISC_LONG; _para4:smallint; _para5:Pchar;
1820             _para6:isc_callback; _para7:pointer):ISC_STATUS; extdecl; external gdslib;
1821
1822  function isc_rollback_retaining(_para1:PISC_STATUS; _para2:Pisc_tr_handle):ISC_STATUS; extdecl; external gdslib;
1823
1824  function isc_rollback_transaction(_para1:PISC_STATUS; _para2:Pisc_tr_handle):ISC_STATUS; extdecl; external gdslib;
1825
1826  function isc_start_multiple(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:smallint; _para4:pointer):ISC_STATUS; extdecl; external gdslib;
1827
1828  function isc_start_transaction(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:smallint; args:array of const):ISC_STATUS; cdecl; external gdslib;
1829
1830  function isc_sqlcode(_para1:PISC_STATUS):ISC_LONG; extdecl; external gdslib;
1831
1832  // Available in Firebird 2.5+
1833  function fb_sqlstate(_para1: PAnsiChar;_para2:PISC_STATUS): ISC_STATUS ; extdecl;  external gdslib;
1834
1835  procedure isc_sql_interprete(_para1:smallint; _para2:Pchar; _para3:smallint); extdecl; external gdslib;
1836
1837  function isc_transaction_info(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:smallint; _para4:Pchar; _para5:smallint;
1838             _para6:Pchar):ISC_STATUS; extdecl; external gdslib;
1839
1840  function isc_transact_request(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:word; _para5:Pchar;
1841             _para6:word; _para7:Pchar; _para8:word; _para9:Pchar):ISC_STATUS; extdecl; external gdslib;
1842
1843  function isc_vax_integer(_para1:Pchar; _para2:smallint):ISC_LONG; extdecl; external gdslib;
1844
1845  function isc_portable_integer(_para1:Pbyte; _para2:smallint):ISC_INT64; extdecl; external gdslib;
1846
1847  {                                    }
1848  { Security Functions                 }
1849  {                                    }
1850
1851
1852  function isc_add_user(_para1:PISC_STATUS; _para2:PUSER_SEC_DATA):longint; extdecl; external gdslib;
1853
1854  function isc_delete_user(_para1:PISC_STATUS; _para2:PUSER_SEC_DATA):longint; extdecl; external gdslib;
1855
1856  function isc_modify_user(_para1:PISC_STATUS; _para2:PUSER_SEC_DATA):longint; extdecl; external gdslib;
1857
1858  {                                 }
1859  {  Other OSRI functions           }
1860  {                                 }
1861  function isc_compile_request(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_req_handle; _para4:smallint; _para5:Pchar):ISC_STATUS; extdecl; external gdslib;
1862
1863  function isc_compile_request2(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_req_handle; _para4:smallint; _para5:Pchar):ISC_STATUS; extdecl; external gdslib;
1864
1865  function isc_ddl(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:smallint; _para5:Pchar):ISC_STATUS; extdecl; external gdslib;
1866
1867  function isc_prepare_transaction(_para1:PISC_STATUS; _para2:Pisc_tr_handle):ISC_STATUS; extdecl; external gdslib;
1868
1869  function isc_receive(_para1:PISC_STATUS; _para2:Pisc_req_handle; _para3:smallint; _para4:smallint; _para5:pointer;
1870             _para6:smallint):ISC_STATUS; extdecl; external gdslib;
1871
1872  function isc_reconnect_transaction(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:smallint; _para5:Pchar):ISC_STATUS; extdecl; external gdslib;
1873
1874  function isc_release_request(_para1:PISC_STATUS; _para2:Pisc_req_handle):ISC_STATUS; extdecl; external gdslib;
1875
1876  function isc_request_info(_para1:PISC_STATUS; _para2:Pisc_req_handle; _para3:smallint; _para4:smallint; _para5:Pchar;
1877             _para6:smallint; _para7:Pchar):ISC_STATUS; extdecl; external gdslib;
1878
1879  function isc_seek_blob(_para1:PISC_STATUS; _para2:Pisc_blob_handle; _para3:smallint; _para4:ISC_LONG; _para5:PISC_LONG):ISC_STATUS; extdecl; external gdslib;
1880
1881  function isc_send(_para1:PISC_STATUS; _para2:Pisc_req_handle; _para3:smallint; _para4:smallint; _para5:pointer;
1882             _para6:smallint):ISC_STATUS; extdecl; external gdslib;
1883
1884  function isc_start_and_send(_para1:PISC_STATUS; _para2:Pisc_req_handle; _para3:Pisc_tr_handle; _para4:smallint; _para5:smallint;
1885             _para6:pointer; _para7:smallint):ISC_STATUS; extdecl; external gdslib;
1886
1887  function isc_start_request(_para1:PISC_STATUS; _para2:Pisc_req_handle; _para3:Pisc_tr_handle; _para4:smallint):ISC_STATUS; extdecl; external gdslib;
1888
1889  function isc_unwind_request(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:smallint):ISC_STATUS; extdecl; external gdslib;
1890
1891  function isc_wait_for_event(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:smallint; _para4:Pchar; _para5:Pchar):ISC_STATUS; extdecl; external gdslib;
1892
1893  {                            }
1894  { Other Sql functions        }
1895  {                            }
1896  function isc_close(_para1:PISC_STATUS; _para2:Pchar):ISC_STATUS; extdecl; external gdslib;
1897
1898  function isc_declare(_para1:PISC_STATUS; _para2:Pchar; _para3:Pchar):ISC_STATUS; extdecl; external gdslib;
1899
1900  function isc_describe(_para1:PISC_STATUS; _para2:Pchar; _para3:PXSQLDA):ISC_STATUS; extdecl; external gdslib;
1901
1902  function isc_describe_bind(_para1:PISC_STATUS; _para2:Pchar; _para3:PXSQLDA):ISC_STATUS; extdecl; external gdslib;
1903
1904  function isc_execute(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pchar; _para4:PXSQLDA):ISC_STATUS; extdecl; external gdslib;
1905
1906  function isc_execute_immediate(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Psmallint; _para5:Pchar):ISC_STATUS; extdecl; external gdslib;
1907
1908  function isc_fetch(_para1:PISC_STATUS; _para2:Pchar; _para3:PXSQLDA):ISC_STATUS; extdecl; external gdslib;
1909
1910  function isc_open(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pchar; _para4:PXSQLDA):ISC_STATUS; extdecl; external gdslib;
1911
1912  function isc_prepare(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pchar; _para5:Psmallint;
1913             _para6:Pchar; _para7:PXSQLDA):ISC_STATUS; extdecl; external gdslib;
1914
1915  {                                    }
1916  { Other Dynamic sql functions        }
1917  {                                    }
1918  function isc_dsql_execute_m(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pisc_stmt_handle; _para4:word; _para5:Pchar;
1919             _para6:word; _para7:word; _para8:Pchar):ISC_STATUS; extdecl; external gdslib;
1920
1921  function isc_dsql_execute2_m(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pisc_stmt_handle; _para4:word; _para5:Pchar;
1922             _para6:word; _para7:word; _para8:Pchar; _para9:word; _para10:Pchar;
1923             _para11:word; _para12:word; _para13:Pchar):ISC_STATUS; extdecl; external gdslib;
1924
1925  function isc_dsql_execute_immediate_m(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:word; _para5:Pchar;
1926             _para6:word; _para7:word; _para8:Pchar; _para9:word; _para10:word;
1927             _para11:Pchar):ISC_STATUS; extdecl; external gdslib;
1928
1929  function isc_dsql_exec_immed3_m(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:word; _para5:Pchar;
1930             _para6:word; _para7:word; _para8:Pchar; _para9:word; _para10:word;
1931             _para11:Pchar; _para12:word; _para13:Pchar; _para14:word; _para15:word;
1932             _para16:Pchar):ISC_STATUS; extdecl; external gdslib;
1933
1934  function isc_dsql_fetch_m(_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:word; _para4:Pchar; _para5:word;
1935             _para6:word; _para7:Pchar):ISC_STATUS; extdecl; external gdslib;
1936
1937  function isc_dsql_insert_m(_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:word; _para4:Pchar; _para5:word;
1938             _para6:word; _para7:Pchar):ISC_STATUS; extdecl; external gdslib;
1939
1940  function isc_dsql_prepare_m(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pisc_stmt_handle; _para4:word; _para5:Pchar;
1941             _para6:word; _para7:word; _para8:Pchar; _para9:word; _para10:Pchar):ISC_STATUS; extdecl; external gdslib;
1942
1943  function isc_dsql_release(_para1:PISC_STATUS; _para2:Pchar):ISC_STATUS; extdecl; external gdslib;
1944
1945  function isc_embed_dsql_close(_para1:PISC_STATUS; _para2:Pchar):ISC_STATUS; extdecl; external gdslib;
1946
1947  function isc_embed_dsql_declare(_para1:PISC_STATUS; _para2:Pchar; _para3:Pchar):ISC_STATUS; extdecl; external gdslib;
1948
1949  function isc_embed_dsql_describe(_para1:PISC_STATUS; _para2:Pchar; _para3:word; _para4:PXSQLDA):ISC_STATUS; extdecl; external gdslib;
1950
1951  function isc_embed_dsql_describe_bind(_para1:PISC_STATUS; _para2:Pchar; _para3:word; _para4:PXSQLDA):ISC_STATUS; extdecl; external gdslib;
1952
1953  function isc_embed_dsql_execute(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pchar; _para4:word; _para5:PXSQLDA):ISC_STATUS; extdecl; external gdslib;
1954
1955  function isc_embed_dsql_execute2(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pchar; _para4:word; _para5:PXSQLDA;
1956             _para6:PXSQLDA):ISC_STATUS; extdecl; external gdslib;
1957
1958  function isc_embed_dsql_execute_immed(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:word; _para5:Pchar;
1959             _para6:word; _para7:PXSQLDA):ISC_STATUS; extdecl; external gdslib;
1960
1961  function isc_embed_dsql_fetch(_para1:PISC_STATUS; _para2:Pchar; _para3:word; _para4:PXSQLDA):ISC_STATUS; extdecl; external gdslib;
1962
1963  function isc_embed_dsql_open(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pchar; _para4:word; _para5:PXSQLDA):ISC_STATUS; extdecl; external gdslib;
1964
1965  function isc_embed_dsql_open2(_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pchar; _para4:word; _para5:PXSQLDA;
1966             _para6:PXSQLDA):ISC_STATUS; extdecl; external gdslib;
1967
1968  function isc_embed_dsql_insert(_para1:PISC_STATUS; _para2:Pchar; _para3:word; _para4:PXSQLDA):ISC_STATUS; extdecl; external gdslib;
1969
1970  function isc_embed_dsql_prepare(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pchar; _para5:word;
1971             _para6:Pchar; _para7:word; _para8:PXSQLDA):ISC_STATUS; extdecl; external gdslib;
1972
1973  function isc_embed_dsql_release(_para1:PISC_STATUS; _para2:Pchar):ISC_STATUS; extdecl; external gdslib;
1974
1975  {                             }
1976  { Other Blob functions        }
1977  {                             }
1978  function BLOB_open(_para1:isc_blob_handle; _para2:Pchar; _para3:longint):PBSTREAM; extdecl; external gdslib;
1979
1980  function BLOB_put(_para1:char; _para2:PBSTREAM):longint; extdecl; external gdslib;
1981
1982  function BLOB_close(_para1:PBSTREAM):longint; extdecl; external gdslib;
1983
1984  function BLOB_get(_para1:PBSTREAM):longint; extdecl; external gdslib;
1985
1986  function BLOB_display(_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar):longint; extdecl; external gdslib;
1987
1988  function BLOB_dump(_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar):longint; extdecl; external gdslib;
1989
1990  function BLOB_edit(_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar):longint; extdecl; external gdslib;
1991
1992  function BLOB_load(_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar):longint; extdecl; external gdslib;
1993
1994  function BLOB_text_dump(_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar):longint; extdecl; external gdslib;
1995
1996  function BLOB_text_load(_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar):longint; extdecl; external gdslib;
1997
1998  function Bopen(_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar):PBSTREAM; extdecl; external gdslib;
1999
2000{$IFDEF Unix}
2001  function Bopen2(_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar; _para5:word):PBSTREAM; extdecl; external gdslib;
2002{$ENDIF}
2003
2004  {                             }
2005  { Other Misc functions        }
2006  {                             }
2007  function isc_ftof(_para1:Pchar; _para2:word; _para3:Pchar; _para4:word):ISC_LONG; extdecl; external gdslib;
2008
2009  function isc_print_blr(_para1:Pchar; _para2:isc_callback; _para3:pointer; _para4:smallint):ISC_STATUS; extdecl; external gdslib;
2010
2011  procedure isc_set_debug(_para1:longint); extdecl; external gdslib;
2012
2013  procedure isc_qtoq(_para1:PISC_QUAD; _para2:PISC_QUAD); extdecl; external gdslib;
2014
2015  procedure isc_vtof(_para1:Pchar; _para2:Pchar; _para3:word); extdecl; external gdslib;
2016
2017  procedure isc_vtov(_para1:Pchar; _para2:Pchar; _para3:smallint); extdecl; external gdslib;
2018
2019  function isc_version(_para1:Pisc_db_handle; _para2:isc_callback; _para3:pointer):longint; extdecl; external gdslib;
2020
2021{$IFDEF Unix}
2022  function isc_reset_fpe(_para1:word):ISC_LONG; extdecl; external gdslib;
2023{$ENDIF}
2024
2025  {                                        }
2026  { Service manager functions              }
2027  {                                        }
2028  (*!!MVC
2029  #define ADD_SPB_LENGTH(p, length)     { (p)++ = (length); \
2030                                          (p)++ = (length) >> 8;}
2031
2032  #define ADD_SPB_NUMERIC(p, data)      { (p)++ = (data); \
2033                                          (p)++ = (data) >> 8; \
2034                                          (p)++ = (data) >> 16; \
2035                                          (p)++ = (data) >> 24;}
2036  !!MVC *)
2037
2038  function isc_service_attach(_para1:PISC_STATUS; _para2:word; _para3:Pchar; _para4:Pisc_svc_handle; _para5:word;
2039             _para6:Pchar):ISC_STATUS; extdecl; external gdslib;
2040
2041  function isc_service_detach(_para1:PISC_STATUS; _para2:Pisc_svc_handle):ISC_STATUS; extdecl; external gdslib;
2042
2043  function isc_service_query(_para1:PISC_STATUS; _para2:Pisc_svc_handle; _para3:Pisc_resv_handle; _para4:word; _para5:Pchar;
2044             _para6:word; _para7:Pchar; _para8:word; _para9:Pchar):ISC_STATUS; extdecl; external gdslib;
2045
2046  function isc_service_start(_para1:PISC_STATUS; _para2:Pisc_svc_handle; _para3:Pisc_resv_handle; _para4:word; _para5:Pchar):ISC_STATUS; extdecl; external gdslib;
2047
2048  {                              }
2049  { Shutdown and cancel          }
2050  {                              }
2051  // Available in Firebird 2.5+
2052  function fb_shutdown(_para1: UINT;  _para2: integer): int; extdecl; external gdslib;
2053
2054  // Available in Firebird 2.5+
2055  //function fb_shutdown_callback{!!!3 unknown typedef}: ISC_EXPORT{ISC_STATUS}{<= !!!4 unknown type};
2056
2057  // Available in Firebird 2.5+
2058  //function fb_cancel_operation{!!!3 unknown typedef}: ISC_EXPORT{ISC_STATUS}{<= !!!4 unknown type};
2059
2060
2061  {                              }
2062  { Forms functions              }
2063  {                              }
2064{$IFDEF Unix}
2065  function isc_compile_map(_para1:PISC_STATUS; _para2:Pisc_form_handle; _para3:Pisc_req_handle; _para4:Psmallint; _para5:Pchar):ISC_STATUS; extdecl; external gdslib;
2066
2067  function isc_compile_menu(_para1:PISC_STATUS; _para2:Pisc_form_handle; _para3:Pisc_req_handle; _para4:Psmallint; _para5:Pchar):ISC_STATUS; extdecl; external gdslib;
2068
2069  function isc_compile_sub_map(_para1:PISC_STATUS; _para2:Pisc_win_handle; _para3:Pisc_req_handle; _para4:Psmallint; _para5:Pchar):ISC_STATUS; extdecl; external gdslib;
2070
2071  function isc_create_window(_para1:PISC_STATUS; _para2:Pisc_win_handle; _para3:Psmallint; _para4:Pchar; _para5:Psmallint;
2072             _para6:Psmallint):ISC_STATUS; extdecl; external gdslib;
2073
2074  function isc_delete_window(_para1:PISC_STATUS; _para2:Pisc_win_handle):ISC_STATUS; extdecl; external gdslib;
2075
2076  function isc_drive_form(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pisc_win_handle; _para5:Pisc_req_handle;
2077             _para6:Pbyte; _para7:Pbyte):ISC_STATUS; extdecl; external gdslib;
2078
2079  function isc_drive_menu(_para1:PISC_STATUS; _para2:Pisc_win_handle; _para3:Pisc_req_handle; _para4:Psmallint; _para5:Pchar;
2080             _para6:Psmallint; _para7:Pchar; _para8:Psmallint; _para9:Psmallint; _para10:Pchar;
2081             _para11:PISC_LONG):ISC_STATUS; extdecl; external gdslib;
2082
2083  function isc_form_delete(_para1:PISC_STATUS; _para2:Pisc_form_handle):ISC_STATUS; extdecl; external gdslib;
2084
2085  function isc_form_fetch(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pisc_req_handle; _para5:Pbyte):ISC_STATUS; extdecl; external gdslib;
2086
2087  function isc_form_insert(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pisc_req_handle; _para5:Pbyte):ISC_STATUS; extdecl; external gdslib;
2088
2089  function isc_get_entree(_para1:PISC_STATUS; _para2:Pisc_req_handle; _para3:Psmallint; _para4:Pchar; _para5:PISC_LONG;
2090             _para6:Psmallint):ISC_STATUS; extdecl; external gdslib;
2091
2092  function isc_initialize_menu(_para1:PISC_STATUS; _para2:Pisc_req_handle):ISC_STATUS; extdecl; external gdslib;
2093
2094  function isc_menu(_para1:PISC_STATUS; _para2:Pisc_win_handle; _para3:Pisc_req_handle; _para4:Psmallint; _para5:Pchar):ISC_STATUS; extdecl; external gdslib;
2095
2096  function isc_load_form(_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pisc_form_handle; _para5:Psmallint;
2097             _para6:Pchar):ISC_STATUS; extdecl; external gdslib;
2098
2099  function isc_pop_window(_para1:PISC_STATUS; _para2:Pisc_win_handle):ISC_STATUS; extdecl; external gdslib;
2100
2101  function isc_put_entree(_para1:PISC_STATUS; _para2:Pisc_req_handle; _para3:Psmallint; _para4:Pchar; _para5:PISC_LONG):ISC_STATUS; extdecl; external gdslib;
2102
2103  function isc_reset_form(_para1:PISC_STATUS; _para2:Pisc_req_handle):ISC_STATUS; extdecl; external gdslib;
2104
2105  function isc_suspend_window(_para1:PISC_STATUS; _para2:Pisc_win_handle):ISC_STATUS; extdecl; external gdslib;
2106{$ENDIF}
2107
2108  // Available in Firebird 2.5+
2109  function fb_shutdown:int; extdecl; external gdslib;
2110
2111  // Available in Firebird 2.5+
2112  function fb_sqlstate:ISC_STATUS; extdecl;external gdslib;
2113
2114  function isc_attach_database:ISC_STATUS; extdecl; external gdslib;
2115
2116  function isc_array_gen_sdl:ISC_STATUS; extdecl; external gdslib;
2117
2118  function isc_array_get_slice:ISC_STATUS; extdecl; external gdslib;
2119
2120  function isc_array_lookup_bounds:ISC_STATUS; extdecl; external gdslib;
2121
2122  function isc_array_lookup_desc:ISC_STATUS; extdecl; external gdslib;
2123
2124  function isc_array_set_desc:ISC_STATUS; extdecl; external gdslib;
2125
2126  function isc_array_put_slice:ISC_STATUS; extdecl; external gdslib;
2127
2128  function isc_blob_gen_bpb:ISC_STATUS; extdecl; external gdslib;
2129
2130  function isc_blob_info:ISC_STATUS; extdecl; external gdslib;
2131
2132  function isc_blob_lookup_desc:ISC_STATUS; extdecl; external gdslib;
2133
2134  function isc_blob_set_desc:ISC_STATUS; extdecl; external gdslib;
2135
2136  function isc_cancel_blob:ISC_STATUS; extdecl; external gdslib;
2137
2138  function isc_cancel_events:ISC_STATUS; extdecl; external gdslib;
2139
2140  function isc_close_blob:ISC_STATUS; extdecl; external gdslib;
2141
2142  function isc_commit_retaining:ISC_STATUS; extdecl; external gdslib;
2143
2144  function isc_commit_transaction:ISC_STATUS; extdecl; external gdslib;
2145
2146  function isc_compile_request:ISC_STATUS; extdecl; external gdslib;
2147
2148  function isc_compile_request2:ISC_STATUS; extdecl; external gdslib;
2149
2150  function isc_create_blob:ISC_STATUS; extdecl; external gdslib;
2151
2152  function isc_create_blob2:ISC_STATUS; extdecl; external gdslib;
2153
2154  function isc_create_database:ISC_STATUS; extdecl; external gdslib;
2155
2156  function isc_database_info:ISC_STATUS; extdecl; external gdslib;
2157
2158  function isc_ddl:ISC_STATUS; extdecl; external gdslib;
2159
2160  procedure isc_decode_date; extdecl; external gdslib;
2161
2162  procedure isc_decode_sql_date; extdecl; external gdslib;
2163
2164  procedure isc_decode_sql_time; extdecl; external gdslib;
2165
2166  procedure isc_decode_timestamp; extdecl; external gdslib;
2167
2168  function isc_detach_database:ISC_STATUS; extdecl; external gdslib;
2169
2170  function isc_drop_database:ISC_STATUS; extdecl; external gdslib;
2171
2172  procedure isc_encode_date; extdecl; external gdslib;
2173
2174  procedure isc_encode_sql_date; extdecl; external gdslib;
2175
2176  procedure isc_encode_sql_time; extdecl; external gdslib;
2177
2178  procedure isc_encode_timestamp; extdecl; external gdslib;
2179
2180  function isc_event_block:ISC_LONG; cdecl; external gdslib;
2181
2182  procedure isc_event_counts; extdecl; external gdslib;
2183
2184  procedure isc_expand_dpb; cdecl; external gdslib;
2185
2186  function isc_modify_dpb:longint; extdecl; external gdslib;
2187
2188  function isc_free:ISC_LONG; extdecl; external gdslib;
2189
2190  function isc_get_segment:ISC_STATUS; extdecl; external gdslib;
2191
2192  function isc_get_slice:ISC_STATUS; extdecl; external gdslib;
2193
2194  function isc_interprete:ISC_STATUS; extdecl; external gdslib;
2195
2196  function isc_open_blob:ISC_STATUS; extdecl; external gdslib;
2197
2198  function isc_open_blob2:ISC_STATUS; extdecl; external gdslib;
2199
2200  function isc_prepare_transaction:ISC_STATUS; extdecl; external gdslib;
2201
2202  function isc_prepare_transaction2:ISC_STATUS; extdecl; external gdslib;
2203
2204  procedure isc_print_sqlerror; extdecl; external gdslib;
2205
2206  function isc_print_status:ISC_STATUS; extdecl; external gdslib;
2207
2208  function isc_put_segment:ISC_STATUS; extdecl; external gdslib;
2209
2210  function isc_put_slice:ISC_STATUS; extdecl; external gdslib;
2211
2212  function isc_que_events:ISC_STATUS; extdecl; external gdslib;
2213
2214  function isc_receive:ISC_STATUS; extdecl; external gdslib;
2215
2216  function isc_reconnect_transaction:ISC_STATUS; extdecl; external gdslib;
2217
2218  function isc_release_request:ISC_STATUS; extdecl; external gdslib;
2219
2220  function isc_request_info:ISC_STATUS; extdecl; external gdslib;
2221
2222{$IFDEF Unix}
2223  function isc_reset_fpe:ISC_LONG; extdecl; external gdslib;
2224{$ENDIF}
2225
2226  function isc_rollback_transaction:ISC_STATUS; extdecl; external gdslib;
2227
2228  function isc_rollback_retaining:ISC_STATUS; extdecl; external gdslib;
2229
2230  function isc_seek_blob:ISC_STATUS; extdecl; external gdslib;
2231
2232  function isc_send:ISC_STATUS; extdecl; external gdslib;
2233
2234  function isc_service_attach:ISC_STATUS; extdecl; external gdslib;
2235
2236  function isc_service_detach:ISC_STATUS; extdecl; external gdslib;
2237
2238  function isc_service_query:ISC_STATUS; extdecl; external gdslib;
2239
2240  function isc_service_start:ISC_STATUS; extdecl; external gdslib;
2241
2242  function isc_start_and_send:ISC_STATUS; extdecl; external gdslib;
2243
2244  function isc_start_multiple:ISC_STATUS; extdecl; external gdslib;
2245
2246  function isc_start_request:ISC_STATUS; extdecl; external gdslib;
2247
2248  function isc_start_transaction:ISC_STATUS; cdecl; external gdslib;
2249
2250  function isc_sqlcode:ISC_LONG; extdecl; external gdslib;
2251
2252  function isc_transaction_info:ISC_STATUS; extdecl; external gdslib;
2253
2254  function isc_transact_request:ISC_STATUS; extdecl; external gdslib;
2255
2256  function isc_unwind_request:ISC_STATUS; extdecl; external gdslib;
2257
2258  function isc_wait_for_event:ISC_STATUS; extdecl; external gdslib;
2259
2260  function isc_ftof:ISC_LONG; extdecl; external gdslib;
2261
2262  function isc_print_blr:ISC_STATUS; extdecl; external gdslib;
2263
2264  procedure isc_set_debug; extdecl; external gdslib;
2265
2266  procedure isc_qtoq; extdecl; external gdslib;
2267
2268  function isc_vax_integer:ISC_LONG; extdecl; external gdslib;
2269
2270  procedure isc_vtof; extdecl; external gdslib;
2271
2272  procedure isc_vtov; extdecl; external gdslib;
2273
2274  function isc_version:longint; extdecl; external gdslib;
2275
2276  {                 }
2277  { Blob functions  }
2278  {                 }
2279
2280  function Bopen:PBSTREAM; extdecl; external gdslib;
2281
2282  function BLOB_open:PBSTREAM; extdecl; external gdslib;
2283
2284{$IFDEF Unix}
2285  function Bopen2:PBSTREAM; extdecl; external gdslib;
2286{$ENDIF}
2287
2288{$ELSE} // LinkDynamically
2289
2290var
2291
2292{                          }
2293{ OSRI database functions  }
2294{                          }
2295  isc_attach_database : function (_para1:PISC_STATUS; _para2:smallint; _para3:Pchar; _para4:Pisc_db_handle; _para5:smallint;_para6:Pchar):ISC_STATUS; extdecl;
2296  isc_array_gen_sdl : function (_para1:PISC_STATUS; _para2:PISC_ARRAY_DESC; _para3:Psmallint; _para4:Pchar; _para5:Psmallint):ISC_STATUS; extdecl;
2297  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; extdecl;
2298  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; extdecl;
2299  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; extdecl;
2300  isc_array_set_desc : function (_para1:PISC_STATUS; _para2:Pchar; _para3:Pchar; _para4:Psmallint; _para5:Psmallint;_para6:Psmallint; _para7:PISC_ARRAY_DESC):ISC_STATUS; extdecl;
2301  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; extdecl;
2302  isc_blob_default_desc : procedure (_para1:PISC_BLOB_DESC; _para2:Pbyte; _para3:Pbyte); extdecl;
2303  isc_blob_gen_bpb : function (_para1:PISC_STATUS; _para2:PISC_BLOB_DESC; _para3:PISC_BLOB_DESC; _para4:word; _para5:Pbyte;_para6:Pword):ISC_STATUS; extdecl;
2304  isc_blob_info : function (_para1:PISC_STATUS; _para2:Pisc_blob_handle; _para3:smallint; _para4:Pchar; _para5:smallint;_para6:Pchar):ISC_STATUS; extdecl;
2305  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; extdecl;
2306  isc_blob_set_desc : function (_para1:PISC_STATUS; _para2:Pbyte; _para3:Pbyte; _para4:smallint; _para5:smallint;_para6:smallint; _para7:PISC_BLOB_DESC):ISC_STATUS; extdecl;
2307  isc_cancel_blob : function (_para1:PISC_STATUS; _para2:Pisc_blob_handle):ISC_STATUS; extdecl;
2308  isc_cancel_events : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:PISC_LONG):ISC_STATUS; extdecl;
2309  isc_close_blob : function (_para1:PISC_STATUS; _para2:Pisc_blob_handle):ISC_STATUS; extdecl;
2310  isc_commit_retaining : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle):ISC_STATUS; extdecl;
2311  isc_commit_transaction : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle):ISC_STATUS; extdecl;
2312  isc_create_blob : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pisc_blob_handle; _para5:PISC_QUAD):ISC_STATUS; extdecl;
2313  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; extdecl;
2314  isc_create_database : function (_para1:PISC_STATUS; _para2:smallint; _para3:Pchar; _para4:Pisc_db_handle; _para5:smallint;_para6:Pchar; _para7:smallint):ISC_STATUS; extdecl;
2315  isc_database_info : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:smallint; _para4:Pchar; _para5:smallint;_para6:Pchar):ISC_STATUS; extdecl;
2316  isc_decode_date : procedure (_para1:PISC_QUAD; _para2:pointer); extdecl;
2317  isc_decode_sql_date : procedure (_para1:PISC_DATE; _para2:pointer); extdecl;
2318  isc_decode_sql_time : procedure (_para1:PISC_TIME; _para2:pointer); extdecl;
2319  isc_decode_timestamp : procedure (_para1:PISC_TIMESTAMP; _para2:pointer); extdecl;
2320  isc_detach_database : function (_para1:PISC_STATUS; _para2:Pisc_db_handle):ISC_STATUS; extdecl;
2321  isc_drop_database : function (_para1:PISC_STATUS; _para2:Pisc_db_handle):ISC_STATUS; extdecl;
2322  isc_dsql_allocate_statement : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_stmt_handle):ISC_STATUS; extdecl;
2323  isc_dsql_alloc_statement2 : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_stmt_handle):ISC_STATUS; extdecl;
2324  isc_dsql_describe : function (_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:word; _para4:PXSQLDA):ISC_STATUS; extdecl;
2325  isc_dsql_describe_bind : function (_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:word; _para4:PXSQLDA):ISC_STATUS; extdecl;
2326  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; extdecl;
2327  isc_dsql_execute : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pisc_stmt_handle; _para4:word; _para5:PXSQLDA):ISC_STATUS; extdecl;
2328  isc_dsql_execute2 : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pisc_stmt_handle; _para4:word; _para5:PXSQLDA;_para6:PXSQLDA):ISC_STATUS; extdecl;
2329  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; extdecl;
2330  isc_dsql_fetch : function (_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:word; _para4:PXSQLDA):ISC_STATUS; extdecl;
2331  isc_dsql_finish : function (_para1:Pisc_db_handle):ISC_STATUS; extdecl;
2332  isc_dsql_free_statement : function (_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:word):ISC_STATUS; extdecl;
2333  isc_dsql_insert : function (_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:word; _para4:PXSQLDA):ISC_STATUS; extdecl;
2334  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; extdecl;
2335  isc_dsql_set_cursor_name : function (_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:Pchar; _para4:word):ISC_STATUS; extdecl;
2336  isc_dsql_sql_info : function (_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:smallint; _para4:Pchar; _para5:smallint;_para6:Pchar):ISC_STATUS; extdecl;
2337  isc_encode_date : procedure (_para1:pointer; _para2:PISC_QUAD); extdecl;
2338  isc_encode_sql_date : procedure (_para1:pointer; _para2:PISC_DATE); extdecl;
2339  isc_encode_sql_time : procedure (_para1:pointer; _para2:PISC_TIME); extdecl;
2340  isc_encode_timestamp : procedure (_para1:pointer; _para2:PISC_TIMESTAMP); extdecl;
2341  isc_event_block : function (_para1:PPchar; _para2:PPchar; _para3:word; args:array of const):ISC_LONG; cdecl;
2342  isc_event_counts: procedure (_para1: PISC_STATUS; _para2: short; _para3: pchar; _para4: pchar); extdecl;
2343  isc_expand_dpb : procedure (_para1:PPchar; _para2:Psmallint; args:array of const); cdecl;
2344  isc_modify_dpb : function (_para1:PPchar; _para2:Psmallint; _para3:word; _para4:Pchar; _para5:smallint):longint; extdecl;
2345  isc_free : function (_para1:Pchar):ISC_LONG; extdecl;
2346  isc_get_segment : function (_para1:PISC_STATUS; _para2:Pisc_blob_handle; _para3:Pword; _para4:word; _para5:Pchar):ISC_STATUS; extdecl;
2347  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; extdecl;
2348  isc_interprete : function (_para1:Pchar; _para2:PPISC_STATUS):ISC_STATUS; extdecl;
2349  isc_open_blob : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pisc_blob_handle; _para5:PISC_QUAD):ISC_STATUS; extdecl;
2350  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; extdecl;
2351  isc_prepare_transaction2 : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:smallint; _para4:Pchar):ISC_STATUS; extdecl;
2352  isc_print_sqlerror : procedure (_para1:smallint; _para2:PISC_STATUS); extdecl;
2353  isc_print_status : function (_para1:PISC_STATUS):ISC_STATUS; extdecl;
2354  isc_put_segment : function (_para1:PISC_STATUS; _para2:Pisc_blob_handle; _para3:word; _para4:Pchar):ISC_STATUS; extdecl;
2355  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; extdecl;
2356  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; extdecl;
2357  isc_rollback_retaining : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle):ISC_STATUS; extdecl;
2358  isc_rollback_transaction : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle):ISC_STATUS; extdecl;
2359  isc_start_multiple : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:smallint; _para4:pointer):ISC_STATUS; extdecl;
2360  isc_start_transaction : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:smallint; args:array of const):ISC_STATUS; cdecl;
2361  isc_sqlcode : function (_para1:PISC_STATUS):ISC_LONG; extdecl;
2362  // Available in Firebird 2.5+
2363  fb_sqlstate : function(_para1: PAnsiChar;_para2:PISC_STATUS):ISC_STATUS; extdecl;
2364  isc_sql_interprete : procedure (_para1:smallint; _para2:Pchar; _para3:smallint); extdecl;
2365  isc_transaction_info : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:smallint; _para4:Pchar; _para5:smallint;_para6:Pchar):ISC_STATUS; extdecl;
2366  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; extdecl;
2367  isc_vax_integer : function (_para1:Pchar; _para2:smallint):ISC_LONG; extdecl;
2368  isc_portable_integer : function (_para1:Pbyte; _para2:smallint):ISC_INT64; extdecl;
2369{                                    }
2370{ Security Functions                 }
2371{                                    }
2372  isc_add_user : function (_para1:PISC_STATUS; _para2:PUSER_SEC_DATA):longint; extdecl;
2373  isc_delete_user : function (_para1:PISC_STATUS; _para2:PUSER_SEC_DATA):longint; extdecl;
2374  isc_modify_user : function (_para1:PISC_STATUS; _para2:PUSER_SEC_DATA):longint; extdecl;
2375{                                 }
2376{  Other OSRI functions           }
2377{                                 }
2378  isc_compile_request : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_req_handle; _para4:smallint; _para5:Pchar):ISC_STATUS; extdecl;
2379  isc_compile_request2 : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_req_handle; _para4:smallint; _para5:Pchar):ISC_STATUS; extdecl;
2380  isc_ddl : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:smallint; _para5:Pchar):ISC_STATUS; extdecl;
2381  isc_prepare_transaction : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle):ISC_STATUS; extdecl;
2382  isc_receive : function (_para1:PISC_STATUS; _para2:Pisc_req_handle; _para3:smallint; _para4:smallint; _para5:pointer;_para6:smallint):ISC_STATUS; extdecl;
2383  isc_reconnect_transaction : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:smallint; _para5:Pchar):ISC_STATUS; extdecl;
2384  isc_release_request : function (_para1:PISC_STATUS; _para2:Pisc_req_handle):ISC_STATUS; extdecl;
2385  isc_request_info : function (_para1:PISC_STATUS; _para2:Pisc_req_handle; _para3:smallint; _para4:smallint; _para5:Pchar;_para6:smallint; _para7:Pchar):ISC_STATUS; extdecl;
2386  isc_seek_blob : function (_para1:PISC_STATUS; _para2:Pisc_blob_handle; _para3:smallint; _para4:ISC_LONG; _para5:PISC_LONG):ISC_STATUS; extdecl;
2387  isc_send : function (_para1:PISC_STATUS; _para2:Pisc_req_handle; _para3:smallint; _para4:smallint; _para5:pointer;_para6:smallint):ISC_STATUS; extdecl;
2388  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; extdecl;
2389  isc_start_request : function (_para1:PISC_STATUS; _para2:Pisc_req_handle; _para3:Pisc_tr_handle; _para4:smallint):ISC_STATUS; extdecl;
2390  isc_unwind_request : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:smallint):ISC_STATUS; extdecl;
2391  isc_wait_for_event : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:smallint; _para4:Pchar; _para5:Pchar):ISC_STATUS; extdecl;
2392{                            }
2393{ Other Sql functions        }
2394{                            }
2395  isc_close : function (_para1:PISC_STATUS; _para2:Pchar):ISC_STATUS; extdecl;
2396  isc_declare : function (_para1:PISC_STATUS; _para2:Pchar; _para3:Pchar):ISC_STATUS; extdecl;
2397  isc_describe : function (_para1:PISC_STATUS; _para2:Pchar; _para3:PXSQLDA):ISC_STATUS; extdecl;
2398  isc_describe_bind : function (_para1:PISC_STATUS; _para2:Pchar; _para3:PXSQLDA):ISC_STATUS; extdecl;
2399  isc_execute : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pchar; _para4:PXSQLDA):ISC_STATUS; extdecl;
2400  isc_execute_immediate : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Psmallint; _para5:Pchar):ISC_STATUS; extdecl;
2401  isc_fetch : function (_para1:PISC_STATUS; _para2:Pchar; _para3:PXSQLDA):ISC_STATUS; extdecl;
2402  isc_open : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pchar; _para4:PXSQLDA):ISC_STATUS; extdecl;
2403  isc_prepare : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pchar; _para5:Psmallint;_para6:Pchar; _para7:PXSQLDA):ISC_STATUS; extdecl;
2404{                                    }
2405{ Other Dynamic sql functions        }
2406{                                    }
2407  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; extdecl;
2408  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; extdecl;
2409  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; extdecl;
2410  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; extdecl;
2411  isc_dsql_fetch_m : function (_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:word; _para4:Pchar; _para5:word;_para6:word; _para7:Pchar):ISC_STATUS; extdecl;
2412  isc_dsql_insert_m : function (_para1:PISC_STATUS; _para2:Pisc_stmt_handle; _para3:word; _para4:Pchar; _para5:word;_para6:word; _para7:Pchar):ISC_STATUS; extdecl;
2413  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; extdecl;
2414  isc_dsql_release : function (_para1:PISC_STATUS; _para2:Pchar):ISC_STATUS; extdecl;
2415  isc_embed_dsql_close : function (_para1:PISC_STATUS; _para2:Pchar):ISC_STATUS; extdecl;
2416  isc_embed_dsql_declare : function (_para1:PISC_STATUS; _para2:Pchar; _para3:Pchar):ISC_STATUS; extdecl;
2417  isc_embed_dsql_describe : function (_para1:PISC_STATUS; _para2:Pchar; _para3:word; _para4:PXSQLDA):ISC_STATUS; extdecl;
2418  isc_embed_dsql_describe_bind : function (_para1:PISC_STATUS; _para2:Pchar; _para3:word; _para4:PXSQLDA):ISC_STATUS; extdecl;
2419  isc_embed_dsql_execute : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pchar; _para4:word; _para5:PXSQLDA):ISC_STATUS; extdecl;
2420  isc_embed_dsql_execute2 : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pchar; _para4:word; _para5:PXSQLDA;_para6:PXSQLDA):ISC_STATUS; extdecl;
2421  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; extdecl;
2422  isc_embed_dsql_fetch : function (_para1:PISC_STATUS; _para2:Pchar; _para3:word; _para4:PXSQLDA):ISC_STATUS; extdecl;
2423  isc_embed_dsql_open : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pchar; _para4:word; _para5:PXSQLDA):ISC_STATUS; extdecl;
2424  isc_embed_dsql_open2 : function (_para1:PISC_STATUS; _para2:Pisc_tr_handle; _para3:Pchar; _para4:word; _para5:PXSQLDA;_para6:PXSQLDA):ISC_STATUS; extdecl;
2425  isc_embed_dsql_insert : function (_para1:PISC_STATUS; _para2:Pchar; _para3:word; _para4:PXSQLDA):ISC_STATUS; extdecl;
2426  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; extdecl;
2427  isc_embed_dsql_release : function (_para1:PISC_STATUS; _para2:Pchar):ISC_STATUS; extdecl;
2428{                             }
2429{ Other Blob functions        }
2430{                             }
2431  BLOB_open : function (_para1:isc_blob_handle; _para2:Pchar; _para3:longint):PBSTREAM; extdecl;
2432  BLOB_put : function (_para1:char; _para2:PBSTREAM):longint; extdecl;
2433  BLOB_close : function (_para1:PBSTREAM):longint; extdecl;
2434  BLOB_get : function (_para1:PBSTREAM):longint; extdecl;
2435  BLOB_display : function (_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar):longint; extdecl;
2436  BLOB_dump : function (_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar):longint; extdecl;
2437  BLOB_edit : function (_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar):longint; extdecl;
2438  BLOB_load : function (_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar):longint; extdecl;
2439  BLOB_text_dump : function (_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar):longint; extdecl;
2440  BLOB_text_load : function (_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar):longint; extdecl;
2441  Bopen : function (_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar):PBSTREAM; extdecl;
2442{$IFDEF Unix}
2443  Bopen2 : function (_para1:PISC_QUAD; _para2:isc_db_handle; _para3:isc_tr_handle; _para4:Pchar; _para5:word):PBSTREAM; extdecl;
2444{$ENDIF}
2445{                             }
2446{ Other Misc functions        }
2447{                             }
2448  isc_ftof : function (_para1:Pchar; _para2:word; _para3:Pchar; _para4:word):ISC_LONG; extdecl;
2449  isc_print_blr : function (_para1:Pchar; _para2:isc_callback; _para3:pointer; _para4:smallint):ISC_STATUS; extdecl;
2450  isc_set_debug : procedure (_para1:longint); extdecl;
2451  isc_qtoq : procedure (_para1:PISC_QUAD; _para2:PISC_QUAD); extdecl;
2452  isc_vtof : procedure (_para1:Pchar; _para2:Pchar; _para3:word); extdecl;
2453  isc_vtov : procedure (_para1:Pchar; _para2:Pchar; _para3:smallint); extdecl;
2454  isc_version : function (_para1:Pisc_db_handle; _para2:isc_callback; _para3:pointer):longint; extdecl;
2455{$IFDEF Unix}
2456  isc_reset_fpe : function (_para1:word):ISC_LONG; extdecl;
2457{$ENDIF}
2458{                                        }
2459{ Service manager functions              }
2460{                                        }
2461(*!!MVC
2462  #define ADD_SPB_LENGTH(p, length)     { (p)++ = (length); \
2463  (p)++ = (length) >> 8;}
2464
2465#define ADD_SPB_NUMERIC(p, data)      { (p)++ = (data); \
2466  (p)++ = (data) >> 8; \
2467  (p)++ = (data) >> 16; \
2468  (p)++ = (data) >> 24;}
2469!!MVC *)
2470  isc_service_attach : function (_para1:PISC_STATUS; _para2:word; _para3:Pchar; _para4:Pisc_svc_handle; _para5:word;_para6:Pchar):ISC_STATUS; extdecl;
2471  isc_service_detach : function (_para1:PISC_STATUS; _para2:Pisc_svc_handle):ISC_STATUS; extdecl;
2472  isc_service_query : function (_para1:PISC_STATUS; _para2:Pisc_svc_handle; _para3:Pisc_resv_handle; _para4:word; _para5:Pchar;_para6:word; _para7:Pchar; _para8:word; _para9:Pchar):ISC_STATUS; extdecl;
2473  isc_service_start : function (_para1:PISC_STATUS; _para2:Pisc_svc_handle; _para3:Pisc_resv_handle; _para4:word; _para5:Pchar):ISC_STATUS; extdecl;
2474
2475
2476{                              }
2477{ Shutdown and cancel          }
2478{                              }
2479  // Available in Firebird 2.5+
2480  fb_shutdown : function(_para1: UINT; _para2: integer):int; extdecl;
2481
2482{                              }
2483{ Forms functions              }
2484{                              }
2485{$IFDEF Unix}
2486  isc_compile_map : function (_para1:PISC_STATUS; _para2:Pisc_form_handle; _para3:Pisc_req_handle; _para4:Psmallint; _para5:Pchar):ISC_STATUS; extdecl;
2487  isc_compile_menu : function (_para1:PISC_STATUS; _para2:Pisc_form_handle; _para3:Pisc_req_handle; _para4:Psmallint; _para5:Pchar):ISC_STATUS; extdecl;
2488  isc_compile_sub_map : function (_para1:PISC_STATUS; _para2:Pisc_win_handle; _para3:Pisc_req_handle; _para4:Psmallint; _para5:Pchar):ISC_STATUS; extdecl;
2489  isc_create_window : function (_para1:PISC_STATUS; _para2:Pisc_win_handle; _para3:Psmallint; _para4:Pchar; _para5:Psmallint;_para6:Psmallint):ISC_STATUS; extdecl;
2490  isc_delete_window : function (_para1:PISC_STATUS; _para2:Pisc_win_handle):ISC_STATUS; extdecl;
2491  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; extdecl;
2492  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; extdecl;
2493  isc_form_delete : function (_para1:PISC_STATUS; _para2:Pisc_form_handle):ISC_STATUS; extdecl;
2494  isc_form_fetch : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pisc_req_handle; _para5:Pbyte):ISC_STATUS; extdecl;
2495  isc_form_insert : function (_para1:PISC_STATUS; _para2:Pisc_db_handle; _para3:Pisc_tr_handle; _para4:Pisc_req_handle; _para5:Pbyte):ISC_STATUS; extdecl;
2496  isc_get_entree : function (_para1:PISC_STATUS; _para2:Pisc_req_handle; _para3:Psmallint; _para4:Pchar; _para5:PISC_LONG;_para6:Psmallint):ISC_STATUS; extdecl;
2497  isc_initialize_menu : function (_para1:PISC_STATUS; _para2:Pisc_req_handle):ISC_STATUS; extdecl;
2498  isc_menu : function (_para1:PISC_STATUS; _para2:Pisc_win_handle; _para3:Pisc_req_handle; _para4:Psmallint; _para5:Pchar):ISC_STATUS; extdecl;
2499  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; extdecl;
2500  isc_pop_window : function (_para1:PISC_STATUS; _para2:Pisc_win_handle):ISC_STATUS; extdecl;
2501  isc_put_entree : function (_para1:PISC_STATUS; _para2:Pisc_req_handle; _para3:Psmallint; _para4:Pchar; _para5:PISC_LONG):ISC_STATUS; extdecl;
2502  isc_reset_form : function (_para1:PISC_STATUS; _para2:Pisc_req_handle):ISC_STATUS; extdecl;
2503  isc_suspend_window : function (_para1:PISC_STATUS; _para2:Pisc_win_handle):ISC_STATUS; extdecl;
2504{$ENDIF}
2505
2506function InitialiseIBase60(Const LibraryName : AnsiString) : integer;
2507function InitialiseIBase60 : integer;
2508procedure ReleaseIBase60;
2509
2510Function IBaseLibraryHandle : TLibHandle;
2511Function IBaseLoadedLibrary : AnsiString;
2512{$ENDIF}
2513
2514implementation
2515
2516{$IFDEF LinkDynamically}
2517
2518ResourceString
2519  SErrEmbeddedFailed = 'Can not load embedded Firebird client "%s". Check your installation.';
2520  SErrDefaultsFailed = 'Can not load default Firebird clients ("%s" or "%s" or "%s"). Check your installation.';
2521  SErrLoadFailed     = 'Can not load Firebird client library "%s". Check your installation.';
2522  SErrAlreadyLoaded  = 'Firebird interface already initialized from library %s.';
2523
2524var
2525  RefCount : integer;
2526  LoadedLibrary : AnsiString;
2527  LibHandle : TLibHandle;
2528
2529Function IBaseLibraryHandle : TLibHandle;
2530
2531begin
2532  result:=LibHandle;
2533end;
2534
2535Function IBaseLoadedLibrary : AnsiString;
2536
2537begin
2538  Result:=LoadedLibrary;
2539end;
2540
2541Function TryInitialiseIBase60(Const LibraryName : AnsiString) : integer;
2542
2543begin
2544  Result := 0;
2545  if (RefCount=0) then
2546    begin
2547    LibHandle:=LoadLibrary(LibraryName);
2548    if (LibHandle=nilhandle) then
2549      Exit;
2550    inc(RefCount);
2551    LoadedLibrary:=LibraryName;
2552    // Available in Firebird 2.5+
2553    pointer(fb_shutdown) := GetProcedureAddress(IBaseLibraryHandle,'fb_shutdown');
2554    // Available in Firebird 2.5+
2555    pointer(fb_sqlstate) := GetProcedureAddress(IBaseLibraryHandle,'fb_sqlstate');
2556    pointer(isc_attach_database) := GetProcedureAddress(IBaseLibraryHandle,'isc_attach_database');
2557    pointer(isc_array_gen_sdl) := GetProcedureAddress(IBaseLibraryHandle,'isc_array_gen_sdl');
2558    pointer(isc_array_get_slice) := GetProcedureAddress(IBaseLibraryHandle,'isc_array_get_slice');
2559    pointer(isc_array_lookup_bounds) := GetProcedureAddress(IBaseLibraryHandle,'isc_array_lookup_bounds');
2560    pointer(isc_array_lookup_desc) := GetProcedureAddress(IBaseLibraryHandle,'isc_array_lookup_desc');
2561    pointer(isc_array_set_desc) := GetProcedureAddress(IBaseLibraryHandle,'isc_array_set_desc');
2562    pointer(isc_array_put_slice) := GetProcedureAddress(IBaseLibraryHandle,'isc_array_put_slice');
2563    pointer(isc_blob_default_desc) := GetProcedureAddress(IBaseLibraryHandle,'isc_blob_default_desc');
2564    pointer(isc_blob_gen_bpb) := GetProcedureAddress(IBaseLibraryHandle,'isc_blob_gen_bpb');
2565    pointer(isc_blob_info) := GetProcedureAddress(IBaseLibraryHandle,'isc_blob_info');
2566    pointer(isc_blob_lookup_desc) := GetProcedureAddress(IBaseLibraryHandle,'isc_blob_lookup_desc');
2567    pointer(isc_blob_set_desc) := GetProcedureAddress(IBaseLibraryHandle,'isc_blob_set_desc');
2568    pointer(isc_cancel_blob) := GetProcedureAddress(IBaseLibraryHandle,'isc_cancel_blob');
2569    pointer(isc_cancel_events) := GetProcedureAddress(IBaseLibraryHandle,'isc_cancel_events');
2570    pointer(isc_close_blob) := GetProcedureAddress(IBaseLibraryHandle,'isc_close_blob');
2571    pointer(isc_commit_retaining) := GetProcedureAddress(IBaseLibraryHandle,'isc_commit_retaining');
2572    pointer(isc_commit_transaction) := GetProcedureAddress(IBaseLibraryHandle,'isc_commit_transaction');
2573    pointer(isc_create_blob) := GetProcedureAddress(IBaseLibraryHandle,'isc_create_blob');
2574    pointer(isc_create_blob2) := GetProcedureAddress(IBaseLibraryHandle,'isc_create_blob2');
2575    pointer(isc_create_database) := GetProcedureAddress(IBaseLibraryHandle,'isc_create_database');
2576    pointer(isc_database_info) := GetProcedureAddress(IBaseLibraryHandle,'isc_database_info');
2577    pointer(isc_decode_date) := GetProcedureAddress(IBaseLibraryHandle,'isc_decode_date');
2578    pointer(isc_decode_sql_date) := GetProcedureAddress(IBaseLibraryHandle,'isc_decode_sql_date');
2579    pointer(isc_decode_sql_time) := GetProcedureAddress(IBaseLibraryHandle,'isc_decode_sql_time');
2580    pointer(isc_decode_timestamp) := GetProcedureAddress(IBaseLibraryHandle,'isc_decode_timestamp');
2581    pointer(isc_detach_database) := GetProcedureAddress(IBaseLibraryHandle,'isc_detach_database');
2582    pointer(isc_drop_database) := GetProcedureAddress(IBaseLibraryHandle,'isc_drop_database');
2583    pointer(isc_dsql_allocate_statement) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_allocate_statement');
2584    pointer(isc_dsql_alloc_statement2) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_alloc_statement2');
2585    pointer(isc_dsql_describe) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_describe');
2586    pointer(isc_dsql_describe_bind) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_describe_bind');
2587    pointer(isc_dsql_exec_immed2) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_exec_immed2');
2588    pointer(isc_dsql_execute) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_execute');
2589    pointer(isc_dsql_execute2) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_execute2');
2590    pointer(isc_dsql_execute_immediate) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_execute_immediate');
2591    pointer(isc_dsql_fetch) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_fetch');
2592    pointer(isc_dsql_finish) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_finish');
2593    pointer(isc_dsql_free_statement) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_free_statement');
2594    pointer(isc_dsql_insert) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_insert');
2595    pointer(isc_dsql_prepare) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_prepare');
2596    pointer(isc_dsql_set_cursor_name) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_set_cursor_name');
2597    pointer(isc_dsql_sql_info) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_sql_info');
2598    pointer(isc_encode_date) := GetProcedureAddress(IBaseLibraryHandle,'isc_encode_date');
2599    pointer(isc_encode_sql_date) := GetProcedureAddress(IBaseLibraryHandle,'isc_encode_sql_date');
2600    pointer(isc_encode_sql_time) := GetProcedureAddress(IBaseLibraryHandle,'isc_encode_sql_time');
2601    pointer(isc_encode_timestamp) := GetProcedureAddress(IBaseLibraryHandle,'isc_encode_timestamp');
2602    pointer(isc_event_block) := GetProcedureAddress(IBaseLibraryHandle,'isc_event_block');
2603    pointer(isc_event_counts) := GetProcedureAddress(IBaseLibraryHandle,'isc_event_counts');
2604    pointer(isc_expand_dpb) := GetProcedureAddress(IBaseLibraryHandle,'isc_expand_dpb');
2605    pointer(isc_modify_dpb) := GetProcedureAddress(IBaseLibraryHandle,'isc_modify_dpb');
2606    pointer(isc_free) := GetProcedureAddress(IBaseLibraryHandle,'isc_free');
2607    pointer(isc_get_segment) := GetProcedureAddress(IBaseLibraryHandle,'isc_get_segment');
2608    pointer(isc_get_slice) := GetProcedureAddress(IBaseLibraryHandle,'isc_get_slice');
2609    pointer(isc_interprete) := GetProcedureAddress(IBaseLibraryHandle,'isc_interprete');
2610    pointer(isc_open_blob) := GetProcedureAddress(IBaseLibraryHandle,'isc_open_blob');
2611    pointer(isc_open_blob2) := GetProcedureAddress(IBaseLibraryHandle,'isc_open_blob2');
2612    pointer(isc_prepare_transaction2) := GetProcedureAddress(IBaseLibraryHandle,'isc_prepare_transaction2');
2613    pointer(isc_print_sqlerror) := GetProcedureAddress(IBaseLibraryHandle,'isc_print_sqlerror');
2614    pointer(isc_print_status) := GetProcedureAddress(IBaseLibraryHandle,'isc_print_status');
2615    pointer(isc_put_segment) := GetProcedureAddress(IBaseLibraryHandle,'isc_put_segment');
2616    pointer(isc_put_slice) := GetProcedureAddress(IBaseLibraryHandle,'isc_put_slice');
2617    pointer(isc_que_events) := GetProcedureAddress(IBaseLibraryHandle,'isc_que_events');
2618    pointer(isc_rollback_retaining) := GetProcedureAddress(IBaseLibraryHandle,'isc_rollback_retaining');
2619    pointer(isc_rollback_transaction) := GetProcedureAddress(IBaseLibraryHandle,'isc_rollback_transaction');
2620    pointer(isc_start_multiple) := GetProcedureAddress(IBaseLibraryHandle,'isc_start_multiple');
2621    pointer(isc_start_transaction) := GetProcedureAddress(IBaseLibraryHandle,'isc_start_transaction');
2622    pointer(isc_sqlcode) := GetProcedureAddress(IBaseLibraryHandle,'isc_sqlcode');
2623    pointer(isc_sql_interprete) := GetProcedureAddress(IBaseLibraryHandle,'isc_sql_interprete');
2624    pointer(isc_transaction_info) := GetProcedureAddress(IBaseLibraryHandle,'isc_transaction_info');
2625    pointer(isc_transact_request) := GetProcedureAddress(IBaseLibraryHandle,'isc_transact_request');
2626    pointer(isc_vax_integer) := GetProcedureAddress(IBaseLibraryHandle,'isc_vax_integer');
2627    pointer(isc_portable_integer) := GetProcedureAddress(IBaseLibraryHandle,'isc_portable_integer');
2628    pointer(isc_add_user) := GetProcedureAddress(IBaseLibraryHandle,'isc_add_user');
2629    pointer(isc_delete_user) := GetProcedureAddress(IBaseLibraryHandle,'isc_delete_user');
2630    pointer(isc_modify_user) := GetProcedureAddress(IBaseLibraryHandle,'isc_modify_user');
2631    pointer(isc_compile_request) := GetProcedureAddress(IBaseLibraryHandle,'isc_compile_request');
2632    pointer(isc_compile_request2) := GetProcedureAddress(IBaseLibraryHandle,'isc_compile_request2');
2633    pointer(isc_ddl) := GetProcedureAddress(IBaseLibraryHandle,'isc_ddl');
2634    pointer(isc_prepare_transaction) := GetProcedureAddress(IBaseLibraryHandle,'isc_prepare_transaction');
2635    pointer(isc_receive) := GetProcedureAddress(IBaseLibraryHandle,'isc_receive');
2636    pointer(isc_reconnect_transaction) := GetProcedureAddress(IBaseLibraryHandle,'isc_reconnect_transaction');
2637    pointer(isc_release_request) := GetProcedureAddress(IBaseLibraryHandle,'isc_release_request');
2638    pointer(isc_request_info) := GetProcedureAddress(IBaseLibraryHandle,'isc_request_info');
2639    pointer(isc_seek_blob) := GetProcedureAddress(IBaseLibraryHandle,'isc_seek_blob');
2640    pointer(isc_send) := GetProcedureAddress(IBaseLibraryHandle,'isc_send');
2641    pointer(isc_start_and_send) := GetProcedureAddress(IBaseLibraryHandle,'isc_start_and_send');
2642    pointer(isc_start_request) := GetProcedureAddress(IBaseLibraryHandle,'isc_start_request');
2643    pointer(isc_unwind_request) := GetProcedureAddress(IBaseLibraryHandle,'isc_unwind_request');
2644    pointer(isc_wait_for_event) := GetProcedureAddress(IBaseLibraryHandle,'isc_wait_for_event');
2645    pointer(isc_close) := GetProcedureAddress(IBaseLibraryHandle,'isc_close');
2646    pointer(isc_declare) := GetProcedureAddress(IBaseLibraryHandle,'isc_declare');
2647    pointer(isc_describe) := GetProcedureAddress(IBaseLibraryHandle,'isc_describe');
2648    pointer(isc_describe_bind) := GetProcedureAddress(IBaseLibraryHandle,'isc_describe_bind');
2649    pointer(isc_execute) := GetProcedureAddress(IBaseLibraryHandle,'isc_execute');
2650    pointer(isc_execute_immediate) := GetProcedureAddress(IBaseLibraryHandle,'isc_execute_immediate');
2651    pointer(isc_fetch) := GetProcedureAddress(IBaseLibraryHandle,'isc_fetch');
2652    pointer(isc_open) := GetProcedureAddress(IBaseLibraryHandle,'isc_open');
2653    pointer(isc_prepare) := GetProcedureAddress(IBaseLibraryHandle,'isc_prepare');
2654    pointer(isc_dsql_execute_m) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_execute_m');
2655    pointer(isc_dsql_execute2_m) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_execute2_m');
2656    pointer(isc_dsql_execute_immediate_m) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_execute_immediate_m');
2657    pointer(isc_dsql_exec_immed3_m) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_exec_immed3_m');
2658    pointer(isc_dsql_fetch_m) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_fetch_m');
2659    pointer(isc_dsql_insert_m) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_insert_m');
2660    pointer(isc_dsql_prepare_m) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_prepare_m');
2661    pointer(isc_dsql_release) := GetProcedureAddress(IBaseLibraryHandle,'isc_dsql_release');
2662    pointer(isc_embed_dsql_close) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_close');
2663    pointer(isc_embed_dsql_declare) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_declare');
2664    pointer(isc_embed_dsql_describe) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_describe');
2665    pointer(isc_embed_dsql_describe_bind) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_describe_bind');
2666    pointer(isc_embed_dsql_execute) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_execute');
2667    pointer(isc_embed_dsql_execute2) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_execute2');
2668    pointer(isc_embed_dsql_execute_immed) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_execute_immed');
2669    pointer(isc_embed_dsql_fetch) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_fetch');
2670    pointer(isc_embed_dsql_open) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_open');
2671    pointer(isc_embed_dsql_open2) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_open2');
2672    pointer(isc_embed_dsql_insert) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_insert');
2673    pointer(isc_embed_dsql_prepare) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_prepare');
2674    pointer(isc_embed_dsql_release) := GetProcedureAddress(IBaseLibraryHandle,'isc_embed_dsql_release');
2675    pointer(BLOB_open) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_open');
2676    pointer(BLOB_put) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_put');
2677    pointer(BLOB_close) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_close');
2678    pointer(BLOB_get) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_get');
2679    pointer(BLOB_display) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_display');
2680    pointer(BLOB_dump) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_dump');
2681    pointer(BLOB_edit) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_edit');
2682    pointer(BLOB_load) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_load');
2683    pointer(BLOB_text_dump) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_text_dump');
2684    pointer(BLOB_text_load) := GetProcedureAddress(IBaseLibraryHandle,'BLOB_text_load');
2685    pointer(Bopen) := GetProcedureAddress(IBaseLibraryHandle,'Bopen');
2686{$IFDEF Unix}
2687    pointer(Bopen2) := GetProcedureAddress(IBaseLibraryHandle,'Bopen2');
2688{$ENDIF}
2689    pointer(isc_ftof) := GetProcedureAddress(IBaseLibraryHandle,'isc_ftof');
2690    pointer(isc_print_blr) := GetProcedureAddress(IBaseLibraryHandle,'isc_print_blr');
2691    pointer(isc_set_debug) := GetProcedureAddress(IBaseLibraryHandle,'isc_set_debug');
2692    pointer(isc_qtoq) := GetProcedureAddress(IBaseLibraryHandle,'isc_qtoq');
2693    pointer(isc_vtof) := GetProcedureAddress(IBaseLibraryHandle,'isc_vtof');
2694    pointer(isc_vtov) := GetProcedureAddress(IBaseLibraryHandle,'isc_vtov');
2695    pointer(isc_version) := GetProcedureAddress(IBaseLibraryHandle,'isc_version');
2696{$IFDEF Unix}
2697    pointer(isc_reset_fpe) := GetProcedureAddress(IBaseLibraryHandle,'isc_reset_fpe');
2698{$ENDIF}
2699    pointer(isc_service_attach) := GetProcedureAddress(IBaseLibraryHandle,'isc_service_attach');
2700    pointer(isc_service_detach) := GetProcedureAddress(IBaseLibraryHandle,'isc_service_detach');
2701    pointer(isc_service_query) := GetProcedureAddress(IBaseLibraryHandle,'isc_service_query');
2702    pointer(isc_service_start) := GetProcedureAddress(IBaseLibraryHandle,'isc_service_start');
2703{$IFDEF Unix}
2704    pointer(isc_compile_map) := GetProcedureAddress(IBaseLibraryHandle,'isc_compile_map');
2705    pointer(isc_compile_menu) := GetProcedureAddress(IBaseLibraryHandle,'isc_compile_menu');
2706    pointer(isc_compile_sub_map) := GetProcedureAddress(IBaseLibraryHandle,'isc_compile_sub_map');
2707    pointer(isc_create_window) := GetProcedureAddress(IBaseLibraryHandle,'isc_create_window');
2708    pointer(isc_delete_window) := GetProcedureAddress(IBaseLibraryHandle,'isc_delete_window');
2709    pointer(isc_drive_form) := GetProcedureAddress(IBaseLibraryHandle,'isc_drive_form');
2710    pointer(isc_drive_menu) := GetProcedureAddress(IBaseLibraryHandle,'isc_drive_menu');
2711    pointer(isc_form_delete) := GetProcedureAddress(IBaseLibraryHandle,'isc_form_delete');
2712    pointer(isc_form_fetch) := GetProcedureAddress(IBaseLibraryHandle,'isc_form_fetch');
2713    pointer(isc_form_insert) := GetProcedureAddress(IBaseLibraryHandle,'isc_form_insert');
2714    pointer(isc_get_entree) := GetProcedureAddress(IBaseLibraryHandle,'isc_get_entree');
2715    pointer(isc_initialize_menu) := GetProcedureAddress(IBaseLibraryHandle,'isc_initialize_menu');
2716    pointer(isc_menu) := GetProcedureAddress(IBaseLibraryHandle,'isc_menu');
2717    pointer(isc_load_form) := GetProcedureAddress(IBaseLibraryHandle,'isc_load_form');
2718    pointer(isc_pop_window) := GetProcedureAddress(IBaseLibraryHandle,'isc_pop_window');
2719    pointer(isc_put_entree) := GetProcedureAddress(IBaseLibraryHandle,'isc_put_entree');
2720    pointer(isc_reset_form) := GetProcedureAddress(IBaseLibraryHandle,'isc_reset_form');
2721    pointer(isc_suspend_window) := GetProcedureAddress(IBaseLibraryHandle,'isc_suspend_window');
2722{$ENDIF}
2723    end
2724  else
2725    inc(RefCount);
2726  Result := RefCount;
2727end;
2728
2729function InitialiseIBase60 : integer;
2730
2731begin
2732  Result := 0;
2733  if (RefCount<>0) then
2734    // pretend to load whatever is already loaded, so we do not get a library name conflict.
2735    Inc(RefCount)
2736  else If UseEmbeddedFirebird then
2737    begin
2738    If (TryInitialiseIBase60(fbembedlib)=0) and (TryInitialiseIBase60(libem)=0) then
2739      Raise EInOutError.CreateFmt(SErrEmbeddedFailed,[fbembedlib]);
2740    end
2741  else
2742    begin
2743    If (TryInitialiseIBase60(fbembedlib)=0) and
2744       (TryInitialiseIBase60(libem)=0) and
2745       (TryInitialiseIBase60(fbclib)=0) and
2746       (TryInitialiseIBase60(libfc)=0) and
2747       (TryInitialiseIBase60(gdslib)=0) then
2748        Raise EInOutError.CreateFmt(SErrDefaultsFailed,[fbclib,gdslib,fbembedlib]);
2749    end;
2750  Result := RefCount;
2751end;
2752
2753function InitialiseIBase60(Const LibraryName : AnsiString) : integer;
2754
2755begin
2756  Result := TryInitialiseIBase60(LibraryName);
2757  If Result = 0 then
2758    Raise EInOutError.CreateFmt(SErrLoadFailed,[LibraryName])
2759  else If (LibraryName<>IBaseLoadedLibrary) then
2760    begin
2761    Dec(RefCount);
2762    Result := RefCount;
2763    Raise EInOUtError.CreateFmt(SErrAlreadyLoaded,[IBaseLoadedLibrary]);
2764    end;
2765end;
2766
2767
2768Procedure ReleaseIBase60;
2769
2770begin
2771  if RefCount>1 then
2772    Dec(RefCount)
2773  else
2774    begin
2775    // Shutdown embedded subsystem with timeout 300ms (Firebird 2.5+)
2776    // Required before unloading library; has no effect on non-embedded client
2777    if (pointer(fb_shutdown)<>nil) and (fb_shutdown(300,1)<>0) then
2778      begin
2779      //todo: log error; still try to unload library below as the timeout may have been insufficient
2780      end;
2781    if UnloadLibrary(LibHandle) then
2782      begin
2783      Dec(RefCount);
2784      LibHandle := NilHandle;
2785      LoadedLibrary:='';
2786      end;
2787    end;
2788end;
2789
2790{$ENDIF}
2791
2792function XSQLDA_LENGTH(n: Integer): Integer;
2793begin
2794  Result := SizeOf(XSQLDA) + (n - 1) * SizeOf(XSQLVAR);
2795end;
2796
2797
2798