{***************************************************************************
 * Komunikační jednotka mezi aplikačním programem v Turbo Pascalu (ci      *
 * Delphi) a 602SQL                                                        *
 * (C) Janus Drozd, 1992-2007                                              *
 * Verze 8.1                                                               *
 ***************************************************************************}
{$X+,A+,F+,Z+}
unit sql602_8;
{$IFNDEF LINUX}
  {$MESSAGE FATAL'Pro tento operacni system nelze tento soubor pouzit!'}
{$ENDIF}

{$DEFINE SQL602_VERSION_MAJOR_IS_8}
{$DEFINE SQL602_VERSION_MINOR_IS_1}

interface

{$IFDEF LINUX}
uses Libc,SqlTimSt;
{$ENDIF}

const CDP_SIZE_BYTES = 20000;
type cd_t = record
  internal_data : array[0..(CDP_SIZE_BYTES)-1] of BYTE;
end;
type cdp_t = ^cd_t;
type t_pconnection = ^cd_t;
type xcdp_t = ^cd_t;



{$IFNDEF LINUX}
const WBKERNEL = '602KRNL8.DLL';
      WBPREZEN = '602PREZ8.DLL';
      WBVIEWED = '602DVLP8.DLL';
      WBXMLEXT = '602XML8.DLL';
{$ELSE}
const WBKERNEL = 'libwb602.so';
      WBPREZEN = 'libwb602.so';
      WBVIEWED = 'libwb602.so';
      WBXMLEXT = 'lib602xml8.so';
{$ENDIF}
  
type sig64 = int64;
     uns32 = Cardinal;    { zakladni typy WinBase }
     sig32 = LongInt;
     uns16 = Word;
     sig16 = SmallInt;
     uns8  = Byte;
     sig8  = ShortInt;

     sigfl = Integer;     { genericke typy WinBase }
     unsfl = Cardinal;

{$IFNDEF LINUX}
     HWND  = Cardinal;
{$ENDIF}
{ zakladni typy databazoveho jadra }
type ttablenum = sig32;
type tobjnum = sig32;
const NOOBJECT = tobjnum(-1); { cislo neexistujiciho objektu }
type tcursnum = sig32;
const NOCURSOR = tcursnum(-1); { cislo neexistujiciho kurzoru }
type tcurstab = sig32;
const
  ODBC_TABLE = $ffff4000;
  CURS_USER = $ffff8000;
  CURS_MASK = $1fff; { table number bits in standard cursors }
type trecnum = uns32;
const NORECNUM = trecnum(-1);
type tattrib = uns8;
const NOATTRIB = tattrib(-1);
type tcateg = uns8;
type t_varcol_size = uns32;
type t_mult_size = uns16;
{ zastaraly typ }
type tright = uns8;
{ zastaraly typ }
type tdright = uns16;
const OBJ_NAME_LEN = 31; { max. delka jmena databazoveho objektu }
type tobjname = array[0..(OBJ_NAME_LEN+1)-1] of char;
const
  NAMELEN = 18; { max. delka identifikatoru promenne }
  type tname = array[0..(NAMELEN+1)-1] of char;
const UUID_SIZE = 12; { delka identifikace objektu }
type WBUUID = array[0..(UUID_SIZE)-1] of uns8;
type window_id = HWND;
type t_folder_index = Smallint;
{ typ parametru t_oper }
type t_oper = (OPER_SET=0, OPER_GET=1, OPER_GETEFF=2, OPER_SETREPL=3, OPER_SET_ON_CREATE );
type t_valtype = (VT_OBJNUM=0, VT_NAME=1, VT_UUID=2, VT_NAME3=3 );
type t_isolation = (READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE );
type t_oper_limits = (DISABLE_NEW_CLIENTS=0, WORKER_STOP=1, WORKER_RESTART=2, ENABLE_NEW_CLIENTS=3 );
const
  NOINDEX = $ffff; { hodnota parametru index, nejde-li o multiatribut }
  OUTER_JOIN_NULL_POSITION = trecnum(-2); { neexistujici zaznam pripojeny v operaci OUTER JOIN }
  MAX_PACKAGED_REQS = 25; { max. pocet pozadavku v baliku }
  MAX_PASSWORD_LEN = 100;

function IS_CURSOR_NUM(curs : tcurstab) : Boolean;

{ cisla systemovych tabulek }
const
  TAB_TABLENUM = 0; { cislo tabulky tabulek }
  OBJ_TABLENUM = 1; { cislo tabulky objektu }
  USER_TABLENUM = 2; { cislo tabulky uzivatelu }
  SRV_TABLENUM = 3; { cislo tabulky serveru }
  REPL_TABLENUM = 4; { cislo tabulky replikacnich pravidel }
  KEY_TABLENUM = 5; { cislo tabulky verejnych klicu }
  PROP_TABLENUM = 6; { cislo tabulky vlastnosti }
  REL_TABLENUM = 7; { cislo tabulky vztahu }

{ sloupec DELETED }
const
  DEL_ATTR_NUM = 0; { cislo sloupce DELETED }
  NOT_DELETED = 0; { hodnota sloupce: zaznam neni zruseny }
  DELETED = 1; { hodnota sloupce: zaznam je zruseny }
  RECORD_EMPTY = 2; { hodnota sloupce: zaznam je uvolneny }

{ sloupce systemovych tabulek TABTAB a OBJTAB }
const
  OBJ_NAME_ATR = 3; { Jmeno objektu, STRING delky OBJ_NAME_LEN znaku }
  OBJ_CATEG_ATR = 4; { Kategorie objektu, atribut typu CHAR }
  APPL_ID_ATR = 5; { Id aplikace, k niz objekt patri, BINARY delky 12 bajtu }
  OBJ_DEF_ATR = 6; { Definice objektu, atribut typu TEXT }
  OBJ_FLAGS_ATR = 7; { Priznaky objektu, atribut typu SHORT }
  OBJ_FOLDER_ATR = 8; { Jmeno slozky pro objekt, STRING delky OBJ_NAME_LEN znaku }
  OBJ_MODIF_ATR = 9; { Datum a cas posledni zmeny definice objektu }

{ kategorie }
const
  CATEG_TABLE = 0; { tabulka }
  CATEG_USER = 1; { uzivatel }
  CATEG_VIEW = 2; { pohled }
  CATEG_CURSOR = 3; { dotaz }
  CATEG_PGMSRC = 4; { text programu }
  CATEG_PGMEXE = 5; { prelozeny program }
  CATEG_MENU = 6; { menu }
  CATEG_APPL = 7; { aplikace }
  CATEG_PICT = 8; { obrazek }
  CATEG_GROUP = 9; { skupina }
  CATEG_ROLE = 10; { role }
  CATEG_CONNECTION = 11; { ODBC spojeni }
  CATEG_RELATION = 12; { relace }
  CATEG_DRAWING = 13; { nakres }
  CATEG_GRAPH = 14; { graf }
  CATEG_REPLREL = 15; { replikacni vztah }
  CATEG_PROC = 16; { rutina }
  CATEG_TRIGGER = 17; { trigger }
  CATEG_WWW = 18; { WWW objekt }
  CATEG_FOLDER = 19; { slozka }
  CATEG_SEQ = 20; { sekvence }
  CATEG_INFO = 21; { informacni objekt }
  CATEG_DOMAIN = 22; { domena }
  CATEG_STSH = 23; { style sheet }
  CATEG_XMLFORM = 24; { XML form }
  CATEG_KEY = 25; { verejny klic uzivatele }
  CATEG_SERVER = 26; { replikacni server }
  CATEG_COUNT = 27;
  CATEG_MASK = $7f;
  IS_LINK = $80; { priznak spojovaciho objektu }
  CATEG_DIRCUR = 27; { otevreny kurzor }

{ struktura kernel_info }
type kernel_info = record
  version : array[0..(6)-1] of char; { ASCIIZ oznaceni verze serveru }
  logged : uns16; { pocet prihlasenych uzivatelu }
  blocksize : uns16; { velikost clusteru }
  freeblocks : uns32; { pocet volnych clusteru v alokacni tabulce }
  frames : uns16; { pocet pametovych ramu }
  fixed_pages : uns8; { pocet ramu s fixovanym obsahem }
  max_users : uns8; { maximalni pocet uzivatelu }
  unused : uns8;
  diskspace : uns32; { mnozstvi volneho mista na disku }
  server_name : tobjname; { jmeno serveru }
  local_free_memory : uns32; { volna pamet u klienta }
  remote_free_memory : uns32; { volna pamet na serveru }
  networking : uns32; { sitova prace klienta }
  owned_cursors : uns16; { pocet otevrenych kurzoru klientem }
  padding : uns16; { oprava zarovnani struktury v Delphi }
end;

{ Hodnoty slozky "modtype" v zaznamu "modifrec" }
const
  MODSTOP = 0;
  MODLEN = 2;
  MODIND = 3;
  MODINT = 4;
  MODPTR = 5;
  MODINDPTR = 6;
type modifrec = record
  modtype : uns8;
  case Integer of
  modstop : ( 
 );
  modlen : ( 
 );
  modind : ( 
  index : t_mult_size;
 );
  modint : ( 
  start : t_varcol_size;
  size : t_varcol_size;
 );
  modptr : ( 
  attr : tattrib;
 );
  modindptr : ( 
  index2 : t_mult_size;
  attr2 : tattrib;
 );
end;

{ hodnota typu money }
type monstr = packed record
  money_lo2 : uns16;
  money_hi4 : sig32;
end;

const MAX_FIXED_STRING_LENGTH = 4090;

type t_specif = uns32;

{ Pristupova prava }
const
  RIGHT_READ = $01; { calculated privilege, never granted explicitly }
  RIGHT_WRITE = $02; { calculated privilege, never granted explicitly }
  RIGHT_APPEND = $04; { pravo vkladat zaznamy }
  RIGHT_INSERT = $04; { pravo vkladat zaznamy }
  RIGHT_DEL = $08; { pravo rusit zaznamy }
  RIGHT_NEW_READ = $10; { pridelovat k novym zaznamum pravo cist }
  RIGHT_NEW_WRITE = $20; { pridelovat k novym zaznamum pravo prepsat }
  RIGHT_NEW_DEL = $40; { pridelovat k novym zaznamum pravo zrusit }
  RIGHT_GRANT = $80; { universalni pravo poskytovat sva prava }
  PRIVIL_DESCR_SIZE = (1+64); { velikost zaznamu o pravech }

{ Hodnoty "NONE" ruznych typu }

{     NONEMONEY    =  nelze takto definovat, ma hodnotu 0,0,0,0,0,$80 }

const
  NONEBIGINT = sig64($8000000000000000);
  MAXBIGINT = sig64($7fffffffffffffff);
      const
  NONEBOOLEAN = uns8($80);
  NONECHAR = uns8(0);
  NONEDATE = $80000000;
  NONETIME = $80000000;
  NONETIMESTAMP = $80000000;
  NONEINTEGER = sig32($80000000);
  NONESHORT = sig16($8000);
  NONETINY = sig8($80);
  NONEREAL:Double = -1.7001e308;
  NONESTRING = '';
  NONEPTR = trecnum(-1);

{ Parametry funkce Set_sql_option }
const
  SQLOPT_NULLEQNULL = 1; { hodnota NULL se rovna NULL }
  SQLOPT_NULLCOMP = 2; { NULL se porovnavat s ne-NULL hodnotami }
  SQLOPT_RD_PRIVIL_VIOL = 4; { hodnota bez prava cteni se jevi jako NULL }
  SQLOPT_MASK_NUM_RANGE = 8; { preteceni ciselneho typu pri konverzi vrati NULL }
  SQLOPT_MASK_INV_CHAR = $10; { nekonvertovatelny retezec znaku vrati NULL }
  SQLOPT_MASK_RIGHT_TRUNC = $20; { zkraceni retezce pri konverzi se maskuje }
  SQLOPT_EXPLIC_FREE = $40; { zrusene zaznamy se uvolni az pri explicitnim Free_deleted }
  SQLOPT_OLD_ALTER_TABLE = $80; { specificke ALTER TABLE }
  SQLOPT_DUPLIC_COLNAMES = $100; { duplicitni jmena sloupcu v dotazu se neprejmenuji }
  SQLOPT_USER_AS_SCHEMA = $200; { povoli jmeno schematu stejne jako jmeno uzivatele }
  SQLOPT_DISABLE_SCALED = $400; { konvertuje vysledky dotazu s desetinnymi misty na realny typ }
  SQLOPT_ERROR_STOPS_TRANS = $800; { pri kazde chybe se ukonci probihajici transakce }
  SQLOPT_NO_REFINT_TRIGGERS = $1000; { akce vyvolane referencni intehritou nespousteji triggery }
  SQLOPT_USE_SYS_COLS = $2000; { SELECT * vybere i systemove sloupce }
  SQLOPT_CONSTRS_DEFERRED = $4000; { integritni omezeni se implicitne vyhodnoti na konci transakce }
  SQLOPT_COL_LIST_EQUAL = $8000; { UPDATE trigger se spousti pouze pri rovnosti mnozin sloupcu }
  SQLOPT_QUOTED_IDENT = $10000; { uvozovky vymezuji stringovy literal }
  SQLOPT_GLOBAL_REF_RIGHTS = $20000; { pravo odkazovat na sloupec v dotazu se testuje globalne }
  SQLOPT_REPEATABLE_RETURN = $40000; { RETURN nastavi hodnotu funkce ale neukonci jeji provadeni }
  SQLOPT_OLD_STRING_QUOTES = $80000; { Vymezeni stringu funguje podle verze 8 a starsich }

