CAOS-Programmierung: Befehlsgruppen: Flow

Aus Wikibooks


Vergleiche [Bearbeiten]

DOIF (Befehl) Bedingung (Bedingung)

Führt einen Block aus, wenn die getestete  Bedingung wahr ist. Der Block endet mit ELSE, ELIF or ENDI. Es können zwei oder mehrere Bedingungen 
mittels  AND oder OR verglichen werden. Der Vergleich zwischen Variable und Wert geschieht mit EQ, NE, GT,GE,  
LT, LE, oder mit =, <>, >, >=, <, <=.Beispiel 

DOIF ov00 GE 5 AND ov00 LT 10
--- code block 1 ---
ELIF ov00 GE 10 OR ov00 LT 100
--- code block 2 ---
ELSE
--- code block 3 ---
ENDI Bedingungen werden von rechts nach links ausgewertet , also ist "a AND b OR c" das selbe wie "(a AND b) OR c", aber NICHT wie "a AND ( b OR c )".
DOIF sollte nicht überladen werde d.h. nicht zu viele Bedingungen mit AND und OR verknüpfen.Dies erleichtert das Fehler suchen

ELIF (Befehl) Bedingung (Bedingung) mehrfaches else

ELseIF Befehl folgt auf  DOIF. Wenn die  Bedingung des DOIF-Blocks  falsche ist , wird jeder folgende ELIF Befehl  
auf einmal ausgeführt  .Nur die erste wahre Bedingung wird als Block ausgeführt.

ELSE (Befehl)

ELSE schließt  DOIF und  ELIF(s). Ist keine Bedingung wahr , so wird der ELSE block ausgeführt.

ENDI (Befehl)

Schließt alle  DOIF...ELIF...ELSE... .


Schleifen [Bearbeiten]

LOOP (Befehl)}

Start einer Schleife LOOP..UNTL order LOOP..EVER.

EVER (Befehl)

Ende der  LOOP..EVER Schleife,welche für immer durchlaufen wird .

UNTL (Befehl) Bedingung (Bedingung)

Ende der  LOOP..UNTL Schleife. Diese Schleife wird solange ausgeführt bis die Abbruchbedingung erfüllt ist. Siehe DOIF weiter Informationen.Beispiel
* LOOP .. UNTL SETV VA00 0 LOOP ADDV VA00 1 UNTL VA00 eq 3 DOIF VA00 eq 3 DBG: OUTS "LOOP .. UNTL" ELSE DBG: OUTS "LOOP .. UNTL Fehler" ENDI

REPE (Befehl)

Schließt die  REPS Schleife.

REPS (Befehl) Anzahl (integer)

Durchläuft eine Schleife Anzahl mal.Beispiel 
* REPS .. REPE SETV VA00 0 REPS 4 SETV VA01 0 ADDV VA00 1 REPE DOIF VA00 eq 4 DBG: OUTS "REPS .. REPE" ELSE DBG: OUTS "REPS .. REPE Fehler" ENDI


Unterprogramme [Bearbeiten]

GOTO (Befehl) Bestimmungsort (Marke)

Sollte man nie alleine  verwenden. Springt direkt zu einer von  SUBR definierten Marke. Der Befehl wird nur in   
DOIF Blocks verwendet.  See SUBR.

GSUB (Befehl) Bestimmungsort (Marke)

Springt in ein Unterprogramm definiert von  SUBR..

RETN (Befehl)

Ende des Unterprogramms. Darf nicht innerhalb von Schleifen stehen (z.B.  LOOP#..EVER oder ENUM...NEXT etc...)! .

SUBR (Befehl)

Definiert ein Unterprogramm . Nach den Befehl steht die Einsprungmarke. Marke muß mit einem Buchstaben beginnen und Groß- Kleinschreibung beachten .  
Unterprogramme sollen am Ende eines Scriptes stehen..
Beispiel * TEST GSUB SETV VA00 0 GSUB test DOIF VA00 eq 1 DBG: OUTS " GSUB" ELSE DBG: OUTS "not GSUB" ENDI ... SUBR test SETV VA00 1 RETN