Sie sind hier Fehlermeldungen

# Fehlermeldungen

Das MCS BASIC-52 enthält eine komfortable Fehlerbehandlung, die beim Auftreten eines Programmierfehlers eine Meldung nach folgendem Muster ausgibt:
ERROR: XXX – IN LINE YYY
YYY [Basic-Anweisung]
-----x
Hierbei ist XXX die Art des Fehlers und YYY die Nummer der Zeile, in der der Fehler auftrat.
Beispiel:
ERROR: BAD SYNTAX – IN LINE 10
10 PRITT 34*21
-----x
Die Position des „x“ zeigt ungefähr die Stelle in der Zeile an, die zur Fehlermeldung führte. Abhängig von der Art des Fehlers
kann das „x“ geringfügig verschoben sein. Tritt ein Fehler im Kommando-Modus auf, so wird nur die Fehlerart gemeldet.
Folgende Fehlerarten sind möglich:

BAD SYNTAX | CAN´T CONTINUE
BAD ARGUMENT | PROGRAMMING ERROR
ARITH. UNDERFLOW | A-STACK
ARITH. OVERFLOW | C-STACK
DIVIDE BY ZERO | I-STACK
LINE TOO LONG | ARRAY SIZE
EXTRA IGNORED | MEMORY ALLOCATION
NO DATA |

BAD SYNTAX
Diese Meldung zeigt an, daß der Interpreter auf eine unverständliche Anweisung oder einen Unbekannten Operator gestoßen ist.
Die Meldung erscheint auch, wenn ein reserviertes Wort (z.B. IF oder RUN) Bestandteil eines
Variablennamens ist. Allerdings hat die Praxis gezeigt, daß man sich hierauf nicht immer verlassen kann.
BAD ARGUMENT
Wenn ein Operand (Argument) außerhalb des erlaubten Zahlenbereichs liegt, tritt ein BAD ARGUMENT ERROR auf.
Beispiele für diesen Fall sind die Anweisungen A=DBY(257) und XBY(5000H)=-1.
Bei beiden Anweisungen liegt das Argument nicht im Bereich von 0...255 .
ARITH. UNDERFLOW
Fließkommazahlen dürfen einen bestimmten kleinsten Zahlenwert nicht unterschreiten, weil sie sonst nicht mehr dargestellt werden können.
Beim MCS BASIC-52 liegt die untere Grenze bei ±1E-127. Ist das Ergebnis einer arithmetischen Operation kleiner, so tritt ein UNDERFLOW ERROR auf.
Beispiel für eine solche Operation: 1E-80 / 1E+80.
ARITH. OVERFLOW
Fließkommazahlen dürfen einen bestimmten größten Zahlenwert nicht überschreiten, weil sie sonst nicht mehr dargestellt werden können.
Beim MCS BASIC-52 liegt die obere Grenze bei ±99999999E+127. Ist das Ergebnis einer arithmetischen Operation größer, so tritt ein OVERFLOW ERROR auf.
Beispiel für eine solche Operation: 1E+70 * 1E+70.
DIVIDE BY ZERO
Dieser Fehler tritt beim Teilen einer Zahl durch 0 auf.
Beispiel: 12/0 hat die Meldung DIVIDE BY ZERO zur Folge.
NO DATA
Mit READ-Anweisungen werden die Daten gelesen (und Variablen zugewiesen), die in DATA-Anweisungen stehen.
Wenn bereits alle Daten gelesen wurden und eine RESTORE-Anweisungen fehlt, hat dies einen NO DATA ERROR zur Folge.
Der gleiche Fehler tritt auf, wenn keine DATA-Anweisung vorhanden ist.
CAN´T CONTINUE
Die Ausführung eines Programms läßt sich entweder durch die Eingabe von Control-C oder durch eine im Programm stehende STOP-Anweisung anhalten.
Die Wiederaufnahme ist mit der Anweisung CONT möglich, sofern das Programm nicht vor der Eingabe von CONT geändert wurde.
Andernfalls meldet der Interpreter mit CAN´T CONTINUE, daß er die Programmausführung nicht fortsetzen kann.
PROGRAMMING ERROR
Wenn während der EPROM-Programmierung eine Störung auftritt, erscheint die Meldung PROGRAMMING ERROR auf dem Bildschirm.
Das betreffende EPROM muß zuerst gelöscht werden, bevor es erneut programmiert werden kann.
A-STACK
Diese Fehlermeldung gibt der Interpreter aus, wenn der Argument Stack seine maximale Größe erreicht.
Ursache können zu viele PUSH-Anweisungen innerhalb des laufenden Programms sein.
Auch eine POP-Anweisung bei leerem Argument Stack verursacht einen A-STACK ERROR.
C-STACK
Der Control-Stack darf maximal 158 Byte umfassen. Stößt der Interpreter an diese Grenze, so meldet er einen C-STACK ERROR.
Jede FOR-NEXT-Schleife belegt 17 Byte, jede DO-UNTIL- oder DO-WHILE-Schleife benötigt 3 Byte des Control Stack.
Daraus folgt, daß maximal neun FOR-NEXT-Schleifen geschachtelt werden dürfen (9*17=153).
Ein C-STACK ERROR entsteht auch, wenn einer RETURN-Anweisung keine GOSUB-Anweisung vorangeht.
Das Gleiche gilt für WHILE oder UNTIL ohne DO sowie für NEXT ohne FOR.
I-STACK
Die Fehlermeldung I-STACK ERROR tritt auf, falls der Stackumfang für eine auszuführende arithmetische Operation nicht ausreicht.
Dieser Fehler kommt normalerweise nur im Zusammenhang mit Maschinenspracheprogrammen vor, die vom Benutzer geschrieben wurden.
ARRAY SIZE
Wird nach der Dimensionierung eines Variablenfeldes (Array) eine Feldvariable benutzt, die außerhalb des Feldes liegt, hat dies
einen ARRAY SIZE ERROR zur Folge.
Beispiel:
>DIM A(10)
>PRINT A(11)
ERROR: ARRAY SIZE
MEMORY ALLOCATION
Ein MEMORY ALLOCATION ERROR entsteht bei dem Versuch, einer String-Variablen eine Zeichenkette zuzuweisen, die nicht in den für Strings reservierten
Speicherbereich passt. Außerdem tritt dieser Fehler auf, wenn die Systemvariable MTOP auf eine Adresse gesetzt wird, die außerhalb des Arbeitsspeichers liegt.
LINE TOO LONG (jetzt ein Ton)
Überschreitet eine Programm- oder Kommandozeile die Grenzen von 73 Zeilen, so gab der Interpreter (Version 1.0) die Meldung LINE TOO LONG aus. Bei der Interpreter-Version 1. 1 ist diese Grenze auf 79 Zeichen erweitert; längere Zeilen führen hier zur Ausgabe des Zeichens BELL.
EXTRA IGNORED
Diese Warnmeldung tritt auf, wenn z.B. eine Stringdefinition 16 Zeichen festlegte, aber ein Strin mit 20 Zeichen definiert wurde. Das Programm läuft trotzdem weiter
Beispiel:
>STRING 1300,16
>$(3)="ALLE MEINE ENTCHEN 1"
EXTRA IGNORED
.