{ Cisla chyb }
const
  ANS_OK = 0;
  NOT_ANSWERED = $ff;
  BAD_MODIF = $80;
  NO_RIGHT = $81;
  BAD_ELEM_NUM = $82;
  OUT_OF_TABLE = $83;
  THREAD_START_ERROR = $84; { C-H }
  CURSOR_MISUSE = $85;
  BAD_OPCODE = $86;
  CANNOT_APPEND = $87;
  NOT_LOCKED = $88;
  OBJECT_DOES_NOT_EXIST = $89; { C-H }
  INDEX_OUT_OF_RANGE = $8a;
  NOT_FOUND_02000 = $8b; { 02000, C-H }
  EMPTY = $8c;
  CANNOT_CONVERT_DATA = $8d;
  BAD_PASSWORD = $8e;
  PTR_TO_DELETED = $8f;
  NIL_PTR = $90;
  OUT_OF_KERNEL_MEMORY = $91;
  RECORD_DOES_NOT_EXIST = $92;
  IS_DELETED = $93;
  INDEX_NOT_FOUND = $94;
  OBJECT_NOT_FOUND = $95;
  OUT_OF_APPL_MEMORY = $96;
  BAD_DATA_SIZE = $97;
  UNREADABLE_BLOCK = $98;
  NOT_LOGGED_IN = $99;
  OUT_OF_BLOCKS = $9a;
  REQUEST_BREAKED = $9b;
  CONNECTION_LOST = $9c;
  OS_FILE_ERROR = $9d;
  INCOMPATIBLE_VERSION = $9e;
  REJECTED_BY_KERNEL = $9f;
  MUST_NOT_BE_NULL = $a0; { 40002 }
  OPERATION_DISABLED = $a1;
  REFERENCED_BY_OTHER_OBJECT = $a2;
  IE_OUT_OF_DWORM = $a3; { interni chyba }
  IE_FRAME_OVERRUN = $a4; { interni chyba }
  IE_PAGING = $a5; { interni chyba }
  IE_DOUBLE_PAGE = $a6; { interni chyba }
  IE_OUT_OF_BSTACK = $a7; { interni chyba }
  TABLE_DAMAGED = $a8;
  CANNOT_LOCK_KERNEL = $a9;
  ROLLBACK_IN_CURSOR_CREATION = $aa;
  DEADLOCK = $ab;
  KEY_DUPLICITY = $ac; { 40002 }
  BAD_VERSION = $ad; { client/server version mismatch }
  CHECK_CONSTRAIN = $ae; { 40002 }
  REFERENTIAL_CONSTRAIN = $af; { 40002 }
  UNPROPER_TYPE = $b0;
  TABLE_IS_FULL = $b1;
  REQUEST_NESTING = $b2;
  CANNOT_FOR_ODBC = $b3;
  ERROR_IN_FUNCTION_ARG = $b4;
  ODBC_CURSOR_NOT_OPEN = $b5;
  DRIVER_NOT_CAPABLE = $b6;
  TOO_COMPLEX_TRANS = $b7;
  INTERNAL_SIGNAL = $b8;
  STRING_CONV_NOT_AVAIL = $b9;
  NO_WRITE_TOKEN = $ba;
  WAITING_FOR_ACKN = $bb;
  REPL_BLOCKED = $bc;
  BAD_TOKEN_STATE = $bd;
  BAD_TABLE_PROPERTIES = $be;
  INDEX_DAMAGED = $bf;
  PASSWORD_EXPIRED = $c0;
  NO_KEY_FOUND = $c1;
  DIFFERENT_KEY = $c2;
  ASSERTION_FAILED = $c3;
  SQ_INVALID_CURSOR_STATE = $c4; { 24000, C-H }
  SQ_SAVEPOINT_INVAL_SPEC = $c5; { 3B001  C-H }
  SQ_SAVEPOINT_TOO_MANY = $c6; { 3B002 }
  SQ_TRANS_STATE_ACTIVE = $c7; { 25001, C-H }
  SQ_INVAL_TRANS_TERM = $c8; { 2D000, C-H }
  SQ_TRANS_STATE_RDONLY = $c9; { 25006, C-H }
  SQ_NUM_VAL_OUT_OF_RANGE = $ca; { 22003, C-H }
  SQ_INV_CHAR_VAL_FOR_CAST = $cb; { 22018, C-H }
  SQ_STRING_DATA_RIGHT_TRU = $cc; { 22001, C-H }
  SQ_DIVISION_BY_ZERO = $cd; { 22012, C-H }
  SQ_CARDINALITY_VIOLATION = $ce; { 21000, C-H }
  SQ_INVALID_ESCAPE_CHAR = $cf; { 22019, C-H }
  SQ_CASE_NOT_FOUND_STMT = $d0; { 20000, C-H }
  SQ_UNHANDLED_USER_EXCEPT = $d1; { 45000 }
  SQ_RESIGNAL_HND_NOT_ACT = $d2; { 0K000, C-H }
  SQ_EXT_ROUT_NOT_AVAIL = $d3; { 38001, C-H }
  SQ_NO_RETURN_IN_FNC = $d4; { 2F001, C-H }
  COLUMN_NOT_EDITABLE = $d5;
  SQ_TRIGGERED_ACTION = $d6; { 09000 }
  REPLICATION_NOT_RUNNING = $d7;
  SQ_INVALID_CURSOR_NAME = $d9; { 34000, C-H }
  ROLE_FROM_DIFF_APPL = $da;
  SEQUENCE_EXHAUSTED = $db;
  NO_CURRENT_VAL = $dc;
  NO_WWW_LICENCE = $dd;
  NO_MORE_INTRANET_LICS = $de;
  LIBRARY_ACCESS_DISABLED = $df; { C-H }
  LIBRARY_NOT_FOUND = $e0; { C-H }
  LANG_SUPP_NOT_AVAIL = $e1;
  CONVERSION_NOT_SUPPORTED = $e2;
  NO_FULLTEXT_LICENCE = $e3;
  WONT_RUN_AS_ROOT = $e4; { C-H }
  NOTHING_TO_REPL = $e5;
  OBJECT_VERSION_NOT_AVAILABLE = $e6;
  NO_REPL_UNIKEY = $e7;
  FRAMES_EXHAUSTED = $e8;
  NO_CONF_RIGHT = $e9;
  NO_SECUR_RIGHT = $ea;
  ACCOUNT_DISABLED = $eb;
  SCHEMA_IS_OPEN = $ec;
  ERROR_IN_FUNCTION_CALL = $ed;
  LAST_DB_ERROR = ERROR_IN_FUNCTION_CALL;
  FIRST_MAIL_ERROR = 500; { client mail error numbers }
  MAIL_NOT_INITIALIZED = 500;
  MAIL_ERROR = 501;
  MAIL_NOT_REMOTE = 502;
  MAIL_TYPE_INVALID = 503;
  MAIL_LOGON_FAILED = 504;
  MAIL_BAD_PROFILE = 505;
  MAIL_BAD_USERID = 506;
  MAIL_NO_ADDRESS = 507;
  MAIL_FILE_NOT_FOUND = 508;
  MAIL_SYSTEM_ACCOUNT = 509;
  MAIL_DIAL_ERROR = 510;
  MAIL_ALREADY_INIT = 511;
  MAIL_PROFILE_NOTFND = 512;
  MAIL_PROFSTR_NOTFND = 513;
  MAIL_INVALIDPATH = 514;
  MAIL_SOCK_IO_ERROR = 515;
  MAIL_UNKNOWN_SERVER = 516;
  MAIL_CONNECT_FAILED = 517;
  MAIL_NO_MORE_FILES = 518;
  MAIL_FILE_DELETED = 519;
  MAIL_BOX_LOCKED = 520;
  MAIL_MSG_NOT_FOUND = 521;
  MAIL_UNK_MSG_FMT = 522;
  MAIL_DLL_NOT_FOUND = 523;
  MAIL_FUNC_NOT_FOUND = 524;
  MAIL_NO_SUPPORT = 525;
  MAIL_REQ_QUEUED = 526;
  MAIL_PROFILE_EXISTS = 527;
{ Cisla varovani }
const
  NO_WARNING = 0;
  WAS_IN_TRANS = 1; { zahajeni transakce provedeno uvnitr transakce  }
  NOT_IN_TRANS = 2; { ukonceni transakce provedeno mimo transakci  }
  ERROR_IN_CONSTRS = 3; { integritni omezeni na tabulce je chybne }
  IS_NOT_DEL = 4; { zaznam nelze obnovit protoze neni zruseny   }
  ERROR_IN_DEFVAL = 5; { implicitni hodnota sloupce je chybna }
  WORKING_WITH_DELETED_RECORD = 6; { prace se zrusenym zaznamem }
  RENAME_IN_DEFIN = 7; { objekt je treba prejmenovat v definici }
  IS_DEL = 8; { zaznam nelze zrusit protoze neni platny  }
  NO_BIPTR = 32; { k obousmernemu ukazateli neexistuje protismerny ukazatel }
  INDEX_OOR = 64; { index prekracuje pocet hodnot multiatributu }
  internal_IS_ERROR = 128; { hodnota Sz_warning, kdyz doslo k chybe }
{ Hodnoty vracene funkci link_kernel a interf_init }
const
  KSE_OK = 0; { Bez chyby }
  KSE_WINDOWS = 1; { Nelze otevrit okno serveru pod Windows }
  KSE_FAKE_SERVER = 2; { Falesny SQL server - neproslo overeni identity }
  KSE_ENCRYPTION_FAILURE = 3; { Neshoda mezi klientem a serverem o sifrovani komunikace }
  KSE_WINEXEC = 4; { Klientovi se nepodarilo spustit lokalni SQL server }
  KSE_NO_MEMORY = 5; { Chyba pri alokaci pameti }
  KSE_CDROM_FIL = 6; { Databazovy soubor byl konvertovan pro CD ROM a nebyl korektne instalovan }
  KSE_NO_FIL = 7; { Server nelze spustit, jeho jmeno neni registrovano }
  KSE_DAMAGED = 8; { Databazovy soubor je vazne poskozen }
  KSE_SYSTEM_CHARSET = 9; { Platforma nepodporuje systemovy jazyk databazoveho souboru }
  KSE_SERVER_CLOSED = 10; { Pristup na server je docasne uzamcen }
  KSE_BAD_VERSION = 11; { Verze databazoveho souboru neodpovida verzi serveru }
  KSE_NETWORK_INIT = 12; { Nelze inicializovat zvoleny sitovy protokol }
  KSE_CLIENT_SERVER_INCOMP = 13; { Verze serveru neni kompatibilni s verzi klienta }
  KSE_NOSERVER = 14; { Server nebyl nalezen v siti ani pro nej neni specifikovana platna IP adresa }
  KSE_CONNECTION = 15; { Nepodarilo se navazat spojeni s SQL serverem }
  KSE_NOTASK = 16; { Prekroceno maximum spojeni mezi klienty a serverem }
  KSE_UNSPEC = 17; { Interni chyba spojeni }
  KSE_NO_NETWORK_LICENCE = 18; { Server nema licenci pro sitovy pristup }
  KSE_NO_HTTP_TUNNEL = 19; { HTTP tunel neni zapnut na serveru (na stejnem portu bezi web XML interface) }
  KSE_MAXNCB = 22; { Neni dost ridicich bloku NetBIOS }
  KSE_DBASE_OPEN = 23; { Nad stejnou databazi jiz pracuje jiny server nebo nedostatek prav k db souboru }
  KSE_SERVER_NAME_USED = 24; { V siti jiz bezi databazovy server stejneho jmena  }
  KSE_START_THREAD = 25; { Nelze spustit dalsi vlakno na serveru }
  KSE_SYNCHRO_OBJ = 26; { Nelze vytvorit synchronizacni objekt }
  KSE_MAPPING = 27; { Nelze mapovat pametovy soubor }
  KSE_TIMEOUT = 29; { Lokalni server neodpovedel v casovem limitu }
  KSE_NO_WINSOCK = 30; { Knihovna TCP/IP socketu nefunguje }
  KSE_WINSOCK_ERROR = 31; { Chyba pri praci se socketem }
  KSE_NETBIOS_NAME = 34; { Nelze pridat jmeno pro NetBIOS }
  KSE_FWNOTFOUND = 35; { Nenalezen SOCKS server (firewall) }
  KSE_FWCOMM = 36; { Chyba pri komunikaci se SOCKS serverem }
  KSE_FWDENIED = 37; { SOCKS server (firewall) odmitl vytvorit spojeni na SQL server }
  KSE_BAD_PASSWORD = 38; { Zadano chybne heslo k databazovemu souboru }
  KSE_ESCAPED = 39; { Upusteno od startu serveru }
  KSE_NO_IPX = 40; { Protokol IPX neni instalovan  }
  KSE_CANNOT_CREATE_FIL = 42; { Server nemuze vytvorit databazovy soubor }
  KSE_CANNOT_OPEN_FIL = 43; { Server nemuze otevrit databazovy soubor }
  KSE_CANNOT_OPEN_TRANS = 44; { Server nemuze otevrit transakcni soubor }
  KSE_IP_FILTER = 45; { Pristup z teto IP adresy na server neni povolen }
  KSE_INST_KEY = 47; { Instalacni klic pro databazi neni uveden nebo neni platny }
  KSE_NO_SERVER_LICENCE = 48; { SQL server nema licenci pro provoz }
  KSE_LAST = 49;
{ Cisla generickych chyb }
const
  GENERR_DAD_DESIGN = 6000; { Chyba v navrhu DAD }
  GENERR_XERCES_INIT = 6001; { Chyba inicializaci utilit xerces }
  GERERR_XML_PARSING = 6002; { Chyba pri analyze XML souboru }
  GERERR_DAD_PARSING = 6003; { Chyba v XML strukture DAD }
  GERERR_ODBC_DRIVER = 6004; { Chyba vracena ODBC driverem }
  GERERR_FULLTEXT_CONV = 6005; { Chyba vracena konvertorem dokumentu }
  GERERR_REGEX_PATTERN = 6006; { Chyba kompilace regularniho vyrazu }
  FIRST_GENERIC_ERROR = GENERR_DAD_DESIGN;
  LAST_GENERIC_ERROR = 6999;
{ Typy (vyuziji se pri volani funkce Enum_attributes) }
const
  ATT_BOOLEAN = 1; { Boolean }
  ATT_CHAR = 2; { Char }
  ATT_INT16 = 3; { Short }
  ATT_INT32 = 4; { Integer }
  ATT_MONEY = 5; { Money }
  ATT_FLOAT = 6; { Real }
  ATT_STRING = 7; { String + size }
  ATT_BINARY = 10; { Binary + size }
  ATT_DATE = 11; { Date }
  ATT_TIME = 12; { Time }
  ATT_TIMESTAMP = 13; { Timestamp }
  ATT_PTR = 14; { Pointer }
  ATT_BIPTR = 15; { Bipointer }
  ATT_FIRSTSPEC = 16;
  ATT_AUTOR = 16; { sledovaci atribut: Autorizace }
  ATT_DATIM = 17; { sledovaci atribut: Datumovka }
  ATT_HIST = 18; { sledovaci atribut: Historie }
  ATT_LASTSPEC = 18;
  ATT_FIRST_HEAPTYPE = 18;
  ATT_RASTER = 19; { Raster }
  ATT_TEXT = 20; { Text }
  ATT_NOSPEC = 21; { Nospec }
  ATT_SIGNAT = 22; { Signature }
  ATT_LAST_HEAPTYPE = 22;
  ATT_INT8 = 45; { Tiny Integer }
  ATT_INT64 = 46; { Huge Integer }
  ATT_DOMAIN = 47; { Domain }
  ATT_AFTERLAST = 48;
const ATT_HANDLE = ATT_INT32;

{ pristup serveru k promennym klienta }
{ smer predavani hodnoty promennych klienta }
type t_parmode = (MODE_IN=1, MODE_OUT=2, MODE_INOUT=3 );
{ popis promenne klienta pristupne pro SQL server }
type t_clivar = record
  name : tname; { jmeno promenne (velka pismena) }
  mode : t_parmode; { zpusob predavani hodnoty promenne }
  wbtype : Integer; { typ promenne }
  specif : uns32; { specificke udaje k typu (delka retezce, pocet desetinnych mist,...), t_specif::opqval }
  buf : Pointer; { ukazatel na buffer s hodnotou promenne }
  buflen : Integer; { delka bufferu buf }
  actlen : Integer; { skutecna delka hodnoty - plati pouze pro typy promenne velikosti }
end;
type p_clivar = ^t_clivar;

{ parametr funkce cd_Get_server_info }
const
  OP_GI_SERVER_PLATFORM = 0;
  PLATFORM_WINDOWS = 0;
  PLATFORM_NETWARE = 1;
  PLATFORM_LINUX = 2;
  PLATFORM_FREEBSD = 3;
  PLATFORM_LINUX64 = $12;
  OP_GI_LICS_CLIENT = 2;
  OP_GI_LICS_WWW = 3;
  OP_GI_LICS_FULLTEXT = 4;
  OP_GI_LICS_SERVER = 5;
  OP_GI_INST_KEY = 6;
  OP_GI_SERVER_LIC = 7;
  OP_GI_TRIAL_ADD_ON = 8;
  OP_GI_TRIAL_FULLTEXT = 9;
  OP_GI_VERSION_1 = 10;
  OP_GI_VERSION_2 = 11;
  OP_GI_VERSION_3 = 12;
  OP_GI_VERSION_4 = 13;
  OP_GI_PID = 14;
  OP_GI_SERVER_NAME = 15;
  OP_GI_DISK_SPACE = 16;
  OP_GI_CLUSTER_SIZE = 17;
  OP_GI_LICS_USING = 18;
  OP_GI_OWNED_CURSORS = 19;
  OP_GI_FIXED_PAGES = 20;
  OP_GI_FIXES_ON_PAGES = 21;
  OP_GI_FRAMES = 22;
  OP_GI_FREE_CLUSTERS = 23;
  OP_GI_USED_MEMORY = 24;
  OP_GI_TRIAL_REM_DAYS = 25;
  OP_GI_INSTALLED_TABLES = 30;
  OP_GI_LOCKED_TABLES = 31;
  OP_GI_TABLE_LOCKS = 32;
  OP_GI_TEMP_TABLES = 33;
  OP_GI_OPEN_CURSORS = 34;
  OP_GI_PAGE_LOCKS = 35;
  OP_GI_LOGIN_LOCKS = 36;
  OP_GI_CLIENT_NUMBER = 37;
  OP_GI_BACKGROUD_OPER = 38;
  OP_GI_SYS_CHARSET = 39;
  OP_GI_MINIMAL_CLIENT_VERSION = 40;
  OP_GI_SERVER_UPTIME = 41;
  OP_GI_PROFILING_ALL = 42;
  OP_GI_PROFILING_LINES = 43;
  OP_GI_SERVER_HOSTNAME = 44;
  OP_GI_HTTP_RUNNING = 45;
  OP_GI_WEB_RUNNING = 46;
  OP_GI_NET_RUNNING = 47;
  OP_GI_IPC_RUNNING = 48;
  OP_GI_BACKING_UP = 49;

