Kuten jo aikaisemmin todettiin, sukrokieli on siinä suhteessa
poikkeuksellinen, että se edellyttää ohjelmoijalta Survon
käyttötapojen hyvää hallintaa. Sukrojen tulee luottaa valmiisiin
Survon operaatioihin ja yhdistellä niitä tehokkaasti. Näin ei kaikkea
tarvitse rakentaa alusta; sukro syntyy panemalla vain kokoon
erilaatuisia elementtejä.
Myös itse ohjelmointityössä on hyötyä Survon läsnäolosta. On
selvää, että monet sukrojen osat kannattaa toteuttaa ensin
opetustilassa, siis käyttämällä Survoa ja antamalla systeemin
tallentaa kaikki toimenpiteet. Yhtä selvää on, että varsinkin
loogisesti mutkikkaammat työvaiheet on paras kirjoittaa suoraan
sukrokielellä. Esim. ehdollisia rakenteita ei edes voi kuvata pelkällä
opetustilassa tapahtuvalla mallityöskentelyllä.
Survon oma toimitin on keskeisessä asemassa sekä ohjelmia
kirjoitettaessa että niitä testattaessa. Yleensä sukrot kehittyvät
useista irrallisista palasista, joita liimataan yhteen
toimituskentässä. Sukron laatimiseen ja muokkaamiseen on hyvä varata
riittävän iso toimitustila, jossa ylläpidetään sekä tekeillä olevan
sukron listausta että testaukseen tarvittavia komentoja ja
esimerkkitilanteita. Kun tehdään jokin muutos, talletetaan ohjelma
listauksen edessä olevalla TUTSAVE
-komennolla ja sen jälkeen sitä
kokeillaan jollakin valmiilla, samassa kentässä olevalla
esimerkkikaaviolla. Jos testattava sukro muuttaa kentän sisältöä,
talletetaan koko myös koko kenttä ennen kutakin testausyritystä. Näin
sukrosta pidetään kirjaa sekä toimituskentässä että varsinaisessa
sukrotiedostossa.
Sukroja ohjelmoiva keventää omaa työtään rakentamalla
työkalusukroja, jotka auttavat uusien sukrojen kirjoittamisessa. Tässä
suhteessa on varmasti niin monenlaisia tyylejä ja makuja, ettei mikään
valmis apusukro kelpaa jokaiselle ohjelmoijalle. Yhtenä mallina
sellaisesta on kuitenkin olemassa näppäimistösukro SUCRO
, jonka tuella
mutkikkaampien sukrokäskyjen ja -rakenteiden kirjoittaminen sujuu
helposti.
Esimerkkinä apusukron SUCRO
käyttötavasta olkoon seuraava.
Tekeillä on sukro KYSELY1
, jota ollaan kirjoittamassa kentän
ensiriveille:
|
|
Sukroon KYSELY1
pitäisi saada käyttäjälle osoitettu kysymys.
Rivillä 6 on tämän vuoksi aktivoitu näppäimistösukro SUCRO
, joka
muuntaa napin -
toimintaa siten, että sen jälkeen eräät muut merkit
kirjoittavat sukrokielen käskyjen valmiita malleja. Tästä on tiedotus
kuvaruudun alimmalla rivillä. Vaihtoehdot on listattu aiemmin kenttään
rivin 14 komennolla, jossa parametrina oleva ?
antaa riveillä 15-20
olevan selostuksen eri nappien toiminnoista. Esim. yhdistelmä -Q
tuottaa valmiin prompt-käskyn mallin, joka tässä saatu riveillä 7-11.
Kun apusukro SUCRO
on käytössä, se ei tuhoa kentässä olevaa tekstiä
vaan lisää kohdistimen osoittamaan kohtaan tyhjiä rivejä, ennenkuin
kirjoittaa omat mallirivinsä.
Yhtä sukroa ei saisi tehdä liian suureksi. Mittavat ratkaisut on
paras koota pienistä sukroista, jotka load
-käskyin ketjuuntuvat
toisiinsa. Samaan sovellukseen kuuluvat osat on edullista tallentaa
yhdeksi sukroperheeksi samaan tiedostoon, kuten kohdassa 10 kuvattiin.
Pari - kolme kilotavua on yleensä sopiva yläraja yhdelle osasukrolle.
Silloin sukroa on kätevä muokkailla toimituskentässä. Osista kootut
sukrot saattavat olla käytännössä nopeampia, sillä esim.
goto
-käskyissä mainitut viitepaikat etsitään ajon aikana sukrokoodin
alusta päin. Hyvin pitkillä yksittäisillä sukroilla jonkin koodin
lopussa olevan viitteen etsiminen on tällöin hidasta, ellei koneessa
ole tehokasta välimuistia levytiedostojen käsittelyyn tai muuta
vastaavaa keinoa.
Itse sukrojen arkkitehtuurissa tulee edulliseksi yhdistellä sukroilla tehtyjä asioita valmiisiin tekstiä ja toimintakaavioita sisältäviin toimituskenttiin. Myös valikkopohjat kannattaa tehdä toimituskenttiin. Sukro ottaa tällöin käyttöön valmiin toimituskentän, näyttää siitä käyttäjälle sopivia osia ja hyödyntää valmiita kaavioita, taulukkoja ja valikkoja.
Survon operaatiot noudattavat samankaltaisia sääntöjä, mitä tulee
niiden käynnistykseen, alkutietojen antamiseen (parametrit,
täsmennykset), käsittelyn kohteena olevien tietojen esittämiseen ja
rajoittamiseen (havaintotaulukot, -tiedostot) sekä tulosten
esittämiseen (toimituskentässä, matriisija tulostiedostoissa).
Koska vaativia tehtäviä suorittavat sukrot soveltavat peräkkäin
eri operaatioita, ne perivät luonnollisella tavalla näiden ulkoiset,
yhtenäiset ominaisuudet. Tästä huolimatta sukrojen vastuulle jää monia
asioita, jotka voi järjestää vaihtoehtoisilla tavoilla ja joissa jokin
vakiintunut käytäntö saattaisi olla eduksi. Yhdenmukaisuus helpottaa
käyttäjän totuttelua uusiin toimintoihin. Tiukkoja vaatimuksia ei ole
syytä esittää, koska sukrot ovat luonteeltaan vaihtelevia.
Sukron aloittaessa toimintansa sen tulee ottaa huomioon, että
toimituskenttä saattaa olla epänormaalissa tilassa. Melkein
poikkeuksetta sukron alussa on tämän vuoksi paras antaa käsky {init}
.
Se ei muuta kohdistimen paikkaa eikä vaikuta kentän sisältöön, mutta
varmistaa mm. etteivät jotkin kesken jääneet toimenpiteet (lisäystila,
avoinna oleva varjorivi, vasemman reunan asetus jne.) koidu haitaksi.
Kun kysymys on työkalusta tai asiantuntijasovelluksesta, jonka
pitäisi edetä mahdollisimman nopeasti, on alkuun hyvä asettaa {tempo -1}
,
mikä ennen sukron loppua kuitataan käskyllä {tempo +1}
.
Sukro ei koskaan saisi tuhota ympäristöään esim. toimituskentässä
tarpeettomasti. Varsinkin työkalusukrojen olisi yritettävä tehdä
työnsä aktivoidulla rivillä. Jos ne tarvitsevat lisätilaa, hyvä
käytäntö on lisätä komentorivin alle tyhjä rivi tai useampia, joita
käytetään väliaikaisesti. Sukron tulee itse siivota jälkensä ja
poistaa tällaiset työrivit lopuksi.
Survon varsinaisten operaatioiden kaltaiset sukrot tietenkin
tuottavat tuloksensa toimituskenttään. Yleensä sukroissa ei käyttäjän
edellytetä nimeävän mitään alkuriviä tuloksille. Normaali menettely
sukroilla on se, että toimituskenttä tyhjennetään komentorivin
alapuolelta ja tulokset kirjoitetaan tähän tyhjään tilaan. Sen sijaan
sukro ei saisi koskaan poistaa eikä muuttaa komentorivin yläpuolella
olevia tietoja. Tällaisen sukron käyttäjältä edellytetään, että hän
sijoittaa mahdolliset täsmennykset ja muut sukron tarvitsemat tiedot
ennen riviä, jolla sukrokomento annetaan.
Laajoissa asiantuntijasovelluksissa ja opetusohjelmissa on
kuitenkin täysin oikeutettua unohtaa nykyinen toimituskenttä ja
siirtyä omiin maisemiin. Jos halutaan, niissä on mahdollista tallettaa
nykyinen kenttä ja kohdistimen paikka, jolloin sovelluksen päätyttyä
päästään automaattisesti takaisin lähtökohtana olleeseen työhön. Näin
on menetelty mm. suomenkielisen opetussarjan (sukro OPETUS
) kohdalla.
Jokaisen yleiseen käyttöön tarkoitetun sukron olisi osattava
kertoa jotain omasta toiminnastaan silloin, kun se käynnistetään
puutteellisin parametrein tai mikäli sukroon ei kuulu parametreja,
parametrilla ?
. Käyttöohje annetaan esim. {message}
-käskyllä, jolloin
se ei kuluta toimituskenttää. Jos tarvitaan enemmän rivejä, ohjeet
kirjoitetaan lisäämällä nykyisen rivin alapuolelle riittävästi tyhjää.
Tuntematonta sukroa aktivoidessaan käyttäjien olisi kuitenkin aina
varauduttava siihen, että se saattaa tuhota toimituskentän sisältöä.