Az ELAN programozási nyelv

Helyesség

10. Helyesség

Az ELAN nyelv általam tanulmányozott leírásaiban nem találtam komolyabb helyességbizonyító módszerek használatára vagy a helyességbizonyítás valamilyen szintű megvalósítására történő utalást. Ez alapján az ELAN nyelvben lehet hogy nincsenek komolyabb helyességbizonyító módszerek, vagy azok használatát támogató nyelvi eszközök.
Ez a fejezet az alábbi című alfejezeteket tartalmazza:
10.1. Az ELAN programozási környezete
10.2. Az ELAN tesztkörnyezeti elemei
10.3. Az ELAN1 hibaüzenetei

10.1. Az ELAN programozási környezete

Ez az alfejezet az ELAN nyelv programozási környezetét ismerteti az alábbi című alfejezetekben:
10.1.1. A környezet elemei
10.1.2. A memória
10.1.3. Nevek
10.1.4. Fókusz és prompt
10.1.5. Program és gyökér
10.1.6. Kezdőállapot
10.1.7. Felhasználói parancsok
10.1.8. Program bevitele és szerkesztése
10.1.9. Szerkesztés közben felmerülő problémák

10.1.1. A környezet elemei

Az ELAN környezet hat funkcionális részből áll, melyek segítségével a programszöveg szerkesztését, a kész program futtatását, ellenőrzését és nyomkövetését is elvégezhetjük.

Monitor: Ez az egység foglalja össze az ELAN környezet többi részét. Értelmezi a felhasználó parancsait, rossz parancs esetén megjeleníti a lehetőségek listáját, egyébként pedig hívja a megfelelő modult.

Fordító: Bemenetként formulákat vár, melyeket belső formára hoz és a memóriában tárol.

Listázó: A definiált nevek és a definícióik strukturált megjelenítéséről gondoskodik.

Szerkesztő: A programszövegek bevitelét, módosítását végzi.

Ellenőrző: A program végrehajthatóságát ellenőrzi.

Végrehajtó: Végrehajtja az ellenőrzött programot.

10.1.2. A memória

A memória a következő információkat tartalmazza:
- A nevek és attribútumok táblázata.
- A verem és a heap.
- A program definíciós formája, belső formulákkal.

Végrehajtás közben előfordulhat, hogy a programnak több helyre van szüksége, mint amennyi abban a pillanatban a tárban üres. Ilyenkor a memória tartalmát törölni kell, és a programot újra kell indítani. (Mivel a memória beteltekor az ELAN környezet is elszállhat, célszerű a programot szerkesztés közben többször kimenteni!)

10.1.3. Nevek

Az ELAN minden ismert nevet (ez lehet finomítás, eljárás, operátor vagy változó neve is) a Névlistában tárol. A nevek lehetnek láthatóak és rejtettek. (Például az ELAN standard nevei rejtettek.) A nevek kilistázásakor csak a látható nevek jelennek meg. Ha egy nevet egyszer (a program szövegében) megemlítünk, az bekerül a Névlistába, akkor is ha nincs definiálva. Néhány név (például az ELAN szó) érvényes névként működik, de nem definiálható.

10.1.4. Fókusz és prompt

Programkészítés közben mindig van egy olyan név, amihez kapcsolódó programrészlettel éppen foglalkozunk. Ezt Fókusznak nevezzük. Az ELAN minden parancs befejezése után a fókusz kiírásával jelzi (Prompt), hogy készen áll a következő parancs fogadására. A fókusz kijelzéséhez tartozik az is, hogy van-e a névnek definíciója, és milyen típusú az (finomítás, eljárás, operátor, szinoníma, típus). A definiálatlan neveket a név utáni kérdőjel, a finomításokat pedig kettőspont jelzi. A szinonímák definíciója a LET szóval, a típus definíciója a TYPE szóval kezdődik.