{ typ parametru cd_Insert_record_ex }
type t_column_val_descr = record
  column_number : Integer;
  column_value : Pointer;
  value_length : Integer;
end;

  p_column_val_descr = ^t_column_val_descr;
  a_column_val_descr = array of t_column_val_descr;

{ situace pro trasovani }
const
  TRACE_USER_ERROR = $00000001; { E }
  TRACE_SERVER_FAILURE = $00000002; { E user ignored }
  TRACE_NETWORK_GLOBAL = $00000004; { T user ignored - tracing global network events }
  TRACE_REPLICATION = $00000008; { T }
  TRACE_DIRECT_IP = $00000010; { T user ignored }
  TRACE_USER_MAIL = $00000020; { E }
  TRACE_SQL = $00000040; { T }
  TRACE_LOGIN = $00000080; { T }
  TRACE_CURSOR = $00000100; { T }
  TRACE_IMPL_ROLLBACK = $00000200; { T }
  TRACE_LOG_WRITE = $00000400; { C }
  TRACE_NETWORK_ERROR = $00000800; { E }
  TRACE_REPLIC_MAIL = $00001000; { T user ignored }
  TRACE_REPLIC_COPY = $00002000; { T user ignored }
  TRACE_START_STOP = $00004000; { T user ignored }
  TRACE_REPL_CONFLICT = $00008000; { E user ignored }
  TRACE_SERVER_INFO = $00010000; { T user ignored }
  TRACE_READ = $00020000; { object trace }
  TRACE_WRITE = $00040000; { object trace }
  TRACE_INSERT = $00080000; { object trace }
  TRACE_DELETE = $00100000; { object trace }
  TRACE_BCK_OBJ_ERROR = $00200000; { E user ignored }
  TRACE_PROCEDURE_CALL = $00400000; { T }
  TRACE_TRIGGER_EXEC = $00800000; { T }
  TRACE_USER_WARNING = $01000000; { T }
  TRACE_PIECES = $02000000; { T, internal }
  TRACE_LOCK_ERROR = $04000000; { E }
  TRACE_WEB_REQUEST = $08000000; { T }
{ result of cd_Wait_for_event }
const
  WAIT_EVENT_OK = 0;
  WAIT_EVENT_TIMEOUT = 1;
  WAIT_EVENT_CANCELLED = 2;
  WAIT_EVENT_SHUTDOWN = 3;
  WAIT_EVENT_ERROR_BUFFER_SIZE = 4;
  WAIT_EVENT_ERROR = 5;
  WAIT_EVENT_NOT_SIG = 6; { timeout==0 }

{ Parametr Set_translation_callback }
type t_translation_callback = procedure ( message:Pointer );


{ e-mail }
const
  WBL_READRCPT = $0001;
  WBL_DELAFTER = $0002;
  WBL_PRILOW = $0004;
  WBL_PRIHIGH = $0008;
  WBL_SENSPERS = $0010;
  WBL_SENSPRIV = $0020;
  WBL_SENSCONF = $0040;
  WBL_REMSENDNOW = $0080;
  WBL_MSGINFILE = $0100;
  WBL_VIEWED = $0200;
  WBL_FAX = $0400;
  WBL_REMOTE = $0800;
  WBL_DELREQ = $1000;
  WBMT_602 = $00000001;
  WBMT_MAPI = $00000002;
  WBMT_SMTPOP3 = $00000004;
  WBMT_602REM = $00010000;
  WBMT_602SP3 = $00020000;
  WBMT_DIALUP = $00040000;
  ATML_ID = 1;
  ATML_SUBJECT = 2;
  ATML_SENDER = 3;
  ATML_RECIPIENT = 4;
  ATML_CREDATE = 5;
  ATML_CRETIME = 6;
  ATML_RCVDATE = 7;
  ATML_RCVTIME = 8;
  ATML_SIZE = 9;
  ATML_FILECNT = 10;
  ATML_FLAGS = 11;
  ATML_STAT = 12;
  ATML_MSGID = 13;
  ATML_BODY = 14;
  ATMF_ID = 1;
  ATMF_NAME = 2;
  ATMF_SIZE = 3;
  ATMF_DATE = 4;
  ATMF_TIME = 5;
  MBL_BODY = 1;
  MBL_FILES = 2;
  MBS_NEW = 0;
  MBS_OLD = 1;
  MBS_DELETED = 2;
type enum_attr = function ( attrname:PChar; attrtype:uns8; attrmult:uns8; attrspecif:uns16 ):Boolean; stdcall;
type enum_attr_ex = function ( attrname:PChar; attrtype:uns8; attrmult:uns8; attrspecif:t_specif; user_data:Pointer ):Boolean; stdcall;

{ organizacni funkce }
procedure start_package(  ); cdecl; external WBKERNEL;
procedure send_package(  ); cdecl; external WBKERNEL;
procedure concurrent( state:Boolean ); cdecl; external WBKERNEL;
function answered(  ) : Boolean; cdecl; external WBKERNEL;
function waiting( timeout:sig32 ) : Boolean; cdecl; external WBKERNEL;
{ chyby a varovani }
function Sz_error(  ) : Integer; cdecl; external WBKERNEL;
function Sz_warning(  ) : Integer; cdecl; external WBKERNEL;
{ vyhledani objektu }
function Find2_object( name:PChar; var appl_id:uns8; category:tcateg; var position:tobjnum ) : Boolean; cdecl; external WBKERNEL;
function Find_object( name:PChar; category:tcateg; var position:tobjnum ) : Boolean; cdecl; external WBKERNEL;
function Find_object_by_id( const uuid:WBUUID; category:tcateg; var position:tobjnum ) : Boolean; cdecl; external WBKERNEL;
{ prace s kurzory }
function Open_cursor( cursdef:tobjnum; var curs:tcursnum ) : Boolean; cdecl; external WBKERNEL;
function Open_cursor_direct( query:PChar; var curs:tcursnum ) : Boolean; cdecl; external WBKERNEL;
function Close_cursor( curs:tcursnum ) : Boolean; cdecl; external WBKERNEL;
function Open_subcursor( supercurs:tcursnum; subcurdef:PChar; var subcurs:tcursnum ) : Boolean; cdecl; external WBKERNEL;
function Add_record( curs:tcursnum; var recs; numofrecs:Integer ) : Boolean; cdecl; external WBKERNEL;
function Super_recnum( subcursor:tcursnum; supercursor:tcursnum; subrecnum:trecnum; var superrecnum:trecnum ) : Boolean; cdecl; external WBKERNEL;
function Translate( curs:tcursnum; crec:trecnum; tbord:Integer; var trec:trecnum ) : Boolean; cdecl; external WBKERNEL;
{ prace se zaznamy }
function Append( curs:tcurstab ) : trecnum; cdecl; external WBKERNEL;
function Insert( curs:tcurstab ) : trecnum; cdecl; external WBKERNEL;
function Look_up( curs:tcursnum; attrname:PChar; var res ) : trecnum; cdecl; external WBKERNEL;
function Delete( curs:tcurstab; position:trecnum ) : Boolean; cdecl; external WBKERNEL;
function Undelete( table:ttablenum; position:trecnum ) : Boolean; cdecl; external WBKERNEL;
function Delete_all_records( curs:tcurstab ) : Boolean; cdecl; external WBKERNEL;
function Rec_cnt( curs:tcurstab; var recnum:trecnum ) : Boolean; cdecl; external WBKERNEL;
{ cteni a zapis dat }
function Read( cursnum:tcurstab; position:trecnum; attr:tattrib; var access; var buffer ) : Boolean; cdecl; external WBKERNEL;
function Write( cursnum:tcurstab; position:trecnum; attr:tattrib; var access; var buffer; datasize:uns32 ) : Boolean; cdecl; external WBKERNEL;
function Read_ind( cursnum:tcurstab; position:trecnum; attr:tattrib; index:t_mult_size; var data ) : Boolean; cdecl; external WBKERNEL;
function Write_ind( cursnum:tcurstab; position:trecnum; attr:tattrib; index:t_mult_size; var data; datasize:uns32 ) : Boolean; cdecl; external WBKERNEL;
function Read_ind_cnt( cursnum:tcurstab; position:trecnum; attr:tattrib; var count:t_mult_size ) : Boolean; cdecl; external WBKERNEL;
function Write_ind_cnt( cursnum:tcurstab; position:trecnum; attr:tattrib; count:t_mult_size ) : Boolean; cdecl; external WBKERNEL;
function Read_var( cursnum:tcurstab; position:trecnum; attr:tattrib; index:t_mult_size; start:t_varcol_size; size:t_varcol_size; var buf; var psize:t_varcol_size ) : Boolean; cdecl; external WBKERNEL;
function Write_var( cursnum:tcurstab; position:trecnum; attr:tattrib; index:t_mult_size; start:t_varcol_size; size:t_varcol_size; var buf ) : Boolean; cdecl; external WBKERNEL;
function Read_len( cursnum:tcurstab; position:trecnum; attr:tattrib; index:t_mult_size; var size:t_varcol_size ) : Boolean; cdecl; external WBKERNEL;
function Write_len( cursnum:tcurstab; position:trecnum; attr:tattrib; index:t_mult_size; size:t_varcol_size ) : Boolean; cdecl; external WBKERNEL;
function Read_record( cursnum:tcurstab; position:trecnum; var buf; datasize:uns32 ) : Boolean; cdecl; external WBKERNEL;
function Write_record( cursnum:tcurstab; position:trecnum; var buf; datasize:uns32 ) : Boolean; cdecl; external WBKERNEL;
function Write_record_ex( cursnum:tcurstab; position:trecnum; colcount:Cardinal; const colvaldescr:p_column_val_descr ) : Boolean; cdecl; external WBKERNEL;
function Insert_record_ex( curs:tcurstab; var position:trecnum; colcount:Cardinal; const colvaldescr:p_column_val_descr ) : Boolean; cdecl; external WBKERNEL;
function Append_record_ex( curs:tcurstab; var position:trecnum; colcount:Cardinal; const colvaldescr:p_column_val_descr ) : Boolean; cdecl; external WBKERNEL;
{ prava }
function GetSet_privils( user_group_role:tobjnum; subject_categ:tcateg; table:ttablenum; recnum:trecnum; operation:t_oper; var privils:uns8 ) : Boolean; cdecl; external WBKERNEL;
{ transakce }
function Start_transaction(  ) : Boolean; cdecl; external WBKERNEL;
function Commit(  ) : Boolean; cdecl; external WBKERNEL;
function Roll_back(  ) : Boolean; cdecl; external WBKERNEL;
function Set_transaction_isolation_level( level:t_isolation ) : Boolean; cdecl; external WBKERNEL;
{ zamky }
function Read_lock_record( curs:tcurstab; position:trecnum ) : Boolean; cdecl; external WBKERNEL;
function Read_unlock_record( curs:tcurstab; position:trecnum ) : Boolean; cdecl; external WBKERNEL;
function Write_lock_record( curs:tcurstab; position:trecnum ) : Boolean; cdecl; external WBKERNEL;
function Write_unlock_record( curs:tcurstab; position:trecnum ) : Boolean; cdecl; external WBKERNEL;
function Read_lock_table( curs:tcurstab ) : Boolean; cdecl; external WBKERNEL;
function Read_unlock_table( curs:tcurstab ) : Boolean; cdecl; external WBKERNEL;
function Write_lock_table( curs:tcurstab ) : Boolean; cdecl; external WBKERNEL;
function Write_unlock_table( curs:tcurstab ) : Boolean; cdecl; external WBKERNEL;
{ prace s objekty }
function Insert_object( name:PChar; category:tcateg; var objnum:tobjnum ) : Boolean; cdecl; external WBKERNEL;
function Relist_objects(  ) : Boolean; cdecl; external WBKERNEL;
function GetSet_group_role( user_or_group:tobjnum; group_or_role:tobjnum; subject2:tcateg; operation:t_oper; var relation:uns32 ) : Boolean; cdecl; external WBKERNEL;
function Create_user( logname:PChar; name1:PChar; name2:PChar; name3:PChar; identif:PChar; const homesrv:WBUUID; password:PChar; var objnum:tobjnum ) : Boolean; cdecl; external WBKERNEL;
function Set_password( username:PChar; password:PChar ) : Boolean; cdecl; external WBKERNEL;
function Create_link( sourcename:PChar; sourceappl:PChar; category:tcateg; linkname:PChar ) : Boolean; cdecl; external WBKERNEL;
function Create2_link( sourcename:PChar; var sourceapplid:uns8; category:tcateg; linkname:PChar ) : Boolean; cdecl; external WBKERNEL;
function Set_appl_starter( categ:tcateg; objname:PChar ) : Boolean; cdecl; external WBKERNEL;
function Encrypt_object( objnum:tobjnum; category:tcateg ) : Boolean; cdecl; external WBKERNEL;
{ sledovani stavu }
function Available_memory( local:Boolean ) : sig32; cdecl; external WBKERNEL;
function Used_memory( local:Boolean ) : sig32; cdecl; external WBKERNEL;
function Owned_cursors(  ) : Integer; cdecl; external WBKERNEL;
function Database_integrity( repair:Boolean; var lost_blocks:uns32; var lost_dheap:uns32; var nonex_blocks:uns32; var cross_link:uns32; var damaged_tabdef:uns32 ) : Boolean; cdecl; external WBKERNEL;
function Get_info( var kinf:kernel_info ) : Boolean; cdecl; external WBKERNEL;
function GetSet_fil_size( operation:t_oper; var size:uns32 ) : Boolean; cdecl; external WBKERNEL;
function GetSet_fil_blocks( operation:t_oper; var size:uns32 ) : Boolean; cdecl; external WBKERNEL;
function Who_am_I(  ) : PChar; cdecl; external WBKERNEL;
function Am_I_db_admin(  ) : Boolean; cdecl; external WBKERNEL;
function WinBase602_version(  ) : sig32; cdecl; external WBKERNEL;
procedure Enable_task_switch( enable:Boolean ); cdecl; external WBKERNEL;
function Compact_database( margin:Integer ) : Boolean; cdecl; external WBKERNEL;
function Log_write( text:PChar ) : Boolean; cdecl; external WBKERNEL;
function Connection_speed_test( var requests:Integer; var kbytes:Integer ) : Boolean; cdecl; external WBKERNEL;
function Appl_inst_count( var count:uns32 ) : Boolean; cdecl; external WBKERNEL;
function Get_logged_user( index:Integer; username:PChar; applname:PChar; var state:Integer ) : Boolean; cdecl; external WBKERNEL;
function Get_server_info( info_type:Integer; var buffer; buffer_size:Cardinal ) : Boolean; cdecl; external WBKERNEL;
function Uninst_table( table:ttablenum ) : Boolean; cdecl; external WBKERNEL; { POZOR: zastarala funkce }
{ obalka aplikace v externim jazyku }
function link_kernel( path:PChar; display:Integer ) : Integer; cdecl; external WBKERNEL;
procedure unlink_kernel(  ); cdecl; external WBKERNEL;
function interf_init( cdp:cdp_t; user:Integer ) : Integer; cdecl; external WBKERNEL;
procedure interf_close(  ); cdecl; external WBKERNEL;
procedure core_release(  ); cdecl; external WBKERNEL;
function Login( username:PChar; password:PChar ) : Boolean; cdecl; external WBKERNEL;
function Logout(  ) : Boolean; cdecl; external WBKERNEL;
function Set_application( applname:PChar ) : Boolean; cdecl; external WBKERNEL;
{ jine funkce serveru }
function SQL_execute( statement:PChar; var results ) : Boolean; cdecl; external WBKERNEL;
function SQL_prepare( statement:PChar; var handle:uns32 ) : Boolean; cdecl; external WBKERNEL;
function SQL_exec_prepared( handle:uns32; var results; var count:Integer ) : Boolean; cdecl; external WBKERNEL;
function SQL_drop( handle:uns32 ) : Boolean; cdecl; external WBKERNEL;
function Set_sql_option( optmask:uns32; optval:uns32 ) : Boolean; cdecl; external WBKERNEL;
function Get_sql_option( var optval:uns32 ) : Boolean; cdecl; external WBKERNEL;
function Message_to_clients( msg:PChar ) : Boolean; cdecl; external WBKERNEL;
function Set_progress_report_modulus( modulus:Cardinal ) : Boolean; cdecl; external WBKERNEL;
function Get_property_value( owner:PChar; name:PChar; num:Integer; buffer:PChar; buffer_size:Cardinal; var valsize:Integer ) : Boolean; cdecl; external WBKERNEL;
function Set_property_value( owner:PChar; name:PChar; num:Integer; value:PChar; valsize:sig32 ) : Boolean; cdecl; external WBKERNEL;
procedure Invalidate_cached_table_info(  ); cdecl; external WBKERNEL;


