EXEC
EXEC | |
Syntax: | EXEC <label> |
Parameter | |
label: Name einer Prozedur | |
Einordnung | |
Typ: | Anweisung |
Kontext: | Strukturkontrolle |
Aufgabe: | Aufrufen einer Prozedur |
Abkürzung: | keine |
Token: | $64 $33 (100 51) |
Verwandte Befehle | |
CALL - PROC - END PROC |
Dieser Artikel beschreibt das Simons'-Basic-Schlüsselwort EXEC.
Typ: Anweisung
Syntax: EXEC <label>
In Simons' Basic können Unterprogramme mit einem Namen versehen werden (siehe PROC). Sie werden dadurch unabhängig von ihrer Lage im Programm und der Programmierer kann leichter den Überblick bewahren (Namen lassen sich leichter einem Zweck zuordnen als Zeilennummern). Der Befehl EXEC ruft ein solches Unterprogramm auf, arbeitet es ab und kehrt an seinen Ausgangsort zurück. Er entspricht damit weitgehend dem BASIC-V2-Befehl GOSUB.
In Simons' Basic dürfen in der Zeile, in der EXEC verwendet wird, keine weiteren Basic-Befehle eingegeben werden. Leerzeichen am Anfang eines Labels (die eventuelle Lücke zwischen PROC und dem Labelnamen wie im Beispiel unten) dürfen bei EXEC nicht weggelassen werden.
Wird das Label hinter EXEC im Programm nicht gefunden, so erscheint die Fehlermeldung ?PROC NOT FOUND ERROR. Wenn ein Simons'-Basic-Programm auf ein Prozedurende (END PROC) trifft, ohne eine Prozedur aufgerufen zu haben, erscheint die Meldung ?END PROC WITHOUT EXEC ERROR. Bei zu vielen Verschachtelungen (schon bei mehr als fünf, statt wie im Handbuch angegeben bei mehr als zehn) meldet Simons' Basic ?STACK TO LARGE ERROR} (mit einem Rechtschreibfehler, es sollte wohl eigentlich "TOO LARGE" heißen).
Dieser Befehl wurde in TSB um weitere Funktionen erweitert, siehe EXEC (TSB).
Beispiele[Bearbeiten | Quelltext bearbeiten]
Beispiel 1
10 PRINT "bitte eine taste druecken!" 20 EXEC warten 30 PRINT "danke" 999 END 1000 PROC warten 1010 POKE 198,0: WAIT 198,1 1020 END PROC
Nach der Aufforderung, eine Taste zu drücken, wartet das Programm und gibt schließlich eine Rückmeldung aus.
Beispiel 2
Demonstration einer Verschachtelung:
100 EXEC.FUENF 101 END 110 PROC.EINS 120 PRINT"EINS" 130 END PROC 140 PROC.ZWEI 150 EXEC.EINS 151 PRINT"ZWEI" 160 END PROC 170 PROC.DREI 180 EXEC.ZWEI 181 PRINT"DREI" 190 END PROC 200 PROC.VIER 210 EXEC.DREI 211 PRINT"VIER" 220 END PROC 230 PROC.FUENF 240 EXEC.VIER 241 PRINT"FUENF" 250 END PROC 260 PROC.SECHS 270 EXEC.FUENF 271 PRINT"SECHS" 280 END PROC
RUN EINS ZWEI DREI VIER FUENF READY. |
Ändert man die Anfangszeile in 100 EXEC.SECHS
, folgt ein Abbruch wegen Überlauf des Stapels mit der Fehlermeldung ?STACK TOO LARGE IN 150.
$ | % | @ | ANGL | ARC | AT | AUTO | BCKGNDS | BFLASH | BLOCK | CALL | CENTRE | CGOTO | CHAR | CHECK | CIRCLE | CMOB | COLD | COLOUR | COPY | CSET | DELAY | DESIGN | DETECT | DIR | DISABLE | DISAPA | DISK | DISPLAY | DIV | DOWN | DRAW | DUMP | DUP | ELSE | END LOOP | END PROC | ENVELOPE | ERRLN | ERRN | EXEC | EXIT | EXOR | FCHR | FCOL | FETCH | FILL | FIND | FLASH | FRAC | GLOBAL | GRAPHICS | HI COL | HIRES | HRDCPY | INKEY | INSERT | INST | INV | JOY | KEY | LEFT | LIN | LINE | LOCAL | LOOP | LOW COL | MEM | MERGE | MMOB | MOB OFF | MOB SET | MOD | MOVE | MULTI | MUSIC | NO ERROR | NRM | OFF | OLD | ON ERROR | ON KEY | OPTION | OUT | PAGE | PAINT | PAUSE | PENX | PENY | PLACE | PLAY | PLOT | POT | PROC | RCOMP | REC | RENUMBER | REPEAT | RESET | RESUME | RETRACE | RIGHT | RLOCMOB | ROT | SCRLD | SCRSV | SECURE | SOUND | TEST | TEXT | TRACE | UNTIL | UP | USE | VOL | WAVE