Az eljárások és operátorok neve általános, azaz több definíciójuk lehet, vagyis ahogy ezt a tulajdonságot korábban neveztük: átlapolhatók.

Egy új program bevitelének kezdetén a fókusz mindig a program néven áll, ami definiálatlan. Ha szerkesztés közben egy másik nevet akarunk aktuálissá tenni, azt a focus paranccsal tehetjük meg.

A program a főprogram felajánlott, de nem kötelező neve.

10.1.5. Program és gyökér

Az ELAN a programot több független finomításnak tekinti, melyeknek definiálási sorrendje nem lényeges. A program gyökere a legelső - általában: a program nevű - finomítás, melynek végrehajtásából áll a program végrehajtása (tehát ez a program legfelső absztrakciós szintje, hívhatjuk úgyis, hogy a főprogram).

A program szerkesztésekor az egyes finomítások definícióját kell beadnunk soronként.

10.1.6. Kezdőállapot

Kezdéskor az ELAN parancs üzemmódban van, és a memóriában csak a standard könyvtár definíciói vannak. A prompt mutatja, hogy a fókusz most a program, mely még definiálatlan, és alkalmas gyökérként szolgál a programunk számára.

A státusz sor jobb oldalán láthatjuk a parancsok rövidítését. Minden parancs végrehajtásának befejezése után az ELAN visszatér parancs üzemmódba és kiírja a promptot az aktuális fókusszal.

10.1.7. Felhasználói parancsok

Az ELAN környezetnek szóló parancsokat a megfelelő utasítás egy betűjével (kisbetűvel) kell rövidítenünk. A parancs leütött betűje nem jelenik meg a képernyőn és a Return lenyomása nélkül végrehajtódik (ezért figyelmetlen gépeléssel akár az egész programot pillanatok alatt törölhetjük!). Ha olyan billentyűt nyomunk le, amelyhez nem tartozik parancs, a program megmutatja a lehetséges parancsok rövidítését.

Az ELAN környezet pillanatnyi állapotát a kép jobb alsó sarkában látjuk. A bal alsó sarokban a hibaüzenetek jelennek meg. A környezet egyes állapotaiban mindig csak meghatározott parancsokat használhatunk. Egyes parancsok egyszerűen a környezet egy másik üzemmódjába kapcsolnak át.

Most következzen a parancsok listája (melyben a begépelendő karakter az execute parancs esetén az x, a többi parancs esetén az adott parancs első betűje):

clear
A clear parancs kiadása törli a memória tartalmát és az ELAN-t kezdőállapotba hozza. A memória tartalmának törlése előtt az ELAN még egy ellenőrző kérdést tesz fel, melyre igennel (Y) válaszolhatunk a törlési szándékunk megerősítése céljából, vagy pedig nemmel (N) válaszolhatunk, ha mégsem kívánjuk törölni a memória tartalmát.

delete
A delete parancs kiadása az aktuális fókusz definícióját törli. Az aktuális fókusz definíciójának törlése előtt az ELAN még egy ellenőrző kérdést tesz fel, melyre igennel (Y) válaszolhatunk a törlési szándékunk megerősítése céljából, vagy pedig nemmel (N) válaszolhatunk, ha mégsem kívánjuk törölni az aktuális fókusz definícióját.

edit
Az edit parancs kiadásával tudunk szerkesztő üzemmódba váltani. A szerkesztőben az aktuális fókusz tartalmát módosíthatjuk, illetve ha az még üres volt, itt rendelhetünk hozzá új definíciót.

focus
A focus parancs kiadásával tudunk a programrészek között mozogni. A környezet előbb megmutatja a pillanatnyi fókuszt, majd megkérdezi, mi legyen az új fókusz. Ekkor annak a programegységnek a nevét kell beírnunk, melyet szerkeszteni akarunk. (Ez lehet egy még nem létező név is.)
A beírt név utolsó karaktereit helyettesíthetjük csillaggal. Ha több olyan név-objektum van, mely megfelel a megadott névnek (például amikor csillagot használunk vagy egy olyan eljárás nevét adtuk meg, melynek több definíciója van), a rendszer az összes lehetőséget kiírja a képernyőre. Köztük az aktuálisat a villogó kurzor jelzi. Ebben a listában a next parancs kiadásával lépegethetünk.
Ha egy még nem létező nevet írunk be, akkor az ezutáni edit parancs kiadásakor létrejön egy ilyen nevű, még definiálatlan (azaz üres) finomítás.