function wb_Break(  ) : Boolean; cdecl; external WBKERNEL name 'Break';


{ manipulace s tabulkou }
function Enable_index( table:ttablenum; which:Integer; enable:Boolean ) : Boolean; cdecl; external WBKERNEL;
function Free_deleted( table:ttablenum ) : Boolean; cdecl; external WBKERNEL;
function Compact_table( table:ttablenum ) : Boolean; cdecl; external WBKERNEL;
{ agregacni funkce }
function C_sum( curs:tcursnum; attrname:PChar; condition:PChar; var result ) : Boolean; cdecl; external WBKERNEL;
function C_max( curs:tcursnum; attrname:PChar; condition:PChar; var result ) : Boolean; cdecl; external WBKERNEL;
function C_min( curs:tcursnum; attrname:PChar; condition:PChar; var result ) : Boolean; cdecl; external WBKERNEL;
function C_count( curs:tcursnum; attrname:PChar; condition:PChar; var result:trecnum ) : Boolean; cdecl; external WBKERNEL;
function C_avg( curs:tcursnum; attrname:PChar; condition:PChar; var result ) : Boolean; cdecl; external WBKERNEL;
{ ODBC }
function ODBC_open_cursor( connection:uns32; var curs:tcursnum; query:PChar ) : Boolean; cdecl; external WBKERNEL;
function ODBC_find_connection( dsn_name:PChar ) : uns32; cdecl; external WBKERNEL;
function ODBC_create_connection( dsn_name:PChar ) : uns32; cdecl; external WBKERNEL;
function ODBC_direct_connection( conn_string:PChar ) : uns32; cdecl; external WBKERNEL;
{ informace o sloupcich }
function Enum_attributes( table:ttablenum; callback:enum_attr ) : Boolean; cdecl; external WBKERNEL;
function Enum_attributes_ex( table:ttablenum; callback:enum_attr_ex; user_data:Pointer ) : Boolean; cdecl; external WBKERNEL;
function Attribute_info( table:ttablenum; attrname:PChar; var attrnum:tattrib; var attrtype:uns8; var attrmult:uns8; var attrspecif:uns16 ) : Boolean; cdecl; external WBKERNEL;
function Attribute_info_ex( table:ttablenum; attrname:PChar; var attrnum:tattrib; var attrtype:uns8; var attrmult:uns8; var attrspecif:t_specif ) : Boolean; cdecl; external WBKERNEL;
{ podpisy a replikace }
function Signature( hParent:HWND; cursor:tcursnum; recnum:trecnum; attr:tattrib; create:Integer; var param ) : Boolean; cdecl; external WBKERNEL;
function Repl_control( optype:Integer; opparsize:Integer; var opparam ) : Boolean; cdecl; external WBKERNEL;
function Replicate( ServerName:PChar; ApplName:PChar; pull:Boolean ) : Boolean; cdecl; external WBKERNEL;
function Skip_repl( ServerName:PChar; ApplName:PChar ) : Boolean; cdecl; external WBKERNEL;
function Reset_replication(  ) : Boolean; cdecl; external WBKERNEL;
function GetSet_next_user( curs:tcurstab; position:trecnum; attr:tattrib; operation:t_oper; valtype:t_valtype; var value ) : Boolean; cdecl; external WBKERNEL;
{ prace s e-maily a e-mailovou schrankou }
function MailOpenInBox( var lpMailBox:Integer ) : Longword; cdecl; external WBKERNEL;
function MailBoxLoad( MailBox:Integer; Flags:Longword ) : Longword; cdecl; external WBKERNEL;
function MailBoxGetMsg( MailBox:Integer; MsgID:Longword ) : Longword; cdecl; external WBKERNEL;
function MailBoxGetMsgEx( MailBox:Integer; MsgID:Longword; Flags:Longword ) : Longword; cdecl; external WBKERNEL;
function MailBoxGetFilInfo( MailBox:Integer; MsgID:Longword ) : Longword; cdecl; external WBKERNEL;
function MailBoxSaveFileAs( MailBox:Integer; MsgID:Longword; FilIdx:Longword; FilName:PChar; DstPath:PChar ) : Longword; cdecl; external WBKERNEL;
function MailBoxSaveFileDBs( MailBox:Integer; MsgID:Longword; FilIdx:Longword; const FilName:PChar; const Table:PChar; const Attr:PChar; const Cond:PChar ) : Longword; cdecl; external WBKERNEL;
function MailBoxSaveFileDBr( MailBox:Integer; MsgID:Longword; FilIdx:Longword; const FilName:PChar; Table:tcurstab; Pos:trecnum; Attr:tattrib; Index:t_mult_size ) : Longword; cdecl; external WBKERNEL;
function MailBoxDeleteMsg( MailBox:Integer; MsgID:Longword; RecToo:Boolean ) : Longword; cdecl; external WBKERNEL;
function MailGetInBoxInfo( MailBox:Integer; mTblName:PChar; var mTblNum:ttablenum; fTblName:PChar; var fTblNum:ttablenum ) : Longword; cdecl; external WBKERNEL;
procedure MailCloseInBox( MailBox:Integer ); cdecl; external WBKERNEL;
function MailGetType(  ) : Longword; cdecl; external WBKERNEL;
function MailDial( PassWord:PChar ) : Longword; cdecl; external WBKERNEL;
function MailHangUp(  ) : Longword; cdecl; external WBKERNEL;
{ prace s e-mailovym profilem }
function MailCreateProfile( ProfileName:PChar; Temp:Boolean ) : Longword; cdecl; external WBKERNEL;
function MailDeleteProfile( ProfileName:PChar ) : Longword; cdecl; external WBKERNEL;
function MailSetProfileProp( ProfileName:PChar; PropName:PChar; PropValue:PChar ) : Longword; cdecl; external WBKERNEL;
function MailGetProfileProp( ProfileName:PChar; PropName:PChar; PropValue:PChar; ValSize:Integer ) : Longword; cdecl; external WBKERNEL;


