RESUME (BASIC 3.5)

Aus C64-Wiki
Wechseln zu: Navigation, Suche
Begriffsklärung Der Titel dieses Artikels ist mehrdeutig. RESUME (Begriffsklärung).
RESUME (BASIC 3.5)
Format: 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
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]

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]