Seppo Mustonen: Sukrojen ohjelmointi Survossa

11. Sukrojen lajit

Sukrot voidaan luokitella käyttötarkoituksensa ja rakenteensa puolesta useaan eri ryhmään. Jokaisella ryhmällä on omat erityispiirteensä, jotka vaikuttavat myös ohjelmointitapaan.

Tarkastelemme seuraavia sukrojen lajeja:

  1. Näppäinsukrot
  2. Näppäimistösukrot
  3. Asiantuntijasovellukset
  4. Survon operaatioiden muunnokset
  5. Opetusohjelmat
  6. Survon käynnistys sukrolla

Näppäinsukrot

Jos sukron nimessä on vain yksi kirjain (esim. sukro X), se voidaan aktivoida paitsi toimituskenttään kirjoitetulla komennolla /X , myös näppäinyhdistelmällä PREFIX M X . Jälkimmäisellä aktivointitavalla on se etu, ettei kenttään jää mitään turhia jälkiä.
     Näitä yksikirjaimisia sukroja sanotaan tästä lyhyestä aktivointitavasta johtuen näppäinsukroiksi. Näppäinsukroiksi kannattaa tehdä esim. tekstinkäsittelyä avustavat toiminnat, joissa näkyvien komentojen kirjoittelu olisi häiritsevää. Vakiosti Survossa on saatavilla esim. näppäinsukrot

X kahden peräkkäisen sanan paikanvaihto,
C sanan loppuosan kirjainten muunto isoiksi kirjaimiksi,
L sanan loppuosan kirjainten muunto pieniksi kirjaimiksi,
H tavujen siirto rivin lopusta seuraavan alkuun ja päinvastoin.

Näppäinsukrot ovat työkaluja, joiden tulee toimia nopeasti ja jotka eivät saa muuttaa kentässä mitään muuta kuin mihin ne on tarkoitettu. Näppäinsukroilla ei normaalisti ole parametreja. Aktivoitaessa sukromuistiin tulee vain W1=(empty) . Käyttäjän tulee kuitenkin saada tietoa toimintatavasta, jos hän aktivoi sukrokomennon parametrilla ? . Esim. /X ? aktivoituna kertoo sanojenvaihtosukron toiminnasta suoraan komentorivillä.

Näppäinsukron X listaus (selitykset suomennettuina) on seuraava:
  10  1 SURVO 84C EDITOR Sun May 12 11:07:39 1991         C:\SUOPAS\ 120  80 0
  35 *
  36 *TUTLOAD X_
  37 / Näppäinsukro X (suomenkielinen muunnos 12.5.1991/SM)
  38 /
  39 *{tempo -1}{init}
  40 /
  41 / Jos aktivoitu /X ?  , anna selitys:
  42 - if W1 '<>' ? then goto A
  43 *{erase}{erase}  PREFIX M X vaihtaa nykyisen ja seuraavan sanan paikat.
  44 *{goto End}
  45 /
  46 / Etsi ensimmäisen sanan alku:
  47 + A: {save char W1}
  48 - if W1 '<>' {sp} then goto C
  49 + B: {l}{save cursor W1,W2}
  50 - if W2 = 1 then goto End
  51 *{save char W1}
  52 - if W1 '=' {sp} then goto B
  53 + C: {save char W1}
  54 - if W1 '=' {sp} then goto D
  55 *{save cursor W1,W2}
  56 - if W2 = 1 then goto E
  57 *{l}{goto C}
  58 + D: {r}
  59 /
  60 / Talletetaan ensimmäinen sana W1 ja merkitään paikka:
  61 + E: {save word W1}{ref}
  62 /
  63 / Talletetaan toinen sana W2 ja palataan merkittyyn paikkaan:
  64 *{next word}{save word W2}{ref}
  65 /
  66 / Kirjoitetaan sanat käänteisessä järjestyksessä:
  67 *{print W2} {print W1}
  68 /
  69 / Poistetaan turhat merkit (kun sanojen välillä ollut useita välejä):
  70 + F: {save char W1} {}
  71 - if W1 '<>' {sp} then goto F
  72 /
  73 / Palataan merkittyyn paikkaan ja poistetaan merkintä:
  74 *{ref}{ref}
  75 + End: {tempo +1}{end}
  76 *