{ varianta cd_ }
type t_docid32 = uns32;
type t_docid64 = uns64;
{ organizacni funkce }
procedure cd_start_package( cdp:cdp_t ); cdecl; external WBKERNEL;
procedure cd_send_package( cdp:cdp_t ); cdecl; external WBKERNEL;
function cd_concurrent( cdp:cdp_t; state:Boolean ) : Boolean; cdecl; external WBKERNEL;
function cd_answered( cdp:cdp_t ) : Boolean; cdecl; external WBKERNEL;
procedure cd_wait_for_answer( cdp:cdp_t ); cdecl; external WBKERNEL;
function cd_waiting( cdp:cdp_t; timeout:sig32 ) : Boolean; cdecl; external WBKERNEL;
{ chyby a varovani }
function cd_Sz_error( cdp:cdp_t ) : Integer; cdecl; external WBKERNEL;
function cd_Sz_warning( cdp:cdp_t ) : Integer; cdecl; external WBKERNEL;
function Get_error_num_text( xcdp:xcdp_t; err:Integer; buf:PChar; buflen:Cardinal ) : Boolean; cdecl; external WBKERNEL;
function Get_server_error_suppl( cdp:cdp_t; buf:PChar ) : Boolean; cdecl; external WBKERNEL;
function Get_server_error_context( cdp:cdp_t; level:Integer; var itype:Integer; var par1:Integer; var par2:Integer; var par3:Integer; var par4:Integer ) : Boolean; cdecl; external WBKERNEL;
function Get_server_error_context_text( cdp:cdp_t; level:Integer; buffer:PChar; buflen:Integer ) : Boolean; cdecl; external WBKERNEL;
function cd_Rolled_back( cdp:cdp_t; var rolled_back:LongBool ) : Boolean; cdecl; external WBKERNEL;
function cd_Transaction_open( cdp:cdp_t; var transaction_open:LongBool ) : Boolean; cdecl; external WBKERNEL;
{ vyhledani objektu }
function cd_Find2_object( cdp:cdp_t; name:PChar; var appl_id:uns8; category:tcateg; var position:tobjnum ) : Boolean; cdecl; external WBKERNEL;
function cd_Find_object( cdp:cdp_t; name:PChar; category:tcateg; var position:tobjnum ) : Boolean; cdecl; external WBKERNEL;
function cd_Find_object_by_id( cdp:cdp_t; const uuid:WBUUID; category:tcateg; var position:tobjnum ) : Boolean; cdecl; external WBKERNEL;
{ prace s kurzory }
function cd_Open_cursor( cdp:cdp_t; cursdef:tobjnum; var curs:tcursnum ) : Boolean; cdecl; external WBKERNEL;
function cd_Open_cursor_direct( cdp:cdp_t; query:PChar; var curs:tcursnum ) : Boolean; cdecl; external WBKERNEL;
function cd_Close_cursor( cdp:cdp_t; curs:tcursnum ) : Boolean; cdecl; external WBKERNEL;
function cd_Open_subcursor( cdp:cdp_t; supercurs:tcursnum; subcurdef:PChar; var subcurs:tcursnum ) : Boolean; cdecl; external WBKERNEL;
function cd_Add_record( cdp:cdp_t; curs:tcursnum; var recs; numofrecs:Integer ) : Boolean; cdecl; external WBKERNEL;
function cd_Super_recnum( cdp:cdp_t; subcursor:tcursnum; supercursor:tcursnum; subrecnum:trecnum; var superrecnum:trecnum ) : Boolean; cdecl; external WBKERNEL;
function cd_Translate( cdp:cdp_t; curs:tcursnum; crec:trecnum; tbord:Integer; var trec:trecnum ) : Boolean; cdecl; external WBKERNEL;
{ prace se zaznamy }
function cd_Append( cdp:cdp_t; curs:tcurstab ) : trecnum; cdecl; external WBKERNEL;
function cd_Insert( cdp:cdp_t; curs:tcurstab ) : trecnum; cdecl; external WBKERNEL;
function cd_Look_up( cdp:cdp_t; curs:tcursnum; attrname:PChar; var res ) : trecnum; cdecl; external WBKERNEL;
function cd_Delete( cdp:cdp_t; curs:tcurstab; position:trecnum ) : Boolean; cdecl; external WBKERNEL;
function cd_Undelete( cdp:cdp_t; table:ttablenum; position:trecnum ) : Boolean; cdecl; external WBKERNEL;
function cd_Delete_all_records( cdp:cdp_t; curs:tcurstab ) : Boolean; cdecl; external WBKERNEL;
function cd_Rec_cnt( cdp:cdp_t; curs:tcurstab; var recnum:trecnum ) : Boolean; cdecl; external WBKERNEL;
{ cteni a zapis dat }
function cd_Read( cdp:cdp_t; cursnum:tcurstab; position:trecnum; attr:tattrib; var access; var buffer ) : Boolean; cdecl; external WBKERNEL;
function cd_Write( cdp:cdp_t; cursnum:tcurstab; position:trecnum; attr:tattrib; var access; var buffer; datasize:uns32 ) : Boolean; cdecl; external WBKERNEL;
function cd_Read_ind( cdp:cdp_t; cursnum:tcurstab; position:trecnum; attr:tattrib; index:t_mult_size; var data ) : Boolean; cdecl; external WBKERNEL;
function cd_Write_ind( cdp:cdp_t; cursnum:tcurstab; position:trecnum; attr:tattrib; index:t_mult_size; var data; datasize:uns32 ) : Boolean; cdecl; external WBKERNEL;
function cd_Read_ind_cnt( cdp:cdp_t; cursnum:tcurstab; position:trecnum; attr:tattrib; var count:t_mult_size ) : Boolean; cdecl; external WBKERNEL;
function cd_Write_ind_cnt( cdp:cdp_t; cursnum:tcurstab; position:trecnum; attr:tattrib; count:t_mult_size ) : Boolean; cdecl; external WBKERNEL;
function cd_Read_var( cdp:cdp_t; cursnum:tcurstab; position:trecnum; attr:tattrib; index:t_mult_size; start:t_varcol_size; size:t_varcol_size; var buf; var psize:t_varcol_size ) : Boolean; cdecl; external WBKERNEL;
function cd_Write_var( cdp:cdp_t; cursnum:tcurstab; position:trecnum; attr:tattrib; index:t_mult_size; start:t_varcol_size; size:t_varcol_size; var buf ) : Boolean; cdecl; external WBKERNEL;
function cd_Write_lob( cdp:cdp_t; cursnum:tcurstab; position:trecnum; attr:tattrib; size:t_varcol_size; var buf ) : Boolean; cdecl; external WBKERNEL;
function cd_Read_len( cdp:cdp_t; cursnum:tcurstab; position:trecnum; attr:tattrib; index:t_mult_size; var size:t_varcol_size ) : Boolean; cdecl; external WBKERNEL;
function cd_Write_len( cdp:cdp_t; cursnum:tcurstab; position:trecnum; attr:tattrib; index:t_mult_size; size:t_varcol_size ) : Boolean; cdecl; external WBKERNEL;
function cd_Read_record( cdp:cdp_t; cursnum:tcurstab; position:trecnum; var buf; datasize:uns32 ) : Boolean; cdecl; external WBKERNEL;
function cd_Write_record( cdp:cdp_t; cursnum:tcurstab; position:trecnum; var buf; datasize:uns32 ) : Boolean; cdecl; external WBKERNEL;
function cd_Write_record_ex( cdp:cdp_t; cursnum:tcurstab; position:trecnum; colcount:Cardinal; const colvaldescr:p_column_val_descr ) : Boolean; cdecl; external WBKERNEL;
function cd_Insert_record_ex( cdp:cdp_t; curs:tcurstab; var position:trecnum; colcount:Cardinal; const colvaldescr:p_column_val_descr ) : Boolean; cdecl; external WBKERNEL;
function cd_Append_record_ex( cdp:cdp_t; curs:tcurstab; var position:trecnum; colcount:Cardinal; const colvaldescr:p_column_val_descr ) : Boolean; cdecl; external WBKERNEL;
{ prava }
function cd_GetSet_privils( cdp:cdp_t; user_group_role:tobjnum; subject_categ:tcateg; table:ttablenum; recnum:trecnum; operation:t_oper; var privils:uns8 ) : Boolean; cdecl; external WBKERNEL;
{ transakce }
function cd_Start_transaction( cdp:cdp_t ) : Boolean; cdecl; external WBKERNEL;
function cd_Commit( cdp:cdp_t ) : Boolean; cdecl; external WBKERNEL;
function cd_Roll_back( cdp:cdp_t ) : Boolean; cdecl; external WBKERNEL;
function cd_Set_transaction_isolation_level( cdp:cdp_t; level:t_isolation ) : Boolean; cdecl; external WBKERNEL;
{ zamky }
function cd_Read_lock_record( cdp:cdp_t; curs:tcurstab; position:trecnum ) : Boolean; cdecl; external WBKERNEL;
function cd_Read_unlock_record( cdp:cdp_t; curs:tcurstab; position:trecnum ) : Boolean; cdecl; external WBKERNEL;
function cd_Write_lock_record( cdp:cdp_t; curs:tcurstab; position:trecnum ) : Boolean; cdecl; external WBKERNEL;
function cd_Write_unlock_record( cdp:cdp_t; curs:tcurstab; position:trecnum ) : Boolean; cdecl; external WBKERNEL;
function cd_Read_lock_table( cdp:cdp_t; curs:tcurstab ) : Boolean; cdecl; external WBKERNEL;
function cd_Read_unlock_table( cdp:cdp_t; curs:tcurstab ) : Boolean; cdecl; external WBKERNEL;
function cd_Write_lock_table( cdp:cdp_t; curs:tcurstab ) : Boolean; cdecl; external WBKERNEL;
function cd_Write_unlock_table( cdp:cdp_t; curs:tcurstab ) : Boolean; cdecl; external WBKERNEL;
function cd_Who_prevents_locking( cdp:cdp_t; tabnum:ttablenum; position:trecnum; write_lock:Boolean; var client_number:uns32; user_name:PChar ) : Boolean; cdecl; external WBKERNEL;
{ prace s objekty }
function cd_Insert_object( cdp:cdp_t; name:PChar; category:tcateg; var objnum:tobjnum ) : Boolean; cdecl; external WBKERNEL;
function cd_Insert_object_limited( cdp:cdp_t; name:PChar; category:tcateg; var objnum:tobjnum ) : Boolean; cdecl; external WBKERNEL;
function cd_Relist_objects( cdp:cdp_t ) : Boolean; cdecl; external WBKERNEL;
function cd_Relist_objects_ex( cdp:cdp_t; extended:Boolean ) : Boolean; cdecl; external WBKERNEL;
function cd_GetSet_group_role( cdp:cdp_t; user_or_group:tobjnum; group_or_role:tobjnum; subject2:tcateg; operation:t_oper; var relation:uns32 ) : Boolean; cdecl; external WBKERNEL;
function cd_Create_user( cdp:cdp_t; logname:PChar; name1:PChar; name2:PChar; name3:PChar; identif:PChar; const homesrv:WBUUID; password:PChar; var objnum:tobjnum ) : Boolean; cdecl; external WBKERNEL;
function cd_Set_password( cdp:cdp_t; username:PChar; password:PChar ) : Boolean; cdecl; external WBKERNEL;
function cd_Create_link( cdp:cdp_t; sourcename:PChar; sourceappl:PChar; category:tcateg; linkname:PChar ) : Boolean; cdecl; external WBKERNEL;
function cd_Create2_link( cdp:cdp_t; sourcename:PChar; var sourceapplid:uns8; category:tcateg; linkname:PChar ) : Boolean; cdecl; external WBKERNEL;
function cd_Set_appl_starter( cdp:cdp_t; categ:tcateg; objname:PChar ) : Boolean; cdecl; external WBKERNEL;
function cd_Encrypt_object( cdp:cdp_t; objnum:tobjnum; category:tcateg ) : Boolean; cdecl; external WBKERNEL;
{ sledovani stavu }
function cd_Available_memory( cdp:cdp_t; local:Boolean ) : sig32; cdecl; external WBKERNEL;
function cd_Used_memory( cdp:cdp_t; local:Boolean ) : sig32; cdecl; external WBKERNEL;
function cd_Owned_cursors( cdp:cdp_t ) : Integer; cdecl; external WBKERNEL;
function cd_Client_number( cdp:cdp_t ) : sig32; cdecl; external WBKERNEL;
function cd_Database_integrity( cdp:cdp_t; repair:Boolean; var lost_blocks:uns32; var lost_dheap:uns32; var nonex_blocks:uns32; var cross_link:uns32; var damaged_tabdef:uns32 ) : Boolean; cdecl; external WBKERNEL;
function cd_Get_info( cdp:cdp_t; var kinf:kernel_info ) : Boolean; cdecl; external WBKERNEL;
function cd_GetSet_fil_size( cdp:cdp_t; operation:t_oper; var size:uns32 ) : Boolean; cdecl; external WBKERNEL;
function cd_GetSet_fil_blocks( cdp:cdp_t; operation:t_oper; var size:uns32 ) : Boolean; cdecl; external WBKERNEL;
function cd_Who_am_I( cdp:cdp_t ) : PChar; cdecl; external WBKERNEL;
function cd_Am_I_db_admin( cdp:cdp_t ) : Boolean; cdecl; external WBKERNEL;
function cd_Am_I_appl_admin( cdp:cdp_t ) : Boolean; cdecl; external WBKERNEL;
function cd_Am_I_appl_author( cdp:cdp_t ) : Boolean; cdecl; external WBKERNEL;
function cd_Am_I_config_admin( cdp:cdp_t ) : Boolean; cdecl; external WBKERNEL;
function cd_Am_I_security_admin( cdp:cdp_t ) : Boolean; cdecl; external WBKERNEL;
function cd_WinBase602_version( cdp:cdp_t ) : sig32; cdecl; external WBKERNEL;
procedure cd_Enable_task_switch( cdp:cdp_t; enable:Boolean ); cdecl; external WBKERNEL;
function cd_Compact_database( cdp:cdp_t; margin:Integer ) : Boolean; cdecl; external WBKERNEL;
function cd_Log_write( cdp:cdp_t; text:PChar ) : Boolean; cdecl; external WBKERNEL;
function cd_Connection_speed_test( cdp:cdp_t; var requests:Integer; var kbytes:Integer ) : Boolean; cdecl; external WBKERNEL;
function cd_Appl_inst_count( cdp:cdp_t; var count:uns32 ) : Boolean; cdecl; external WBKERNEL;
function cd_Get_logged_user( cdp:cdp_t; index:Integer; username:PChar; applname:PChar; var state:Integer ) : Boolean; cdecl; external WBKERNEL;
function cd_Get_server_info( cdp:cdp_t; info_type:Integer; var buffer; buffer_size:Cardinal ) : Boolean; cdecl; external WBKERNEL;
procedure cd_Get_appl_info( cdp:cdp_t; appl_uuid:WBUUID; appl_name:PChar; server_name:PChar ); cdecl; external WBKERNEL;
function cd_Check_indices( cdp:cdp_t; tbnum:ttablenum; var result:sig32; var index_number:sig32 ) : Boolean; cdecl; external WBKERNEL;
function Get_client_version(  ) : uns32; cdecl; external WBKERNEL;
{ obalka aplikace v externim jazyku }
procedure cdp_init( cdp:cdp_t ); cdecl; external WBKERNEL;
function cdp_size(  ) : sig32; cdecl; external WBKERNEL;
function cdp_alloc(  ) : cdp_t; cdecl; external WBKERNEL;
procedure cdp_free( cdp:cdp_t ); cdecl; external WBKERNEL;
procedure cd_interf_close( cdp:cdp_t ); cdecl; external WBKERNEL;
function cd_connect( cdp:cdp_t; server_name:PChar; show_type:Integer ) : Integer; cdecl; external WBKERNEL;
procedure cd_disconnect( cdp:cdp_t ); cdecl; external WBKERNEL;
function cd_Login( cdp:cdp_t; username:PChar; password:PChar ) : Boolean; cdecl; external WBKERNEL;
function cd_Logout( cdp:cdp_t ) : Boolean; cdecl; external WBKERNEL;
function cd_Set_application( cdp:cdp_t; applname:PChar ) : Boolean; cdecl; external WBKERNEL;
function cd_Set_application_ex( cdp:cdp_t; applname:PChar; extended:Boolean ) : Boolean; cdecl; external WBKERNEL;
procedure cd_assign_to_thread( cdp:cdp_t ); cdecl; external WBKERNEL;
procedure cd_unassign( cdp:cdp_t ); cdecl; external WBKERNEL;
function cd_Weak_link( cdp:cdp_t ) : Boolean; cdecl; external WBKERNEL;
procedure Set_translation_callback( cdp:cdp_t; translation_callback:t_translation_callback ); cdecl; external WBKERNEL;
{ jine funkce serveru }
function cd_SQL_execute( cdp:cdp_t; statement:PChar; var results ) : Boolean; cdecl; external WBKERNEL;
function cd_SQL_prepare( cdp:cdp_t; statement:PChar; var handle:uns32 ) : Boolean; cdecl; external WBKERNEL;
function cd_SQL_exec_prepared( cdp:cdp_t; handle:uns32; var results; var count:Integer ) : Boolean; cdecl; external WBKERNEL;
function cd_SQL_drop( cdp:cdp_t; handle:uns32 ) : Boolean; cdecl; external WBKERNEL;
function cd_Set_sql_option( cdp:cdp_t; optmask:uns32; optval:uns32 ) : Boolean; cdecl; external WBKERNEL;
function cd_Get_sql_option( cdp:cdp_t; var optval:uns32 ) : Boolean; cdecl; external WBKERNEL;
function cd_Break( cdp:cdp_t ) : Boolean; cdecl; external WBKERNEL;
function cd_Break_user( cdp:cdp_t; client_number:Integer ) : Boolean; cdecl; external WBKERNEL;
function cd_Kill_user( cdp:cdp_t; client_number:Integer ) : Boolean; cdecl; external WBKERNEL;
function cd_Message_to_clients( cdp:cdp_t; msg:PChar ) : Boolean; cdecl; external WBKERNEL;
function cd_Set_progress_report_modulus( cdp:cdp_t; modulus:Cardinal ) : Boolean; cdecl; external WBKERNEL;
function cd_SQL_host_execute( cdp:cdp_t; statement:PChar; var results; hostvars:p_clivar; hostvars_count:Cardinal ) : Boolean; cdecl; external WBKERNEL;
function cd_SQL_host_prepare( cdp:cdp_t; statement:PChar; var handle:uns32; hostvars:p_clivar; hostvars_count:Cardinal ) : Boolean; cdecl; external WBKERNEL;
function cd_SQL_value( cdp:cdp_t; sql_expr:PChar; outbuf:PChar; out_bufsize:Integer ) : Boolean; cdecl; external WBKERNEL;
function cd_Backup_database_file( cdp:cdp_t; file_name:PChar ) : Boolean; cdecl; external WBKERNEL;
function cd_Enable_integrity( cdp:cdp_t; enable:Boolean ) : Boolean; cdecl; external WBKERNEL;
function cd_Fulltext_index_doc( cdp:cdp_t; ft_label:PChar; docid:t_docid32; filename:PChar; format:PChar ) : Boolean; cdecl; external WBKERNEL;
function cd_Fulltext_index_doc64( cdp:cdp_t; ft_label:PChar; docid:t_docid64; filename:PChar; format:PChar ) : Boolean; cdecl; external WBKERNEL;
function cd_Get_property_value( cdp:cdp_t; owner:PChar; name:PChar; num:Integer; buffer:PChar; buffer_size:Cardinal; var valsize:Integer ) : Boolean; cdecl; external WBKERNEL;
function cd_Set_property_value( cdp:cdp_t; owner:PChar; name:PChar; num:Integer; value:PChar; valsize:sig32 ) : Boolean; cdecl; external WBKERNEL;
procedure cd_Invalidate_cached_table_info( cdp:cdp_t ); cdecl; external WBKERNEL;
function cd_Set_temporary_authoring_mode( cdp:cdp_t; on_off:Boolean ) : Boolean; cdecl; external WBKERNEL;
function cd_Send_client_time_zone( cdp:cdp_t ) : Boolean; cdecl; external WBKERNEL;
function cd_Lock_server( cdp:cdp_t ) : Boolean; cdecl; external WBKERNEL;
procedure cd_Unlock_server( cdp:cdp_t ); cdecl; external WBKERNEL;

function cd_Operation_limits( cdp:cdp_t; data:t_oper_limits ) : Boolean; cdecl; external WBKERNEL;
{ manipulace s tabulkou }
function cd_Enable_index( cdp:cdp_t; table:ttablenum; which:Integer; enable:Boolean ) : Boolean; cdecl; external WBKERNEL;
function cd_Free_deleted( cdp:cdp_t; table:ttablenum ) : Boolean; cdecl; external WBKERNEL;
function cd_Compact_table( cdp:cdp_t; table:ttablenum ) : Boolean; cdecl; external WBKERNEL;
function cd_Truncate_table( cdp:cdp_t; table:ttablenum ) : Boolean; cdecl; external WBKERNEL;
{ agregacni funkce }
function cd_C_sum( cdp:cdp_t; curs:tcursnum; attrname:PChar; condition:PChar; var result ) : Boolean; cdecl; external WBKERNEL;
function cd_C_max( cdp:cdp_t; curs:tcursnum; attrname:PChar; condition:PChar; var result ) : Boolean; cdecl; external WBKERNEL;
function cd_C_min( cdp:cdp_t; curs:tcursnum; attrname:PChar; condition:PChar; var result ) : Boolean; cdecl; external WBKERNEL;
function cd_C_count( cdp:cdp_t; curs:tcursnum; attrname:PChar; condition:PChar; var result:trecnum ) : Boolean; cdecl; external WBKERNEL;
function cd_C_avg( cdp:cdp_t; curs:tcursnum; attrname:PChar; condition:PChar; var result ) : Boolean; cdecl; external WBKERNEL;
{ ODBC }
function cd_ODBC_open_cursor( cdp:cdp_t; connection:uns32; var curs:tcursnum; query:PChar ) : Boolean; cdecl; external WBKERNEL;
function cd_ODBC_find_connection( cdp:cdp_t; dsn_name:PChar ) : uns32; cdecl; external WBKERNEL;
function cd_ODBC_create_connection( cdp:cdp_t; dsn_name:PChar ) : uns32; cdecl; external WBKERNEL;
function cd_ODBC_direct_connection( cdp:cdp_t; conn_string:PChar ) : uns32; cdecl; external WBKERNEL;
function cd_ODBC_exec_direct( cdp:cdp_t; connection:uns32; query:PChar ) : Boolean; cdecl; external WBKERNEL;
{ informace o sloupcich }
function cd_Enum_attributes( cdp:cdp_t; table:ttablenum; callback:enum_attr ) : Boolean; cdecl; external WBKERNEL;
function cd_Enum_attributes_ex( cdp:cdp_t; table:ttablenum; callback:enum_attr_ex; user_data:Pointer ) : Boolean; cdecl; external WBKERNEL;
function cd_Attribute_info( cdp:cdp_t; table:ttablenum; attrname:PChar; var attrnum:tattrib; var attrtype:uns8; var attrmult:uns8; var attrspecif:uns16 ) : Boolean; cdecl; external WBKERNEL;
function cd_Attribute_info_ex( cdp:cdp_t; table:ttablenum; attrname:PChar; var attrnum:tattrib; var attrtype:uns8; var attrmult:uns8; var attrspecif:t_specif ) : Boolean; cdecl; external WBKERNEL;
{ podpisy a replikace }
function cd_Signature( cdp:cdp_t; hParent:HWND; cursor:tcursnum; recnum:trecnum; attr:tattrib; create:Integer; var param ) : Boolean; cdecl; external WBKERNEL;
function cd_Repl_control( cdp:cdp_t; optype:Integer; opparsize:Integer; var opparam ) : Boolean; cdecl; external WBKERNEL;
function cd_Replicate( cdp:cdp_t; ServerName:PChar; ApplName:PChar; pull:Boolean ) : Boolean; cdecl; external WBKERNEL;
function cd_Skip_repl( cdp:cdp_t; ServerName:PChar; ApplName:PChar ) : Boolean; cdecl; external WBKERNEL;
function cd_Reset_replication( cdp:cdp_t ) : Boolean; cdecl; external WBKERNEL;
function cd_GetSet_next_user( cdp:cdp_t; curs:tcurstab; position:trecnum; attr:tattrib; operation:t_oper; valtype:t_valtype; var value ) : Boolean; cdecl; external WBKERNEL;

