Szekvencia:
A szekvenciákat pontosvesszővel választjuk el egymástól.
Elsődleges szerepe a helyi utasítások csoportba foglalásában, illetve a kivételkezelésben
van. Ennek segítségével blokkokra lehet a szabdalni a kódot és minden blokkhoz megfelelő
kivételkezelőt rendelni. Szintaxisa:
BEGIN
[statement;]...
EXCEPTION
[WHEN változó_név: osztály DO utasítás_blokk]...
[ELSE [DO] utasítás_blokk]
END;
Elágazás
Mint a legtöbb nyelvben, itt is kétféle elágazás lehetséges. Egyik elágazás típus sem teszi
lehetővé, hogy a vezérlés rácsorogjon a következő vezérlési ágra. Az egyik az 'if', amely akkor
hajtódik végre, ha a logikai kifejezés értéke igaz. Az 'if' szintaxisa:
IF logikai_kifejezés THEN
utasítás_blokk
[ELSEIF logikai_kifejezés THEN
utasítás_blokk]...
[ELSE [DO]
utasítás_blokk]
[kivétel_kezelés]
END [IF];
Példa:
t : TextData = new();
line_size : integer = file.ReadLine(t, FALSE);
if line_size
A másik elágazási lehetőség a 'case'. A Forté nyelv esetében csak integer típusú számok
vizsgálatára alkalmas, szemben más nyelvekkel, ez a nyelv nem támogatja a karakterek vizsgálatát.
A 'case' szintaxisa:
[label:] CASE integer_kifejezés [IS]
[WHEN érték DO utasítás_blokk]...
[ELSE [DO] utasítás_blokk]
[kivétel_kezelés]
END [CASE];
Példa:
t : TextData = new();
line_size : integer = file.ReadLine(t, FALSE);
case line_size is
when -1 do
// file vége;
when 0 do
// üres sor
else do
// van a sorban karakter
end case;
Ciklusok
A Forté-ben csak elöltesztelő ciklusok léteznek. Általános ciklus nem létezik. A ciklusfeltételnek
logikai értékeknek kell lenniük. Egyik ciklus sem biztosítja a ciklusváltozók
változtathatatlanságát. Az egyik használatos ciklus a 'for', amelyben a ciklusváltozó értéke
kilépéskor elvész. A 'for' az utasitásblokkot annyiszor hajtja végre, ahány eleme van a tömbnek,
igy vagy a tömb minden objektumán megy végig, vagy a cursor minden során, vagy pedig a 'select'
utasítás eredmenyének sorain. Illetve minden egyes értéket felvesz adott intervallumon belül.
Ennek megfelelően három különböző szintaxisa lehetséges a 'for' utasításnak:
[label:]FOR változó_név IN tömb
DO utasítás_blokk
[kivétel_kezelés]
END [FOR];
[label:]FOR változó_név IN kezdő_érték TO vég_érték
[BY lépésköz]
DO utasítás_blokk
[kivétel_kezelés]
END [FOR];
[label:]FOR referencia_lista IN {CURSOR cursor_név
[beállitások]| sql_select_utasítás}
[BY lépésköz]
DO utasítás_blokk
[kivétel_kezelés]
END [FOR];
Példa:
faktorialis : integer = 1;
for i in 2 to 10 do
faktorialis = faktorialis * i;
end for;
Egy másik Forté-ben használatos ciklus a 'while', amely addig hajtja ismételten végre
az utasításblokkot, amíg a kifejezés értéke igaz. A 'while' szintaxisa:
[label:]WHILE logikai_kifejezes
DO utasítás_blokk
[kivétel_kezelés]
END [WHILE];
Példa:
i : integer = 1;
while i
Mindkét ciklusban használhatóak a 'continue [cimke]' illetve az 'exit [címke]' utasítások. A
'continue' hatására megismétli az adott ciklus-t, amelyre a címke mutat. Ha nem rendelkezik
cimkével, akkor azt a ciklust ismétli meg, amelyik az utasítást közvetlenül tartalmazza.
Az 'exit' hatására a program kilép az utasítást közvetlenül tartalmazó blokkból. Igy a
ciklusokban szereplö 'exit' magából a ciklusból lép ki.
Event-ek
A Forté egy event-ek (szignálok) által kommunikáló nyelv. Ezeket a szignálokat két módon lehet
lekezelni. Az egyik lehetőség az 'event loop', amely addig figyeli és kezeli le az event-eket,
ameddig explicit kilépés nem történik a ciklusból. Az 'event loop' szintaxisa:
[label:]EVENT LOOP [IS]
[PREREGISTER utasítás_lista]
[[POSTREGISTER] utasítás_lista]
[WHEN event_specifikáció DO utasítás_blokk]...
[kivétel_kezelés]
END [EVENT];
A másik lehetőség az event-ek kezelésére az 'event case', amely az elsőként érkező szignálra
figyel, majd ennek lekezelése után automatikusan kilép az utasításból. Az 'even case' szintaxisa:
[label:]EVENT CASE [IS]
[PREREGISTER utasítás_lista]
[[POSTREGISTER] utasítás_lista]
[WHEN event_specifikáció DO utasítás_blokk]...
[kivétel_kezelés]
END [EVENT];