PageRenderTime 20ms CodeModel.GetById 11ms app.highlight 4ms RepoModel.GetById 1ms app.codeStats 1ms

/Gedemin/IBX/IBIntf.pas

http://gedemin.googlecode.com/
Pascal | 668 lines | 561 code | 73 blank | 34 comment | 19 complexity | c44068271c87d0f78c4642addbefd380 MD5 | raw file
  1{************************************************************************}
  2{                                                                        }
  3{       Borland Delphi Visual Component Library                          }
  4{       InterBase Express core components                                }
  5{                                                                        }
  6{       Copyright (c) 1998-2001 Borland Software Corporation             }
  7{                                                                        }
  8{    InterBase Express is based in part on the product                   }
  9{    Free IB Components, written by Gregory H. Deatz for                 }
 10{    Hoagland, Longo, Moran, Dunst & Doukas Company.                     }
 11{    Free IB Components is used under license.                           }
 12{                                                                        }
 13{    The contents of this file are subject to the InterBase              }
 14{    Public License Version 1.0 (the "License"); you may not             }
 15{    use this file except in compliance with the License. You may obtain }
 16{    a copy of the License at http://www.borland.com/interbase/IPL.html  }
 17{    Software distributed under the License is distributed on            }
 18{    an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either              }
 19{    express or implied. See the License for the specific language       }
 20{    governing rights and limitations under the License.                 }
 21{    The Original Code was created by InterBase Software Corporation     }
 22{       and its successors.                                              }
 23{    Portions created by Borland Software Corporation are Copyright      }
 24{       (C) Borland Software Corporation. All Rights Reserved.           }
 25{    Contributor(s): Jeff Overcash                                       }
 26{                                                                        }
 27{************************************************************************}
 28
 29unit IBIntf;
 30
 31interface
 32
 33uses Windows, IBHeader, IBInstallHeader, IBExternals;
 34
 35var
 36  BLOB_get: TBLOB_get;
 37  BLOB_put: TBLOB_put;
 38  isc_sqlcode: Tisc_sqlcode;
 39  isc_sql_interprete: Tisc_sql_interprete;
 40  isc_interprete: Tisc_interprete;
 41  isc_vax_integer: Tisc_vax_integer;
 42  isc_blob_info: Tisc_blob_info;
 43  isc_open_blob2: Tisc_open_blob2;
 44  isc_close_blob: Tisc_close_blob;
 45  isc_get_segment: Tisc_get_segment;
 46  isc_put_segment: Tisc_put_segment;
 47  isc_create_blob2: Tisc_create_blob2;
 48  isc_service_attach: Tisc_service_attach;
 49  isc_service_detach: Tisc_service_detach;
 50  isc_service_query: Tisc_service_query;
 51  isc_service_start: Tisc_service_start;
 52  isc_decode_date: Tisc_decode_date;
 53  isc_decode_sql_date: Tisc_decode_sql_date;
 54  isc_decode_sql_time: Tisc_decode_sql_time;
 55  isc_decode_timestamp: Tisc_decode_timestamp;
 56  isc_encode_date: Tisc_encode_date;
 57  isc_encode_sql_date: Tisc_encode_sql_date;
 58  isc_encode_sql_time: Tisc_encode_sql_time;
 59  isc_encode_timestamp: Tisc_encode_timestamp;
 60  isc_dsql_free_statement: Tisc_dsql_free_statement;
 61  isc_dsql_execute2: Tisc_dsql_execute2;
 62  isc_dsql_execute: Tisc_dsql_execute;
 63  isc_dsql_set_cursor_name: Tisc_dsql_set_cursor_name;
 64  isc_dsql_fetch: Tisc_dsql_fetch;
 65  isc_dsql_sql_info: Tisc_dsql_sql_info;
 66  isc_dsql_alloc_statement2: Tisc_dsql_alloc_statement2;
 67  isc_dsql_prepare: Tisc_dsql_prepare;
 68  isc_dsql_describe_bind: Tisc_dsql_describe_bind;
 69  isc_dsql_describe: Tisc_dsql_describe;
 70  isc_dsql_execute_immediate: Tisc_dsql_execute_immediate;
 71  isc_drop_database: Tisc_drop_database;
 72  isc_detach_database: Tisc_detach_database;
 73  isc_attach_database: Tisc_attach_database;
 74  isc_database_info: Tisc_database_info;
 75  isc_start_multiple: Tisc_start_multiple;
 76  isc_commit_transaction: Tisc_commit_transaction;
 77  isc_commit_retaining: Tisc_commit_retaining;
 78  isc_rollback_transaction: Tisc_rollback_transaction;
 79  isc_rollback_retaining: Tisc_rollback_retaining;
 80  isc_cancel_events: Tisc_cancel_events;
 81  isc_que_events: Tisc_que_events;
 82  isc_event_counts: Tisc_event_counts;
 83  isc_event_block: Tisc_event_block;
 84  isc_free: Tisc_free;
 85  isc_add_user   : Tisc_add_user;
 86  isc_delete_user: Tisc_delete_user;
 87  isc_modify_user: Tisc_modify_user;
 88  isc_prepare_transaction : Tisc_prepare_transaction;
 89  isc_prepare_transaction2 : Tisc_prepare_transaction2;
 90
 91  isc_install_clear_options: Tisc_install_clear_options;
 92  isc_install_execute: Tisc_install_execute;
 93  isc_install_get_info: Tisc_install_get_info;
 94  isc_install_get_message: Tisc_install_get_message;
 95  isc_install_load_external_text: Tisc_install_load_external_text;
 96  isc_install_precheck: Tisc_install_precheck;
 97  isc_install_set_option: Tisc_install_set_option;
 98  isc_uninstall_execute: Tisc_uninstall_execute;
 99  isc_uninstall_precheck: Tisc_uninstall_precheck;
100  isc_install_unset_option: Tisc_install_unset_option;
101
102  fb_cancel_operation: Tfb_cancel_operation;
103
104{ Library Initialization }
105procedure LoadIBLibrary;
106procedure FreeIBLibrary;
107procedure LoadIBInstallLibrary;
108procedure FreeIBInstallLibrary;
109function TryIBLoad: Boolean;
110procedure CheckIBLoaded;
111function GetIBClientVersion: Integer;
112procedure CheckIBInstallLoaded;
113
114{ Stubs for 6.0 only functions }
115function isc_rollback_retaining_stub(status_vector   : PISC_STATUS;
116              tran_handle     : PISC_TR_HANDLE):
117                                     ISC_STATUS; stdcall;
118function isc_service_attach_stub(status_vector      : PISC_STATUS;
119                                 isc_arg2           : UShort;
120                                 isc_arg3           : PChar;
121                                 service_handle     : PISC_SVC_HANDLE;
122                                 isc_arg5           : UShort;
123                                 isc_arg6           : PChar):
124                                 ISC_STATUS; stdcall;
125function isc_service_detach_stub(status_vector      : PISC_STATUS;
126                                 service_handle     : PISC_SVC_HANDLE):
127                                 ISC_STATUS; stdcall;
128function isc_service_query_stub(status_vector        : PISC_STATUS;
129                                service_handle       : PISC_SVC_HANDLE;
130                                recv_handle          : PISC_SVC_HANDLE;
131                                isc_arg4             : UShort;
132                                isc_arg5             : PChar;
133                                isc_arg6             : UShort;
134                                isc_arg7             : PChar;
135                                isc_arg8             : UShort;
136                                isc_arg9             : PChar):
137                                ISC_STATUS; stdcall;
138function isc_service_start_stub(status_vector        : PISC_STATUS;
139                                service_handle       : PISC_SVC_HANDLE;
140                                recv_handle          : PISC_SVC_HANDLE;
141                                isc_arg4             : UShort;
142                                isc_arg5             : PChar):
143                                ISC_STATUS; stdcall;
144
145procedure isc_encode_sql_date_stub(tm_date           : PCTimeStructure;
146                 ib_date           : PISC_DATE);
147                                   stdcall;
148
149procedure isc_encode_sql_time_stub(tm_date           : PCTimeStructure;
150                   ib_time           : PISC_TIME);
151                                   stdcall;
152
153procedure isc_encode_timestamp_stub(tm_date          : PCTimeStructure;
154                  ib_timestamp     : PISC_TIMESTAMP);
155                                    stdcall;
156
157procedure isc_decode_sql_date_stub(ib_date           : PISC_DATE;
158                                   tm_date           : PCTimeStructure);
159                                   stdcall;
160
161procedure isc_decode_sql_time_stub(ib_time           : PISC_TIME;
162                                   tm_date           : PCTimeStructure);
163                                   stdcall;
164
165procedure isc_decode_timestamp_stub(ib_timestamp     : PISC_TIMESTAMP;
166                                    tm_date          : PCTimeStructure);
167                                    stdcall;
168
169{ stubs for install functions }
170function isc_install_clear_options_stub(hOption: POPTIONS_HANDLE):MSG_NO; stdcall;
171function isc_install_execute_stub(hOption: OPTIONS_HANDLE;
172                             src_dir: TEXT;
173                             dest_dir: TEXT;
174                             status_func: FP_STATUS;
175                             status_data: pointer;
176                             error_func: FP_ERROR;
177                             error_data: pointer;
178                             uninstal_file_name: TEXT):MSG_NO; stdcall;
179function isc_install_get_info_stub(info_type :integer;
180                              option :OPT;
181                              info_buffer : Pointer;
182                              buf_len : Cardinal): MSG_NO; stdcall;
183function isc_install_get_message_stub(hOption: OPTIONS_HANDLE;
184                                 message_no: MSG_NO;
185                                 message_txt: Pointer;
186                                 message_len: Cardinal):MSG_NO; stdcall;
187function isc_install_load_external_text_stub(msg_file_name: TEXT):MSG_NO; stdcall;
188function isc_install_precheck_stub(hOption: OPTIONS_HANDLE;
189                              src_dir: TEXT;
190                              dest_dir: TEXT):MSG_NO; stdcall;
191function isc_install_set_option_stub(hOption: POPTIONS_HANDLE;
192                                option: OPT):MSG_NO; stdcall;
193function isc_uninstall_execute_stub(uninstall_file_name: TEXT;
194                               status_func: FP_STATUS;
195                               status_data: pointer;
196                               error_func: FP_ERROR;
197                               error_data: pointer):MSG_NO; stdcall;
198function isc_uninstall_precheck_stub(uninstall_file_name: TEXT):MSG_NO; stdcall;
199function isc_install_unset_option_stub(hOption: POPTIONS_HANDLE;
200                                  option: OPT):MSG_NO; stdcall;
201
202
203//!!!b
204function GetIBLibraryHandle: THandle;
205
206function GetIBLibraryName: String;
207procedure SetIBLibraryName(const AName: String);
208//!!!e
209
210implementation
211
212uses SysUtils, IB, IBXMLHeader, Forms;
213
214var
215  IBLibrary: THandle;
216  IBInstallLibrary: THandle;
217  IBXMLLibrary : THandle;
218  IBClientVersion: Integer;
219  IBLibraryName: String;
220
221//!!!b
222function GetIBLibraryHandle: THandle;
223begin
224  Result := IBLibrary;
225end;
226
227function GetIBLibraryName: String;
228begin
229  Result := IBLibraryName;
230end;
231
232procedure SetIBLibraryName(const AName: String);
233begin
234  FreeIBLibrary;
235  IBLibraryName := AName;
236end;
237
238
239//!!!e
240
241procedure LoadIBLibrary;
242var
243  CurLibrary : THandle;
244
245  function TryGetProcAddr(ProcName: PChar): Pointer;
246  begin
247    Result := GetProcAddress(CurLibrary, ProcName);
248  end;
249
250  function GetProcAddr(ProcName: PChar): Pointer;
251  begin
252    Result := GetProcAddress(CurLibrary, ProcName);
253    if not Assigned(Result) then
254      RaiseLastWin32Error;
255  end;
256
257begin
258  Assert(IBLibrary <= HINSTANCE_ERROR);
259
260  IBLibrary := LoadLibrary(PChar(IBLibraryName));
261
262  if (IBLibrary > HINSTANCE_ERROR) then
263  begin
264    CurLibrary := IBLibrary;
265    BLOB_get := GetProcAddr('BLOB_get'); {do not localize}
266    BLOB_put := GetProcAddr('BLOB_put'); {do not localize}
267    isc_sqlcode := GetProcAddr('isc_sqlcode'); {do not localize}
268    isc_sql_interprete := GetProcAddr('isc_sql_interprete'); {do not localize}
269    isc_interprete := GetProcAddr('isc_interprete'); {do not localize}
270    isc_vax_integer := GetProcAddr('isc_vax_integer'); {do not localize}
271    isc_blob_info := GetProcAddr('isc_blob_info'); {do not localize}
272    isc_open_blob2 := GetProcAddr('isc_open_blob2'); {do not localize}
273    isc_close_blob := GetProcAddr('isc_close_blob'); {do not localize}
274    isc_get_segment := GetProcAddr('isc_get_segment'); {do not localize}
275    isc_put_segment := GetProcAddr('isc_put_segment'); {do not localize}
276    isc_create_blob2 := GetProcAddr('isc_create_blob2'); {do not localize}
277    isc_decode_date := GetProcAddr('isc_decode_date'); {do not localize}
278    isc_encode_date := GetProcAddr('isc_encode_date'); {do not localize}
279    isc_dsql_free_statement := GetProcAddr('isc_dsql_free_statement'); {do not localize}
280    isc_dsql_execute2 := GetProcAddr('isc_dsql_execute2'); {do not localize}
281    isc_dsql_execute := GetProcAddr('isc_dsql_execute'); {do not localize}
282    isc_dsql_set_cursor_name := GetProcAddr('isc_dsql_set_cursor_name'); {do not localize}
283    isc_dsql_fetch := GetProcAddr('isc_dsql_fetch'); {do not localize}
284    isc_dsql_sql_info := GetProcAddr('isc_dsql_sql_info'); {do not localize}
285    isc_dsql_alloc_statement2 := GetProcAddr('isc_dsql_alloc_statement2'); {do not localize}
286    isc_dsql_prepare := GetProcAddr('isc_dsql_prepare'); {do not localize}
287    isc_dsql_describe_bind := GetProcAddr('isc_dsql_describe_bind'); {do not localize}
288    isc_dsql_describe := GetProcAddr('isc_dsql_describe'); {do not localize}
289    isc_dsql_execute_immediate := GetProcAddr('isc_dsql_execute_immediate'); {do not localize}
290    isc_drop_database := GetProcAddr('isc_drop_database'); {do not localize}
291    isc_detach_database := GetProcAddr('isc_detach_database'); {do not localize}
292    isc_attach_database := GetProcAddr('isc_attach_database'); {do not localize}
293    isc_database_info := GetProcAddr('isc_database_info'); {do not localize}
294    isc_start_multiple := GetProcAddr('isc_start_multiple'); {do not localize}
295    isc_commit_transaction := GetProcAddr('isc_commit_transaction'); {do not localize}
296    isc_commit_retaining := GetProcAddr('isc_commit_retaining'); {do not localize}
297    isc_rollback_transaction := GetProcAddr('isc_rollback_transaction'); {do not localize}
298    isc_cancel_events := GetProcAddr('isc_cancel_events'); {do not localize}
299    isc_que_events := GetProcAddr('isc_que_events'); {do not localize}
300    isc_event_counts := GetProcAddr('isc_event_counts'); {do not localize}
301    isc_event_block := GetProcAddr('isc_event_block'); {do not localize}
302    isc_free := GetProcAddr('isc_free'); {do not localize}
303    isc_add_user := GetProcAddr('isc_add_user'); {do not localize}
304    isc_delete_user := GetProcAddr('isc_delete_user'); {do not localize}
305    isc_modify_user := GetProcAddr('isc_modify_user'); {do not localize}
306    isc_prepare_transaction := GetProcAddr('isc_prepare_transaction'); {do not localize}
307    isc_prepare_transaction2 := GetProcAddr('isc_prepare_transaction2'); {do not localize}
308
309    isc_rollback_retaining := TryGetProcAddr('isc_rollback_retaining'); {do not localize}
310    if Assigned(isc_rollback_retaining) then
311    begin
312      IBClientVersion := 6;
313      isc_service_attach := GetProcAddr('isc_service_attach'); {do not localize}
314      isc_service_detach := GetProcAddr('isc_service_detach'); {do not localize}
315      isc_service_query := GetProcAddr('isc_service_query'); {do not localize}
316      isc_service_start := GetProcAddr('isc_service_start'); {do not localize}
317      isc_decode_sql_date := GetProcAddr('isc_decode_sql_date'); {do not localize}
318      isc_decode_sql_time := GetProcAddr('isc_decode_sql_time'); {do not localize}
319      isc_decode_timestamp := GetProcAddr('isc_decode_timestamp'); {do not localize}
320      isc_encode_sql_date := GetProcAddr('isc_encode_sql_date'); {do not localize}
321      isc_encode_sql_time := GetProcAddr('isc_encode_sql_time'); {do not localize}
322      isc_encode_timestamp := GetProcAddr('isc_encode_timestamp'); {do not localize}
323    end else
324    begin
325      IBClientVersion := 5;
326      isc_rollback_retaining := isc_rollback_retaining_stub;
327      isc_service_attach := isc_service_attach_stub;
328      isc_service_detach := isc_service_detach_stub;
329      isc_service_query := isc_service_query_stub;
330      isc_service_start := isc_service_start_stub;
331      isc_decode_sql_date := isc_decode_sql_date_stub;
332      isc_decode_sql_time := isc_decode_sql_time_stub;
333      isc_decode_timestamp := isc_decode_timestamp_stub;
334      isc_encode_sql_date := isc_encode_sql_date_stub;
335      isc_encode_sql_time := isc_encode_sql_time_stub;
336      isc_encode_timestamp := isc_encode_timestamp_stub;
337    end;
338
339    IBXMLLibrary := LoadLibrary(PChar(IBXML_DLL));
340    if (IBXMLLibrary > HINSTANCE_ERROR) then
341    begin
342      CurLibrary := IBXMLLibrary;
343      isc_dsql_xml_fetch := GetProcAddr('isc_dsql_xml_fetch'); {do not localize}
344      isc_dsql_xml_fetch_all := GetProcAddr('isc_dsql_xml_fetch_all'); {do not localize}
345      isc_dsql_xml_buffer_fetch := GetProcAddr('isc_dsql_xml_buffer_fetch'); {do not localize}
346    end
347    else
348    begin
349      isc_dsql_xml_fetch := isc_dsql_xml_fetch_stub;
350      isc_dsql_xml_fetch_all := isc_dsql_xml_fetch_all_stub;
351      isc_dsql_xml_buffer_fetch := isc_dsql_xml_buffer_fetch_stub;
352    end;
353
354    fb_cancel_operation := TryGetProcAddr('fb_cancel_operation');
355  end;
356end;
357
358procedure FreeIBLibrary;
359begin
360  if IBLibrary > HINSTANCE_ERROR then
361  begin
362    FreeLibrary(IBLibrary);
363    IBLibrary := 0;
364  end;
365  if IBXMLLibrary > HINSTANCE_ERROR then
366  begin
367    FreeLibrary(IBXMLLibrary);
368    IBXMLLibrary := 0;
369  end;
370end;
371
372procedure LoadIBInstallLibrary;
373
374  function GetProcAddr(ProcName: PChar): Pointer;
375  begin
376    Result := GetProcAddress(IBInstallLibrary, ProcName);
377    if not Assigned(Result) then
378      RaiseLastWin32Error;
379  end;
380
381begin
382  IBInstallLibrary := LoadLibrary(PChar(IB_INSTALL_DLL));
383  if (IBInstallLibrary > HINSTANCE_ERROR) then
384  begin
385    isc_install_clear_options := GetProcAddr('isc_install_clear_options'); {do not localize}
386    isc_install_execute := GetProcAddr('isc_install_execute'); {do not localize}
387    isc_install_get_info := GetProcAddr('isc_install_get_info'); {do not localize}
388    isc_install_get_message := GetProcAddr('isc_install_get_message'); {do not localize}
389    isc_install_load_external_text := GetProcAddr('isc_install_load_external_text'); {do not localize}
390    isc_install_precheck := GetProcAddr('isc_install_precheck'); {do not localize}
391    isc_install_set_option := GetProcAddr('isc_install_set_option'); {do not localize}
392    isc_uninstall_execute := GetProcAddr('isc_uninstall_execute'); {do not localize}
393    isc_uninstall_precheck := GetProcAddr('isc_uninstall_precheck'); {do not localize}
394    isc_install_unset_option := GetProcAddr('isc_install_unset_option'); {do not localize}
395  end
396  else
397  begin
398    isc_install_clear_options := isc_install_clear_options_stub;
399    isc_install_execute := isc_install_execute_stub;
400    isc_install_get_info := isc_install_get_info_stub;
401    isc_install_get_message := isc_install_get_message_stub;
402    isc_install_load_external_text := isc_install_load_external_text_stub;
403    isc_install_precheck := isc_install_precheck_stub;
404    isc_install_set_option := isc_install_set_option_stub;
405    isc_uninstall_execute := isc_uninstall_execute_stub;
406    isc_uninstall_precheck := isc_uninstall_precheck_stub;
407    isc_install_unset_option := isc_install_unset_option_stub;
408  end;
409end;
410
411procedure FreeIBInstallLibrary;
412begin
413  if IBInstallLibrary > HINSTANCE_ERROR then
414  begin
415    FreeLibrary(IBInstallLibrary);
416    IBInstallLibrary := 0;
417  end;
418end;
419
420function TryIBLoad: Boolean;
421begin
422  if IBLibraryName = '' then
423  begin
424    if FileExists(ExtractFilePath(Application.EXEName) + 'intl\fbintl.dll')
425      and FileExists(ExtractFilePath(Application.EXEName) + 'udf\gudf.dll') then
426    begin
427      IBLibraryName := FBEMB_DLL;
428    end else
429      IBLibraryName := FBASE_DLL;
430  end;
431
432  if (IBLibrary <= HINSTANCE_ERROR) then
433    LoadIBLibrary;
434
435  if (IBLibrary <= HINSTANCE_ERROR) then
436  begin
437    SetIBLibraryName(FBEMB_DLL);
438    LoadIBLibrary;
439  end;
440
441  if (IBLibrary <= HINSTANCE_ERROR) then
442  begin
443    SetIBLibraryName(FBASE_DLL);
444    LoadIBLibrary;
445  end;
446
447  if (IBLibrary <= HINSTANCE_ERROR) then
448  begin
449    SetIBLibraryName(IBASE_DLL);
450    LoadIBLibrary;
451  end;
452
453  if (IBLibrary <= HINSTANCE_ERROR) then
454    result := False
455  else
456    result := True;
457end;
458
459procedure CheckIBLoaded;
460begin
461  if not TryIBLoad then
462  begin
463    MessageBox(0,
464      '?????????? ????????? ?????????? ??????? ? ???? ??????. ?????????????? ??????????.',
465      '??????',
466      MB_OK or MB_ICONHAND or MB_TASKMODAL);
467
468    IBError(ibxeInterBaseMissing, [nil]);
469  end;
470end;
471
472function GetIBClientVersion: Integer;
473begin
474  CheckIBLoaded;
475  result := IBClientVersion;
476end;
477
478procedure CheckIBInstallLoaded;
479begin
480  if (IBInstallLibrary <= HINSTANCE_ERROR) then
481    LoadIBInstallLibrary;
482  if (IBInstallLibrary <= HINSTANCE_ERROR) then
483    IBError(ibxeInterBaseInstallMissing, [nil]);
484end;
485
486function isc_rollback_retaining_stub(status_vector   : PISC_STATUS;
487              tran_handle     : PISC_TR_HANDLE):
488                                     ISC_STATUS; stdcall;
489begin
490  Result := 0;
491  IBError(ibxeIB60feature, ['isc_rollback_retaining']); {do not localize}
492end;
493
494function isc_service_attach_stub(status_vector      : PISC_STATUS;
495                                 isc_arg2           : UShort;
496                                 isc_arg3           : PChar;
497                                 service_handle     : PISC_SVC_HANDLE;
498                                 isc_arg5           : UShort;
499                                 isc_arg6           : PChar):
500                                 ISC_STATUS; stdcall;
501begin
502  Result := 0;
503  IBError(ibxeIB60feature, ['isc_service_attach']); {do not localize}
504end;
505
506function isc_service_detach_stub(status_vector      : PISC_STATUS;
507                                 service_handle     : PISC_SVC_HANDLE):
508                                 ISC_STATUS; stdcall;
509begin
510  Result := 0;
511  IBError(ibxeIB60feature, ['isc_service_detach']); {do not localize}
512end;
513
514function isc_service_query_stub(status_vector        : PISC_STATUS;
515                                service_handle       : PISC_SVC_HANDLE;
516                                recv_handle          : PISC_SVC_HANDLE;
517                                isc_arg4             : UShort;
518                                isc_arg5             : PChar;
519                                isc_arg6             : UShort;
520                                isc_arg7             : PChar;
521                                isc_arg8             : UShort;
522                                isc_arg9             : PChar):
523                                ISC_STATUS; stdcall;
524begin
525  Result := 0;
526  IBError(ibxeIB60feature, ['isc_service_query']); {do not localize}
527end;
528
529function isc_service_start_stub(status_vector        : PISC_STATUS;
530                                service_handle       : PISC_SVC_HANDLE;
531                                recv_handle          : PISC_SVC_HANDLE;
532                                isc_arg4             : UShort;
533                                isc_arg5             : PChar):
534                                ISC_STATUS; stdcall;
535begin
536  Result := 0;
537  IBError(ibxeIB60feature, ['isc_service_start']); {do not localize}
538end;
539
540procedure isc_encode_sql_date_stub(tm_date           : PCTimeStructure;
541                 ib_date           : PISC_DATE);
542                                   stdcall;
543begin
544  IBError(ibxeIB60feature, ['isc_encode_sql_date']); {do not localize}
545end;
546
547procedure isc_encode_sql_time_stub(tm_date           : PCTimeStructure;
548                   ib_time           : PISC_TIME);
549                                   stdcall;
550begin
551  IBError(ibxeIB60feature, ['isc_encode_sql_time']); {do not localize}
552end;
553
554procedure isc_encode_timestamp_stub(tm_date          : PCTimeStructure;
555                  ib_timestamp     : PISC_TIMESTAMP);
556                                    stdcall;
557begin
558  IBError(ibxeIB60feature, ['isc_encode_sql_timestamp']); {do not localize}
559end;
560
561procedure isc_decode_sql_date_stub(ib_date           : PISC_DATE;
562                                   tm_date           : PCTimeStructure);
563                                   stdcall;
564begin
565  IBError(ibxeIB60feature, ['isc_decode_sql_date']); {do not localize}
566end;
567
568procedure isc_decode_sql_time_stub(ib_time           : PISC_TIME;
569                                   tm_date           : PCTimeStructure);
570                                   stdcall;
571begin
572  IBError(ibxeIB60feature, ['isc_decode_sql_time']); {do not localize}
573end;
574
575procedure isc_decode_timestamp_stub(ib_timestamp     : PISC_TIMESTAMP;
576                                    tm_date          : PCTimeStructure);
577                                    stdcall;
578begin
579  IBError(ibxeIB60feature, ['isc_decode_timestamp']); {do not localize}
580end;
581
582function isc_install_clear_options_stub(hOption: POPTIONS_HANDLE):MSG_NO; stdcall;
583begin
584  Result := 0;
585  IBError(ibxeIB60feature, ['isc_install_xxx ']); {do not localize}
586end;
587
588function isc_install_execute_stub(hOption: OPTIONS_HANDLE;
589                             src_dir: TEXT;
590                             dest_dir: TEXT;
591                             status_func: FP_STATUS;
592                             status_data: pointer;
593                             error_func: FP_ERROR;
594                             error_data: pointer;
595                             uninstal_file_name: TEXT):MSG_NO; stdcall;
596begin
597  Result := 0;
598  IBError(ibxeIB60feature, ['isc_install_xxx ']); {do not localize}
599end;
600
601function isc_install_get_info_stub(info_type :integer;
602                              option :OPT;
603                              info_buffer : Pointer;
604                              buf_len : Cardinal): MSG_NO; stdcall;
605begin
606  Result := 0;
607  IBError(ibxeIB60feature, ['isc_install_xxx ']); {do not localize}
608end;
609
610function isc_install_get_message_stub(hOption: OPTIONS_HANDLE;
611                                 message_no: MSG_NO;
612                                 message_txt: Pointer;
613                                 message_len: Cardinal):MSG_NO; stdcall;
614begin
615  Result := 0;
616  IBError(ibxeIB60feature, ['isc_install_xxx ']); {do not localize}
617end;
618
619function isc_install_load_external_text_stub(msg_file_name: TEXT):MSG_NO; stdcall;
620begin
621  Result := 0;
622  IBError(ibxeIB60feature, ['isc_install_xxx ']); {do not localize}
623end;
624
625function isc_install_precheck_stub(hOption: OPTIONS_HANDLE;
626                              src_dir: TEXT;
627                              dest_dir: TEXT):MSG_NO; stdcall;
628begin
629  Result := 0;
630  IBError(ibxeIB60feature, ['isc_install_xxx ']); {do not localize}
631end;
632
633function isc_install_set_option_stub(hOption: POPTIONS_HANDLE;
634                                option: OPT):MSG_NO; stdcall;
635begin
636  Result := 0;
637  IBError(ibxeIB60feature, ['isc_install_xxx ']); {do not localize}
638end;
639
640function isc_uninstall_execute_stub(uninstall_file_name: TEXT;
641                               status_func: FP_STATUS;
642                               status_data: pointer;
643                               error_func: FP_ERROR;
644                               error_data: pointer):MSG_NO; stdcall;
645begin
646  Result := 0;
647  IBError(ibxeIB60feature, ['isc_install_xxx ']); {do not localize}
648end;
649
650function isc_uninstall_precheck_stub(uninstall_file_name: TEXT):MSG_NO; stdcall;
651begin
652  Result := 0;
653  IBError(ibxeIB60feature, ['isc_install_xxx ']); {do not localize}
654end;
655
656function isc_install_unset_option_stub(hOption: POPTIONS_HANDLE;
657                                  option: OPT):MSG_NO; stdcall;
658begin
659  Result := 0;
660  IBError(ibxeIB60feature, ['isc_install_xxx ']); {do not localize}
661end;
662
663initialization
664
665finalization
666  FreeIBLibrary;
667  FreeIBInstallLibrary;
668end.