type t_rpap_oper = (RPAP_GET_TOKENSRVR=1, RPAP_SET_TOKENSRVR, RPAP_GET_CONFLSRVR, RPAP_SET_CONFLSRVR );
type t_rpls_oper = (RPLS_GET_ENABLED=1, RPLS_SET_ENABLED, RPLS_GET_ADDRESS1, RPLS_SET_ADDRESS1, RPLS_GET_ADDRTYPE1, RPLS_SET_ADDRTYPE1, RPLS_GET_ADDRESS2, RPLS_SET_ADDRESS2, RPLS_GET_ADDRTYPE2, RPLS_SET_ADDRTYPE2, RPLS_GET_MAILPROF, RPLS_SET_MAILPROF, RPLS_SET_MAILPWORD, RPLS_SET_MAILDPWORD, RPLS_GET_DIPDCONN, RPLS_SET_DIPDCONN, RPLS_GET_DIPDUSER, RPLS_SET_DIPDUSER, RPLS_SET_DIPDPWORD, RPLS_GET_INQUEUE, RPLS_SET_INQUEUE, RPLS_GET_OUTQUEUE, RPLS_SET_OUTQUEUE, RPLS_GET_THREADCNT, RPLS_SET_THREADCNT, RPLS_GET_REPLPERIOD, RPLS_SET_REPLPERIOD, RPLS_GET_LOGTABLES, RPLS_SET_LOGTABLES, RPLS_GET_REPLTRIGGERS, RPLS_SET_REPLTRIGGERS, RPLS_GET_ERRCAUSESNACK, RPLS_SET_ERRCAUSESNACK );
type t_rpsp_oper = (RPSP_GET_ADDRESS1=1, RPSP_GET_ADDRTYPE1, RPSP_GET_ADDRESS2, RPSP_GET_ADDRTYPE2, RPSP_GET_USEALT, RPSP_SET_USEALT, RPSP_GET_LASTRCVD, RPSP_GET_LASTSNDD, RPSP_GET_LASTACKD );
type t_rpst_oper = (RPST_STATE=1, RPST_RELNAME );
function Repl_GetSet_local_server_props( cdp:cdp_t; Oper:t_rpls_oper; var Prop ) : Boolean; cdecl; external WBKERNEL;
function Repl_GetSet_server_props( cdp:cdp_t; Srvr:PChar; Oper:t_rpsp_oper; var Prop ) : Boolean; cdecl; external WBKERNEL;
function Repl_direct_register_server( cdp:cdp_t; Addr:PChar; AType:PChar ) : Boolean; cdecl; external WBKERNEL;
function Repl_refresh_server_info( cdp:cdp_t; Srvr:PChar ) : Boolean; cdecl; external WBKERNEL;
function Repl_GetSet_appl_props( cdp:cdp_t; Appl:PChar; Oper:t_rpap_oper; Prop:PChar ) : Boolean; cdecl; external WBKERNEL;
function Repl_send_share_req( cdp:cdp_t; Srvr:PChar; Appl:PChar; RelName:PChar; Synch:Boolean ) : Boolean; cdecl; external WBKERNEL;
function Repl_accept_share_req( cdp:cdp_t; Srvr:PChar; Appl:PChar; RelName:PChar; Accept:Boolean ) : Boolean; cdecl; external WBKERNEL;
function Repl_abandon_sharing( cdp:cdp_t; Srvr:PChar; Appl:PChar ) : Boolean; cdecl; external WBKERNEL;
function Repl_Get_state( cdp:cdp_t; Srvr:PChar; Appl:PChar; Oper:t_rpst_oper; var State ) : Boolean; cdecl; external WBKERNEL;
function Repl_synchronize( cdp:cdp_t; Srvr:PChar ) : Boolean; cdecl; external WBKERNEL;
function Repl_resend_packet( cdp:cdp_t; Srvr:PChar ) : Boolean; cdecl; external WBKERNEL;
function Repl_cancel_packet( cdp:cdp_t; Srvr:PChar ) : Boolean; cdecl; external WBKERNEL;
function Repl_appl_shared( cdp:cdp_t; Appl:PChar ) : Boolean; cdecl; external WBKERNEL;

{ replication GUI }
function Repl_edit_local_server_options( cdp:cdp_t; hParent:HWND ) : Boolean; cdecl; external WBVIEWED;
function Repl_register_new_remote_server( cdp:cdp_t; hParent:HWND ) : Boolean; cdecl; external WBVIEWED;
function Repl_unregister_remote_server( cdp:cdp_t; hParent:HWND; Srvr:PChar; confirm:Boolean ) : Boolean; cdecl; external WBVIEWED;
function Repl_edit_sharing_parameters( cdp:cdp_t; hParent:HWND; Appl:PChar; complete:Boolean ) : Boolean; cdecl; external WBVIEWED;
function Repl_edit_application_properties( cdp:cdp_t; hParent:HWND; pages:Integer ) : Boolean; cdecl; external WBVIEWED;
procedure Repl_edit_relation( cdp:cdp_t; hOwner:HWND; RelName:PChar ); cdecl; external WBVIEWED;

{ translation }
function Select_language( cdp:cdp_t; language:Integer ) : Boolean; cdecl; external WBKERNEL;
function Translate_to_language( cdp:cdp_t; text:PChar; space:Integer ) : Boolean; cdecl; external WBKERNEL;
function Translate_and_alloc( cdp:cdp_t; input:PChar; var poutput:PChar ) : Boolean; cdecl; external WBKERNEL;
{ typove konverze }
function Make_date( day:Integer; month:Integer; year:Integer ) : uns32; cdecl; external WBKERNEL;
function Day( dt:uns32 ) : Integer; cdecl; external WBKERNEL;
function Month( dt:uns32 ) : Integer; cdecl; external WBKERNEL;
function Year( dt:uns32 ) : Integer; cdecl; external WBKERNEL;
function Quarter( dt:uns32 ) : Integer; cdecl; external WBKERNEL;
function Today(  ) : uns32; cdecl; external WBKERNEL;
function Make_time( hour:Integer; minute:Integer; second:Integer; sec1000:Integer ) : uns32; cdecl; external WBKERNEL;
function Day_of_week( dt:uns32 ) : Integer; cdecl; external WBKERNEL;
function Hours( tm:uns32 ) : Integer; cdecl; external WBKERNEL;
function Minutes( tm:uns32 ) : Integer; cdecl; external WBKERNEL;
function Seconds( tm:uns32 ) : Integer; cdecl; external WBKERNEL;
function Sec1000( tm:uns32 ) : Integer; cdecl; external WBKERNEL;
function Now(  ) : uns32; cdecl; external WBKERNEL;
function Current_timestamp(  ) : uns32; cdecl; external WBKERNEL;
function Like( s1:PChar; s2:PChar ) : Boolean; cdecl; external WBKERNEL;
function Pref( s1:PChar; s2:PChar ) : Boolean; cdecl; external WBKERNEL;
function Substr( s1:PChar; s2:PChar ) : Boolean; cdecl; external WBKERNEL;
procedure Upcase( str:PChar ); cdecl; external WBKERNEL;
function money2real( var m:monstr ) : double; cdecl; external WBKERNEL;
function real2money( d:double; var m:monstr ) : Boolean; cdecl; external WBKERNEL;
function timestamp2date( dtm:uns32 ) : uns32; cdecl; external WBKERNEL;
function timestamp2time( dtm:uns32 ) : uns32; cdecl; external WBKERNEL;
function datetime2timestamp( dt:uns32; tm:uns32 ) : uns32; cdecl; external WBKERNEL;
procedure time2str( tm:uns32; txt:PChar; param:Integer ); cdecl; external WBKERNEL;
procedure date2str( dt:uns32; txt:PChar; param:Integer ); cdecl; external WBKERNEL;
procedure timestamp2str( dtm:uns32; txt:PChar; param:Integer ); cdecl; external WBKERNEL;
function str2time( txt:PChar; var tm:uns32 ) : Boolean; cdecl; external WBKERNEL;
function str2date( txt:PChar; var dt:uns32 ) : Boolean; cdecl; external WBKERNEL;
function str2timestamp( txt:PChar; var dtm:uns32 ) : Boolean; cdecl; external WBKERNEL;
function timestamp2TDateTime( dtm:uns32 ) : double;
function TDateTime2timestamp( tdt:double ) : uns32;
function date2TDateTime( date:uns32 ) : double; cdecl; external WBKERNEL;
function time2TDateTime( time:uns32 ) : double; cdecl; external WBKERNEL;
procedure TDateTime2datetime( tdt:double; var date:uns32; var time:uns32 ); cdecl; external WBKERNEL;
{ mail }
function InitWBMail( Profile:PChar; PassWord:PChar ) : Longword; cdecl; external WBKERNEL;
function InitWBMailEx( Profile:PChar; RecvPassWord:PChar; SendPassWord:PChar ) : Longword; cdecl; external WBKERNEL;
function InitWBMail602( EmiPath:PChar; UserID:PChar; PassWord:PChar ) : Longword; cdecl; external WBKERNEL;
function InitWBMail602x( Profile:PChar ) : Longword; cdecl; external WBKERNEL;
procedure CloseWBMail(  ); cdecl; external WBKERNEL;
function LetterCreate( Subj:PChar; Msg:PChar; Flags:Longword; var lpLetter:Integer ) : Longword; cdecl; external WBKERNEL;
function LetterAddAddr( Letter:Integer; Addr:PChar; AddrType:PChar; CC:Boolean ) : Longword; cdecl; external WBKERNEL;
function LetterAddFile( Letter:Integer; fName:PChar ) : Longword; cdecl; external WBKERNEL;
function LetterAddBLOBs( Letter:Integer; fName:PChar; Table:PChar; Attr:PChar; Cond:PChar ) : Longword; cdecl; external WBKERNEL;
function LetterAddBLOBr( Letter:Integer; fName:PChar; Table:tcurstab; Pos:trecnum; Attr:tattrib; Index:t_mult_size ) : Longword; cdecl; external WBKERNEL;
function LetterSend( Letter:Integer ) : Longword; cdecl; external WBKERNEL;
function TakeMailToRemOffice(  ) : Longword; cdecl; external WBKERNEL;
procedure LetterCancel( Letter:Integer ); cdecl; external WBKERNEL;
{ synchronizace pomoci udalosti }
function cd_Register_event( cdp:cdp_t; event_name:PChar; param_str:PChar; param_exact:Boolean; var event_handle:uns32 ) : Boolean; cdecl; external WBKERNEL;
function cd_Unregister_event( cdp:cdp_t; event_handle:uns32 ) : Boolean; cdecl; external WBKERNEL;
function cd_Cancel_event_wait( cdp:cdp_t; event_handle:uns32 ) : Boolean; cdecl; external WBKERNEL;
function cd_Wait_for_event( cdp:cdp_t; timeout:sig32; var event_handle:uns32; var event_count:uns32; param_str:PChar; param_size:sig32; var result:sig32 ) : Boolean; cdecl; external WBKERNEL;
{ XML rozsireni }
function Edit_XML_mapping( cdp:cdp_t; objnum:tobjnum; hParentWnd:HWND; flags:uns8 ) : Integer; cdecl; external WBXMLEXT;
function Export_to_XML( cdp:cdp_t; dad_ref:PChar; fname:PChar; curs:tcursnum; hostvars:p_clivar; hostvarscount:Integer ) : Boolean; cdecl; external WBXMLEXT;
function Import_from_XML( cdp:cdp_t; dad_ref:PChar; fname:PChar; hostvars:p_clivar; hostvarscount:Integer ) : Boolean; cdecl; external WBXMLEXT;
function Export_to_XML_buffer( cdp:cdp_t; dad_ref:PChar; buffer:PChar; bufsize:Integer; var xmlsize:Integer; curs:tcursnum; hostvars:p_clivar; hostvarscount:Integer ) : Boolean; cdecl; external WBXMLEXT;
function Export_to_XML_buffer_alloc( cdp:cdp_t; dad_ref:PChar; var buffer:PChar; curs:tcursnum; hostvars:p_clivar; hostvarscount:Integer ) : Boolean; cdecl; external WBXMLEXT;
function Import_from_XML_buffer( cdp:cdp_t; dad_ref:PChar; buffer:PChar; xmlsize:Integer; hostvars:p_clivar; hostvarscount:Integer ) : Boolean; cdecl; external WBXMLEXT;
function Verify_DAD( cdp:cdp_t; dad:PChar; var line:Integer; var column:Integer ) : Boolean; cdecl; external WBXMLEXT;
function get_xml_form( cdp:cdp_t; objnum:tobjnum; translate:Boolean; url_prefix:PChar ) : PChar; cdecl; external WBXMLEXT;
{ zastarale funkce }
function cd_Uninst_table( cdp:cdp_t; table:ttablenum ) : Boolean; cdecl; external WBKERNEL;
function Save_table( table:ttablenum; filename:PChar ) : Boolean; cdecl; external WBKERNEL;
function cd_Save_table( cdp:cdp_t; table:ttablenum; filename:PChar ) : Boolean; cdecl; external WBKERNEL;
function Restore_table( table:ttablenum; filename:PChar ) : Boolean; cdecl; external WBKERNEL;
function Get_object_rights( objname:PChar; category:tcateg; username:PChar; var rights:tright ) : Boolean; cdecl; external WBKERNEL;
function Set_object_rights( objname:PChar; category:tcateg; username:PChar; rights:tright ) : Boolean; cdecl; external WBKERNEL;
function Get_data_rights( table:ttablenum; username:PChar; var rights:tright; var rd_ri:tdright; var wr_ri:tdright ) : Boolean; cdecl; external WBKERNEL;
function Set_data_rights( table:ttablenum; username:PChar; rights:tright; rd_ri:tdright; wr_ri:tdright ) : Boolean; cdecl; external WBKERNEL;
function Create_group( name:PChar ) : Boolean; cdecl; external WBKERNEL;
function User_to_group( user:tobjnum; group:tobjnum; state:Boolean ) : Boolean; cdecl; external WBKERNEL;
function User_in_group( user:tobjnum; group:tobjnum; var state:LongBool ) : Boolean; cdecl; external WBKERNEL;



{$IFDEF LINUX}  
{ Typ callbacku pro enum_servers. }
type server_callback = function ( name:PChar; var addr:sockaddr_in; var data ):Integer;
{ 
Vysle zadost o serverove info broadcastem; ceka na odpovedi, pro kazdy
server, ktery odpovi, provede callback. K navratu dojde, pokud nektery
callback vrati nulu, nebo pokud po dobu timeout milisekund neprijde dalsi
serverove info. Pokud je callback funkce NULL, provede se defaultni
callback, ktery vypise na standartni vystup seznam nalezenych serveru.

Vraci 0 (KSE_OK) nebo KSE_WINSOCK_ERROR.
     }
function enum_servers( timeout:Integer; cbck:server_callback; var data ) : Integer; external WBKERNEL;


{$ENDIF}


{ Priznaky "flags" pro Open_view, Select_records, Relate_records, Set_fcursor a Bind_records }
const
  NO_EDIT = $01; { zakaz editace v pohledu }
  NO_INSERT = $02; { zakaz vkladani zaznamu }
  NO_MOVE = $04; { zakaz prechodu mezi zaznamy }
  NO_DELETE = $08; { zakaz ruseni zaznamu }
  DEL_RECS = $10; { zobrazovat i zrusene zaznamy }
  AUTO_CURSOR = $40; { uzavrit cursor pri zavirani pohledu }
  COUNT_RECS = $80; { spocitat zaznamy pri otevreni pohledu }
  MODAL_VIEW = $100; { otevrit pohled jako modalni popup okno }
  NO_CHILD_FRAME = $1000; { okno subpohledu nebude mit ram }
  CHILD_VIEW = $2000; { otevrit pohled jako child nebo subpohled }
  QUERY_VIEW = $10000; { otevrit pohled pro zadavani dotazu }
  PARENT_CURSOR = $80000; { pouzit kurzor a cache z parent-pohledu }
  MODELESS_VIEW = $100000; { otevrit pohled jako popup okno }
{ Parametry funkce Reset_view }
const
  RESET_VISIBLILITY = 0; { nastaveni viditelnosti a aktivity slozek }
  RESET_CONTROLS = 1; { nastaveni obsahu slozek }
  RESET_DELETIONS = 5; { odstraneni zrusenych a pridani vlozenych zaznamu }
  RESET_CACHE = $100; { nove naplneni cache }
  RESET_CURSOR = $200; { nove otevreni kurzoru }
  RESET_SYNCHRO = $400; { resynchronizace subpohledu }
  RESET_COMBOS = $800; { nove naplneni comb }
{ typ operace pro funkci Edit_privils }
const
  MULTIREC = 1;
  MULTITAB = 2;
{ Automaticky generovane zpravy }
const
  NOTIF_CREATE = 1; { pohled byl otevren }
  NOTIF_DESTROY = 2; { pohled byl uzavren }
  NOTIF_RECENTER = 3; { vybran novy zaznam v pohledu }
  NOTIF_CHANGE = 4; { zmenena slozka pohledu }
  NOTIF_RESET_RECORD = 5; { vybrany zaznam se prekresluje }
  NOTIF_RESET_VIEW = 6; { cely pohled se prekresluje }
  NOTIF_SUBCURSOR = 7; { pohled prechazi k subkurzoru QBE }
  NOTIF_SUPERCURSOR = 8; { pohled se vraci k superkurzoru }
  NOTIF_CREATE_DEPENDENT = 9; { otevren zavisly pohled }
  NOTIF_DESTROY_DEPENDENT = 10; { uzavren zavisly pohled }
  NOTIF_CREATE_EDITOR = 11; { otevren textovy editor }
  NOTIF_DESTROY_EDITOR = 12; { uzavren textovy editor }
  NOTIF_CREATE_VIEWER = 13; { otevreno okno s obrazkem }
  NOTIF_DESTROY_VIEWER = 14; { uzavreno okno s obrazkem }