Näppäinsukro X toimii osoittamalla kohdistimella sanaväliä tai mitä tahansa ensimmäisen sanan kirjainta (sanojen oltava näkyvissä samalla rivillä) ja painamalla nappeja PREFIX M X .
     Sukrolla X on myös toinen hyödyllinen käyttötapa. Jos se aktivoidaan rivin viimeisen sanan perässä, ko. sana kopioituu uudelleen rivin jatkoksi (miksi?).

Myös monikirjaimisia sukroja voi aktivoida näppäinsukroina antamatta näkyvää komentoa. Esim. sukro KOE aktivoidaan painalluksin
     PREFIX ! K O E ENTER
Jos sukromuistin sisältö halutaan säilyttää, sukro KOE käynnistetään painalluksin
     PREFIX ; K O E ENTER
Viimeksi mainittu vastaa täsmälleen sukro-ohjelman käskyä {call KOE} .

Näppäimistösukrot

Sukrotekniikan avulla on mahdollista muuntaa näppäimistön toimintaa väliaikaisesti. Valituille näppäimille voidaan määritellä tehtäviä yksinkertaisten tekstien kirjoittamisesta monivaiheisten toimintasarjojen suorittamiseen. Muiden näppäinten osalta Survon toimitin jatkaa normaalisti.
     Näppäimistösukroissa on keskeisessä asemassa get key -käsky, jota ei ole esitelty aikaisemmin. Muita näppäimistösukroissa tarpeellisia käskyjä ovat message, break off ja break on.

{get key Wi} odottaa, kunnes käyttäjä painaa jotain nappia. Tällöin se tallettaa painettua nappia vastaavan merkin sukromuistiin paikkaan Wi . Merkkiä ei kirjoiteta toimituskenttään. Jos kyseessä on kuitenkin erikoisnäppäin (esim. nuolinäppäin, funktionäppäin, ENTER, ESC jne.), joka ei kirjoita mitään merkkiä, se toimii normaalisti ja sukromuistiin talletetaan merkkijono SK (SK=Special Key).

Yksinkertaisena esimerkkinä laadimme sukron S1, joka muuttaa näppäimistön toiminnan vain S-napin kohdalla. Aina kun painetaan S, sukro kirjoittaakin tekstin "SURVO 84C ".
     Jotta näppäimistösukron saa lopettamaan toimintansa, on jokin nappi valittava tähän tehtävään. Siihen suositellaan napin # käyttämistä. Sukron S1 listaus on:
  11  1 SURVO 84C EDITOR Sun May 12 15:33:54 1991         D:\SUOPAS\ 120  80 0
   1 *
   2 *TUTSAVE S1_
   3 *{tempo -1}
   4 + A: {get key W1}
   5 - if W1 '=' S then goto S
   6 - if W1 '=' SK then goto A
   7 - if W1 '=' # then goto End
   8 *{write W1}{goto A}
   9 + S: SURVO 84C {goto A}
  10 + End: {tempo +1}{end}
  11 *

Sukro S1 kiertää jatkuvasti ohjelmasilmukkaa, joka alkaa riviltä 4 (viite A). Jos käyttäjä painaa nappia S, mennään kohtaan S, jossa kirjoitetaan teksti "SURVO 84C " ja palataan alkuun. Jos käyttäjä painaa jotain erikoisnäppäintä (SK), se hoitaa tehtävänsä ja ohjelma palaa kierroksen alkuun. Jos painetaan nappia #, sukro päättyy. Kaikki muut (tavanomaiset kirjoittavat näppäimet) johtavat riville 8 eli ne kirjoitetaan write-käskyllä ja palataan sen jälkeen taas alkuun.

Kunnolla tehdyn näppäimistösukron on pidettävä käyttäjä tietoisena siitä, että Survon toimitin ei ole tavanomaisessa tilassa vaan jotkin näppäintoiminnat ovat poikkeuksellisia. Se hoidetaan pitämällä kuvaruudun alimmalla rivillä tiedotusta. Survon toimitin jättää tämän rivin vapaaksi juuri tällaisia sanomia varten. Tiedotus annetaan message-käskyllä, jonka rakenne on

    {message}<tekstiä>@ .
Ilmoitettava teksti päättyy siis sukro-ohjelmassa merkkiin @.