g
A g parancs kiadásával a futás előtti szintaktikus ellenőrzést hajthatjuk végre. Először meg kell adnunk az ellenőrizni kívánt programegység nevét.

list
A látható definíciójú nevek listája. Itt először a szinonímák, eljárások, operátorok és típusok jelennek meg (LET, PROC, OP, TYPE). Ezután a fókuszból elérhető finomítások következnek. Ez a lista egyben a program szerkezetét is mutatja, hiszen minden finomítás az őt hívó finomítás alatti bekezdésben íródik ki.
A listát azok a finomítások zárják, melyek a fókuszból, mint gyökérből nem érhetőek el.

next
A show parancs és a focus parancs használata közben előfordulhat, hogy a megadott néven nem egy, hanem több eljárás, operátor is definiálva van. Ekkor a képen az összes lehetőség megjelenik, s közöttük a next parancs kiadásával választhatjuk ki a megfelelőt.

packet
A packet parancs kiadása egy fordítási egységet (azaz: csomagot) olvas be lemezről. A packet parancs kiadásának hatása hasonló a read parancs kiadásának hatásához, de a packet parancs hatása az alább leírtakban különbözik a read parancs hatásától:
- olvasás közben csak a neveket látjuk a képernyőn, definíciókat nem.
- az így olvasott definíciók rejtettek lesznek. A show parancs kiadásával megnézhetjük őket, de nem tudjuk módosítani az edit üzemmódban.
- a program mentésekor csak a látható definíciókat írja lemezre, a csomagként beolvasottakat nem.

quit
A quit parancs kiadásával kiléphetünk az ELAN programból, de előtte rákérdez, hogy biztosan ki akarunk-e lépni az ELAN-ból.

read
A read parancs kiadásával egy fájlból olvashatunk be programot. A művelet hozzáadja a beolvasott program definícióit a memóriában levőkhöz, az ugyanilyen néven létezőket pedig felülírja. Olvasás közben a nevek és definíciók megjelennek a képernyőn. Olvasás után a betöltött program lesz az új fókusz.
Fordítási egység (azaz: csomag) így nem olvasható, csak a packet parancs kiadásával!
Olvasás előtt a program megkérdezi a fájl nevét, melyet kiterjesztés nélkül kell megadnunk. Ha a fájl nem létezik, az ELAN az aktuális könyvtárban található fájlok listáját adja.
Megjegyzés: Magyarországon kétféle ELAN változat terjedt el, az egyik a programfájloknak automatikusan a .ELN, a másik pedig a .E kiegészítőt adja.

show
A show parancs kiadása hatására az ELAN a fókusz definícióját mutatja a képernyő. Ha a fókusz általános, a névhez tartozó összes lehetőség megjelenik a képen. Ekkor a show parancs a kurzor által jelölt név definícióját mutatja. Ebben a listában a következő definícióra a kurzort a next parancs kiadásával mozgathatjuk tovább.
Ha a program futása hibával állt le, előfordul hogy a fókusz egy futás közben létrejött tárgyra mutat. Ilyenkor ennek típusát, értékét, nevét és elérésének módját nézhetjük meg a show parancs kiadásával.

test
A test parancs kiadása hatására elindul a program végrehajtása nyomkövető (azaz: Trace) üzemmódban.

verify
A verify parancs kiadása hatására a nyomkövetés speciális formája hajtódik végre, melyben a típusok szintaktikai definícióját láthatjuk.

