Esimerkki 2: KUNNAT-tiedoston käsittelyä omassa sivustossa

Toimituskentässä MEDIT1B on määritelty sivusto ESIM2, jonka pohjalta FILE MEDIT aktivoidaan komennolla
FILE MEDIT KUNNAT,MEDIT1B:ESIM2

Tässä määritellään kaksi sivua, joista toinen on erilainen (joko "Sivu2a" tai "Sivu2b") kunnan asukasluvusta riippuen.

Määrittely on seuraavanlainen:


1 *SAVE MEDIT1B / FILE MEDIT -esimerkki 2 * 3 *Tämä sivusto on tarkoitettu KUNNAT-tiedoston ja muiden 4 *samanrakenteisten tiedostojen käsittelyyn. 5 * 6 *MEDIT:ESIM2 SIZE=24,82 PAGES=Sivu1,Sivu2a,Sivu2b 7 * 8 *PAGE Sivu1: 9 * Sivu 1 10 * Tietoja Suomen kunnista vuosilta 1978-80 11 * 12 * Kunta: ################ Lääni: ### Ala: #####.## km^2 13 * Väestö: ###### Asukastiheys: ####.## 14 * 15 * Syntyneitä: #### Syntyneisyys: ##.# 1000 asukasta kohti 16 * 17 * Veroäyri: ##.## 18 * 19 * 20 * 21 * 22 * 23 * 24 * Tämä on ensimmäinen sivu, jolla on pelkästään 25 * alkuperäisiä ja joitakin johdettuja muuttujia. 26 *END 27 * 28 *Johdetut kentät määritellään samoin kuin muuttujat VAR-operaatiossa: 29 *Asukastiheys=Väestö/Ala 30 *Syntyneitä=Synt. Syntyneisyys=1000*Synt./Väestö 31 *Veroäyri=Äyri (tässä siis vain on vaihdettu muuttujan nimi pitempään.) 32 * 33 *pieni=Väestö,0,9999 34 *suuri=Väestö,10000,500000 35 *asuinhuoneistot=Asuin 36 * 37 *PAGE Sivu2a: CONDITION:pieni 38 * Sivu 2a 39 * Tietoja Suomen kunnista vuosilta 1978-80 (JATKOA) 40 * 41 * Kunta %1 / %1=Kunta 42 * 43 * Tulotaso: ##### mk/asukas 44 * Maamet: # Teoll: # Palvelu: # (Elinkeino-osuudet 10 %) 45 * %1 / %1=Eluokka 46 * Valmistuneet asuinhuoneistot: #### kpl. 47 * 48 * %1 on asukasluvultaan pieni kunta (alle 10000 asukasta). / %1=Kunta 49 * 50 * Tällä sivulla voisi olla muitakin tietoja, jotka koskevat 51 * vain pieniä kuntia ja sivu voisi olla rakenteeltaan 52 * aivan erilainen kuin suurilla kunnilla. 53 * 54 * 55 *END 56 * 57 *PAGE Sivu2b: CONDITION:suuri 58 * Sivu 2b 59 * Tietoja Suomen kunnista vuosilta 1978-80 (JATKOA) 60 * 61 * Kunta %1 / %1=Kunta 62 * 63 * Tulotaso: ##### mk/asukas 64 * Maamet: # Teoll: # Palvelu: # (Elinkeino-osuudet 10 %) 65 * %1 / %1=Eluokka 66 * Valmistuneet asuinhuoneistot: #### kpl. 67 * 68 * %1 on suuri kunta (vähintään 10000 asukasta). / %1=Kunta 69 * 70 * Tällä sivulla voisi olla muitakin tietoja, jotka koskevat 71 * vain suuria kuntia. 72 * Pienillä kunnilla tämä sivu on erilainen. 73 * 74 * 75 *END 76 * 77 *Esumma=Maamet+Teoll+Palvelu 78 *Etesti=if(Esumma<8)then(1)else(Etesti2) 79 *Etesti2=if(Esumma>10)then(2)else(0) 80 *Eluokka=$CLASS(Eluok,Etesti) 81 *CLASSIFICATION Eluok: 82 *0: 83 *1: Elinkeino-osuuksien summa alle 8! / SOUND:RINGOUT.WAV 84 *2: Elinkeino-osuuksien summa yli 10! / SOUND:RINGOUT.WAV 85 *END