Muutamme sukron S1 toiseksi näppäimistösukroksi S2, joka tiedottaa näin toiminnastaan:
   4  1 SURVO 84C EDITOR Sun May 12 15:56:14 1991         D:\SUOPAS\ 120  80 0
  11 *
  12 *TUTSAVE S2
  13 *{tempo -1}
  14 *{message}        S = SURVO 84C        Toiminta päättyy napilla #@
  15 + A: {get key W1}
  16 - if W1 '=' S then goto S
  17 - if W1 '=' SK then goto A
  18 - if W1 '=' # then goto End
  19 *{write W1}{goto A}
  20 + S: SURVO 84C {goto A}
  21 + End: {message}@{tempo +1}{end}
  22 *
  23 */S2_
  24 *
  25 *
  26 *
  27 *
  28 *
  29 *
  30 *
  31 *
  32 *
  33 *
      S = SURVO 84C        Toiminta päättyy napilla #

Näemme, miten sukron S2 käynnistys on vaikuttanut kuvaruudun alimpaan riviin.
     Sukron on ennen päättymistään pidettävä itse huolta siitä, että tiedotus tulee pyyhkäistyksi pois. Se tapahtuu antamalla tyhjä tiedotus käskyllä {message}@ , kuten edellä on tehty rivillä 21.
     Jos sukro päättyy virheeseen tai käyttäjä keskeyttää sen napilla piste, alarivin tiedotus poistuu itsestään.

Näytteenä aidosta näppäimistösukrosta esittelemme S-sukron, joka kuuluu Survon perusvarustukseen. Ohjetekstit on suomennettu tässä versiossa:
  10  1 SURVO 84C EDITOR Sun May 12 16:21:53 1991         D:\SUOPAS\ 120  80 0
  35 *
  36 *TUTSAVE S_
  37 *{tempo -1}{break off}
  38 - if W1 '<>' ? then goto 1
  39 *{R}
  40 *{erase}{erase}/S on tarkoitettu varjomerkkien kirjoittamiseen.{R}
  41 *{erase}{erase}Varjokirjoitukseen ja siitä pois napilla - .{R}
  42 *{erase}{erase}Sukro päättyy napilla #.{R}
  43 *{erase}{erase}{goto End}
  44 + 1: {message}                         Varjokirjoitukseen napilla -.  {}
  45 *Lopetus: #@
  46 + A: {del stack}{get key}
  47 - if W1 '=' SK then goto A
  48 - if W1 '=' - then goto 2
  49 - if W1 '=' # then goto End
  50 *{write W1}{goto A}
  51 + 2: {message}        VARJOKIRJOITUS.  Normaalitilaan napilla -.      {}
  52 *Lopetus: #@
  53 + B: {del stack}{get key}
  54 - if W1 '=' SK then goto B
  55 - if W1 '=' - then goto 1
  56 - if W1 '=' # then goto End
  57 *{d}{u}{pre}S{d}{write W1}{u}{pre}S{goto B}
  58 + End: {message}@{break on}{tempo +1}{end}
  59 *

Sukro S helpottaa varjomerkkien kirjoittamista. Tavallisesti kun kirjoitamme kohdistimen osoittamalle merkille varjomerkin, tarvitaan seuraavat 7 painallusta:

PREFIX
S Varjorivi avataan nykyisen rivin alle.
<nuoli alas> Siirrytään varjoriville.
<merkki> Kirjoitetaan varjomerkki.
PREFIX
S Poistetaan varjorivi näkyviltä.
<nuoli ylös> Palataan takaisin kirjoitettavalle riville.

Varjomerkkejä saatetaan tarvita paljon. Se on tavallista mm. silloin kun tekstiä valmistetaan painokuntoon ja varjoilla osoitetaan vaihtuvia kirjasinlajeja ja erilaisia tehostuksia. Sukron S avulla nuo 7 painallusta korvataan yhdellä, itse varjomerkin kirjoittamisella.
     Kun sukro S käynnistetään, se kirjoittaa tekstiä aluksi täysin normaalisti. Painamalla nappia - sukro siirtyy varjomerkkien kirjoitukseen, jolloin jokainen tavallisen napin painallus merkitsee vastaavan varjomerkin asetusta kohdistimen osoittamaan paikkaan.
     Sukrolla S on siis kaksi eri tilaa, joita vastaavat viitteestä 1 (rivi 44) j viitteestä 2 (rivi 51) alkavat ohjelmakierrokset. Kuten listauksesta nähdään, nappi - siirtää toiminnan tilasta 1 tilaan 2 ja päinvastoin.
     Aivan sukron S alussa (rivillä 37) on {break off} -käsky, joka kuitataan sukron lopussa (rivillä 58) {break on} -käskyllä. Tämä takaa, että myös pistettä ja nappeja + - voidaan käyttää vastaavien merkkien kirjoittamiseen.