write
A write parancs kiadása hatására az ELAN a memória látható definícióit a gyökérrel - mint első finomítással - együtt lemezre írja. A write parancs a megadott fájlnévvel azonos néven már létező fájlt felülírja. Ha fájlnévként prn-t írunk be, akkor az ELAN kinyomtatja a programunkat.

execute
Az execute parancs kiadása végrehajtja a programot, melynek gyökere a fókusz. A végrehajtás után a konstansok és változók a show parancs kiadásával nézhetők meg. A programfutás előtt minden tárgy definiálatlan.

10.1.8. Program bevitele és szerkesztése

Egy új programegység (azaz: finomítás/eljárás/operátor/típus) létrehozása és beírása két lépésből áll. Először adjuk ki a focus parancsot és írjuk be az új egység nevét. Ezután váltsunk szerkesztő üzemmódba, és adjuk meg a névhez tartozó definíciót.
A programegység szerkesztésekor az ELAN mindig egy definíciót vár, melyet belső kódra fordít, végrehajtva a szintaktikus ellenőrzést. Hiba esetén az ELAN megpróbálja azt javítani (azaz jelni, hogy szerinte mi a hiba). A memóriába csak szintaktikailag helyes programok kerülnek be.
A programegységek módosításánál szintén először fókuszálnunk kell a megfelelő névre. A szerkesztőben a képernyőn a régi definíciót látjuk, s ezt kell módosítanunk. Ezután a program szövegként beolvassa az új változatot és felülírja a régit.
A beírt sorok lehetnek hosszabbak, mint a képernyősor. Az Enter lenyomásával jelezzük, hogy a sor szerkesztését befejeztük, s ekkor a fordító kezd el dolgozni. Ha a fordító szerint egy szimbólumot elhagytunk, vagy szintaktikai hibát talált, a bal alsó sarokban hibaüzenetet kapunk, és az ELAN a definíciót felajánlja szerkesztésre. A kurzor a hiba felbukkanásának helyét mutatja, ezért a hibajelzés néha máshol jelenik meg, mint kellene. Ha a sor hibátlan, de a név definíciója nem teljes, a szerkesztő kéri a következő sort.
Egy egység szerkesztését kétféleképpen fejezhetjük be:
- Ha Enter-t nyomunk és a programegység az ELAN szerint teljes (például egy finomítás hibátlan és a szöveget pont zárja le) a program automatikusan befejezettnek tekinti a definíciót és kilép a szerkesztő üzemmódból.
- Ha szerkesztés közben meggondoljuk magunkat, akkor a szerkesztés üzemmódból a Break lenyomásával léphetünk ki. Ekkor az összes elvégzett módosításunk elveszik, s a memóriában a név régi definíciója marad.

10.1.9. Szerkesztés közben felmerülő problémák

Fordítási egységek kezelése:

Új fordítási egységet az ELAN rendszer csak fordítási egységként képes beolvasni a packet parancs kiadásával, ekkor azonban nem javíthatunk rajta. Emiatt kipróbáláskor a fordítási egység elemeit a főprogram részeként kell megírni. A már biztosan helyes programegységeket ki kell írni egy fájlba, s szövegszerkesztővel hozzá kell tenni a fordítási egység keretéül szolgáló alapszavakat.
Ha egy program több fordítási egységből áll, akkor használatakor először töltsük be az önálló fordítási egységeket (azaz: csomagokat) a packet parancs kiadásával, majd ezután töltsük be a főprogramot a read parancs kiadásával, s utána lehet futtatni a főprogramot.

Programegységek kezelése:
A programegységek begépelésénél a kurzort csak az aktuális sorban mozgathatjuk, fölfelé és lefelé nem. Ha más sort akarunk kijavítani, fejezzük be a finomítást egy ponttal, lépjünk ki az Editorból majd lépjünk újra vissza. Ekkor már bármelyik sorra ráállhatunk.
A problémára még jobb megoldás lehet az, ha valami szándékos hibát követünk el. Amikor ugyanis az ELAN hibát talál, már az egész definíciót, tehát annak minden sorát engedi módosítani. A legegyszerűbb hiba például két pontosvessző egymás után.

