7.1 Esimerkkiohjelma 1 K:n käytöstä
/* ktest1.c * KaTi Oy & CPU Oy * * Tämä on esimerkkiohjelma, joka suoritaa K_kielisen ohjelman * tätä ohjelmaa kutsutaan * k2 k-tied Ä -d Å -d = debug */ # include "cpupub.h" # include "k_pub.h"# define PAR_LST "OMA_PAR_LST" /* parametrilista */ # define ARV_LST "OMA_ARV_LST" /* arvolista */
extern CHAR *scref_get_listtext(); extern CHAR *K_get_error();
/*---------------------------------------------------------------------------*/ main(argc,argv) /*---------------------------------------------------------------------------*/ int argc; CHAR *argvÄÅ;
ä int ok,i,r,testi,reload; int lkm,j; CHAR arvoÄ255Å; FILE *fp; CHAR muuttujanarvoÄ20Å;
/* -- testiä -- */ testi=FALSE; if(argc>2) testi=TRUE;
/* otetaan K-tulkki käyttöön */ K_init(); /* kytkeydytään kantaan */ ok=dbo_connect("kayttaja","salasana"); K_set_user("kayttaja","salasana");
/* luodaan parametrilista */ scref_add_list(PAR_LST,K_PAR_SIZE); scref_del_listline(PAR_LST,ALL);
/* luodaan arvolista */ scref_add_list(ARV_LST,30); /* 29 palautusta rinnan max. !!!*/ scref_del_listline(ARV_LST,ALL);
/* lisätään parametrilistaan 2 välitettävä muuttuja */ scref_add_listline(PAR_LST); scref_add_listtext(PAR_LST,K_PAR_LABEL,"$a"); scref_add_listtext(PAR_LST,K_PAR_VALUE,"100.00");
scref_add_listline(PAR_LST); scref_add_listtext(PAR_LST,K_PAR_LABEL,"$henk"); scref_add_listtext(PAR_LST,K_PAR_VALUE,"Malli Matias");
/* -- arvolistaan K_do laittaa käs. kohtaan arvot, joten * haetaan listan loppu */ ok=scref_search_listline(ARV_LST,LAST);
/* suoritetaan K-ohjelma */ reload=FALSE; ok=K_do(PAR_LST,argvÄ1Å,ARV_LST,testi,reload); if (!ok) ä fprintf(stderr,"Error:%s Ön",K_get_error());
/* luetaan arvolista */ ok=scref_search_listline(ARV_LST,FIRST); i=1; printf("Ön----------------------------------------------Ön"); printf("ÖnPalautusarvot --------------------------------Ön"); while(ok) ä lkm=atoi(scref_get_listtext(ARV_LST,1));/*mja lkm*/ for(j=1;j<=lkm;j++)ä /* katsotaan arvot */ strcpy(arvo,scref_get_listtext(ARV_LST,1+j)); printf("(%3d):<%s> Ön",j,arvo); å printf("-------------+++++----++++-----+---+++Ön"); ok=scref_search_listline(ARV_LST,NEXT); i++; å /* katsotaan muuttujan $henk viimeinen arvo */ K_get_var("$henk",muuttujanarvo); printf("$henk = %s Ön",muuttujanarvo);
/* ulos kannasta */ ok=dbo_disconnect();
å
/* asetetaan alkuarvo K:n oletussymbolitauluun muuttujalle a */ K_set_var("$a","100"); /* suoritetaan K-ohjelma, jossa $a:n arvo on 100 */ ok=K_do(PAR_LST,argvÄoptindÅ,ARV_LST,testi,FALSE); IF NOT ok THEN printf("ÖnÖn ERROR %sÖn",K_get_error()); exit(1); END K_get_var("$a",value); printf("def-symboltable $a = %sÖn",value); /* vaihdetaan jostakin syystä käyttöön toinen symbolitaulu */ K_use_symboltable("OMA"); K_set_var("$a","200"); /* suoritetaan K-ohjelma, jossa $a:n arvo on 100 */ ok=K_do(PAR_LST,argvÄ1Å,ARV_LST,testi,FALSE); IF NOT ok THEN printf("ÖnÖn ERROR %sÖn",K_get_error()); exit(1); END K_get_var("$a",value); printf("OMA-symboltable $a = %sÖn",value); /* otetaan oletussymbolitaulu takaisin käyttöön */ K_use_symboltable(NULL); K_get_var("$a",value); /* oliko a:n arvo tallessa , oli */ printf("def-symboltable $a = %sÖn",value);
Valitse:[Ens.sivu] [Sivun alkuun] [Sisällysluettelo] [Hakemisto]
© 1992-1996 Karjalan Tietovalta Oy, Karjalan ATK-Awot Oy, Computer Program Unit Oy