Seppo Mustonen: Sukrojen ohjelmointi Survossa

Sukrojen ohjelmointi Survossa

1. Johdanto

Survo-ohjelmisto sisältää valmiita keinoja hyvin monenlaisten tehtävien suorittamiseen. Toimintoja ketjuttamalla syntyy lukemattomia tapoja rakentaa erilaisia sovelluksia. Survoon perehtyneet käyttäjät osaavat näin kehitellä ratkaisut mieleisikseen.

Survolle ominainen editoriaalinen (tekstinkäsittelyyn perustuva) käyttötapa suosii luovaa toimintojen yhdistelyä. Toisaalta se vaatii käyttäjältään enemmän kuin esim. valikkopohjaiset järjestelmät. Jotta myös vähemmän tottuneet voisivat hyötyä Survosta, on alusta pitäen katsottu tarpeelliseksi liittää siihen piirteitä, jotka helpottavat järjestelmän ja sen eri työtapojen oppimista. Toisaalta on haluttu mahdollistaa Survolla tehtyjen asiantuntijasovellusten käyttö ilman Survon varsinaisten toimintojen tuntemusta. On siis tähdätty siihen, että Survolla voitaisiin tehdä opetusohjelmia kaikista Survon ulottuvilla olevista aiheista ja että taitavien käyttäjien laatimat omat sovellukset olisivat välittömästi muiden omaksuttavissa.

Jo nykyistä Survoa edeltäneessä SURVO 84 -järjestelmässä (Wang PC:llä) oli mukana opetusmoodi (tutorial mode), joka salli käyttäjän tallettaa kaikki toimenpiteensä (näppäinpainallukset) Survo-istunnon aikana valittuun tiedostoon. Näin nauhoitettu istunto tai sen osa saatettiin sitten toistaa sellaisenaan ikään kuin aavekäyttäjän tekemänä. Oli myös mahdollista muokata syntynyttä ohjaustiedostoa Survon oman toimittimen (editor) avulla ja tehdä siitä esim. opetuskäyttöön paremmin soveltuva lisäämällä sopivia, esim. opetuksen etenemisvauhtia sääteleviä koodeja.

Survon tällä tekniikalla laadittuja opetusohjelmia kutsuttiin "tutoreiksi", sillä mielenkiinto kohdistui yksinomaan opettamiseen. Nykyisen Survon kehittyessä osoittautui aiheelliseksi laajentaa opetusohjelmien laatimistekniikkaa ja ulottaa toiminnat myös asiantuntijasovellusten tekemiseen. Kehitys on johtanut vaiheittain siihen, että alunperin "tutoreitten" tekoon tarkoitettu tekniikka on muotoutunut yleiseksi makrokieleksi, joka ottaa huomioon sekä opetuksen että asiantuntijasovellusten tarpeet. Koska Survon makrokieli yltää moniin sellaisiin ratkaisuihin, joita tuskin enää pidetään tyypillisinä makroina, on katsottu aiheelliseksi kutsua Survolla tehtyjä makroja sukroiksi (lyhennys Survo-makrosta) ja niiden laatimiseen tarkoitettua oliopohjaista ohjelmointikieltä sukrokieleksi.

Sukrokieli poikkeaa rakenteeltaan muista oliopohjaisista kielistä, sillä se nojaa omien käskyjensä lisäksi olennaisesti Survon toimintoihin (näppäimet, komennot ja operaatiot). Sukrot voivat myös käyttää toisia sukroja aliohjelminaan. Käsittelyn kohteena olevat oliot (tekstit, tilasto- ja muut numeeriset aineistot, kuvat ym.) ovat suoraan Survolta saatuja rakenteita. Tällainen yhdistely tekee sukrokielestä voimakkaan työvälineen. Kaikki Survon erilaisiin (esim. tilastollisiin, numeerisiin ja graafisiin) toimintoihin liittyvä asiantuntemus on välittömästi hyödynnettävissä missä tahansa opetusohjelmassa tai asiantuntijasovelluksessa.

Vaikka sukrokieltä on useaan otteeseen laajennettu liittämällä siihen yhä enemmän yleisen ohjelmointikielen piirteitä, sen ei tarvitse sisältää kaikkea, koska monet rakenteet ja toiminnat ovat lainattavissa sellaisenaan Survosta. Usein sukrojen avulla yksinkertaisesti liimataan yhteen erilaiset Survolla tehdyt toimenpiteiden sarjat sopiviksi kokonaisuuksiksi.