Példa:


valami:
i:=i;
#Ebben a sorban állva vesszük észre a hibát.#
;; #Erre hibát jelez, s engedi az előző sor javítását.#

A másik kényelmetlenség az eljárások, operátorok és típusok létrehozásakor adódik. Ekkor ugyanis, mint már szó volt róla, a focus parancs kiadása után be kell írnunk az egység nevét. Ami furcsa, hogy a név köré nem írhatjuk oda azokat a kulcsszavakat, melyeket egyébként az ELAN formailag megkövetel. Ezután be kell lépnünk a szerkesztőbe, ki kell egészítenünk az első sort az egység teljes fejrészével. Az ilyen egységek módosítása már minden gond nélkül megy.

Azonos nevű programegységek:
A harmadik probléma akkor adódik, amikor egy már létező néven új eljárást vagy operátort akarunk létrehozni. A focus parancs és a név beírása után ugyanis az ELAN a már létező definíciókat mutatja meg, csak ezeket módosíthatjuk, s újat nem hozhatunk létre. Erre a megoldás az, hogy a focus után írjunk be egy még nem létező nevet, majd a szerkesztőben töröljük ezt ki és írjuk be az egység tényleges nevét és fejrészét.
Hó lehetőséget teremt új eljárások írására a létező eljárások javíthatósága. Ha egy eljárás nagyon hasonlít egy másikra, akkor javítsuk annak a szövegét, a neve kicserélésével együtt. A szerkesztésből kilépve megmarad a régi nevű eljárás is és az újonnan szerkesztett is.
Ha azonos névvel több programegység is szerepel, akkor a focus paranccsal az elsőre állhatunk, s a továbbiakat a next paranccsal választhatjuk ki.
A nyelv előre definiált könyvtári eljárásai (például: put, get, ...) megnézhetők, de nem javíthatók.

Kész programegységek javítása:
Ha egy már kész definíciót akarunk bővíteni, lépjünk be a szerkesztő üzemmódba, és az új utasításokat folyamatosan írjuk be a megfelelő sor végére. (A probléma az, hogy üres sort nem tudunk csinálni.) Bár a programszöveg így áttekinthetetlen lesz, mikor legközelebb a szerkesztőbe jutunk, már az új sorok is bekezdésekre tagolva jelennek meg.
Megjegyzés: Az ELAN programot megírhatjuk, javíthatjuk tetszőleges olyan szövegszerkesztővel, amely textfájlt ad eredményül. A fájlból való beolvasáskor az ELAN rendszer elvégzi a szintaktikai ellenőrzést, a hibákat menet közben javíthatjuk, s ha utána fájlba írjuk, akkor oda már a formázott programszöveg kerül.
Programegység javításából sokszor úgy lépünk ki, hogy egy üres (csak névvel rendelkező) programegység született. Ennek törléséről külön kell gondoskodnunk (a delete parancs alkalmazásával).

Programfutás közbeni szerkesztés:
Ha egy eljárás a futtatás pillanatában még nem létezik, akkor a fordítóprogram hibaüzenettel leáll: ismeretlen azonosítót talált. Lehetőségünk van ekkor az edit parancs beírásával azonnal szerkeszteni. Ekkor az ELAN rendszer felkínálja a hiányzó nevet - mint egy finomítás nevét - javításra. A finomítás (programegység) beírása után a fókusz a főprogramon marad, újra lehet futtatni.
Ez egy újfajta programírási stílust tesz lehetővé számunkra. Első lépésben megírhatjuk a főprogramot, az eljárásainak kifejtése nélkül. Ezután futtatjuk, majd a még hiányzó eljárásokat (a felülről lefelé kifejtés adott sorrendjében) sorra megírjuk.
Megjegyzés: Sajnos ez a lehetőség akkor is fennáll, ha egy változó definíciója hiányzik. Könnyen úgy járhatunk ilyenkor, hogy létrehozunk egy az adott változóval azonos nevű finomítást, amit ezután a helyes futás érdekében törölnünk kell.