Muita valmiiksi Survoon tehtyjä näppäimistösukroja S-sukron lisäksi ovat BOX graafisten merkkien piirtoon (esim. lomakkeita tehtäessä) ja SUCRO sukrokielen mutkikkaampien käskyjen ja rakenteiden kirjoittamiseen. Ne löytyvät Survon S-hakemistosta.

Asiantuntijasovellukset

Ne, jotka tuntevat hyvin Survon käyttömahdollisuudet ja tekevät sillä usein toistuvia, asiantuntemusta vaativia tehtäviä, saattavat tallentaa toimenpidesarjansa sukroiksi.
     Tällainen tehtävä on esim. määräajoin toistuva raportointi, johon kuuluu mm. muuttuneiden lähtötietojen päivitys, tietojen tilastollinen tai muu analyysi sekä erilaiset taulukkomaiset yhteenvedot, tulosten sanallinen ja kuvallinen esittäminen sekä lopuksi painovalmiin selostuksen tuottaminen. Kaikkiin työvaiheisiin saattaa sisältyä ehdollisia toimenpiteitä. Esim. jos tutkittava ilmiö osoittaa tällä hetkellä kasvua, siihen reagoidaan raportissa erilaisin kuvin ja sanankääntein kuin ilmiön osoittaessa muuta kehityssuuntaa.
     Pääajatus on, että ainakin sovelluksen tekijä itse selviäisi uusintakerroilla vaivattomammin, kun työ on kerran kunnolla "purkitettu". Toistettaessa ei tarvitse rasittaa päätään enää kaikilla yksityiskohdilla. Hyvin toteutettua asiantuntijasukroa voi käyttää sellainenkin henkilö, joka ei esim. ole perillä tilastollisesta laskentatekniikasta, mutta pystyy kyllä syöttämään oikeita lähtötietoja ja osaa lukea lopullisia tuloksia.
     Kokeneet Survon käyttäjät, jotka osaavat tehdä sukroja, kertovat kyenneensä toteuttamaan jotkin vaativat tehtävänsä murto-osalla siitä ajasta, mikä tarvittaisiin tavanomaisen ohjelman kirjoittamiseen ja testaamiseen.
     Monesti sukron teko lähtee liikkeelle havainnosta, että tietty toimenpidesarja näyttää toistuvan aika usein ja alkaa tuntua siltä, että olisi mukavaa, jos saisi työn automatisoitua. Tällaisten havaintojen pohjalta tottuneet Survon käyttäjät rakentelevat itselleen jatkuvasti uusia, omaa työtään helpottavia työkaluja sukroina.

Laajoja asiantuntijasovelluksia ei kuitenkaan laadita hetkessä. Kyse ei ole ohjelmoinnin vaikeudesta, vaan siitä, että hyvätkin ideat kaipaavat yleensä pitempiaikaista kypsyttelyä, ennenkuin ne muotoutuvat valmiiksi toteutuksiksi. Kokenut Survon käyttäjä tekee töistään erilaisia malleja ja kaaviota, jotka hän tallettaa toimituskenttinä. Hän kokeilee vaihtoehtoisia yhteenveto- ja analyysitapoja sekä piirtää kuvia laatimatta välttämättä yhtäkään sukroa. Työkokonaisuudesta syntyy eräänlainen prototyyppi valmiiden kaavioiden muodossa.
     Vasta tämän jälkeen kannattaa harkita koko tehtävän suorittamista sukron alaisuudessa. Tällöinkin kannattaa edetä vaiheittain ja toteuttaa sukroina aluksi eniten automatisoinnista hyötyvät osat. Osia yhdistelemällä syntyy sitten lopullinen toteutus, joka koostuu jopa kymmenistä osasukroista. Tulee muistaa, että monimutkaiset asiat ovat vain yksinkertaisten asioiden yhdistelmiä.

Sukroina tehdyille asiantuntijasovelluksille saatetaan tuskin esittää yhtenäisiä vaatimuksia. Ne voivat olla myös ilmiasultaan hyvin erilaisia. Jotkut ovat Survon omien komentojen tai operaatioiden kaltaisia eli ne aktivoidaan käyttäjän valitsemilla parametreilla ja ne antavat tuloksensa komentorivin alapuolelle hävittäen siellä aikaisemmin olevat tiedot. Mittavimmat sukrosovellukset ovat valikkopohjaisia, itsenäisiä tietojärjestelmiä. Usein niissä Survon läsnäolo on häivytetty taustalle, etenkin jos ne on tarkoitettu Survoa taitamattomille soveltajille.

