RESUME (BASIC 3.5)
RESUME (BASIC 3.5) | |
Syntax: | RESUME [<Zeilennummer>|NEXT] |
Parameter | |
<Zeilennummer>: Ganzzahlkonstante im Wertebereich von 0 bis 65535 | |
Einordnung | |
Typ: | Anweisung |
Kontext: | Fehlerbehandlung |
Aufgabe: | Fehlerbehandlung beenden und Programm normal fortsetzen |
Abkürzung: | resU |
Token: | $d6 (214) |
Verwandte Befehle | |
EL, ER, ERR$, TRAP |
Anmerkung: Dieser Artikel beschreibt den BASIC-Befehl RESUME ab Commodore BASIC V3.5 oder höher.
Der BASIC-Befehl RESUME (engl., wiederaufnehmen) führt in einer Fehlerbehandlungsroutine, die durch TRAP festgelegt wurde, die Ausführung des Programms wieder zurück zum eigentlichen Programm. In Abhängigkeit des Parameters kann das Verhalten entsprechend gesteuert werden:
- ohne Parameter: Die Ausführung setzt an der Stelle des aufgetretenen Fehlers fort.
- NEXT: Die Ausführung setzt nach dem fehlerauslösenden Befehl fort.
- <Zeilennummer>: Die Programmausführung verzweigt zu dieser Zeilennummer.
In der Fehlerbehandlungsroutine kann dann anhand der Fehlernummer in der Systemvariable ER ein davon abhängiges Verhalten mit verschiedene RESUME-Varianten festgelegt werden.
Wird der RESUME-Befehl nicht im Zuge einer Fehlerbehandlung aufgerufen, führt dies zur Fehlermeldung ?CAN'T RESUME ERROR. Ist die Zeilennummer außerhalb des Bereichs einer vorzeichenlosen 16-Bit-Ganzzahl von 0 bis 65535, erscheint ?ILLEGAL QUANTITY ERROR.
Ist RESUME selbst die Fehlerquelle, nämlich dann, wenn bei einer Zeilennummernangabe die Zeile nicht existiert, löst dies unter BASIC 7.0 die Fehlerbehandlungsroutine gemäß TRAP erneut aus, während BASIC 3.5 dies normal als Fehler in einer Fehlerbehandlungsroutine sieht und mit ?UNDEF'D STATEMENT ERROR abbricht.
Im Direktmodus hat ein Aufruf keinen Sinn, was mit dem Fehler ?ILLEGAL DIRECT ERROR signalisiert wird.
Nicht der angegebenen Programmiersyntax entsprechende Angaben führen zu einem ?SYNTAX ERROR.
Beispiel[Bearbeiten | Quelltext bearbeiten]
100 TRAP 1000 110 SCHWERER SYNTAXFEHLER : PRINT " ... WEITER" 120 END 1000 REM FEHLERBEHANDLUNGSROUTINE 1010 PRINT ER; ERR$(ER) " ERROR!" 1020 RESUME NEXT
sollte folgendes anzeigen
11 SYNTAX ERROR! ... WEITER |
Diese Variante überspringt alle auftretenden Fehler, was wiederum zu ganz neuen Problemen führen könnte. Eine vom Fehlercode abhängige Programmierung ist hier mitunter anzuraten.
Mit aktiviertem Tracing (TRON) zeigt sich der Programmlauf im Detail:
TRON RUN [100][110][1000][1010] 11 SYNTAX ERROR! [1020][110] ... WEITER [120] |
AUTO | BACKUP | BOX | CHAR | CIRCLE | COLLECT | COLOR | COPY | DEC | DELETE | DIRECTORY | DLOAD | DO | DRAW | DS | DS$ | DSAVE | EL | ELSE | ER | ERR$ | EXIT | GETKEY | GRAPHIC | GSHAPE | HEADER | HELP | HEX$ | INSTR | JOY | KEY | LOCATE | LOOP | MONITOR | PAINT | PRINT USING | PUDEF | RCLR | RDOT | RENAME | RENUMBER | RESUME | RGR | RLUM | SCALE | SCNCLR | SCRATCH | SOUND | SSHAPE | TRAP | TROFF | TRON | UNTIL | VOL | WHILE