10.2. Az ELAN tesztkörnyezeti elemei

Ez az alfejezet az ELAN nyelv tesztkörnyezeti elemeit ismerteti az alábbi című alfejezetekben:
10.2.1. Az ellenőrző
10.2.2. Backtrace (azaz: Nyomkövetés visszafelé) üzemmód
10.2.3. Trace (azaz: Nyomkövetés előrefelé) üzemmód

Egy program végrehajtásakor az ELAN környezet először az ellenőrzőt hívja, majd ha nincs hiba, futtatja a programot. Ha hibát talál, akkor Backtrace (azaz: Nyomkövetés visszafelé) üzemmódba kapcsol. A program végrehajtása a Break billentyű lenyomásával szakítható meg, melynek hatására az ELAN visszatér a parancs üzemmódba.

10.2.1. Az ellenőrző

Az ELAN-ban futtatni kívánt programok ellenőrzése az adott program minden futtatása előtt megtörténik és csak néhány másodpercig tart. Ekkor az ELAN az alábbiakat ellenőrzi:
- minden alkalmazott név pontosan egyszer legyen definiálva;
- egyeznek-e a típusok az alábbi helyeken:
- értékadás két oldalán,
- feltételek minden részében,
- numerikus elágazásnál;
- minden operátor a definiált operandust kapta-e;
- minden feltétel logikai típusú-e;
- minden sorszám és tömbindexhatár egész-e;
- csak a tömbök indexeltek-e;
- a kijelölés (azaz: indexelés) műveletet csak tömbökre használjuk-e.

10.2.2. Backtrace (azaz: Nyomkövetés visszafelé) üzemmód

Ha az ellenőrző vagy a futtató hibát talál, az ELAN nyomkövetés visszafelé üzemmódba tér át. Ez az üzemmód tulajdonképpen a hibás kifejezés környezetének, előzményeinek megvizsgálását, a szemantikai hibák megkeresését szolgálja. A hibás kifejezés a bal alsó sarokban olvasható.

Backtrace üzemmódban a következő parancsokat használhatjuk:
next
Backtrace üzemmódban a next parancs kiadása folytatja a backtrace-t, azaz az előzőleg végrehajtott utasításra lép. Ha a program gyökerénél vagyunk, akkor visszatér parancs üzemmódba, különben pedig mutatja az aktuális részt. Az aktuális rész nem szigorúan egyetlen utasítás, hanem az aktuális utasításcsoport.

edit
Backtrace üzemmódban az edit parancs kiadása után módosíthatjuk a definíciót, és utána visszatérhetünk a parancs üzemmódba. A fókusz nem változik.

show
Backtrace üzemmódban a show parancs kiadása hatására az ELAN megmutatja a név definícióját és értékét.

quit
Backtrace üzemmódban a quit parancs kiadása hatására befejeződik a nyomkövetés.

10.2.3. Trace (azaz: Nyomkövetés előrefelé) üzemmód

A nyomkövetés az ELAN program lépésenkénti végrehajtását és az egyes változók pillanatnyi értékének figyelését segíti. Célja tehát a szemantikai hibák megkeresése. Nyomkövetés közben a végrehajtó a soron következő utasítást vagy deklarációt annak végrehajtása előtt a képernyőre írja.
Ha az utasítás egy egyszerű utasítás (azaz: nem eljáráshívás, nem finomítás, nem operátor), akkor végrehajtja és ha ez eredményt ad, akkor azt megmutatja.

Ha a parancs egy másik programegység hívása, akkor választhatunk, hogy ezt a részt egyetlen utasításként vagy pedig kis lépésenként hajtjuk végre.

