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ó