CALL
CALL | |
Syntax: | CALL <label> |
Parameter | |
label: Name einer Prozedur | |
Einordnung | |
Typ: | Anweisung |
Kontext: | Strukturkontrolle |
Aufgabe: | Aufrufen einer Prozedur |
Abkürzung: | keine (TSB: cA) |
Token: | $64 $32 (100 50) |
Verwandte Befehle | |
EXEC - PROC - END PROC |
Dieser Artikel beschreibt das Simons'-Basic-Schlüsselwort CALL.
Typ: Anweisung
Syntax: CALL <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 CALL springt zu einem solchen Label. Er entspricht damit weitgehend dem BASIC-V2-Befehl GOTO.
In Simons' Basic dürfen in der Zeile, in der CALL verwendet wird, keine weiteren BASIC-Befehle eingegeben werden. Ein Leerzeichen am Anfang eines Labels (die eventuelle Lücke zwischen PROC und dem Labelnamen wie im Beispiel unten) dürfen bei CALL nicht weggelassen werden (bei TSB jedoch schon).
Wird das Label hinter CALL im Programm nicht gefunden, so erscheint die Fehlermeldung ?PROC NOT FOUND ERROR. Wenn der Interpreter nach CALL auf ein Prozedurende (END PROC) trifft, erscheint die Meldung ?END PROC WITHOUT EXEC ERROR.
Ausnahme: Eine Prozedur wurde mit EXEC aufgerufen und CALL wechselt aus der aktuellen Prozedur zu einer anderen.
Beispiel[Bearbeiten | Quelltext bearbeiten]
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 IF PEEK(197) = 1 THEN CALL zusatz 1020 END PROC 1100 PROC zusatz 1110 PRINT "<return> gedrueckt!" 1120 END PROC
Nach der Aufforderung, eine Taste zu drücken, wartet das Programm und gibt schließlich eine Rückmeldung aus.
Bei Betätigung von RETURN erscheint zusätzlich ein Hinweis.
$ | % | @ | 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
$$ | %% | AT | CALL | CENTER | CHECK | COLD | COLOR | COPY | CLS | CSET | D! | D!PEEK | D!POKE | DIR | DISK | DISPLAY | DIV | DO | DO NULL | DRAW TO | DUMP | DUP | ELSE | ERROR | EXEC | FETCH | FIND | GRAPHICS | INSERT | INST | JOY | KEY | KEYGET | LIN | MAP | MEMCLR | MEMCONT | MEMDEF | MEMLEN | MEMLOAD | MEMOR | MEMPEEK | MEMPOS | MEMREAD | MEMRESTORE | MEMSAVE | MERGE | MOB ON/OFF | MOBCOL | MOD | MOVE | MULTI | NRM | ON ERROR | ON KEY | OPTION | OUT | PAGE | PAINT | PAUSE | PLACE | RENUMBER | RESUME | RETRACE | SCRLD | SCRSV | SOUND | TEXT | TRACE | USE | WAVE | X!