Trace (azaz: Nyomkövetés előrefelé) üzemmódban a következő parancsokat használhatjuk

backtrace
Trace üzemmódban a backtrace parancs kiadása hatására az ELAN backtrace üzemmódba kapcsol.

continue
Trace üzemmódban a continue parancs kiadása hatására az ELAN a program hátralevő részét nyomkövetés nélkül hajtja végre.

edit
Trace üzemmódban az edit parancs kiadása hatására az ELAN megszakítja a végrehajtást és az aktuális parancsot szerkeszthetjük.

next
Trace üzemmódban a next parancs kiadása hatására az ELAN a parancs belsejét nyomkövetéssel hajtja végre.

previous
Trace üzemmódban a previous parancs kiadása hatására az ELAN a finomításhoz tartozó további utasításokat nyomkövetés nélkül hajtja végre és eredményüket mutatja.

quit
Trace üzemmódban a quit parancs kiadása hatására az ELAN visszavált parancs üzemmódba.

show
Trace üzemmódban a show parancs kiadása hatására az ELAN kérdez egy nevet és megmutatja annak értékét és definícióját.

execute
Trace üzemmódban az execute parancs kiadása hatására az ELAN a parancs belsejét nyomkövetés nélkül hajtja végre. Ha van eredmény, azt mutatja.


10.3. Az ELAN1 hibaüzenetei

Ez az alfejezet az ELAN1 nyelv hibaüzeneteit ismerteti az alábbi című alfejezetekben:
10.3.1. A környezet üzenetei
10.3.2. Szerkesztési üzenetek
10.3.3. Programfutási hibaüzenetek

10.3.1. A környezet üzenetei

Backtrace command, please

Jelentése/magyarázata: Backtrace parancsot kérek (felismerhetetlen backtrace "billentyűparancs")

Can't edit CODE or EXTERNAL routine

Jelentése/magyarázata: Kódot vagy külső eljárást nem lehet szerkeszteni

Can't execute

Jelentése/magyarázata: Csak létező finomítást lehet végrehajtani (eljárást, függvényt, operátort, típust vagy adatot nem)

Can't open file

Jelentése/magyarázata: Nem lehet megnyitni az adott programfájlt.

Can't translate

Jelentése/magyarázata: Csak létező programegységet lehet szintaktikusan ellenőrizni.

Can't verify

Jelentése/magyarázata: Csak létező finomítást lehet ellenőrző üzemmódban futtatni.

Command, please

Jelentése/magyarázata: Parancsot kérek (felismerhetetlen "billentyűparancs")

Input, please

Jelentése/magyarázata: Szerkesztésre várok.

Nothing to delete

Jelentése/magyarázata: Nincs mit törölni (mert még nem létezik)

Nothing to show

Jelentése/magyarázata: Nincs mit megmutatni (mert még nem létezik)

Trace command, please

Jelentése/magyarázata: Trace parancsot kérek (felismerhetetlen trace "billentyűparancs")

Verify command, please

Jelentése/magyarázata: Verify parancsot kérek (felismerhetetlen verify "billentyűparancs")

10.3.2. Szerkesztési üzenetek

alapszó?

Jelentése/magyarázata: Hiányzik a jelzett alapszó

Declarer?

Jelentése/magyarázata: Típusdefiníció hiányzik

Name?

Jelentése/magyarázata: Azonosítónév hiányzik

Number of elements?

Jelentése/magyarázata: Tömbelemszám hiányzik

Parameter?

Jelentése/magyarázata: Paraméter hiányzik

Quote?

Jelentése/magyarázata: Idézőjel hiányzik

Refinement name?

Jelentése/magyarázata: Finomításnév hiányzik

Type name?

Jelentése/magyarázata: Típusnév hiányzik

Unit?

Jelentése/magyarázata: Azon a helyen nem megfelelő nyelvi elem van. (Például pontosvessző hiányzik.)

10.3.3. Programfutási hibaüzenetek