Yhdenkin asiantuntijasovelluksen perusteellinen kuvaus vaatisi niin paljon tilaa, ettei siihen ole mahdollisuutta tässä oppaassa. Niitä ei sitäpaitsi sisälly Survon perusvarustukseen lukuunottamatta laajaa suomenkielistä opetussarjaa (sukro OPETUS), joka joissain suhteissa vastaa valikkopohjaista asiantuntijasovellusta.
     Luvussa Näytesovelluksia esitellään opetussarjan lisäksi muitakin sukroja, joita voi pitää suppeina asiantuntijasovelluksina.

Survon operaatioiden muunnokset

Eräänlaiseksi asiantuntijasovellusten alalajiksi on katsottava Survon omien komentojen ja operaatioiden muunnokset, joilla pyritään helpottamaan tai monipuolistamaan käyttötapoja. Esim. kutakin tilastollisista operaatiota vastaamaan voidaan tehdä sukro, joka yksinkertaisesti suomentaa tulostaulukon englanninkieliset otsikot ja ammattisanat. Tällainen on mm. sukro LINREG, joka suomentaa Survon lineaarisen regressioanalyysimodulin LINREG tulokset. Sukro LINREG löytyy tähän oppaaseen kuuluvalta levykkeeltä.
     Muunnettua operaatiota voi samalla viedä hieman pitemmälle vaikka niin, että operaatiota vastaava sukro kyselee erilaisia lähtötietoja käyttäjältä ja antaa valintamahdollisuuksia kertoen samalla tarjottujen vaihtoehtojen sisällöstä. Vastaavasti tuloksia saatetaan selostaa sanallisesti eri tavoin riippuen niiden luonteesta ja merkityksestä. Tällaisesta asiantuntijasovelluksesta käy esimerkkinä sukro VERTAA, joka kuuluu Survon suomenkieliseen opetussarjaan ja toimii COMPARE-modulin tulosten tulkkina. VERTAA-sukrolla on mahdollista tutkia tilastollisesti kahta riippumatonta tai parittaista otosta. Soveltajalta ei edellytetä tilastollisen testiteorian ei erilaisten testimenetelmien varsinaista tuntemista.
     Toinen esimerkki tilastollisesta sukrosta on FACTOR, joka tekee kaikki faktorianalyysin laskentavaiheet automaattisesti. Se mm. päättelee faktoriluvun itsenäisesti korrelaatiomatriisin ominaisarvojen perusteella. Sukro FACTOR kuuluu Survon laajan version mukana seuraaviin työkaluihin.

Opetusohjelmat

Sukrotekniikka kehitettiin alunperin Survon omien työmuotojen esittelyyn. Yhtälailla opetusohjelmia saatetaan tehdä myös kaikista Survon ulottuvilla olevista aiheista ja ongelmista, joita siis esiintyy esim. matematiikan, tilastotieteen, tietojenkäsittelyn ja eri reaaliaineiden opetuksessa.

Opetettava aihe toteutetaan tavallisesti ensin käyttämällä Survoa opetustilassa (tutorial mode) ja näin muodostunutta sukroa kehitellään eteenpäin liittämällä siihen esim. kysymyksiä ja ehdollisia toimintoja.
     Opetusohjelmat sisältävät tavallisesti lukuisia toisiinsa kytkeytyviä sukroja. Ne voivat yhdistyä esim. valikoiden välityksellä. Opetusohjelmat sisältävät vuorotellen opetettavaa aihetta selostavaa tekstiä ja Survon eri operaatioilla toteutettavia tehtäviä.

Erityisen hyvin sukrotekniikka soveltuu erilaisten "tarinoiden" kertomiseen. Katsojan ei tarvitse tyytyä pelkkään passiiviseen seurantaan vaan hänelle tarjotaan mahdollisuus osallistua toimintaan. Kyseessä on muotoaan jatkuvasti muuttava hyperteksti, jonka automaattisen etenemisen käyttäjä saa halutessaan keskeytettyä kokeillakseen omia kykyjään jatkamalla itsenäisesti.
     Sukroina tehdyt opetusohjelmat voivat myös seurata oppilaan edistymistä tekemällä kysymyksiä ja antamalla harjoitustehtäviä.

