Toimituskentän hallintaa "risuaidoilla"

[viesti Survo-keskustelupalstalla (2001-2013)]

Kirjoittaja: Seppo Mustonen
Sähköposti:    -
Päiväys: 19.4.2010 13:27

Survo-risteilyn aikana 17.4.2010 kehkeytyi ajatus siitä, miten
Survon toimituskentässä olevissa usean komennon jonon
muodostamassa työkaaviossa olisi mahdollista toimia siten,
etteivät eri komentojen toimituskenttään tuottamat tulosrivit
peittäisi toisia komentoja eikä muitakaan pysyviksi tarkoitettuja
tietoja.
Kun tällaiset peräkkäiset komennot käynnistetään ensimmäisen
kerran erikseen ylhäältä alaspäin järjestyksessä, se ei ole ollut
ongelmallista, koska seuraavan komennon on voinut kirjoittaa
aina edellisen komennon tulosten perään.
Kuitenkin, jos samat valmiit komennot toistetaan muuttuneessa
tilanteessa, tulokset voivat rivien lisääntyessä peittää alempana
olevia komentoja tai rivien vähetessä jättää peräänsä turhia jäänteitä
aikaisemmista tuloksista.

Risteilyn aikana käytyjen keskustelujen pohjalta olen päätynyt
seuraavaan ratkaisuun em. ongelmien välttämiseksi.
Survolle ominaisten laskentakaavioiden erotteluun on käytössä
muotoa *........... olevat rajarivit. Nyt mukaan tulisivat pehmeämmät
"risuaidat" eli muotoa *########## olevat rivit.

Kuvaan uutta käyttötapaa pienellä esimerkillä, jossa aktivoidaan
kolme eri Survon komentoa peräkkäin ja ne käynnistetään lopulta suoraan
/ACTIVATE-sukrolla:

 11 */ACTIVATE +
 12 *Tarkastetaan tiedoston DECA rakennetta
 13 *seuraavalla komennolla:
 14 +#FILE STATUS DECA / MASK=-AAA
 15 *##########
 16 *Lasketaan perustunnuslukuja
 17 *Komennolla MINSTAT:
 18 +#MINSTAT DECA,CUR+1
 19 *##########
 20 *Vielä keskiarvoja, hajontoja ja korrelaatiokertoimia
 21 *ohjelmalla CORR:
 22 +#CORR DECA,CUR+2
 23 *##########
 24 *Myös nämä rivit säilyvät aktivoitaessa
 25 *mikä tahansa edellä olevista komennoista
 26 *tai jopa /ACTIVATE + joka toistaa ne kaikki.

Avainasemassa ovat paitsi risuaitarivit (15,19,23) myös itse komennot,
joista jokaisen alkuun on lisätty merkki #.
Jos esim. aktivoidaan pelkästään rivillä 18 oleva #MINSTAT, edellä
oleva toimituskentän näkymä kasvaa muotoon:

 11 */ACTIVATE +
 12 *Tarkastetaan tiedoston DECA rakennetta
 13 *seuraavalla komennolla:
 14 +#FILE STATUS DECA / MASK=-AAA
 15 *##########
 16 *Lasketaan perustunnuslukuja
 17 *Komennolla MINSTAT:
 18 +#MINSTAT DECA,CUR+2
 19  Basic statistics of data DECA N=48
 20  Variable   mean      stddev          N  minimum   maximum
 21   Points    7843.479  161.6540       48  7649.000  8206.000
 22   100m      828.1875  59.30256       48  712.0000  932.0000
 23   L_jump    840.1875  50.72859       48  725.0000  951.0000
 24 *##########
 25 *Vielä keskiarvoja, hajontoja ja korrelaatiokertoimia
 26 *ohjelmalla CORR:
 27 +#CORR DECA,CUR+1
 28 *##########
 29 *Myös nämä rivit säilyvät aktivoitaessa
 30 *mikä tahansa edellä olevista komennoista
 31 *tai jopa /ACTIVATE + joka toistaa ne kaikki.

eli MINSTATin viisi tulosriviä ovat asettuneet kauniisti komentorivin 18
ja sitä seuraavan risuaidan väliin ja jälkeiset rivit ovat siirtyneet
viisi askelta alaspäin.
Huom. rivillä 14 oleva MASK-täsmennys on valinnut MINSTATille DECA-
aineiston kolme ensimmäistä lajimuuttujaa.