Abnormal program termination

Jelentése/magyarázata: Fatális leállás, rendszerhívás

Can't identify

Jelentése/magyarázata: Nem összeegyeztethető. (Például: operátor hibás típusú paraméterekkel, eljárás nevével megegyező azonosítójú változó stb.)

Can't subscribe or select

Jelentése/magyarázata: Indextúlcsordulás vagy egy rekord nem létező mezőjére hivatkozás

Can't select from type

Jelentése/magyarázata: Nem rekord típusú adat mezőjére történő hivatkozás

Different types:

Jelentése/magyarázata: Típusütközés

Else part missing

Jelentése/magyarázata: Egy feltételes kifejezésben a kötelező ELSE-ág kimaradt

End of file detected

Jelentése/magyarázata: Fájl végén túli olvasás

Error during read

Jelentése/magyarázata: Fájlból olvasás közbeni hiba

Error during write, 'disk' full?

Jelentése/magyarázata: Fájlba írás közbeni hiba. Betelt a lemez?

File already open

Jelentése/magyarázata: Kísérlet egy nyitott fájl megnyitására

File direction must be input or output

Jelentése/magyarázata: Ismeretlen fájlmegnyitási mód. (Fájl megnyitása vagy input módban vagy pedig output módban lehetséges!)

File not open

Jelentése/magyarázata: Nincs még nyitva az adott fájl

File open for input only

Jelentése/magyarázata: Az adott fájl olvasásra lett megnyitva

File open for output only

Jelentése/magyarázata: Az adott fájl írásra lett megnyitva

Integer, please

Jelentése/magyarázata: Egész típusú értéket kérek. (Lásd: get)

Integer overflow

Jelentése/magyarázata: Egész típusú adat túlcsordulása

Loop may not deliver value

Jelentése/magyarázata: Ciklus nem szerepelhet kifejezés helyén (azaz: értékadás jobb oldalán, függvényértéket megadó "képlet" helyén)

No files

Jelentése/magyarázata: Nincs ilyen fájl

No value

Jelentése/magyarázata: Nincs még értéke az adott változónak

Not a generic routine

Jelentése/magyarázata: A next parancs csak átlapolt azonosítójú programegységeknél használható

Not a number denoter

Jelentése/magyarázata: A SELECT utasításban az egyik ágat nem számtípusú érték választja ki

Not a row

Jelentése/magyarázata: Az indexelés csak tömböknél használható

Not a selector name

Jelentése/magyarázata: Egy rekordhivatkozásban ismeretlen nevű mező

Not an abstract type

Jelentése/magyarázata: Konkrét típusra (INT, TEXT, BOOL stb.) nem alkalmazható a CONCR operátor

Only last unit may deliver value

Jelentése/magyarázata: A függvény értékét jelentő kifejezés csak a függvény utolsó utasításában szerepelhet (viszont ez akár lehet az IF is, SELECT is)

Otherwise part missing

Jelentése/magyarázata: Egy feltételes kifejezésben a kötelező OTHERWISE-ág kimaradt

Program may not deliver value

Jelentése/magyarázata: A főprogram (amire az execute vonatkozik) függvény nem lehet

Real, please

Jelentése/magyarázata: Valós típusú értéket kérek. (Lásd: get)

Real overflow

Jelentése/magyarázata: Valós túlcsordulás

Recursive refinement

Jelentése/magyarázata: A finomítás nem lehet rekurzív

Storage full

Jelentése/magyarázata: Betelt a tár

This is not the only definition

Jelentése/magyarázata: Kísérlet egy változó újradefiniálására

Unknown type

Jelentése/magyarázata: Ismeretlen típusazonosító

WARNING: This is library routine

Jelentése/magyarázata: Figyelmetlenség: ez egy könyvtári programegység. (Ezt az azonosítót más célra nem ajánlatos használni.)

Wrong access attribute

Jelentése/magyarázata: Konstans adat nem változtatható