{ Hodnota "base" pro Open_view, Print_view, Bind_records a Select_records }
const NO_REDIR = tcursnum(-1);
{ Cislo okna MDI-Client v aplikacich WinBase (neni-li okno vytvoreno aplikaci) }
const CLIENT_ID = 1;
{ Parametr typu WORD zpravy WM_COMMAND pozadujici otevreni stranky napovedy cislo lParam - zastarale }
const IDM_HELP_GENERIC = 239;
{ Otevreni okna aplikace }
{ typy toolbaru pro SZM_SETTOOLBAR }
const
  WB_TB_UNKNOWN = 0;
  WB_TB_DEFAULT = 1;
  WB_TB_VIEW = 2;
  WB_TB_VIEWNOMOVE = 3;
  WB_TB_VIEWPROJ = 4;
  WB_TB_VIEWQUERY = 5;
  WB_TB_HIST = 6;
  WB_TB_INDEX = 7;
  WB_TB_EDITTEXT = 8;
  WB_TB_PREVIEW = 9;
{ priznaky pro vytvareni hlavniho okna }
const
  WBF_NO_TOOLBAR = 1;
  WBF_NO_STATUSBAR = 2;
type WBFramePars = record
  WinMenu : Integer;
  Flags : uns16;
end;
{ Konstanty pro Set_preview_type }
const
  PREV_CHILD = 1;
  PREV_POPUP = 2;
{ Cisla zprav pro okenni funkci pohledu }
const WM_SZM_BASE = 1524;

const
  SZM_IS_VISIBLE = WM_SZM_BASE+50;
  SZM_IS_ENABLED = WM_SZM_BASE+51;
  SZM_GET_ACCESS = WM_SZM_BASE+54;
  SZM_RECORD_ENTER = WM_SZM_BASE+56;
  SZM_NEXTREC = WM_SZM_BASE+60;
  SZM_PREVREC = WM_SZM_BASE+61;
  SZM_FIRSTREC = WM_SZM_BASE+62;
  SZM_LASTREC = WM_SZM_BASE+63;
  SZM_NEXTPAGE = WM_SZM_BASE+64;
  SZM_PREVPAGE = WM_SZM_BASE+65;
  SZM_FIRSTITEM = WM_SZM_BASE+66;
  SZM_LASTITEM = WM_SZM_BASE+67;
  SZM_NEXTTAB = WM_SZM_BASE+68;
  SZM_PREVTAB = WM_SZM_BASE+69;
  SZM_DOWNITEM = WM_SZM_BASE+70;
  SZM_UPITEM = WM_SZM_BASE+71;
  SZM_INDEX = WM_SZM_BASE+72;
  SZM_QBE = WM_SZM_BASE+74;
  SZM_UNLIMIT = WM_SZM_BASE+75;
  SZM_BIND = WM_SZM_BASE+76;
  SZM_SETIPOS = WM_SZM_BASE+77;
  SZM_INSERT = WM_SZM_BASE+78;
  SZM_DELREC = WM_SZM_BASE+79;
  SZM_DELALL = WM_SZM_BASE+80;
  SZM_REC_STATUS = WM_SZM_BASE+82;
  SZM_DELASK = WM_SZM_BASE+83;
  SZM_DO_ACTION = WM_SZM_BASE+84;
  SZM_SETEPOS = WM_SZM_BASE+85;
  SZM_HELP = WM_SZM_BASE+86;
  SZM_RESET = WM_SZM_BASE+87;
  SZM_ORDER = WM_SZM_BASE+88;
  SZM_PRINT = WM_SZM_BASE+89;
  SZM_ACCEPT_Q = WM_SZM_BASE+90;
  SZM_UNBINDDEL = WM_SZM_BASE+91;
  SZM_GET_NAME = WM_SZM_BASE+93;
  SZM_GET_TEXT_VAL = WM_SZM_BASE+94;
  SZM_PUT_TEXT_VAL = WM_SZM_BASE+95;
  SZM_GET_REF_VAL = WM_SZM_BASE+96;
  SZM_GET_FEATURES = WM_SZM_BASE+97;
  SZM_REFRESHR = WM_SZM_BASE+98;
  SZM_DELETE_COLUMN = WM_SZM_BASE+99;
  SZM_ALT_TEXT_VAL = WM_SZM_BASE+100;
  SZM_INSERT_COLUMN = WM_SZM_BASE+101;
  SZM_GET_TOOLBAR = WM_SZM_BASE+102;
  SZM_SELECT_ME = WM_SZM_BASE+103;
  SZM_LOCKS = WM_SZM_BASE+104;
  SZM_DROP = WM_SZM_BASE+105;
  SZM_SET_EDIT_POS = WM_SZM_BASE+106;
  SZM_EXPORTRQ = WM_SZM_BASE+107;
  SZM_IMPORTRQ = WM_SZM_BASE+108;
  SZM_TOKEN = WM_SZM_BASE+118;
  SZM_PRIVILS = WM_SZM_BASE+119;
  SZM_POP_DESIGN = WM_SZM_BASE+120;
  SZM_SHOWAPPL = WM_SZM_BASE+200; { wParam==TRUE: show, FALSE: hide }
  SZM_MDI_CHILD_TYPE = WM_SZM_BASE+201;
  SZM_RELISTOBJ = WM_SZM_BASE+202;
  SZM_REFILL = WM_SZM_BASE+202;
  SZM_NEWWINNAME = WM_SZM_BASE+203;
  SZM_GLOBALFREE = WM_SZM_BASE+204;
  SZM_NEW_NUMS = WM_SZM_BASE+205;
  SZM_ANSWER = WM_SZM_BASE+206;
  SZM_DESTROY = WM_SZM_BASE+207;
  SZM_CLOSE_EDITOR = WM_SZM_BASE+208;
  SZM_TAB_INVALID = WM_SZM_BASE+209;
  SZM_INFO_PANEL = WM_SZM_BASE+210;
  SZM_UNLINK = WM_SZM_BASE+211;
  SZM_SETSTATUSTEXT = WM_SZM_BASE+212;
  SZM_SETTOOLBAR = WM_SZM_BASE+213;
{ parametry zpravy WM_COMMAND okna editoru }
{ 500 - Text popup }
const
  MI_FSED_SAVE = 501;
  MI_FSED_FONT = 502;
  MI_FSED_PRINT = 503;
  MI_FSED_CLOSE = 504;
  MI_FSED_SAVEALL = 505;
  MI_FSED_SAVEAS = 506;
  MI_FSED_CLOSE1 = 507;
{ 510 - Edit Popup }
const
  MI_FSED_CUT = 511;
  MI_FSED_COPY = 512;
  MI_FSED_PASTE = 513;
  MI_FSED_DELETE = 514;
  MI_FSED_HIDE = 515;
  MI_FSED_BSAVE = 516;
  MI_FSED_BLOAD = 517;
  MI_FSED_ABSAVE = 518;
  MI_FSED_SELALL = 519;
  MI_FSED_DOSSAVE = 520;
  MI_FSED_DOSLOAD = 521;
  MI_FSED_UNDO = 523;
{ 525 - Format popup }
const
  MI_FSED_WRAP = 526;
  MI_FSED_ALIGN = 527;
  MI_FSED_FORMAT = 528;
{ 550 - Search popup }
const
  MI_FSED_FIND = 551;
  MI_FSED_REPLACE = 552;
  MI_FSED_REFIND = 553;
{ Konstanty pro property ViewSrcCateg a DataSrcCateg OLE objektu a ActiveX }
const
  CTG_TABLE = 1;
  CTG_CURSOR = 2;
  CTG_SELECT = 3;
  CTG_VIEWNAME = 1;
  CTG_VIEWSRC = 2;
{ Dispatch ID properties ActiveX }
const
  DID_SERVER = 1;
  DID_SERVERIP = 2;
  DID_USERNAME = 3;
  DID_PASSWORD = 4;
  DID_APPLICATION = 5;
  DID_VIEWSRC = 6;
  DID_DATASRC = 7;
  DID_PROJECT = 8;
  DID_TOPREC = 101;
  DID_VIEWSRCTG = 106;
  DID_DATASRCTG = 107;
{ Dispath ID metod ActiveX }
const
  DID_QBE = 201;
  DID_SORT = 202;
  DID_ACCEPTQ = 203;
  DID_CANCELQ = 204;
  DID_FIRSTREC = 205;
  DID_PREVPAGE = 206;
  DID_PREVREC = 207;
  DID_NEXTREC = 208;
  DID_NEXTPAGE = 209;
  DID_LASTREC = 210;
  DID_FIRSTITEM = 211;
  DID_LASTITEM = 212;
  DID_NEXTTAB = 213;
  DID_PREVTAB = 214;
  DID_UPITEM = 215;
  DID_DOWNITEM = 216;
  DID_CUT = 217;
  DID_COPY = 218;
  DID_PASTE = 219;
  DID_INSERT = 220;
  DID_DELREC = 221;
  DID_DELASK = 222;
  DID_UNBINDDEL = 223;
  DID_PRINT = 224;
  DID_INDEX = 225;
  DID_LOCKS = 226;
  DID_HELP = 227;
  DID_ED_SAVE = 228;
  DID_ED_FIND = 229;
  DID_ED_REPLACE = 230;
  DID_ED_REFIND = 231;
  DID_ED_FORMAT = 232;
  DID_RESET = 301;
  DID_COMMIT = 302;
  DID_ROLLBACK = 303;
  DID_GETCURITEM = 304;
  DID_GETCURPOS = 305;
  DID_SETCURPOS = 306;
  DID_GETITEMVAL = 307;
  DID_SETITEMVAL = 308;
  DID_PRINTOPT = 309;
  DID_PRINTOPTDLG = 310;
  DID_PRINTSEL = 311;
  DID_PRINTSELDLG = 312;
  DID_QBESTATE = 313;
  DID_EDITTEXT = 314;
  DID_OPENPICTURE = 315;
  DID_PICKAPPL = 316;
  DID_EXECSTTMNTS = 317;
{ callback funkce pro [cd_]Enum_variables }
type enum_vars = function ( attrname:PChar; attrtype:Integer; valsize:Integer ):Boolean; stdcall;
{ priznaky (flags) pro funkci Chng_component_flag }
const
  CO_FLAG_NOEXPORT = $40;
  CO_FLAG_NOEXPORTD = $10;
{ oznaceni operaci pro funkci Token_control }
const
  TOKEN_HOLD = 0;
  TOKEN_FREE = 1; { free all if record not specified }
  TOKEN_REQ = 2;
  TOKEN_INVAL = 3;
  TOKEN_HAVE_I = 4;
  TOKEN_HOLD_I = 5;
{ priznaky pro pouziti ve funkci Import_appl_ex a v Import_appl_param }
const
  IMPAPPL_NEW_INST = 1;
  IMPAPPL_USE_ALT_NAME = 2;
  IMPAPPL_REPLACE = 4;
  IMPAPPL_NO_COMPILE = 8;
  IMPAPPL_WITH_INFO = $10;
const
  IMPEXP_DATA = -1;
  IMPEXP_DATAPRIV = -2;
  IMPEXP_ICON = -3;
  IMPEXP_PROGMAX = -100;
  IMPEXP_PROGSTEP = -101;
  IMPEXP_PROGPOS = -102;
  IMPEXP_FILENAME = -103;
  IMPEXP_STATUS = -104;
  IMPEXP_ERROR = -105;
{ Oznaceni formatu dat }
const
  IMPEXP_FORMAT_WINBASE = 0;
  IMPEXP_FORMAT_TEXT_COLUMNS = 1;
  IMPEXP_FORMAT_TEXT_CSV = 2;
  IMPEXP_FORMAT_DBASE = 3;
  IMPEXP_FORMAT_FOXPRO = 4;
  IMPEXP_FORMAT_ODBC = 5;
  IMPEXP_FORMAT_CURSOR = 6;
  IMPEXP_FORMAT_TABLE = 10;
  IMPEXP_FORMAT_TABLE_REIND = 11;
type IMPEXPAPPLCALLBACK = procedure ( Categ:Integer; const Value:Pointer; Param:Pointer ); stdcall;
type LPIMPEXPAPPLCALLBACK = ^IMPEXPAPPLCALLBACK;
{ parametr Export_appl_param }
type t_export_param = record
  cbSize : uns32;
  hParent : HWND;
  with_data : LongBool;
  with_role_privils : LongBool;
  with_usergrp : LongBool;
  exp_locked : LongBool;
  back_end : LongBool;
  date_limit : uns32;
  file_name : PChar;
  long_names : LongBool;
  report_progress : LongBool;
  callback : LPIMPEXPAPPLCALLBACK;
  param : Pointer;
  schema_name : PChar;
  overwrite : LongBool;
end;
{ parametr Import_appl_param }
type t_import_param = record
  cbSize : uns32;
  hParent : HWND;
  flags : Cardinal;
  file_name : PChar;
  alternate_name : PChar;
  report_progress : LongBool;
  callback : LPIMPEXPAPPLCALLBACK;
  param : Pointer;
