MODULE SQLiteSmoke; (* First end-to-end SQLite binding test: :memory: open/exec/close. *) FROM SYSTEM IMPORT ADDRESS; FROM SQLite IMPORT SQLiteOk, sqlite3_open, sqlite3_exec, sqlite3_close, sqlite3_free; VAR ExitCode : INTEGER; db, errmsg : ADDRESS; rc : INTEGER; BEGIN db := NIL; errmsg := NIL; rc := sqlite3_open(":memory:", db); IF (rc = SQLiteOk) AND (db # NIL) THEN rc := sqlite3_exec(db, "CREATE TABLE t(x INTEGER);", NIL, NIL, errmsg); IF errmsg # NIL THEN sqlite3_free(errmsg); errmsg := NIL END; IF rc = SQLiteOk THEN rc := sqlite3_exec(db, "INSERT INTO t VALUES (42);", NIL, NIL, errmsg); IF errmsg # NIL THEN sqlite3_free(errmsg); errmsg := NIL END END END; IF db # NIL THEN IF sqlite3_close(db) # SQLiteOk THEN rc := 1 END END; IF rc = SQLiteOk THEN ExitCode := 42 ELSE ExitCode := 1 END END SQLiteSmoke.