K-Kieli Käyttäjän käsikirja


7. Esimerkkiohjelmia K:n käytöstä

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();

å

7.1 Esimerkkiohjelma 2 K:n käytöstä (symbolitaulut)

                /* 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