end;
{ Procedury a funkce }
{ Jednoduchy vstup a vystup }
procedure Info_box( caption:PChar; text:PChar ); cdecl; external WBPREZEN;
function Yesno_box( caption:PChar; text:PChar ) : Boolean; cdecl; external WBPREZEN;
function Input_box( caption:PChar; text:PChar; maxlen:Integer ) : Boolean; cdecl; external WBPREZEN;
procedure Set_status_nums( num0:trecnum; num1:trecnum ); cdecl; external WBPREZEN;
procedure Set_status_text( text:PChar ); cdecl; external WBPREZEN;
function Signalize(  ) : Boolean; cdecl; external WBPREZEN;
function cd_Signalize( cdp:cdp_t ) : Boolean; cdecl; external WBPREZEN;
procedure Kernel_error_box( errnum:Integer ); cdecl; external WBPREZEN;
{ Otevirani pohledu }
function Open_view( viewdef:PChar; base:tcursnum; flags:uns32; position:Integer; var reserved; hParent:HWND; var hView:HWND ) : HWND; cdecl; external WBPREZEN;
function Select_records( viewdef:PChar; base:tcursnum; flags:uns32; limit:Integer; var bindl:trecnum; var reserved; hParent:HWND; var hView:HWND ) : HWND; cdecl; external WBPREZEN;
function Relate_record( relation1:PChar; viewdef:PChar; base:tcursnum; flags:uns32; var reserved; var viewid:HWND; relation2:PChar ) : HWND; cdecl; external WBPREZEN;
{ Manipulace s otevrenym pohledem }
procedure Close_view( hView:HWND ); cdecl; external WBPREZEN;
procedure Close_all_views(  ); cdecl; external WBPREZEN;
procedure Pick_window( hView:HWND ); cdecl; external WBPREZEN;
function Register_rec_syn( hWnd1:HWND; hWnd2:HWND ) : Boolean; cdecl; external WBPREZEN;
function Active_view(  ) : HWND; cdecl; external WBPREZEN;
function Current_item( hView:HWND ) : Integer; cdecl; external WBPREZEN;
function Get_fcursor( hView:HWND; var curs:tcursnum; var flags:uns16 ) : Boolean; cdecl; external WBPREZEN;
function Set_fcursor( hView:HWND; curs:tcursnum; flags:uns32 ) : Boolean; cdecl; external WBPREZEN;
function QBE_state( hView:HWND ) : Integer; cdecl; external WBPREZEN;
{ Pozice v pohledu }
function Get_view_pos( hView:HWND; var irec:trecnum; var erec:trecnum ) : Boolean; cdecl; external WBPREZEN;
function Set_int_pos( hView:HWND; pos:trecnum; itemnum:Integer ) : Boolean; cdecl; external WBPREZEN;
function Set_ext_pos( hView:HWND; pos:trecnum; itemnum:Integer ) : Boolean; cdecl; external WBPREZEN;
{ Ovladani obsah pohledu }
function Get_item_value( hView:HWND; intrec:trecnum; itemid:Integer; value:PChar ) : Boolean; cdecl; external WBPREZEN;
function Set_item_value( hView:HWND; intrec:trecnum; itemid:Integer; value:PChar ) : Boolean; cdecl; external WBPREZEN;
function Commit_view( hView:HWND; can_ask:Boolean; report_error:Boolean ) : Boolean; cdecl; external WBPREZEN;
procedure Roll_back_view( hView:HWND ); cdecl; external WBPREZEN;
procedure Reset_view( hView:HWND; intrec:trecnum; extent:Integer ); cdecl; external WBPREZEN;
function Tab_page( hView:HWND; ID:Integer ) : Integer; cdecl; external WBPREZEN;
function IsViewChanged( hView:HWND ) : Boolean; cdecl; external WBPREZEN;
{ Tisky }
function Print_view( viewdef:PChar; base:tcursnum; firstrec:trecnum; lastrec:trecnum; var reserved ) : Boolean; cdecl; external WBPREZEN;
procedure View_pattern( viewobj:tobjnum ); cdecl; external WBPREZEN;
function Page_setup( hParent:HWND ) : Boolean; cdecl; external WBPREZEN;
function Print_opt( hParent:HWND ) : Boolean; cdecl; external WBPREZEN;
function Print_optEx( hParent:HWND; IsLabel:Boolean ) : Boolean; cdecl; external WBPREZEN;
function Printer_dialog( hParent:HWND ) : Boolean; cdecl; external WBPREZEN;
function Printer_select( printer_name:PChar; port_name:PChar; orientation:Integer; papersize:Integer; paperbin:Integer; quality:Integer; duplex:Integer; color:Integer; truetype:Integer ) : Boolean; cdecl; external WBPREZEN;
function Print_copies( copies:Integer; collate:Boolean ) : Boolean; cdecl; external WBPREZEN;
procedure Set_printer( firstrec:trecnum; lastrec:trecnum; firstpage:Integer; lastpage:Integer; direction:Integer; outfile:PChar; leftmargin:Integer ); cdecl; external WBPREZEN;
procedure Print_margins( leftmargin:Integer; rightmargin:Integer; topmargin:Integer; bottommargin:Integer ); cdecl; external WBPREZEN;
procedure Set_first_label( posX:Cardinal; posY:Cardinal ); cdecl; external WBPREZEN;
procedure Set_preview_type( PType:Longword; hPar:HWND ); cdecl; external WBPREZEN;
{ Menu }
function Main_menu( menudef:PChar ) : Boolean; cdecl; external WBPREZEN;
{ Napoveda }
procedure cd_Help_file( cdp:cdp_t; filename:PChar ); cdecl; external WBPREZEN;
procedure Show_help( topic:Cardinal ); cdecl; external WBPREZEN;
procedure Show_help_popup( topic:Cardinal ); cdecl; external WBPREZEN;
{ Vyber souboru nebo adresare }
function Select_file( hParent:HWND; filename:PChar ) : Boolean; cdecl; external WBPREZEN;
function Select_directory( hParent:HWND; dirname:PChar ) : Boolean; cdecl; external WBPREZEN;
{ Funkce pro vytvoreni aplikace v externim jazyce }
function DefWinBaseFrameProc( hWnd:HWND; uMsg:Longword; wParam:Integer; lParam:LongInt ) : LongInt; cdecl; external WBPREZEN;
function WinBaseFrameProc( hWnd:HWND; uMsg:Longword; wParam:Integer; lParam:LongInt ) : LongInt; cdecl; external WBPREZEN;
function cd_Open_project( cdp:cdp_t; projname:PChar ) : Boolean; cdecl; external WBPREZEN;
function cd_Get_var_address( cdp:cdp_t; name:PChar ) : Pointer; cdecl; external WBPREZEN;
function Var_type_info( cdp:cdp_t; name:PChar; var valsize:Cardinal ) : Integer; cdecl; external WBPREZEN;
function cd_Enum_variables( cdp:cdp_t; callback:enum_vars ) : Boolean; cdecl; external WBPREZEN;
function Exec_statements( cdp:cdp_t; statements:PChar ) : Integer; cdecl; external WBPREZEN;
function Init_window_env( hFrame:HWND; hClient:HWND; winsub_pos:Integer; Flags:Longword ) : Boolean; cdecl; external WBPREZEN;
procedure Register_ext_menu( hFrame:HWND; hMenu:Integer; hWinsubMenu:Integer ); cdecl; external WBPREZEN;
function GetClient( hFrame:HWND ) : HWND; cdecl; external WBPREZEN;
procedure Init_non_mdi_env( cdp:cdp_t; hMainWindow:HWND ); cdecl; external WBPREZEN;
{ Prace s pravy, uzivateli a objekty }
function Edit_user_properties( cdp:cdp_t; hParent:HWND; userobj:tobjnum; pages:Cardinal ) : Boolean; cdecl; external WBVIEWED;
function Acreate_user( cdp:cdp_t; hParent:HWND ) : Boolean; cdecl; external WBPREZEN;
function Aset_password( cdp:cdp_t; hParent:HWND ) : Boolean; cdecl; external WBPREZEN;
function cd_Alogin( cdp:cdp_t; hParent:HWND ) : Boolean; cdecl; external WBPREZEN;
function cd_Alogin_ex( cdp:cdp_t; hParent:HWND; logname:PChar ) : Boolean; cdecl; external WBPREZEN;
function Amodify_user( cdp:cdp_t; hParent:HWND; objnum:tobjnum ) : Boolean; cdecl; external WBPREZEN;
function Edit_privils( cdp:cdp_t; hParent:HWND; var tbs:ttablenum; var recnums:trecnum; multioper:Integer ) : Boolean; cdecl; external WBPREZEN;
function Edit_relation( cdp:cdp_t; hParent:HWND; subject1:tcateg; subjnum:tobjnum; subject2:tcateg ) : Boolean; cdecl; external WBPREZEN;
function Chng_component_flag( cdp:cdp_t; cat:tcateg; name:PChar; mask:Integer; setbit:Integer ) : Boolean; cdecl; external WBPREZEN;
function Next_user_name( cdp:cdp_t; hView:HWND; erec:trecnum ) : PChar; cdecl; external WBPREZEN;
function Move_obj_to_folder( cdp:cdp_t; ObjName:PChar; Categ:tcateg; DestFolder:PChar ) : Boolean; cdecl; external WBPREZEN;
{ Predavani peska }
function AToken_control( cdp:cdp_t; hParent:HWND; curstab:tcurstab; recnum:trecnum ) : Boolean; cdecl; external WBPREZEN;
function Token_control( cdp:cdp_t; curstab:tcurstab; recnum:trecnum; oper:Integer ) : Boolean; cdecl; external WBPREZEN;
function AReplicate( cdp:cdp_t; hParent:HWND; pull:Boolean ) : Boolean; cdecl; external WBPREZEN;
function ASkip_repl( cdp:cdp_t; hParent:HWND ) : Boolean; cdecl; external WBPREZEN;
{ Pocet zaznamu a multiselect }
function SelectIntRec( hView:HWND; Pos:trecnum; Sel:Boolean; Redraw:Boolean ) : Boolean; cdecl; external WBPREZEN;
function SelectExtRec( hView:HWND; Pos:trecnum; Sel:Boolean; Redraw:Boolean ) : Boolean; cdecl; external WBPREZEN;
function IsIntRecSelected( hView:HWND; Pos:trecnum ) : Boolean; cdecl; external WBPREZEN;
function IsExtRecSelected( hView:HWND; Pos:trecnum ) : Boolean; cdecl; external WBPREZEN;
function ViewRecCount( hView:HWND; FictRec:Boolean ) : trecnum; cdecl; external WBPREZEN;
{ Ostatni }
function Move_data( cdp:cdp_t; move_descr_obj:tobjnum; inpname:PChar; inpobj:tobjnum; outname:PChar; inpformat:Integer; outformat:Integer; inpcode:Integer; outcode:Integer; silent:Boolean ) : Boolean; cdecl; external WBPREZEN;
function Edit_view( cdp:cdp_t; name:PChar ) : Boolean; cdecl; external WBVIEWED;
function Export_appl( cdp:cdp_t; hParent:HWND; with_data:Boolean; with_role_privils:Boolean; with_usergrp:Boolean ) : Boolean; cdecl; external WBVIEWED;
function Export_appl_ex( cdp:cdp_t; hParent:HWND; with_data:Boolean; with_role_privils:Boolean; with_usergrp:Boolean; exp_locked:Boolean; back_end:Boolean ) : Boolean; cdecl; external WBVIEWED;
function Export_exx( cdp:cdp_t; hParent:HWND ) : Boolean; cdecl; external WBVIEWED;
function Export_appl_param( cdp:cdp_t; var ep:t_export_param ) : Boolean; cdecl; external WBVIEWED;
function Import_appl( cdp:cdp_t; hParent:HWND; fname:PChar ) : Boolean; cdecl; external WBVIEWED;
function Aexport_appl( cdp:cdp_t; hParent:HWND ) : Boolean; cdecl; external WBVIEWED;
function Import_appl_ex( cdp:cdp_t; hParent:HWND; fname:PChar; flags:Cardinal; alternate_name:PChar ) : Boolean; cdecl; external WBVIEWED;
function Import_appl_param( cdp:cdp_t; var ip:t_import_param ) : Boolean; cdecl; external WBVIEWED;
function Edit_query( cdp:cdp_t; name:PChar ) : Boolean; cdecl; external WBVIEWED;
procedure Edit_impexp( cdp:cdp_t; name:PChar ); cdecl; external WBPREZEN;
function Edit_table( cdp:cdp_t; hParent:HWND; name:PChar; objnum:tobjnum ) : Boolean; cdecl; external WBVIEWED;
function Background_bitmap( cdp:cdp_t; picture_name:PChar ) : Boolean; cdecl; external WBPREZEN;
function ACheck_component_syntax( cdp:cdp_t; hParent:HWND; oper:Integer ) : Boolean; cdecl; external WBVIEWED;
procedure Open_server_console( cdp:cdp_t; hParent:HWND; var hSrvCons:HWND ); cdecl; external WBVIEWED;
procedure Open_config_console(  ); cdecl; external WBVIEWED;
procedure run_sql_procedure( cdp:cdp_t; hParent:HWND; objnum:tobjnum ); cdecl; external WBVIEWED;
function Create_local_database( hParent:HWND ) : Boolean; cdecl; external WBVIEWED;
function Create_view( cdp:cdp_t; name:PChar; step:Longword ) : Boolean; cdecl; external WBVIEWED;


const
  SCVP_RESET = 0;
  SCVP_VIEWTYPE = 1;
  SCVP_RECTYPE = 2;
  SCVP_BASECATEG = 3;
  SCVP_BASENAME = 4;
  SCVP_BASENUM = 5;
  SCVP_TEMPLATE = 6;
  SCVP_PROJECT = 7;
  SCVP_CAPTION = 8;
  SCVP_PAGEHEADER = 9;
  SCVP_MULTIREC = 10;
  SCVP_GROUPA = 11;
  SCVP_GROUPB = 12;
  SCVP_VIEWFLAGS = 13;
  SCVP_LABELWIDTH = 14;
  SCVP_LABELHEIGHT = 15;
  SCVP_LABELXSPACE = 16;
  SCVP_LABELYSPACE = 17;
  SCVP_LABELXCNT = 18;
  SCVP_LABELYCNT = 19;
  SCVP_LABELXMARG = 20;
  SCVP_LABELYMARG = 21;
  SCVP_ITEMS = 22;
const
  SCVT_FORM = 0;
  SCVT_LABEL = 4;
  SCVT_GRAPH = 5;
  SCVT_REPORT = 64;
const
  SCVR_HORIZ = 0;
  SCVR_VERT = 1;
  SCVR_PLAIN = 2;
  SCVR_SIMPLE = 3;
const
  SCVI_NOITEMS = 0;
  SCVI_ALLVALS = 1;
  SCVI_ALLEDITS = 2;
const
  SCVF_SELFORM = $00000001;
  SCVF_INPFORM = $00000002;
  SCVF_GENFORM = $00000004;
  SCVF_MOVE = $00000008;
  SCVF_MOVE_BUT = $00000010;
  SCVF_MOVE_SCROLL = $00000020;
  SCVF_INSERT = $00000040;
  SCVF_INSERT_BUT = $00000080;
  SCVF_INSERT_FICT = $00000100;
  SCVF_DEL = $00000200;
  SCVF_DEL_BUT = $00000400;
  SCVF_DEL_ASK = $00000800;
  SCVF_EDIT = $00001000;
  SCVF_EDIT_BUT = $00002000;
  SCVF_QUERY = $00004000;
  SCVF_QUERY_BUT = $00008000;
  SCVF_QUERY_MENU = $00010000;

procedure Set_create_view_propsi( cdp:cdp_t; Prop:Integer; Val:Integer ); cdecl; external WBVIEWED name 'Set_create_view_props';
procedure Set_create_view_propss( cdp:cdp_t; Prop:Integer; Val:PChar ); cdecl; external WBVIEWED name 'Set_create_view_props';


{ Zastarale funkce }
function From_xbase( tablename:PChar; filename:PChar; dBase:Boolean; filecode:Integer ) : Boolean; cdecl; external WBPREZEN;
function To_xbase( tablename:PChar; filename:PChar; dBase:Boolean; filecode:Integer ) : Boolean; cdecl; external WBPREZEN;
function Xbase_export( curs:tobjnum; cat:tcateg; fname:PChar; is_dbase:Boolean; recode:Integer ) : Boolean; cdecl; external WBPREZEN;
function Data_export( objnum:tobjnum; categ:tcateg; fname:PChar; format:Cardinal; recode:Integer ) : Boolean; cdecl; external WBPREZEN;
function Data_import( tabname:PChar; index_past:Boolean; fname:PChar; format:Cardinal; recode:Integer ) : Boolean; cdecl; external WBPREZEN;
function Mail_parameters( hParent:HWND; parstring:PChar; buflen:Integer ) : Boolean; cdecl; external WBPREZEN;
procedure Draw_line( hView:HWND; x1:Integer; y1:Integer; x2:Integer; y2:Integer; colour:Integer ); cdecl; external WBPREZEN;
procedure Put_pixel( hView:HWND; x:Integer; y:Integer; colour:Integer ); cdecl; external WBPREZEN;

{ ne-cd_ varianty funkci }
procedure Help_file( filename:PChar ); cdecl; external WBPREZEN;
function Open_project( projname:PChar ) : Boolean; cdecl; external WBPREZEN;
function Get_var_address( name:PChar ) : Pointer; cdecl; external WBPREZEN;
function Alogin( hParent:HWND ) : Boolean; cdecl; external WBPREZEN;
function Alogin_ex( hParent:HWND; logname:PChar ) : Boolean; cdecl; external WBPREZEN;



implementation 

function IS_CURSOR_NUM(curs : tcurstab) : boolean;
begin
    Result := (curs and (ODBC_TABLE or CURS_USER)) = CURS_USER;
end;

{$IFDEF LINUX}

function timestamp2TDateTime(dtm : uns32) : double;
var tm, dt : uns32;
    ts     : TSQLTimeStamp;
begin
    if dtm = NONETIMESTAMP then begin
        Result := 0;
        Exit;
    end;
    tm := dtm mod 86400;
    dt := dtm div 86400;
    ts.Day       := dt mod 31 + 1;  dt := dt div 31;
    ts.Month     := dt mod 12 + 1;
    ts.Year      := dt div 12 + 1900;
    ts.Hour      := tm div 3600;
    ts.Minute    := tm mod 3600 div 60;
    ts.Second    := tm mod 60;
    ts.Fractions := 0;
    Result := SQLTimeStampToDateTime(ts);
end;

function TDateTime2timestamp(tdt : double) : uns32;
var ts : TSQLTimeStamp;
begin
    ts := DateTimeToSQLTimeStamp(tdt);
    Result := ((ts.Year - 1900) * (12 * 31 * 24 * 60 * 60)) +
              ((ts.Month - 1) * (31 * 24 * 60 * 60)) +
              ((ts.Day - 1) * (24 * 60 * 60)) +
              (ts.Hour * 60 * 60) +
              (ts.Minute * 60) +
              ts.Second +
              ts.Fractions div 500;
end;

{$ENDIF}

end. 

