Seuraavassa kuvattu ne funktiot, joiden avulla K-kielinen ohjelma suoritetaan C-kielellä.
void K_init()______________________________________________________________________K-kieltä kutsutaan funktiolla K_init() kerran, joka alustaa tarvittavat tietorakenteet (mm. symbolitaulu).
int K_do(param-list,K-filename,value-list,debug-flg,reload) ______________________________________________________________________ CHAR *param-list; /* parametrilista (SCREF-lista)*/ CHAR *K-filename; /* K-ohjelmatiedoston nimi */ CHAR *value-list; /* arvolista, jonne palauta laittaa arvot * SCREF-lista */ int debug-flg; /* jos TRUE, niin tulostuu testilauseet */ int reload; /* jos TRUE, luetaan K-ohjelma uudelleen */Varsinaisia K-ohjelmia suoritetaan ko. funktiolla. Palauttaa TRUE, jos suoritus OK. Jos suoritus päättyy virheeseen, niin funktiolla K_get_error() voi lukea virheilmoituksen.
K_do etsii ohjelmaa ko. hakemistosta ja hakemistosta $KPROGDIR, jos sellainen ympäristömuuttuja on määritelty. Jos tiedoston nimi alkaa . tai / merkillä, niin silloin ei haeta ympäristömuuttujan KPROGDIR perusteella, muuten haetaan ensin ko. muuttujan perusteella.
Esim: suoritetaan K-ohjelma nimeltä tarkista.k nykyisestä hakemistosta:
extern CHAR *K_get_error(); int ok;ok=K_do("","./tarkista.k","",FALSE,FALSE); if (!ok) ä fprintf(stderr,"VIRHE:%sÖn",K_get_error()); å
- ei parametri-, eikä arvolistaa, eikä haluta debug-toimintoja, eikä uudelleen lukua levyltä
K-tulkki lukee, selaa ja jäsentää vain kerran ko. ohjelman. Muilla kutsukerroilla K-tulkki suorittaa suoraan sen muistissa olevan pinon mukaisesti.
Parametrilista on muotoa:
sarake-1 sarake-2 nimi1 arvo nimi2 arvoEsim: $a 100.00 $b "Kalle Kankkunen" $numero "100.00"
Arvolista on muotoa:
sarake-1 sarake2 sarake3 ... sarake4 palautteessa arvoja lkm arvo1 arvo2 arvo3 arvo4 ... arvo_n palautteessa arvoja lkm arvo1 arvo2 arvo3 arvo4 ... arvo_n palautteessa arvoja lkm arvo1 arvo2 arvo3 arvo4 ... arvo_n palautteessa arvoja lkm arvo1 arvo2 ... arvo_n Esim: 1 1.00 3 2.00 Kankkunen Kalle HELSINKI 1 K 4 1 2 3 4 ...void K_get_var(variable_name,value) ______________________________________________________________________ CHAR *variable_name; /* muuttujan nimi $xxxxx....*/ CHAR *value; /* mjan arvo */Koska K käyttää globaalista symbolitaulua, voidaan symbolitaulun muuttujia katsoa ko. funktiolla suorituksen jälkeen. Variable_name osoittaa muuttujan nimeen, jonka arvo halutaan katsoa. Value osoittaa muuttujan arvoon. Arvo palautetaan aina merkkijonona. Katso myös K_set_var.
Esim: Katsotaan muuttujan $HenkNimi arvo: unsigned char nimiÄ100Å;K_get_var("HenkNimi",nimi);
void K_set_var(variable_name,value) ______________________________________________________________________ CHAR *variable_name; /* muuttujan nimi $xxxxx....*/ CHAR *value; /* mjan arvo */Koska K käyttää globaalista symbolitaulua, voidaan symbolitaulun muuttujien arvo asettaa funktiolla ennen K:n suoritusta. Variable_name osoittaa muuttujan nimeen, jonka arvo halutaan asettaa. Value osoittaa arvoon, joka muuttujalle annetaan. Arvo aina merkkijono. Katso myös K_get_var.
CHAR *K_get_error()______________________________________________________________________Palauttaa osoittimen virheilmoitukseen.
Muita funktioita ei ole K:n käsittelyyn.
void K_use_symboltable(sym_table_name) ______________________________________________________________________ CHAR *sym_table_name; /* käytettävän symbolitaulun nimi */Muuttaa K:n käytössä olevaa symbolitaulua. Jos sym_table_name on NULL, niin käytetään oletus symbolitaulua.
void K_set_user(username, password) ______________________________________________________________________ CHAR *username; /* käyttäjän nimi kannassa */ CHAR *password; /* käyttäjän salasana kannassa */Ilmoitetaan K-tulkille, mikä on käyttäjätunnus kantaan. Tarvitaan yhteys-funktioissa (kts.3.8.4).