zeoslib  UNKNOWN
 All Files
ZPlainASADriver.pas
Go to the documentation of this file.
1 {@********************************************************}
2 { Copyright (c) 1999-2012 Zeos Development Group }
3 { }
4 { License Agreement: }
5 { }
6 { This library is distributed in the hope that it will be }
7 { useful, but WITHOUT ANY WARRANTY; without even the }
8 { implied warranty of MERCHANTABILITY or FITNESS FOR }
9 { A PARTICULAR PURPOSE. See the GNU Lesser General }
10 { Public License for more details. }
11 { }
12 { The source code of the ZEOS Libraries and packages are }
13 { distributed under the Library GNU General Public }
14 { License (see the file COPYING / COPYING.ZEOS) }
15 { with the following modification: }
16 { As a special exception, the copyright holders of this }
17 { library give you permission to link this library with }
18 { independent modules to produce an executable, }
19 { regardless of the license terms of these independent }
20 { modules, and to copy and distribute the resulting }
21 { executable under terms of your choice, provided that }
22 { you also meet, for each linked independent module, }
23 { the terms and conditions of the license of that module. }
24 { An independent module is a module which is not derived }
25 { from or based on this library. If you modify this }
26 { library, you may extend this exception to your version }
27 { of the library, but you are not obligated to do so. }
28 { If you do not wish to do so, delete this exception }
29 { statement from your version. }
30 { }
31 { }
32 { The project web site is located on: }
33 { http://zeos.firmos.at (FORUM) }
34 { http://sourceforge.net/p/zeoslib/tickets/ (BUGTRACKER)}
35 { svn://svn.code.sf.net/p/zeoslib/code-0/trunk (SVN) }
36 { }
37 { http://www.sourceforge.net/projects/zeoslib. }
38 { }
39 { }
40 { Zeos Development Group. }
41 {********************************************************@}
42 
43 unit ZPlainASADriver;
44 
45 interface
46 
47 {$I ZPlain.inc}
48 
49 uses Classes, ZCompatibility, ZPlainDriver, ZPlainASAConstants;
50 
51 {***************** Plain API Constants definition ****************}
52 
53 type
54 
55  {** Represents a generic interface to ASA native API. }
56  IZASAPlainDriver = interface (IZPlainDriver)
57  ['{86AFDDD6-D401-4A30-B3BE-4AC5095E13F0}']
58 
59  function sqlerror_message(sqlca: PZASASQLCA; Buffer: PAnsiChar;
60  MaxSize: Integer): PAnsiChar;
61  function db_init( sqlca: PZASASQLCA): Integer;
62  function db_fini( sqlca: PZASASQLCA): Integer;
63  function db_string_connect(sqlca: PZASASQLCA; Params: PAnsiChar): Integer;
64  function db_string_disconnect(sqlca: PZASASQLCA; Params: PAnsiChar): LongWord;
65  function db_find_engine(sqlca: PZASASQLCA; Params: PAnsiChar): Word;
66  function db_start_engine(sqlca: PZASASQLCA; Params: PAnsiChar): LongWord;
67  function db_stop_engine(sqlca: PZASASQLCA; Params: PAnsiChar): LongWord;
68  function db_start_database(sqlca: PZASASQLCA; Params: PAnsiChar): LongWord;
69  function db_stop_database(sqlca: PZASASQLCA; Params: PAnsiChar): LongWord;
70 
71  function db_alloc_sqlda( NumVar: LongWord): PASASQLDA;
72  function db_fill_sqlda( Parameter: PASASQLDA): PASASQLDA;
73  function db_fill_s_sqlda( Parameter: PASASQLDA; MaxLength: Integer):
74  PASASQLDA;
75  procedure db_free_sqlda( Parameter: PASASQLDA);
76  procedure db_free_sqlda_noind( Parameter: PASASQLDA);
77  procedure db_free_filled_sqlda( Parameter: PASASQLDA);
78 
79  procedure db_setconnect(sqlca: PZASASQLCA; ConnStr: PAnsiChar);
80  procedure db_disconnect(sqlca: PZASASQLCA; ConnStr: PAnsiChar);
81  procedure db_setoption( sqlca: PZASASQLCA; Temporary: LongInt;
82  User: PAnsiChar; Option: PAnsiChar; Descriptor: PASASQLDA);
83 
84  procedure db_describe_cursor(sqlca: PZASASQLCA; CursorName: PAnsiChar;
85  Descriptor: PASASQLDA; WhatToDesc: LongWord);
86  procedure db_prepare_into(sqlca: PZASASQLCA; ProgName: PAnsiChar;
87  StatementNum: PSmallInt; SqlStatement: PAnsiChar;
88  Descriptor1: PASASQLDA; Descriptor2: PASASQLDA; WhatToDesc: LongWord);
89  procedure db_prepare_describe(sqlca: PZASASQLCA; ProgName: PAnsiChar;
90  StatementNum: PSmallInt; SqlStatement: PAnsiChar; Descriptor: PASASQLDA;
91  WhatToDesc: LongWord; LongNames: Word);
92  procedure db_declare(sqlca: PZASASQLCA; CursorName: PAnsiChar;
93  StatementName: PAnsiChar; ProgName: PAnsiChar; StatementNum: PSmallInt;
94  Options: Word);
95  procedure db_describe(sqlca: PZASASQLCA; ProgName: PAnsiChar;
96  StatementNum: PSmallInt; Descriptor: PASASQLDA; WhatToDesc: Word);
97  procedure db_dropstmt(sqlca: PZASASQLCA; StatementName: PAnsiChar;
98  ProgName: PAnsiChar; StatementNum: PSmallInt);
99  procedure db_open(sqlca: PZASASQLCA; CursorName: PAnsiChar;
100  ProgName: PAnsiChar; StatementNum: PSmallInt; Descriptor: PASASQLDA;
101  BlockSize, IsolationLvl: SmallInt; CursorOptions: Word);
102  procedure db_close( sqlca: PZASASQLCA; CursorName: PAnsiChar);
103 
104  procedure db_fetch(sqlca: PZASASQLCA; CursorName: PAnsiChar; Offset: Word;
105  RelPositon: Integer; Descriptor: PASASQLDA; BlockSize: SmallInt;
106  Options: Word);
107  procedure db_fetch_array(sqlca: PZASASQLCA; CursorName: PAnsiChar;
108  Offset: Word; RelPositon: Integer; Descriptor: PASASQLDA;
109  BlockSize: SmallInt; Options, ArrayWidth: Word);
110  procedure db_get_data(sqlca: PZASASQLCA; CursorName: PAnsiChar;
111  ColumnNumber: Word; Offset: Integer; Descriptor: PASASQLDA);
112  procedure db_delete(sqlca: PZASASQLCA; CursorName: PAnsiChar);
113  procedure db_update(sqlca: PZASASQLCA; CursorName: PAnsiChar;
114  Descriptor: PASASQLDA);
115  procedure db_put_into(sqlca: PZASASQLCA; CursorName: PAnsiChar;
116  Descriptor: PASASQLDA; ResultDescriptor: PASASQLDA);
117  procedure db_put_array(sqlca: PZASASQLCA; CursorName: PAnsiChar;
118  Descriptor: PASASQLDA; ResultDescriptor: PASASQLDA; Rows: Word);
119 
120  procedure db_select(sqlca: PZASASQLCA; ProgName: PAnsiChar;
121  StatementNum: PSmallInt; SQLDescriptor, ResultDescriptor: PASASQLDA);
122  procedure db_execute_into(sqlca: PZASASQLCA; Statement: PAnsiChar;
123  ProgName: PAnsiChar; StatementNum: PSmallInt; Descriptor: PASASQLDA;
124  ResultDescriptor: PASASQLDA);
125  procedure db_execute_imm(sqlca: PZASASQLCA; Statement: PAnsiChar);
126 
127  procedure db_commit( sqlca: PZASASQLCA; TransLevel: LongWord);
128  procedure db_rollback( sqlca: PZASASQLCA; TransLevel: LongWord);
129  procedure db_explain(sqlca: PZASASQLCA; CursorName: PAnsiChar;
130  Descriptor: PASASQLDA);
131  procedure db_register_callback( sqlca: PZASASQLCA;
132  CBIdx: ZASA_db_callback_index; Proc: TZASASQLCallback);
133  procedure db_resume(sqlca: PZASASQLCA; CursorName: PAnsiChar);
134  function db_cancel_request( sqlca: PZASASQLCA): Integer;
135  function db_change_char_charset( sqlca: PZASASQLCA; const CharSet: PAnsiChar): Word;
136  function db_change_nchar_charset( sqlca: PZASASQLCA; const CharSet: PAnsiChar): Word;
137  end;
138 
139  {** Implements a driver for ASA 7.0-9.0}
140  TZASABasePlainDriver = class (TZAbstractPlainDriver, IZPlainDriver,
141  IZASAPlainDriver)
142  private
143  ASA_API: TASA_API;
144  protected
145  procedure LoadApi; override;
146  function GetUnicodeCodePageName: String; override;
147  public
148  procedure LoadCodePages; override;
149  constructor Create;
150 
151  function sqlerror_message(sqlca: PZASASQLCA; Buffer: PAnsiChar;
152  MaxSize: Integer): PAnsiChar;
153  function db_init( sqlca: PZASASQLCA): Integer;
154  function db_fini( sqlca: PZASASQLCA): Integer;
155  function db_string_connect(sqlca: PZASASQLCA; Params: PAnsiChar): Integer;
156  function db_string_disconnect(sqlca: PZASASQLCA; Params: PAnsiChar): LongWord;
157  function db_find_engine(sqlca: PZASASQLCA; Params: PAnsiChar): Word;
158  function db_start_engine(sqlca: PZASASQLCA; Params: PAnsiChar): LongWord;
159  function db_stop_engine(sqlca: PZASASQLCA; Params: PAnsiChar): LongWord;
160  function db_start_database(sqlca: PZASASQLCA; Params: PAnsiChar): LongWord;
161  function db_stop_database(sqlca: PZASASQLCA; Params: PAnsiChar): LongWord;
162 
163  function db_alloc_sqlda( NumVar: LongWord): PASASQLDA;
164  function db_fill_sqlda( Parameter: PASASQLDA): PASASQLDA;
165  function db_fill_s_sqlda( Parameter: PASASQLDA; MaxLength: Integer):
166  PASASQLDA;
167  procedure db_free_sqlda( Parameter: PASASQLDA);
168  procedure db_free_sqlda_noind( Parameter: PASASQLDA);
169  procedure db_free_filled_sqlda( Parameter: PASASQLDA);
170 
171  procedure db_setconnect(sqlca: PZASASQLCA; ConnStr: PAnsiChar);
172  procedure db_disconnect(sqlca: PZASASQLCA; ConnStr: PAnsiChar);
173  procedure db_setoption( sqlca: PZASASQLCA; Temporary: LongInt;
174  User: PAnsiChar; Option: PAnsiChar; Descriptor: PASASQLDA);
175 
176  procedure db_describe_cursor(sqlca: PZASASQLCA; CursorName: PAnsiChar;
177  Descriptor: PASASQLDA; WhatToDesc: LongWord);
178  procedure db_prepare_into(sqlca: PZASASQLCA; ProgName: PAnsiChar;
179  StatementNum: PSmallInt; SqlStatement: PAnsiChar;
180  Descriptor1: PASASQLDA; Descriptor2: PASASQLDA; WhatToDesc: LongWord);
181  procedure db_prepare_describe(sqlca: PZASASQLCA; ProgName: PAnsiChar;
182  StatementNum: PSmallInt; SqlStatement: PAnsiChar; Descriptor: PASASQLDA;
183  WhatToDesc: LongWord; LongNames: Word);
184  procedure db_declare(sqlca: PZASASQLCA; CursorName: PAnsiChar;
185  StatementName: PAnsiChar; ProgName: PAnsiChar; StatementNum: PSmallInt;
186  Options: Word);
187  procedure db_describe(sqlca: PZASASQLCA; ProgName: PAnsiChar;
188  StatementNum: PSmallInt; Descriptor: PASASQLDA; WhatToDesc: Word);
189  procedure db_dropstmt(sqlca: PZASASQLCA; StatementName: PAnsiChar;
190  ProgName: PAnsiChar; StatementNum: PSmallInt);
191  procedure db_open(sqlca: PZASASQLCA; CursorName: PAnsiChar;
192  ProgName: PAnsiChar; StatementNum: PSmallInt; Descriptor: PASASQLDA;
193  BlockSize, IsolationLvl: SmallInt; CursorOptions: Word);
194  procedure db_close(sqlca: PZASASQLCA; CursorName: PAnsiChar);
195 
196  procedure db_fetch(sqlca: PZASASQLCA; CursorName: PAnsiChar; Offset: Word;
197  RelPositon: Integer; Descriptor: PASASQLDA; BlockSize: SmallInt;
198  Options: Word);
199  procedure db_fetch_array(sqlca: PZASASQLCA; CursorName: PAnsiChar;
200  Offset: Word; RelPositon: Integer; Descriptor: PASASQLDA;
201  BlockSize: SmallInt; Options, ArrayWidth: Word);
202  procedure db_get_data(sqlca: PZASASQLCA; CursorName: PAnsiChar;
203  ColumnNumber: Word; Offset: Integer; Descriptor: PASASQLDA);
204  procedure db_delete(sqlca: PZASASQLCA; CursorName: PAnsiChar);
205  procedure db_update(sqlca: PZASASQLCA; CursorName: PAnsiChar;
206  Descriptor: PASASQLDA);
207  procedure db_put_into(sqlca: PZASASQLCA; CursorName: PAnsiChar;
208  Descriptor: PASASQLDA; ResultDescriptor: PASASQLDA);
209  procedure db_put_array(sqlca: PZASASQLCA; CursorName: PAnsiChar;
210  Descriptor: PASASQLDA; ResultDescriptor: PASASQLDA; Rows: Word);
211 
212  procedure db_select(sqlca: PZASASQLCA; ProgName: PAnsiChar;
213  StatementNum: PSmallInt; Descriptor, ResultDescriptor: PASASQLDA);
214  procedure db_execute_into(sqlca: PZASASQLCA; Statement: PAnsiChar;
215  ProgName: PAnsiChar; StatementNum: PSmallInt; Descriptor: PASASQLDA;
216  ResultDescriptor: PASASQLDA);
217  procedure db_execute_imm(sqlca: PZASASQLCA; Statement: PAnsiChar);
218 
219  procedure db_commit( sqlca: PZASASQLCA; TransLevel: LongWord);
220  procedure db_rollback( sqlca: PZASASQLCA; TransLevel: LongWord);
221  procedure db_explain(sqlca: PZASASQLCA; CursorName: PAnsiChar;
222  Descriptor: PASASQLDA);
223  procedure db_register_callback( sqlca: PZASASQLCA;
224  CBIdx: ZASA_db_callback_index; Proc: TZASASQLCallback);
225  procedure db_resume(sqlca: PZASASQLCA; CursorName: PAnsiChar);
226  function db_cancel_request( sqlca: PZASASQLCA): Integer;
227  function db_change_char_charset( sqlca: PZASASQLCA; const CharSet: PAnsiChar): Word;
228  function db_change_nchar_charset( sqlca: PZASASQLCA; const CharSet: PAnsiChar): Word;
229  end;
230 
231  TZASA7PlainDriver = class(TZASABasePlainDriver)
232  protected
233  function Clone: IZPlainDriver; override;
234  public
235  constructor Create;
236  function GetProtocol: string; override;
237  function GetDescription: string; override;
238  end;
239 
240  TZASA8PlainDriver = class(TZASABasePlainDriver)
241  protected
242  function Clone: IZPlainDriver; override;
243  public
244  constructor Create;
245  function GetProtocol: string; override;
246  function GetDescription: string; override;
247  end;
248 
249  {** Implements a driver for ASA 9.0 }
250  TZASA9PlainDriver = class (TZASABasePlainDriver)
251  protected
252  function Clone: IZPlainDriver; override;
253  public
254  constructor Create;
255  function GetProtocol: string; override;
256  function GetDescription: string; override;
257  end;
258 
259  {** Implements a driver for ASA 12.0 }
260  TZASA12PlainDriver = class (TZASABasePlainDriver)
261  protected
262  function Clone: IZPlainDriver; override;
263  public
264  constructor Create;
265  function GetProtocol: string; override;
266  function GetDescription: string; override;
267  end;
268 
269 implementation
270 
271 uses SysUtils, ZPlainLoader, ZEncoding;
272 
273 procedure TZASABasePlainDriver.LoadApi;
274 begin
275  with FLoader do
276  begin
277  @ASA_API.sqlerror_message := GetAddress('sqlerror_message');
278  @ASA_API.db_init := GetAddress('db_init');
279  @ASA_API.db_fini := GetAddress('db_fini');
280  @ASA_API.db_string_connect := GetAddress('db_string_connect');
281  @ASA_API.db_string_disconnect := GetAddress('db_string_disconnect');
282  @ASA_API.db_find_engine := GetAddress('db_find_engine');
283  @ASA_API.db_start_engine := GetAddress('db_start_engine');
284  @ASA_API.db_stop_engine := GetAddress('db_stop_engine');
285  @ASA_API.db_start_database := GetAddress('db_start_database');
286  @ASA_API.db_stop_database := GetAddress('db_stop_database');
287  @ASA_API.alloc_sqlda := GetAddress('alloc_sqlda');
288  @ASA_API.fill_sqlda := GetAddress('fill_sqlda');
289  @ASA_API.fill_s_sqlda := GetAddress('fill_s_sqlda');
290  @ASA_API.free_filled_sqlda := GetAddress('free_filled_sqlda');
291  @ASA_API.free_sqlda := GetAddress('free_sqlda');
292  @ASA_API.free_sqlda_noind := GetAddress('free_sqlda_noind');
293  @ASA_API.dbpp_setConnect := GetAddress('dbpp_setconnect');
294  @ASA_API.dbpp_disconnect := GetAddress('dbpp_disconnect');
295  @ASA_API.dbpp_prepare_into := GetAddress('dbpp_prepare_into');
296  @ASA_API.dbpp_describe_cursor := GetAddress('dbpp_describe_cursor');
297  @ASA_API.dbpp_prepare_describe := GetAddress('dbpp_prepare_describe');
298  @ASA_API.dbpp_prepare_describe_12 := GetAddress('dbpp_prepare_describe_12');
299  @ASA_API.dbpp_select := GetAddress('dbpp_select');
300  @ASA_API.dbpp_open := GetAddress('dbpp_open');
301  @ASA_API.dbpp_close := GetAddress('dbpp_close');
302  @ASA_API.dbpp_fetch := GetAddress('dbpp_fetch');
303  @ASA_API.dbpp_declare := GetAddress('dbpp_declare');
304  @ASA_API.dbpp_dropstmt := GetAddress('dbpp_dropstmt');
305  @ASA_API.dbpp_describe := GetAddress('dbpp_describe');
306  @ASA_API.dbpp_delete := GetAddress('dbpp_delete');
307  @ASA_API.dbpp_update := GetAddress('dbpp_update');
308  @ASA_API.dbpp_put_into := GetAddress('dbpp_put_into');
309  @ASA_API.dbpp_put_array := GetAddress('dbpp_put_array');
310  @ASA_API.dbpp_execute_imm := GetAddress('dbpp_execute_imm');
311  @ASA_API.dbpp_commit := GetAddress('dbpp_commit');
312  @ASA_API.dbpp_rollback := GetAddress('dbpp_rollback');
313  @ASA_API.dbpp_execute_into := GetAddress('dbpp_execute_into');
314  @ASA_API.dbpp_get_data := GetAddress('dbpp_get_data');
315  @ASA_API.dbpp_explain := GetAddress('dbpp_explain');
316  @ASA_API.dbpp_setoption := GetAddress('dbpp_setoption');
317  @ASA_API.dbpp_fetch_array := GetAddress('dbpp_fetch_array');
318  @ASA_API.db_register_a_callback := GetAddress('db_register_a_callback');
319  @ASA_API.dbpp_resume := GetAddress('dbpp_resume');
320  @ASA_API.db_cancel_request := GetAddress('db_cancel_request');
321  @ASA_API.db_change_char_charset := GetAddress('db_change_char_charset');
322  @ASA_API.db_change_nchar_charset:= GetAddress('db_change_nchar_charset');
323  end;
324 end;
325 
326 function TZASABasePlainDriver.GetUnicodeCodePageName: String;
327 begin
328  Result := 'UTF-8';
329 end;
330 
331 procedure TZASABasePlainDriver.LoadCodePages;
332 begin
333  { MultiByte }
334  AddCodePage('TIS-620', 1, ceAnsi, 874); {Windows Thailändisch, ISO8859-11, binäre Sortierung}
335  AddCodePage('Windows-31J', 2, ceAnsi, 932); {Japanese Shift-JIS mit Microsoft-Erweiterungen}
336  AddCodePage('GBK', 3, ceAnsi, 936); {GB2312-80 Simplified Chinese}
337  AddCodePage('IBM949', 4, ceAnsi, 949); {Korean KS C 5601-1987-Codierung, Wansung}
338  AddCodePage('BIG5', 5, ceAnsi, 950); {Traditionelles Chinesisch, Big 5-Kodierung mit HKSCS}
339  AddCodePage('EUC_CHINA', 6, ceAnsi, zCP_GB2312); {GB2312-80 Simplified Chinese}
340  AddCodePage('UTF-8', 7, ceUTF8, zCP_UTF8, '', 3); {UTF-8, 8-Bit-Mehrbyte-Zeichensatz für Unicode, binäre Reihenfolge}
341 
342  { SingleByte }
343  AddCodePage('Windows-1250', 8, ceAnsi, 1250); {Windows Latin 2, Polnisch}
344  AddCodePage('Windows-1251', 9, ceAnsi, 1251); {Windows Kyrillisch}
345  AddCodePage('Windows-1252', 10, ceAnsi, 1252); { Windows Latin 1, Western}
346  AddCodePage('Windows-1253', 11, ceAnsi, 1253); {Windows Griechisch, ISO8859-7 mit Erweiterungen}
347  AddCodePage('Windows-1254', 12, ceAnsi, 1254); {Windows Türkisch, ISO8859-9 mit Erweiterungen}
348  AddCodePage('Windows-1255', 13, ceAnsi, 1255); {Windows Hebräisch, ISO8859-8 mit Erweiterungen}
349  AddCodePage('Windows-1256', 14, ceAnsi, 1256); {Windows Arabisch, ISO8859-6 mit Erweiterungen}
350  AddCodePage('Windows-1257', 15, ceAnsi, 1257); {Windows Baltische Staaten, Litauisch}
351  AddCodePage('Windows-1258', 16, ceAnsi, 1258); {Windows }
352 
353  {*nix}
354  AddCodePage('ISO_8859-6:1987', 17, ceAnsi, 1256); {Arabisch, ISO8859-6 mit Erweiterungen}
355  AddCodePage('ISO_8859-2:1987', 18, ceAnsi, 1251); {Zentral- und Osteuropäisch}
356  //ISO-8859-15 //ISO9LATIN1
357  //ISO_8859-7:1987 //Griechisch
358  //ISO_8859-8:1988 //Hebräisch
359  //ISO-8859-15 //Italienisch
360  //EUC-JP //Japanisch
361  //EUC-KR //Koreanisch
362  //ISO_8859-5:1988 //Russisch
363  AddCodePage('GB2312', 19, ceAnsi, zCP_GB2312); {GB2312-80 Simplified Chinese}
364  //EUC-TW //Traditionelles Chinesisch - Taiwan
365  AddCodePage('Big5-HKSCS', 20, ceAnsi, 950); {Traditionelles Chinesisch, Big 5-Kodierung mit HKSCS}
366  AddCodePage('ISO_8859-9:1989', 21, ceAnsi, 920); //Türkisch
367 end;
368 
369 constructor TZASABasePlainDriver.Create;
370 begin
371  inherited create;
372  FLoader := TZNativeLibraryLoader.Create([]);
373  LoadCodePages;
374 end;
375 
376 function TZASABasePlainDriver.sqlerror_message(sqlca: PZASASQLCA; Buffer: PAnsiChar;
377  MaxSize: Integer): PAnsiChar;
378 begin
379  Result := ASA_API.sqlerror_message( sqlca, Buffer, MaxSize);
380 end;
381 
382 function TZASABasePlainDriver.db_init( sqlca: PZASASQLCA): Integer;
383 begin
384  Result := ASA_API.db_init( sqlca);
385 end;
386 
387 function TZASABasePlainDriver.db_fini( sqlca: PZASASQLCA): Integer;
388 begin
389  Result := ASA_API.db_fini( sqlca);
390 end;
391 
392 function TZASABasePlainDriver.db_string_connect(sqlca: PZASASQLCA; Params: PAnsiChar):
393  Integer;
394 begin
395  Result := ASA_API.db_string_connect( sqlca, Params);
396 end;
397 
398 function TZASABasePlainDriver.db_string_disconnect( sqlca: PZASASQLCA;
399  Params: PAnsiChar): LongWord;
400 begin
401  Result := ASA_API.db_string_disconnect( sqlca, Params)
402 end;
403 
404 function TZASABasePlainDriver.db_find_engine(sqlca: PZASASQLCA; Params: PAnsiChar):
405  Word;
406 begin
407  Result := ASA_API.db_find_engine( sqlca, Params);
408 end;
409 
410 function TZASABasePlainDriver.db_start_engine(sqlca: PZASASQLCA; Params: PAnsiChar):
411  LongWord;
412 begin
413  Result := ASA_API.db_start_engine( sqlca, Params);
414 end;
415 
416 function TZASABasePlainDriver.db_stop_engine(sqlca: PZASASQLCA; Params: PAnsiChar):
417  LongWord;
418 begin
419  Result := ASA_API.db_stop_engine( sqlca, Params);
420 end;
421 
422 function TZASABasePlainDriver.db_start_database(sqlca: PZASASQLCA; Params: PAnsiChar):
423  LongWord;
424 begin
425  Result := ASA_API.db_start_database( sqlca, Params);
426 end;
427 
428 function TZASABasePlainDriver.db_stop_database(sqlca: PZASASQLCA; Params: PAnsiChar):
429  LongWord;
430 begin
431  Result := ASA_API.db_stop_database( sqlca, Params);
432 end;
433 
434 function TZASABasePlainDriver.db_alloc_sqlda( NumVar: LongWord): PASASQLDA;
435 begin
436  Result := ASA_API.alloc_sqlda( NumVar);
437 end;
438 
439 function TZASABasePlainDriver.db_fill_sqlda( Parameter: PASASQLDA): PASASQLDA;
440 begin
441  Result := ASA_API.fill_sqlda( Parameter);
442 end;
443 
444 function TZASABasePlainDriver.db_fill_s_sqlda( Parameter: PASASQLDA;
445  MaxLength: Integer): PASASQLDA;
446 begin
447  Result := ASA_API.fill_s_sqlda( Parameter, MaxLength);
448 end;
449 
450 procedure TZASABasePlainDriver.db_free_sqlda( Parameter: PASASQLDA);
451 begin
452  ASA_API.free_sqlda( Parameter);
453 end;
454 
455 procedure TZASABasePlainDriver.db_free_sqlda_noind( Parameter: PASASQLDA);
456 begin
457  ASA_API.free_sqlda_noind( Parameter);
458 end;
459 
460 procedure TZASABasePlainDriver.db_free_filled_sqlda( Parameter: PASASQLDA);
461 begin
462  ASA_API.free_filled_sqlda( Parameter);
463 end;
464 
465 procedure TZASABasePlainDriver.db_setconnect(sqlca: PZASASQLCA; ConnStr: PAnsiChar);
466 begin
467  ASA_API.dbpp_setconnect( sqlca, ConnStr);
468 end;
469 
470 procedure TZASABasePlainDriver.db_disconnect(sqlca: PZASASQLCA; ConnStr: PAnsiChar);
471 begin
472  ASA_API.dbpp_disconnect( sqlca, ConnStr);
473 end;
474 
475 procedure TZASABasePlainDriver.db_setoption( sqlca: PZASASQLCA; Temporary: Integer;
476  User: PAnsiChar; Option: PAnsiChar; Descriptor: PASASQLDA);
477 begin
478  ASA_API.dbpp_setoption( sqlca, Temporary, User, Option, Descriptor);
479 end;
480 
481 procedure TZASABasePlainDriver.db_describe_cursor( sqlca: PZASASQLCA;
482  CursorName: PAnsiChar; Descriptor: PASASQLDA; WhatToDesc: LongWord);
483 begin
484  ASA_API.dbpp_describe_cursor( sqlca, CursorName, Descriptor, WhatToDesc);
485 end;
486 
487 procedure TZASABasePlainDriver.db_prepare_into( sqlca: PZASASQLCA;
488  ProgName: PAnsiChar; StatementNum: PSmallInt; SqlStatement: PAnsiChar;
489  Descriptor1: PASASQLDA; Descriptor2: PASASQLDA; WhatToDesc: LongWord);
490 begin
491  ASA_API.dbpp_prepare_into( sqlca, nil, ProgName, StatementNum, SqlStatement,
492  Descriptor1, Descriptor2, WhatToDesc);
493 end;
494 
495 procedure TZASABasePlainDriver.db_prepare_describe( sqlca: PZASASQLCA;
496  ProgName: PAnsiChar; StatementNum: PSmallInt; SqlStatement: PAnsiChar;
497  Descriptor: PASASQLDA; WhatToDesc: LongWord; LongNames: Word);
498 var
499  U1: LongWord;
500 begin
501  U1 := 0;
502  if Assigned(ASA_API.dbpp_prepare_describe) then
503  ASA_API.dbpp_prepare_describe( sqlca, nil, ProgName, StatementNum,
504  SqlStatement, nil, Descriptor, WhatToDesc, LongNames)
505  else
506  if Assigned(ASA_API.dbpp_prepare_describe_12) then
507  ASA_API.dbpp_prepare_describe_12(sqlca, nil, ProgName, StatementNum,
508  SqlStatement, nil, Descriptor, WhatToDesc, LongNames, U1);
509 end;
510 
511 procedure TZASABasePlainDriver.db_declare(sqlca: PZASASQLCA; CursorName: PAnsiChar;
512  StatementName: PAnsiChar; ProgName: PAnsiChar; StatementNum: PSmallInt;
513  Options: Word);
514 begin
515  ASA_API.dbpp_declare( sqlca, CursorName, StatementName, ProgName,
516  StatementNum, Options);
517 end;
518 
519 procedure TZASABasePlainDriver.db_describe(sqlca: PZASASQLCA; ProgName: PAnsiChar;
520  StatementNum: PSmallInt; Descriptor: PASASQLDA; WhatToDesc: Word);
521 begin
522  ASA_API.dbpp_describe( sqlca, nil, ProgName, StatementNum, Descriptor,
523  WhatToDesc);
524 end;
525 
526 procedure TZASABasePlainDriver.db_dropstmt( sqlca: PZASASQLCA;
527  StatementName: PAnsiChar; ProgName: PAnsiChar; StatementNum: PSmallInt);
528 begin
529  ASA_API.dbpp_dropstmt( sqlca, StatementName, ProgName, StatementNum);
530 end;
531 
532 procedure TZASABasePlainDriver.db_open(sqlca: PZASASQLCA; CursorName: PAnsiChar;
533  ProgName: PAnsiChar; StatementNum: PSmallInt; Descriptor: PASASQLDA;
534  BlockSize, IsolationLvl: SmallInt; CursorOptions: Word);
535 begin
536  ASA_API.dbpp_open( sqlca, CursorName, nil, ProgName, StatementNum,
537  Descriptor, BlockSize, IsolationLvl, CursorOptions);
538 end;
539 
540 procedure TZASABasePlainDriver.db_close(sqlca: PZASASQLCA; CursorName: PAnsiChar);
541 begin
542  ASA_API.dbpp_close( sqlca, CursorName);
543 end;
544 
545 procedure TZASABasePlainDriver.db_fetch(sqlca: PZASASQLCA; CursorName: PAnsiChar;
546  Offset: Word; RelPositon: Integer; Descriptor: PASASQLDA;
547  BlockSize: SmallInt; Options: Word);
548 begin
549  ASA_API.dbpp_fetch( sqlca, CursorName, Offset, RelPositon, Descriptor,
550  BlockSize, Options);
551 end;
552 
553 procedure TZASABasePlainDriver.db_fetch_array( sqlca: PZASASQLCA;
554  CursorName: PAnsiChar; Offset: Word; RelPositon: Integer;
555  Descriptor: PASASQLDA; BlockSize: SmallInt; Options, ArrayWidth: Word);
556 begin
557  ASA_API.dbpp_fetch_array( sqlca, CursorName, Offset, RelPositon, Descriptor,
558  BlockSize, Options, ArrayWidth);
559 end;
560 
561 procedure TZASABasePlainDriver.db_get_data(sqlca: PZASASQLCA; CursorName: PAnsiChar;
562  ColumnNumber: Word; Offset: Integer; Descriptor: PASASQLDA);
563 begin
564  ASA_API.dbpp_get_data( sqlca, CursorName, ColumnNumber, Offset, Descriptor,
565  0);
566 end;
567 
568 procedure TZASABasePlainDriver.db_delete(sqlca: PZASASQLCA; CursorName: PAnsiChar);
569 begin
570  ASA_API.dbpp_delete( sqlca, CursorName, nil, nil);
571 end;
572 
573 procedure TZASABasePlainDriver.db_update(sqlca: PZASASQLCA; CursorName: PAnsiChar;
574  Descriptor: PASASQLDA);
575 begin
576  ASA_API.dbpp_update( sqlca, CursorName, Descriptor);
577 end;
578 
579 procedure TZASABasePlainDriver.db_put_into(sqlca: PZASASQLCA; CursorName: PAnsiChar;
580  Descriptor: PASASQLDA; ResultDescriptor: PASASQLDA);
581 begin
582  ASA_API.dbpp_put_into( sqlca, CursorName, Descriptor, ResultDescriptor);
583 end;
584 
585 procedure TZASABasePlainDriver.db_put_array(sqlca: PZASASQLCA; CursorName: PAnsiChar;
586  Descriptor: PASASQLDA; ResultDescriptor: PASASQLDA; Rows: Word);
587 begin
588  ASA_API.dbpp_put_array( sqlca, CursorName, Descriptor, ResultDescriptor,
589  Rows);
590 end;
591 
592 procedure TZASABasePlainDriver.db_select(sqlca: PZASASQLCA; ProgName: PAnsiChar;
593  StatementNum: PSmallInt; Descriptor, ResultDescriptor: PASASQLDA);
594 begin
595  ASA_API.dbpp_select( sqlca, nil, ProgName, StatementNum, Descriptor,
596  ResultDescriptor);
597 end;
598 
599 procedure TZASABasePlainDriver.db_execute_into( sqlca: PZASASQLCA;
600  Statement: PAnsiChar; ProgName: PAnsiChar; StatementNum: PSmallInt;
601  Descriptor: PASASQLDA; ResultDescriptor: PASASQLDA);
602 begin
603  ASA_API.dbpp_execute_into( sqlca, Statement, ProgName, StatementNum,
604  Descriptor, ResultDescriptor);
605 end;
606 
607 procedure TZASABasePlainDriver.db_execute_imm( sqlca: PZASASQLCA;
608  Statement: PAnsiChar);
609 begin
610  ASA_API.dbpp_execute_imm( sqlca, Statement, 2);
611 end;
612 
613 procedure TZASABasePlainDriver.db_commit( sqlca: PZASASQLCA; TransLevel: LongWord);
614 begin
615  ASA_API.dbpp_commit( sqlca, TransLevel);
616 end;
617 
618 procedure TZASABasePlainDriver.db_rollback( sqlca: PZASASQLCA;
619  TransLevel: LongWord);
620 begin
621  ASA_API.dbpp_rollback( sqlca, TransLevel);
622 end;
623 
624 procedure TZASABasePlainDriver.db_explain(sqlca: PZASASQLCA; CursorName: PAnsiChar;
625  Descriptor: PASASQLDA);
626 begin
627  ASA_API.dbpp_explain( sqlca, CursorName, 0, Descriptor);
628 end;
629 
630 procedure TZASABasePlainDriver.db_register_callback( sqlca: PZASASQLCA;
631  CBIdx: ZASA_db_callback_index; Proc: TZASASQLCallback);
632 begin
633  ASA_API.db_register_a_callback( sqlca, Integer( CBIdx), Proc);
634 end;
635 
636 procedure TZASABasePlainDriver.db_resume(sqlca: PZASASQLCA; CursorName: PAnsiChar);
637 begin
638  ASA_API.dbpp_resume( sqlca, CursorName);
639 end;
640 
641 function TZASABasePlainDriver.db_cancel_request( sqlca: PZASASQLCA): Integer;
642 begin
643  Result := ASA_API.db_cancel_request( sqlca);
644 end;
645 
646 function TZASABasePlainDriver.db_change_char_charset( sqlca: PZASASQLCA; const CharSet: PAnsiChar): Word;
647 begin
648  Result := ASA_API.db_change_char_charset(sqlca, CharSet);
649 end;
650 
651 function TZASABasePlainDriver.db_change_nchar_charset( sqlca: PZASASQLCA; const CharSet: PAnsiChar): Word;
652 begin
653  Result := ASA_API.db_change_nchar_charset(sqlca, CharSet);
654 end;
655 
656 {TZASA7PlainDriver}
657 
658 function TZASA7PlainDriver.Clone: IZPlainDriver;
659 begin
660  Result := TZASA7PlainDriver.Create;
661 end;
662 
663 constructor TZASA7PlainDriver.Create;
664 begin
665  inherited Create;
666  FLoader.AddLocation({$IFNDEF LINUX}ASA7_WINDOWS_DLL_LOCATION{$ELSE}ASA7_LINUX_DLL_LOCATION{$ENDIF});
667 end;
668 
669 function TZASA7PlainDriver.GetProtocol: string;
670 begin
671  Result := 'ASA7';
672 end;
673 
674 function TZASA7PlainDriver.GetDescription: string;
675 begin
676  Result := 'Native Plain Driver for ASA 7.0 DBLib';
677 end;
678 
679 {TZASA8PlainDriver}
680 
681 constructor TZASA8PlainDriver.Create;
682 begin
683  inherited Create;
684  FLoader.AddLocation({$IFNDEF LINUX}ASA8_WINDOWS_DLL_LOCATION{$ELSE}ASA8_LINUX_DLL_LOCATION{$ENDIF});
685 end;
686 
687 function TZASA8PlainDriver.Clone: IZPlainDriver;
688 begin
689  Result := TZASA8PlainDriver.Create;
690 end;
691 
692 function TZASA8PlainDriver.GetProtocol: string;
693 begin
694  Result := 'ASA8';
695 end;
696 
697 function TZASA8PlainDriver.GetDescription: string;
698 begin
699  Result := 'Native Plain Driver for ASA 8.0 DBLib';
700 end;
701 
702 {TZASA9PlainDriver}
703 
704 constructor TZASA9PlainDriver.Create;
705 begin
706  inherited Create;
707  FLoader.AddLocation({$IFNDEF LINUX}ASA9_WINDOWS_DLL_LOCATION{$ELSE}ASA9_LINUX_DLL_LOCATION{$ENDIF});
708 end;
709 
710 function TZASA9PlainDriver.Clone: IZPlainDriver;
711 begin
712  Result := TZASA9PlainDriver.Create;
713 end;
714 
715 function TZASA9PlainDriver.GetProtocol: string;
716 begin
717  Result := 'ASA9';
718 end;
719 
720 function TZASA9PlainDriver.GetDescription: string;
721 begin
722  Result := 'Native Plain Driver for ASA 9.0 DBLib';
723 end;
724 
725 {TZASA12PlainDriver}
726 
727 constructor TZASA12PlainDriver.Create;
728 begin
729  inherited Create;
730  FLoader.AddLocation({$IFNDEF LINUX}ASA12_WINDOWS_DLL_LOCATION{$ELSE}ASA12_LINUX_DLL_LOCATION{$ENDIF});
731 end;
732 
733 function TZASA12PlainDriver.Clone: IZPlainDriver;
734 begin
735  Result := TZASA12PlainDriver.Create;
736 end;
737 
738 function TZASA12PlainDriver.GetProtocol: string;
739 begin
740  Result := 'ASA12';
741 end;
742 
743 function TZASA12PlainDriver.GetDescription: string;
744 begin
745  Result := 'Native Plain Driver for ASA 9.0 DBLib';
746 end;
747 
748 end.
749