Page 3 - Enterpress Magazin - 2022. 3-6.
P. 3
2022. május – december 3. oldal
Zzzzip
A BASIC compiler - 2. rész
Peter Hiner - 1986.
RESTORE rést, mégpedig úgy, hogy a WHEN EXCEPTION sort közvet-
lenül az elé a sor elé tesszük, amelybe vissza akarunk térni
Ha adott egy sorszám (mint pl. a RESTORE 200 -ban), ez
egy DATA-t tartalmazó sor kell, hogy legyen. Máskülönben (például, egy INPUT sor elé).
a ZZZIP hibaüzenetet ad.
CHAIN, IMAGE, PRINT USING, TRACE, TYPE
RUN
Ezeket a parancsokat a ZZZIP nem fogadja el és használa-
tuk a fordítás alatt hibaüzenetet eredményez.
Ezzel a paranccsal egy lefordított program újraindítható (az
elejétől vagy egy kijelölt sorszámtól). Egy másik program
(BASIC vagy lefordított) betöltésére és futtatására is használ- 6. beépített függvények
ható, de egyik programból a másikba történő paraméterá-
tadás már nem lehetséges. A ZZZIP megtart minden beépített függvényt, habár néhány
esetben korlátozza használatukat, ezekről külön említést te-
STOP szünk. Talán meglepő lehet, hogy a ZZZIP megtartja a SIN
és COS trigonometrikus függvényeket, hisz ezek valójában
Programban szereplő parancsként a STOP az END-hez ha- nem kompatibilisek az egész értékű matematikával. Ezeket
sonlóan kezelődik, s a BASIC-hez való kilépést eredménye- használni is nehezebb, addig ne is foglalkozzunk velük, amíg
zi. A STOP billentyű egy lefordított program megszakítására nincs elegendő tapasztalatunk a ZZZIP működtetésében.
is használható, akárcsak a BASIC-ben, de a lefordított prog-
ram futása a megszakítási ponttól már nem folytatható a BIN(X)
CONTINUE segítségével. Újra kell indítani élőiről, a START
utasítással. Azokra az X értékekre, amelyek nem haladják meg a 32767
értéket, a függvény a szokásos módon használható a zá-
EXCEPTION handling (megszakítás kezelése) rójelben lévő változó vagy konstans értékű operandussal.
Nagyobb értékek esetén az operandus csak konstans lehet
Az EXCEPTION szó már önmagában is azt jelenti, hogy pl. BIN(11010101), s ezt az esetet a ZZZIP megkülönbözte-
valami hiba következett be, s ezért nehéz ezt lekezel- tetten kezeli.
ni egy lefordított programban. Ennek ellenére a ZZZIP
megkísérli egy jól használható EXCEPTION kezelő bizto- CEIL(X), INT(X), IP(X), ROUND(X.N), TRUNCATE(X,N)
sítását. Nem valószínű, hogy a fordítás során problémák
lennének, mivel a ZZZIP minden kapcsolódó parancsot Mivel az egész értékű matematika nem veszi figyelembe
elfogad, beleértve a CONTINUE és a RETRY parancso- a törteket, ezek a függvények gyakorlatilag nem csinálnak
kat is. A lehetséges problémák futás során jelentkeznek. semmit, egyszerűen az X értékét vissza.
A CAUSE EXCEPTION parancs nyomán előállt helyzetek
nem okozhatnak zavart, de ha egy másik forrásból, mint EPS(X)
például egy EXOS-beli hibaellenőrzésből bekövetkező
EXCEPTION után próbáljuk használni a CONTINUE pa- Ez a függvény mindig az 1 értéket adja vissza. Az 1 az egész
rancsot, az eredményt illetően semmi biztosíték nincs! értékű matematikában az értékváltás legkisebb egysége.
A ZZZIP részéről két Különleges korlátozás áll fenn. Csak
egyszintű EXCEPTION kezelés biztosított, más szóval a EXLINE
WHEN EXCEPTION parancsok egymásba skatulyázása nem
megengedett és bármely második megszakítás egy hiba- Egy lefordított programban a végrehajtás alatt álló sor szá-
üzenetet, valamint a BASIC-be történő visszatérést ered- mának a rekordja nem őrződik meg, s ezért ez a függvény
ményez. Kis mértékben a RETRY parancs is különbözik - mindig a 0 értéket adja vissza.
a lefordított program ahelyett, hogy abba a sorba menne
vissza, amelyikben az EXCEPTION előfordult, a legutóbbi FP(X)
WHEN EXCEPTION parancshoz fog visszatérni. Természe- Mivel az egész értékű matematika nem veszi figyelembe a
tesen megfelelő elrendezéssel elérhetjük a kívánt visszaté- törteket, ez a függvény mindig a 0 értéket adja vissza.