Jos nyt rajoitetaan rivin 14 MASK-täsmennys kahteen ensimmäiseen
lajimuuttujaan ja aktivoidaan kaikki kolme komentoa peräkkäin
automaattisesti rivin 11 /ACTIVATElla saavutetaan tilanne:

 11 */ACTIVATE +
 12 *Tarkastetaan tiedoston DECA rakennetta
 13 *seuraavalla komennolla:
 14 +#FILE STATUS DECA / MASK=-AA
 15 *
 16 *    Best athletes in decathlon in 1973
 17 *                                       {lower_limit,upper_limit}
 18 *FIELDS: (active)
 19 *   2 NA-   2 Points   Total score                 (####) {7000,9000}
 20 *   3 NA-   2 100m     100 meters run              (####) {500,1200}
 21 *END
 22 *Survo data file DECA: record=128 bytes, M1=30 L=64  M=14 N=48
 23 *##########
 24 *Lasketaan perustunnuslukuja
 25 *Komennolla MINSTAT:
 26 +#MINSTAT DECA,CUR+1
 27 *Basic statistics of data DECA N=48
 28 *Variable   mean      stddev          N  minimum   maximum
 29 * Points    7843.479  161.6540       48  7649.000  8206.000
 30 * 100m      828.1875  59.30256       48  712.0000  932.0000
 31 *##########
 32 *Vielä keskiarvoja, hajontoja ja korrelaatiokertoimia
 33 *ohjelmalla CORR:
 34 +#CORR DECA,CUR+2
 35 *
 36 *Means, std.devs and correlations of DECA  N=48
 37 *Variable  Mean        Std.dev.
 38 *Points    7843.479    161.6540
 39 *100m      828.1875    59.30256
 40 *Correlations:
 41 *             Points  100m
 42 * Points       1.0000  0.2943
 43 * 100m         0.2943  1.0000
 44 *##########
 45 *Myös nämä rivit säilyvät aktivoitaessa
 46 *mikä tahansa edellä olevista komennoista
 47 *tai jopa /ACTIVATE + joka toistaa ne kaikki.

Kaikki tulotukset asettuivat siis sopuisasti komentorivien ja
niitä seuraavien risuaitojen väliin. MINSTATin tulosrivit jopa
vähenivät, koska muuttujia valittiin yksi vähemmän.

Risuaitoja käytettäessä komentojen tulee ohjata tulokset
suhteellisella merkinnällä CUR+1 (eli komentoriviä seuraavalle riville).
Jos käyttää merkintää CUR+2, tulosten eteen tulee yksi tyhjä rivi jne.
Muita rivitunnuksia tai kiinteitä rivinumeroita ei tule käyttää
komentojen tulosrivien osoituksiin. Muuten symboliset rivitunnukset
ovat tietenkin sallittuja.

Tämän uuden toimintatavan toteutus on ollut periaatteessa sangen
yksinkertainen.
Esim. kun aktivoidaan MINSTAT tilanteessa

 18 *#MINSTAT DECA,CUR+1
 19 *
 20 * (mahdollisia aikaisempia tuloksia)
 21 *
 22 *##########
 23 *jatkuu...

Survo, havaitessaan että komennon edessä on #, korvaa merkin #
välilyönnillä (toimituskentässä) ja etsii komennon jälkeisiltä riveiltä
ensimmäistä risuaitaa *##########. Sellaisen puuttuessa tulee
virheilmoitus ja toiminta keskeytyy. Jos risuaita löytyy, siirretään
se rivi ja kaikki sen jälkeiset tilapäiseen tiedostoon SURVO.BLO
(aivan samaan tapaan kuin jos ne maalattaisiin napilla alt-F4).
Sitten kaikki komennon jälkeiset rivit pyyhitään kokonaan pois
toimituskentästä (piilotetulla SCRATCH-komennolla) jolloin komento
päästään aktivoimaan puhtaalta pöydältä.
Lopuksi palautetaan nuo tiedoston SURVO.BLO rivit saatujen tulosten
perään ja merkki # komennon eteen.

Näin toteutettuna tämän uuden aktivointimenettelyn ei pitäisi hidastaa
eikä häiritä aikaisempia Survon toimintoja.
Vain Survon pääohjelmaan, editoriin on tämän johdosta tullut pieni
lisäys.

Risutekniikkaa käytettäessä on toimituskenttään tulostavien komentojen
täsmennykset sijoitettava aina komennon perään tai yläpuolelle, koska
komennon ja sen jälkeisen risuaidan väli väistämättä tuhoutuu ja
korvautuu uusilla tulosriveillä.

Ainakin toistaiseksi komennot on kirjoitettava tiiviisti rivin alkuun
niin, ettei merkin # edessä ole tyhjää.
Rajarivejä *.......... voi risutekniikassakin käyttää entiseen tapaan
eri komentokaavioiden täsmennysten eristämiseen ja *GLOBAL*-asetusta
oletustäsmennysten antamiseen.

Risuaidat tulevat mukaan SURVO MM:n versiosta 3.16 lähtien.
Toistaiseksi riittävien kokemusten puuttuessa on varauduttava
mahdollisiin pelisääntöjen muutoksiin.

-Seppo

Vastaukset:

Survo-keskustelupalstan (2001-2013) viestit arkistoitiin aika ajoin sukrolla, joka automaattisesti rakensi viesteistä (yli 1600 kpl) HTML-muotoisen sivukokonaisuuden. Vuoden 2013 alusta Survo-keskustelua on jatkettu entistäkin aktiivisemmin osoitteessa forum.survo.fi. Tervetuloa mukaan!

Etusivu  |  Keskustelu
Copyright © Survo Systems 2001-2013. All rights reserved.
Updated 2013-06-15.