Opetusohjelmissa kannattaa kiinnittää erityisesti huomiota nopeuden säätelyyn ja toimintojen ajoitukseen. Kun sukro käynnistetään normaalisti, sen kirjoitusnopeus kuvaruudussa on säädetty sen verran alhaiseksi, että tekstin ehtii hyvin lukea. Käyttäjähän saattaa kuitenkin tarvittaessa hidastaa nopeutta napilla - ja keskeyttää väliaikaisesti välilyöntinäppäimellä. Opettajalla on näin tilaisuus korostaa määrättyjä asioita ja hänelle jää aikaa kertoa aiheesta enemmän opetusohjelman kestäessä. Lisäksi opetusohjelman eteneminen saadaan pudotetuksi askel askeleelta tapahtuvaksi HELP-napilla (F1) tai keskeytetyksi kokonaan napilla piste.
     Pitkissä opetusjaksoissa on joskus tarpeen hakea määrättyä kohtaa suurimmalla mahdollisella nopeudella. Tähän päästään perusnopeudesta painamalla nappia + . Kun lähestytään kiinnostuksen kohdetta, hidastetaan napilla - tai painetaan HELP-nappia kahdesti.
     Näiden ulkoisten keinojen ohella, opetusohjelmissa kannattaa ottaa avuksi itse ohjelmaan sijoitetut, nopeutta säätelevät käskyt.

Käskyllä {tempo <nopeus>} , missä <nopeus> on kokonaisluku, valitaan sukron kirjoitusnopeus. Perusnopeus on {tempo 2} ja nopeus vähenee parametrin arvon kasvaessa. Suurin nopeus on {tempo 1} , jota käyttäjä voi hidastaa napilla - . Sama suurin mahdollinen nopeus saadaan myös käskyllä {tempo 0} , mutta silloin käyttäjälle ei jää mahdollisuutta hidastukseen.

Nopeutta voi muuttaa myös suhteessa aikaisempaan käyttämällä etumerkillä + tai - varustettuja nopeusarvoja. Esim. {tempo -1} vähentää parametrin nykyistä arvoa yhdellä ja {tempo +1} vastaavasti lisää sitä yhdellä. Nopeiksi tarkoitetuissa sukroissa (työkalut ja asiantuntijasovellukset) pannaan heti alkuun tavallisesti {tempo -1} ja ennen loppua palataan perusnopeuteen {tempo +1} . Etenkin, jos sukroa käytetään aliohjelmana, nopeuden palauttaminen entiselleen auttaa koko sovelluksen nopeuden säätelyssä.
     Opetusohjelmissa pysytään yleensä perusnopeudessa, jolloin tekstin ehtii mukavasti lukea kirjoituksen aikana. Toisinaan on kuitenkin parempi väläyttää näkyville laajempi, yhteen kuvaruutuun mahtuva tekstikokonaisuus kerralla siirtymällä suurempaan nopeuteen ja antamalla käyttäjälle mahdollisuus ilmaista napin painalluksella, milloin hän on valmis antamaan toiminnan jatkua.
     Tämä tapahtuu esim. on key -käskyllä näin:

    *{tempo-1}

   [ Kuvaruudullinen tekstiä ]

    *{message}        Jatka painamalla nappia ENTER!@
    - on key
    -    key _: goto A
    -    wait 600
    + A: {tempo +1}
Kun opetusohjelma toimii perusnopeudella tai hitaammin, määräaikaisia pysähdyksiä saatetaan asettaa mihin kohtaan tahansa käskyllä {wait <odotusaika>} , missä odotusaika ilmoitetaan sekunnin kymmenesosina. Esim. pilkkuun päättyvien lauseenosien jälkeen on hyvä laittaa {wait 5} ja lauseiden loppuun {wait 10} tai jopa {wait 20} . Näin esitykseen tulee luonteva jaksotus. Kun tarkastellaan jotain kenttään saatua tulosta, on varmasti syytä asettaa vielä pitempi odotusaika. Odotus kuitenkin keskeytyy, kun käyttäjä painaa jotain näppäintä.

Survon käynnistys sukrolla

