Использование SQLite из BlackBox.

## Код:
```
MODULE PgrSQLite ["sqlite3.dll"];

  IMPORT SYSTEM;

  TYPE
    Ptr*= POINTER TO RECORD [untagged] END;
    Str* = POINTER TO ARRAY [untagged] OF SHORTCHAR;
    ArrStr* = POINTER TO ARRAY [untagged] OF Str;
    Db* = Ptr;
    Callback* = PROCEDURE (ptr: Ptr; numcols: INTEGER; values, names: ArrStr): INTEGER;

  PROCEDURE [ccall] Version* ["sqlite3_libversion"] (): Str;
  PROCEDURE [ccall] Open* ["sqlite3_open"] (fn: Str; VAR db: Db): INTEGER;
  PROCEDURE [ccall] Close* ["sqlite3_close"] (db: Db): INTEGER;
  PROCEDURE [ccall] Exec* ["sqlite3_exec"] (db: Db; query: Str; callback: Callback; ptr: Ptr; VAR [nil] errmsg: Str): INTEGER;

END PgrSQLite.
```


## Код:
```
MODULE PgrSQLiteTest;

  IMPORT SQL := PgrSQLite, Log, SYSTEM;

  PROCEDURE [ccall] Process (ptr: SQL.Ptr; numcols: INTEGER; values, names: SQL.ArrStr): INTEGER;
  VAR i: INTEGER;
  BEGIN
    FOR i := 0 TO numcols-1 DO
      Log.String(values[i]$); Log.Tab
    END;
    Log.Ln;
    RETURN 0
  END Process;

  PROCEDURE Create*;
  VAR
    s: SQL.Str; db: SQL.Db;
    res: INTEGER; query: ARRAY 100 OF SHORTCHAR;
  BEGIN
    res := SQL.Open("c:\test", db);
    ASSERT(db # NIL);
    query := "create table tbl1(one varchar(10), two smallint);";
    res := SQL.Exec(db, query, NIL, NIL, NIL);
    query := "insert into tbl1 values('hello!',10);";
    res := SQL.Exec(db, query, NIL, NIL, NIL);
    query := "insert into tbl1 values('world!',34);";
    res := SQL.Exec(db, query, NIL, NIL, NIL);
    res := SQL.Close(db)
  END Create;

  PROCEDURE Select*;
  VAR
    s: SQL.Str; db: SQL.Db;
    res: INTEGER; query: ARRAY 100 OF SHORTCHAR;
  BEGIN
    res := SQL.Open("c:\test", db);
    ASSERT(db # NIL);
    query := "select * from tbl1;";
    res := SQL.Exec(db, query, Process, NIL, NIL);
    res := SQL.Close(db)
  END Select;

END PgrSQLiteTest.
```