Koko sivusto alkaa riviltä 6

  6 *MEDIT:ESIM2 SIZE=24,82 PAGES=Sivu1,Sivu2a,Sivu2b
jossa SIZE=24,82 tarkoittaa FILE MEDIT -ikkunan kokoa riveinä ja sarakkeina. PAGES luettelee mahdolliset sivut.

Jos aktivoinnin jälkeen etsitään Helsingin tiedot, ensimmäinen sivu "Sivu1" näyttää seuraavalta:

Tämä sivu on määritelty riveillä 8-26 ja se sisältää 6 alkuperäistä ja 2 johdettua muuttujaa. Johdetut muuttujat on määritelty VAR-operaation tyyliin riveillä 28-31.

Siirrytään toiselle sivulle joko NEXT P -pehmonapilla (kuten kuvassa) tai PgDn-napilla. Sille on kaksi vaihtoehtoa "Sivu2a" tai "Sivu2b", joista edellinen on tarkoitettu pienille (alle 10000 asukasta) kunnille ja jälkimmäinen suurille. Ehdot "pieni" ja "suuri" on määritely riveillä 33-34 IND-ehtolausekkeen kaltaisesti.

Koska Helsinki on "suuri", PAGES-listassa toisena olevaa sivua "Sivu2a" ei näytetä, koska siihen liittyy ehto "pieni", kuten nähdään riviltä 37.

Sen sijaan "Sivu2b" kelpaa, koska siihen liittyy ehto "suuri" rivillä 57 ja näkyville tulee:

Kun siirrytään edelleen seuraavalle sivulle, kunta vaihtuu Himankaan, ja sen ensimmäinen sivu tulee näkyville:

Himanka on pieni kunta, jolloin "Sivu2a" (rivit 37-55) kelpaa:

Jos yritetään (virheellisesti) editoida muuttuja Maamet arvoon 0, tulee virheilmoitus:

Virheilmoitus seuraa siitä, että nyt elinkeino-osuuksien summa alittaa rajan 8. Rajojen tutkimiseen on tarkoitettu rivit

 77 *Esumma=Maamet+Teoll+Palvelu
 78 *Etesti=if(Esumma<8)then(1)else(Etesti2)
 79 *Etesti2=if(Esumma>10)then(2)else(0)
 80 *Eluokka=$CLASS(Eluok,Etesti)
 81 *CLASSIFICATION Eluok:
 82 *0:
 83 *1: Elinkeino-osuuksien summa alle 8!    / SOUND:RINGOUT.WAV
 84 *2: Elinkeino-osuuksien summa yli 10!    / SOUND:RINGOUT.WAV
 85 *END

jotka määrittelevät viime kädessä sanallisen muuttujan Eluokka (rivi 80) ja tämän "arvo" kirjoitetaan elinkeino-osuuksien alle (rivi 45) jonain arvoista riveillä 82-84.
Siis jos elinkeino-osuuksien summa on sallituissa rajoissa, ei kirjoiteta mitään (vaihtoehto 0:). Muuten tulee jompikumpi ilmoituksista rivi 83 tai 84 ja sitä vahvistetaan soittamalla äänitiedosto RINGOUT.WAV, mikä ilmenee myös noilta riveiltä.

Luonnollisesti, mikäli datatiedostoon on muuttujille asetettu sallittujen arvojen rajat, näiden ylityksistä tulee automaattisesti sekä sanalliset että äänelliset varoitukset.

FILE MEDIT on oletusarvoisesti mykkä, mutta äänisignaalit, joita esiintyy myös kenttien, sivujen ja havaintojen vaihtuessa, saa päälle eri tavoin (mm. pehmonapilla SOUND).

Takaisin esimerkkiluetteloon