Survo aloitetaan siirtymällä Survon päähakemistoon (tavallisesti nimeltään E, SURVOS-versiossa SURVOS) ja käynnistämällä tässä hakemistossa oleva ohjelma S.EXE, Survon toimitin.
     Kun ohjelmaa S.EXE kutsutaan käyttöjärjestelmästä, komennossa voi olla (ensimmäisenä) parametrina sukron nimi. Tällöin, sen asemasta että aloitus pelkästään valitsisi toimituskentän START, aktivoituukin parametrina mainittu aloitussukro.
     Käytännössä Survoon siirrytään komentotiedoston SURVO.BAT välityksellä. Tämän tiedoston rakenne on tyypillisesti:

    REM ... Loading Survo ...
    CD \E
    S %1
    CD \
SURVO-komennon parametri (yleisesti %1) kopioituu sellaisenaan ohjelman S aloitukseen. Näin komennolla
    SURVO  <sukro>
Survo lähtee käyntiin aloitussukrolla <sukro> .

Aloitussukron tehtävä on johdattaa käyttäjä suoraan siihen toimintaan, jota aloituksessa tavoitellaan. Erityisesti aloitteleville tai vain rajoitetusti Survon kanssa työskenteleville on hyödyksi, että Survon käynnistys vie heidät välittömästi esim. sovelluskohtaiseen valikkoon, josta on helppo edetä. Tottuneet survoilijat vuorostaan rakentavat itselleen erilaisia työskentely-ympäristöjä, joihin he pääsevät tekemillään aloitussukroilla.
     Aloitussukron luonteella ja laajuudella ei ole mitään rajaa. Tavallisesti se hyvin suoraviivaisesti valitsee halutun hakemiston, avaa jonkin toimituskentän, siirtää kohdistimen siellä sopivaan paikkaan ja pysähtyy. Se saattaa myös esittää kysymyksiä käyttäjälle ja tehdä aloitusvalintansa vastausten perusteella.
     Aloitussukro toimii myös lähtökohtana Survon varaan rakennettaville valikkopohjaisille sovelluksille, joiden käyttäjien ei tarvitse tietää itse Survosta välttämättä mitään.
     Kun Survo käynnistetään aloitussukrolla eikä sukron nimen yhteydessä ole nimetty polkua, sukroa etsitään samalla tapaa samassa järjestyksessä eri hakemistoista kuin mitä tahansa muutakin sukroa (kts. luku 6). Aloitussukrot kannattaa tallettaa esim. SURVO.APU-tiedostossa sucropath-rivillä määriteltyyn hakemistoon tai, ellei sitä ole nimetty, Survon TUT-hakemistoon.

Esimerkkinä tyypillisestä aloittamiseen tarkoitetusta sukrosta käy sukro /OPETUS, joka käynnistää Survon suomenkielisen opetussarjan vaihtamalla datahakemistoksi C:\E\OPETUS (eräissä kohdissa esiintyy myös vanhemman tavan mukainen merkintä .\OPETUS ) ja pyytämällä jatkoksi sukron SEURAAVA. Esitämme siitä tässä pelkistetyn muodon, joka on ollut käytössä versioon 3.21 asti. Uusin OPETUS-sukro tallettaa myös nykyisen toimituskentän ja kohdistimen sijainnin antaen näin mahdollisuuden palata opetuksen jälkeen takaisin tekeillä olevaan työhön.
  21  1 SURVO 84C EDITOR Sat May 18 10:24:45 1991         C:\SUOPAS\ 120  80 0
  75 *
  76 *TUTLOAD .\TUT\OPETUS_ / (Vanha versio)
  77 *{tempo -1}{init}{line start}{erase}{erase}
  78 / Valitaan opetushakemisto:
  79 *DISK {save systemdisk W1}{print W1}.\OPETUS{act}
  80 / Jatketaan sukrolla SEURAAVA (W1=oletusvastaus):
  81 *{del stack}{W1=1}{tempo +1}{load SEURAAVA}{end}
  82 *

Kun Survo aloitetaan käyttöjärjestelmästä käskyllä SURVO OPETUS, valitaan hakemisto C:\E\OPETUS ja jatketaan sukrolla SEURAAVA niin, että sukromuistissa on W1=1 . Sukro SEURAAVA näyttää opetusohjelmien päävalikon ja tarjoaa käyttäjälle W1:n mukaisen oletusvastauksen. Opetussarjan rakennetta kuvataan enemmän kohdassa Näytesovelluksia.
     Myös Survon käytön aikana aloitussukrot toimivat. Esim. komennolla /OPETUS opetussarja aloitetaan aina alusta.

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