Seppo Mustonen: Sukrojen ohjelmointi Survossa

10. Sukrotiedostot

Sukrot talletetaan TUTSAVE-komennoilla .TUT-päätteisiksi tiedostoiksi Survon senhetkiseen datahakemistoon (ilmoitettu kentän otsikkorivillä). Jos annetaan nimen edessä levy- tai polkutunnus, käytetään luonnollisesti ao. polkua. Sukrotiedostoissa ohjelmakoodi on tiivistetyssä muodossa eikä niitä kannata lukea tekstitiedostoina vaan ainoastaan TUTLOAD-komennoilla.

Sukrot menevät tiedostoissa varsin suppeaan tilaan. Tyypillisesti yksittäisen sukron käsittävä tiedosto vaihtelee muutamasta kymmenestä muutamaan tuhanteen tavuun. Lukuisat pienet tiedostot kuluttavat kuitenkin levytilaa käytännössä enemmän, sillä käyttöjärjestelmä varaa niille tilaa esim. 2048 tavun erissä, jolloin levylle saattaa jäädä paljon aukkoja.
     Tilan säästämiseksi on edullista tallettaa lähisukuiset sukrot samaan tiedostoon ikäänkuin yhtenä perheenä. Tästä on etua myös sikäli, että toisiinsa liittyvät asiat pysyvät näin kätevästi koossa. Lisäksi tiedostojen kopiointi levyltä toiselle nopeutuu huomattavasti.
     Sukroperhe perustetaan valitsemalla sopiva sukunimi, esim. ABC, tiedostonimeksi ja tallettamalla ensimmäinen perheeseen sisältyvä, toimituskenttään kirjoitettu sukro-ohjelma, esim. OSA1, komennolla TUTSAVE ABC-OSA1 . Tiedostoa ABC.TUT, joka tällöin muodostuu, ei tarvitse mitenkään erikseen perustaa. Seuraavat perheeseen kuuluvat sukrot, esim. OSA2 ja LOPPU, talletetaan vastaavasti komennoilla TUTSAVE ABC-OSA2 ja TUTSAVE ABC-LOPPU .
     Näiden talletusten jälkeen levyllä on tiedosto ABC.TUT, johon kuuluvat sukrot ABC-OSA1, ABC-OSA2 ja ABC-LOPPU .
     Niitä kutsutaan yhdistelmänimillään. Esim. komento /ABC-OSA2 aktivoi sukrotiedostossa ABC.TUT olevan OSA2-sukron. Sama sukro listataan kenttään komennolla TUTLOAD ABC-OSA2 ja talletetaan takaisin vastaavalla TUTSAVE-komennolla.
     Sukroperheissä sekä sukunimi (tiedostonimi) että sukron oma nimi (merkin - perässä) saavat kumpikin erikseen olla korkeintaan 8 merkin mittaisia.
     Selventääksemme edellä esitettyä, luomme sukroperheen ABC seuraavasti (osasukrot ovat tässä vain viitteellisiä):
   1  1 SURVO 84C EDITOR Sat May 11 14:03:37 1991         C:\SUOPAS\ 120  80 0
   1 *
   2 *TUTSAVE ABC-OSA1
   3 *{R}Tämä on sukroperheen jäsen OSA1.{end}
   4 *
   5 *TUTSAVE ABC-OSA2
   6 *{R}Tämä on sukroperheen jäsen OSA2.{end}
   7 *
   8 *TUTSAVE ABC-LOPPU
   9 *{R}Tämä on sukroperheen jäsen LOPPU.{end}
  10 *
  11 *TUTLOAD ABC
  12 *{R}
  13 *SURVO 84C SUCROS@   3@{R}
  14 *OSA1          81@{R}
  15 *OSA2         117@{R}
  16 *LOPPU        153@{R}
  17 *{end}
  18 *
  19 */ABC
  20 *SURVO 84C SUCROS@   3@
  21 *OSA1          81@
  22 *OSA2         117@
  23 *LOPPU        153@
  24 *_

Osasukrot on talletettu riveillä 2, 5 ja 8 olevilla TUTSAVE-komennoilla. Sukroperhettä ABC edustaa levyllä vain tiedosto ABC.TUT . Jos se listataan komennolla TUTLOAD ABC, kuten on tehty rivillä 11, saadaan toimituskenttään kyllä sukro-ohjelma, mutta se sisältää lähinnä vain osasukrojen nimet ja niiden alkuosoitteet sukrotiedostossa ABC.TUT . Esim. sukro ABC-OSA2 alkaa positiosta 117 tuossa tiedostossa. Näillä yksityiskohdilla ei ole mitään merkitystä sukrojen laatijalle. Tärkeintä on nähdä luettelonomaisesti, mitä jäseniä perheeseen kuuluu.
     Listaus on sukrokoodina sellainen, että vastaavat tiedot saadaan kenttään myös käynnistämällä sukro ABC, kuten on tehty rivillä 19.

Varoitus! Älä koskaan talleta pelkällä sukroperheen nimellä sukroa TUTSAVE-komennolla. Jos muutat esimerkissä rivillä 11 olevan TUTLOAD-komennon TUTSAVE-komennoksi, kaikki sukroperheen jäsenet katoavat. Saat vain sukron, joka listaa näiden entisten osasukrojen nimet.

Kun perheeseen kuuluva sukro (esim. OSA2) halutaan poistaa kokonaan sukrotiedostosta, se tapahtuu komennolla

    TUTDEL ABC-OSA2 .
Tämän jälkeen tiedostossa ABC.TUT olisivat enää sukrot ABC-OSA1 ja ABC-LOPPU , mikä nähdään seuraavasti:
   1  1 SURVO 84C EDITOR Sat May 11 15:51:14 1991         C:\SUOPAS\ 120  80 0
  24 *
  25 *TUTDEL ABC-OSA2
  26 *
  27 */ABC
  28 *SURVO 84C SUCROS@   2@
  29 *OSA1          63@
  30 *LOPPU         99@
  31 *_

Ei ole mitään rajaa sille, kuinka monta sukroa voi olla samassa tiedostossa. Suuri osasukrojen määrä ei edes hidasta niiden toimintaa. Vain osasukron talletukseen tarvittava aika saattaa hieman kasvaa, koska koko tiedosto joudutaan käymään läpi ja kopioimaan TUTSAVE-komennon aikana. Esim. Survon suomenkielisessä opetussarjassa on tällä hetkellä käyränpiirtoa koskeva sukroperhe CUR.TUT, jonka suuruus on noin 50 kilotavua ja jossa on 25 osasukroa. Saat niistä luettelon komennolla /C:\E\OPETUS\CUR .

Vuonna 1992 julkaistun Survon englanninkielisen käyttöoppaan kaikki esimerkit on koottu sukroperheeksi EX.TUT, jonka koko on noin 160 kilotavua. Se sisältää lähes 300 osasukroa. Niihin pääsee tutustumaan esimerkiksi Survon alkuvalikon kohdasta 6.

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