Sukrot vaihtelevat laajuudeltaan ja käyttötavoiltaan suuresti. Pienimmillään ne muistuttavat tavanomaisia makroja. Esim. monet tekstinmuokkaukseen tarkoitetut aputoiminnat on tehty sukroina. Tällaisia ovat mm. näppäinsukrot X (sanojen paikanvaihto), H (tavujen siirto rivin lopusta seuraavan alkuun ja päinvastoin) ja S (varjomerkkien kirjoittamiseen). Tottuneet käyttäjät tekevät hetkessä omia apusukrojaan jatkuvasti toistuviin toimenpiteisiinsä. Laajimmillaan sukrot ovat monista osasukroista koostuvia opetusohjelmia tai runsaasti ehdollisia ja käyttäjän valinnoista riippuvia toimenpiteitä sisältäviä erikoissovelluksia.
     Kaikilla käyttöalueillaan sukrot vähentävät varsinaisen ohjelmoinnin tarvetta. Ne vievät myös levyllä olennaisesti vähemmän tilaa kuin itsenäiset ohjelmat. Esim. tyypillinen tilastollinen analyysiketju on sukrona yleensä vain muutamia kilotavuja, kun vastaavaan C-kieliseen ohjelmaan (joka ei siis käytä Survon valmiita tilastollisia operaatioita) saatetaan tarvita yli 100 kilotavua.

Sukrot syntyvät joko siirtymällä Survo-työskentelyn aikana opetustilaan (tutorial mode) ja antamalla Survon tallettaa kaikki toimenpiteet valittuun tiedostoon tai kirjoittamalla sukrokielinen ohjelma ja tallettamalla se Survon TUTSAVE-komennolla. Usein sukroja tehdään yhdistelemällä mainittuja työtapoja.
     Kutakin sukroa siis vastaa erityinen tiedosto, jonka nimen liitteenä on .TUT . Sukrot tallentuvat tiedostoihin hyvin tiiviinä koodina. Kun sukro toimii, Survon toimitin lukee tiedostoa merkki merkiltä ja tulkitsee luetut merkit yleensä käyttäjän näppäinpainalluksia vastaaviksi. Sukro-ohjelmassa saattaa kuitenkin esiintyä erikoismerkkejä, koodiyhdistelmiä ja käskyjä, joilla ilmaistaan mm. käyttäjälle osoitetut kysymykset ja ehdolliset toimenpiteet.

Sukro-ohjelma (oli se tehty millä tekniikalla tahansa) luetaan toimituskenttään selväkielisessä muodossa TUTLOAD-komennolla, jolloin ohjelmaa voi tutkia ja muutella. Muutosten jälkeen ohjelma talletetaan vastaavalla TUTSAVE-komennolla. Näiden luku- ja kirjoituskomentojen takana on Survon sukrokääntäjä (CTUT.EXE), joka muuntaa selväkieliset ohjelmat Survon toimittimen ymmärtämään tiiviiseen muotoon. Alunperin sukro-ohjelmat näkyivät toimituskentässä asussa, joka oli varsin lähellä lopullista tiivistä muotoa (kts. esim. lukua Tutorial mode Survon englanninkielisessä käyttöoppaassa vuodelta 1987). Nyttemmin sukrokieltä on kehitetty monin tavoin selväkielisempään suuntaan.

Tässä oppaassa kuvataan sukrojen ohjelmointia olettaen, että lukija tuntee ennestään Survon käyttötavat. Survon ominaisuuksista kerrotaan vain niiltä osin, jotka liittyvät sukrojen hallintaan. Survoon on lisätty esim. useita näppäinkoodeja, joilla helpotetaan "sokean" sukron "hapuilua" toimituskentässä. Monille sukroillehan on tyypillistä, että ne etsivät kentästä Survon operaatioilla saatuja tuloksia ja perustavat jatkotoimenpiteet löydettyihin arvoihin. Tällaisissa takaisinkytkennöissä sukron tulee aistia kohdistimen sijainti ja tunnistaa kenttään ilmestyneet avainsanat ja tulokset.

Koko oppaan aineisto, esimerkkeinä olevat sukrot mukaan lukien, on talletettu levykkeelle "Sukrojen ohjelmointi". Lukijan kannattaa tutkia esimerkkejä kokeilemalla niitä oman Survonsa avulla. Useimmat tekstiin sijoitetut esimerkit ovat luonteeltaan eräänlaisia sormiharjoituksia. Niitä ei yleensä ole tarkoitettu lopulliseen käyttöön, vaikka tarjoavatkin mallia jatkokehitelmille. Vasta oppaan lopussa esitellään joitakin tosikäyttöön suunniteltuja sukrosovelluksia.

Sukrojen ohjelmointi Survossa - Seppo Mustonen 1991
  1. Johdanto
  2. Esimerkki
  3. Sukrokielen koodisanoja
  4. Sukromuisti
  5. Hapuilukoodit, tulostus ja kohdistimen liikuttelu
  6. Sukrojen aloittaminen ja kytkeminen toisiinsa
  7. Ehdolliset toiminnat
  8. Käyttäjän vuorovaikutus
  9. Aritmetiikka ja muistin välitön hallinta
  10. Sukrotiedostot
  11. Sukrojen lajit
  12. Sukrojen laatiminen käytännössä
  13. Virhetilanteet
  14. Näytesovelluksia
Liite: Sukrokielen koodisanat