diff options
Diffstat (limited to 'doc/basic/basic handbuch.3')
-rw-r--r-- | doc/basic/basic handbuch.3 | 698 |
1 files changed, 0 insertions, 698 deletions
diff --git a/doc/basic/basic handbuch.3 b/doc/basic/basic handbuch.3 deleted file mode 100644 index 14cb499..0000000 --- a/doc/basic/basic handbuch.3 +++ /dev/null @@ -1,698 +0,0 @@ -#page nr ("%",97)# -#head# -EUMEL-BASIC-Compiler 9. Anpassung von Programmen an den EUMEL-BASIC-Compiler % - -#end# - -9. Anpassung von Programmen an den EUMEL-BASIC-Compiler - - -9.1. Unterschiede zwischen BASIC-Inter - pretern und dem EUMEL-BASIC- - Compiler - -Bei der Anpassung von Programmen für BASIC-Interpreter an den EUMEL- -BASIC-Compiler gibt es einige Besonderheiten zu beachten, die auf den unterschied -lichen Arbeitsweisen von Compilern gegenüber Interpretern beruhen. -Bei Interpretern fällt die Übersetzung und Ausführung des Quellprogramms zeitlich -zusammen (genau genommen gibt es ja gar keine Übersetzung, sondern das Quell -programm wird #on("i")#interpretiert#off("i")#). Dies hat zur Folge, daß auch nicht zur Ausführung -bestimmte Anweisungen (z.B. Dimensionierungen, Typfestlegungen etc.) erst während -der Ausführung des Programms erkannt und ausgewertet werden. -Bei Compilern hingegen muß deutlich zwischen der Übersetzungszeit (Compiletime) -und der Laufzeit (Runtime) eines Programms unterschieden werden. -Der wesentliche Unterschied zwischen Compilern und Interpretern liegt nun in der -Reihenfolge der Kenntnisnahme von den Anweisungen. Während der Interpreter von -den Anweisungen in der Reihenfolge ihres Auftretens entlang des Programmablaufs -Kenntnis nimmt, werden die Anweisungen vom Compiler in der Reihenfolge ihres -textuellen Auftretens zur Kenntnis genommen. -Da es sich bei dem EUMEL-BASIC-Compiler um einen One-Pass-Compiler -handelt, ist es zwingend notwendig, daß -- DIM-Anweisungen vor dem ersten Zugriff auf das zu dimensionierende Feld - stehen. -- OPTION BASE-Anweisungen vor den betreffenden Dimensionierungen stehen. -- DEF FN-Anweisungen vor dem ersten Aufruf der zu definierenden Funktion ste - hen. -- DEFINT- beziehungsweise DEFSTR-Anweisungen vor der ersten Verwendung der - betreffenden Variablen erscheinen. - -Einige Interpreter lassen sogar den Abschluß von FOR-NEXT- und WHILE- -WEND-Schleifen an mehreren Stellen im Programm zu (z.B. mehrere NEXT- -Anweisungen zu einer FOR-Anweisung). Auch solche "Kunstgriffe" gestattet der -EUMEL-BASIC-Compiler (aus den oben geschilderten Gründen) nicht. - - - - -9.2. Abweichungen von ISO 6373-1984 - (Minimal-BASIC) - - - -Der EUMEL-BASIC-Compiler weicht in folgenden Punkten von der ISO-Norm -6373-1984 für Minimal-BASIC ab: -- Treten bei der Auswertung von numerischen Ausdrücken Überläufe auf, so wird - nicht, wie im Standard vorgesehen, eine Warnung ausgegeben und mit bestimmten - Höchstwerten weitergerechnet, sondern die Ausführung des BASIC-Programms - wird mit einer entsprechenden Fehlermeldung abgebrochen. -- Nimmt die Sprungziel-Nummer bei der ON-Anweisung einen fehlerhaften Wert an - (Nummer < 1 oder Nummer > Anzahl Sprungziele), dann wird nicht, wie im - Standard empfohlen, mit einer Fehlermeldung abgebrochen, sondern es wird (wie - auch in Microsoft-BASIC üblich) das Programm mit der der ON-Anweisung fol - genden Anweisung fortgesetzt. -- Bei der DATA-Anweisung müssen nicht unbedingt Zeichenfolgen angegeben - werden. Werden sie weggelassen, dann wird bei Ausführung der READ- - Anweisung null beziehungsweise Leertext geliefert (vergleiche Kapitel 8, DATA- - Anweisung). -- Bei den Eingaben für eine INPUT-Anweisung können ebenfalls die Daten wegge - lassen werden. Auch hier wird null beziehungsweise Leertext geliefert (vergleiche - Kapitel 8, INPUT-Anweisung) - - -Die Erweiterungen gegenüber ISO 6373 sollen hier nicht im einzelnen aufgeführt -werden. Bitte vergleichen Sie in Zweifelsfällen die Normungsschrift mit dieser Doku -mentation! - - - - -9.3. Anpassung von Microsoft-BASIC Pro - grammen an den EUMEL-BASIC- - Compiler - - - -Bei der Entwicklung des EUMEL-BASIC-Compilers wurde zwar auf Übereinstim -mung mit Microsoft-BASIC Wert gelegt, von einer echten Kompatibilität kann aber -aufgrund einer ganzen Reihe fehlender Anweisungen und Funktionen nicht gespro -chen werden. -Gegenüber Microsoft-BASIC fehlen vor allem: -- alle "Direkt-Kommandos" (RUN, LIST, LOAD, SAVE, MERGE usw.). Die Aufgaben - dieser Anweisungen werden von den Prozeduren des EUMEL-Systems über - nommen. -- im weiteren Sinne "hardware-nahe" oder an Maschinensprache orientierte Anwei - sungen und Funktionen (CALL, PEEK, POKE, USR, WAIT usw.) -- die ERROR-Handling Anweisungen (ON ERROR, RESUME) -- die Dateiverarbeitungs-Anweisungen und -Funktion (INPUT\#, PRINT\# u.a.; die - INPUT- und PRINT-Anweisungen wurden aber auf Zusammenarbeit mit 'sysin' - und 'sysout' abgestimmt.) -- die Single-Precision-Variablen (Single- und Double-Precision-Variablen wer - den beide auf den Datentyp REAL abgebildet.) -- die hexadezimalen und oktalen Konstanten - -Anweisungen und Funktionen, die sich abweichend vom Microsoft-Standard verhal -ten, sind vor allem: -- CALL, CHAIN, USR -- ERROR, ERR, ERL -- LSET, RSET - -Wichtige Erweiterungen gegenüber Microsoft-BASIC sind: -- Möglichkeit des Aufrufs von ELAN-Prozeduren -- Maximale Anzahl von Zeichen pro Zeile: 32000 -- Maximale Anzahl von Zeichen pro TEXT-Objekt: 32000 -- OPTION BASE wirkt auf einzelne Felder (und nicht unbedingt auf ein ganzes - Programm) - -#on ("b")# -Hinweis zur Verwendung von MS-BASIC-Programmen im EUMEL-System#off ("b")# -Sollen Microsoft-BASIC-Programme in das EUMEL-Systemm übernommen wer -den, so ist dabei so vorzugehen: -1. Speichern Sie das Programm von MS-BASIC aus mit der ASCII-SAVE-Option - ab. - Beispiel: SAVE "PROGRAMM.BAS",A -2. Lesen Sie das Programm mittels "DOSDAT" (Programm zum Lesen von MS- - DOS-Dateien) im "file ascii"-Modus ein: - - reserve ("file ascii", /"DOS"); fetch ("PROGRAMM.BAS", /"DOS") - -Danach steht ihnen das BASIC-Program in der EUMEL-Textdatei -"PROGRAMM.BAS" zur Verfügung. - -#page# -#head# -EUMEL-BASIC-Compiler Anhang A: Reservierte Wörter % - -#end# - -Anhang A: #ib(4)#Reservierte Wörter#ie(4)# -Dieser Anhang enthält eine Übersicht über alle vom EUMEL-BASIC-Compiler -erkannten reservierten Wörter. - -ABS Funktion -AND Operator -AS Anweisungsbestandteil -ASC Funktion -ATN Funktion -BASE Anweisungsbestandteil -CALL Anweisung -CDBL Funktion -CHAIN Anweisung -CHR$ Funktion -CINT Funktion -CLEAR nicht implementiert -CLOSE nicht implementiert -CLS Anweisung -COMMON nicht implementiert -FIELD nicht implementiert -COS Funktion -CSRLIN Funktion -CVD Funktion -CVI Funktion -DATA Anweisung -DATE$ Funktion -DEF Anweisung -DEFDBL Anweisung -DEFINT Anweisung -DEFSNG Anweisung -DEFSTR Anweisung -DIM Anweisung -ELSE Anweisungsbestandteil -END Anweisung -EOF Anweisungsbestandteil -EQV Operator -ERL Funktion -ERM$ Funktion -ERR Funktion -ERROR Anweisung -EXP Funktion -FIX Funktion -FOR Anweisung -FRE Funktion -GET nicht implementiert -GO Anweisungsbestandteil -GOSUB Anweisung -GOTO Anweisung -HEX$ Funktion -IF Anweisung -IMP Operator -INKEY$ Funktion -INPUT Anweisung -INPUT$ Funktion -INSTR Funktion -INT Funktion -KILL Anweisung -LEFT$ Funktion -LEN Funktion -LET Anweisung -LINE Anweisungsbestandteil -LOC nicht implementiert -LOG Funktion -LPOS Funktion -LPRINT Anweisung -LSET Anweisung -MID$ Anweisung/Funktion -MKD$ Funktion -MKI$ Funktion -MOD Operator -NAME Anweisung -NEXT Anweisung -NOT Operator -OCT$ Funktion -ON Anweisung -OPEN nicht implementiert -OPTION Anweisung -OR Operator -OUT nicht implementiert -POS Funktion -PRINT Anweisung -PUT nicht implementiert -RANDOMIZE Anweisung -READ Anweisung -REM Anweisung -RESTORE Anweisung -RESUME nicht implementiert -RETURN Anweisung -RIGHT$ Funktion -RND Funktion -RSET Anweisung -SGN Funktion -SIN Funktion -SPACE$ Funktion -SPC Funktion -SQR Funktion -STEP Anweisungsbestandteil -STOP Anweisung -STR$ Funktion -STRING$ Funktion -SUB Anweisungsbestandteil -SWAP Anweisung -TAB Anweisungsbestandteil -TAN Funktion -THEN Anweisungsbestandteil -TIME$ Funktion -TIMER Funktion -TO Anweisungsbestandteil -TROFF Anweisung -TRON Anweisung -USING Anweisungsbestandteil -USR Funktion -VAL Funktion -WAIT nicht implementiert -WEND Anweisung -WHILE Anweisung -WIDTH Anweisung -WRITE Anweisung -XOR Operator -#page# -#head# -EUMEL-BASIC-Compiler Anhang B: Vom Scanner erkannte Symboltypen % - -#end# - -Anhang B: Vom #ib(3)#Scanner#ie(3)# erkannte #ib(3)#Symbol -typen#ie(3)# - - Der Scanner (ein Paket des EUMEL-BASIC-Systems) hat die Aufgabe, den Pro -grammtext Zeichen für Zeichen durchzugehen und auszulesen ('scannen'). Dabei -werden die Zeichen immer zu logischen Gruppen, sogenannten #on("i")#Symbolen#off("i")# zusammen -gefaßt. Diese Symbole werden dann dem eigentlichen Compilerprogramm geliefert. -Der Scanner entscheidet nach recht komplizierten Regeln, welche Zeichen aus der -Quelldatei zu einem Symbol zusammengefaßt werden. Dennoch soll in diesem An -hang der Begriff des Symbols etwas näher erklärt werden, da der Anwender (vor allem -bei den Fehlermeldungen) mit Symboltypen konfrontiert wird. - - - -Reservierte Wörter -#on ("b")# -Anfangszeichen:#off ("b")# Buchstaben -#on ("b")# -Folgezeichen:#off ("b")# Buchstaben -#on ("b")# -Beispiele:#off ("b")# PRINT, VAL, TAB, SUB, TO -#on ("b")# -Vergleiche:#off ("b")# Anhang A - - - -Operatoren -+ - * / \ ^ MOD -NOT AND OR XOR EQV IMP -< > = <= >= <> - -#on ("b")# -Vergleiche:#off ("b")# Kapitel 4.4. - - - -numerische Konstanten -#on ("b")# -Anfangszeichen:#off ("b")# Ziffern 0 bis 9, Dezimalpunkt '.' -#on ("b")# -Folgezeichen:#off ("b")# zusätzlich: 'd', 'D', 'e' oder 'E', am Schluß auch '%', '!' oder '\#' -#on ("b")# -Beispiele:#off ("b")# 1.0, 1.256d123, 12! -#on ("b")# -Vergleiche:#off ("b")# Kapitel 4.2. - - - -TEXT-Konstanten -#on ("b")# -Anfangszeichen:#off ("b")# Anführungszeichen -#on ("b")# -Folgezeichen:#off ("b")# Alle Zeichen, sogar Doppelpunkte, Apostrophe und Steuerzei - chen. Anführungszeichen dürfen #on("i")#innerhalb#off("i")# von - TEXT-Konstanten nicht vorkommen. Eine - TEXT-Konstante #on("i")#muß#off("i")# aber mit einem Anfüh - rungszeichen enden. -#on ("b")# -Beispiele:#off ("b")# "tadellos", "!?': alles mögliche" -#on ("b")# -Vergleiche:#off ("b")# Kapitel 4.2. - - - -Variablen -#on ("b")# -Anfangszeichen:#off ("b")# Buchstaben -#on ("b")# -Folgezeichen:#off ("b")# zusätzlich: Punkt '.', Ziffern 0 bis 9, Zeichen '$', '%', '!' und '\#' -#on ("b")# -Beispiele:#off ("b")# zeiger, A$, Zahl!, n%, var\#4.3% -#on ("b")# -Vergleiche:#off ("b")# Kapitel 4.3. - - - -Felder/Feldelemente -wie Variablen, jedoch gefolgt von '(', den Indexangaben und ')' -#on ("b")# -Beispiele:#off ("b")# zeiger (3), A$ (pointer), Zahl! (7), n% (a, b, c + d) -#on ("b")# -Vergleiche:#off ("b")# Kapitel 4.3. - - - -Benutzer-definierte Funktionen -#on ("b")# -Anfangszeichen:#off ("b")# FN -#on ("b")# -Folgezeichen:#off ("b")# Buchstaben, Punkt '.', Ziffern 0 bis 9, - Zeichen '$', '%', '!' und '\#' -#on ("b")# -Beispiele:#off ("b")# FNfunct, FNgauss%, FNf!4.5.6d\# -#on ("b")# -Vergleiche:#off ("b")# Kapitel 4.5. - - - -EOS (End of Statement, Anweisungsende) -Doppelpunkt ':' - -#on ("b")# -Vergleiche:#off ("b")# Kapitel 4.1. - - - -EOL (End of Line, Zeilenende) -Apostrophzeichen ' oder Ende der Dateizeile -EOL bedeutet gleichzeitig auch EOS - -#on ("b")# -Vergleiche:#off ("b")# Kapitel 4.1. - - - -EOF (End of File, Dateiende) -Ende der Quelldatei -EOF bedeutet gleichzeitig auch EOL (und somit auch EOS) - -#on ("b")# -Vergleiche:#off ("b")# Kapitel 4.1. - - - -Trennzeichen -Alle bisher nicht genannten Zeichen werden vom Scanner als Trennzeichen behan -delt. In BASIC benötigte Trennzeichen sind das Komma (','), das Semikolon (';') sowie -die beiden runden Klammern '(' und ')'. -Zeichen mit Codes kleiner als 32 (Steuerzeichen) werden vom Scanner überlesen. -#page# -#head# -EUMEL-BASIC-Compiler Anhang C: Übersicht über die Fehlermeldungen % - -#end# - -Anhang C: Übersicht über die Fehlermeldungen - - -Übersicht über die verwendeten Fehlermeldungen zur -Übersetzungszeit -Diese Übersicht enthält alle zur Übersetzungszeit möglichen Fehler, mit Ausnahme -der internen Fehler. -Die Erläuterungen geben die üblichen Ursachen für die Fehlermeldung an. Es wird -empfohlen, sich im Falle eines Fehlers außerdem in Kapitel 8 über die genaue Syntax -der betreffenden Anweisung beziehungsweise Funktion zu informieren. - - -#on ("b")#AS ohne NAME#off ("b")# -AS darf nur in NAME-Anweisungen vorkommen. - -#on ("b")#Accessrecht VAR erwartet, CONST gefunden#off ("b")# -Beim Aufruf einer ELAN-Prozedur (CALL, CHAIN oder USR) wurde ein VAR-Para -meter verlangt. Angegeben wurde aber ein CONST-Parameter (zum Beispiel ein -Ausdruck). - -#on ("b")#Ausdruck erwartet#off ("b")# -Es wurde ein numerischer oder TEXT-Ausdruck erwartet. Diese Fehlermeldung -erscheint zum Beispiel, wenn nach einem Operator kein Ausdruck mehr gefunden -wird. - -#on ("b")#BASE ohne OPTION#off ("b")# -BASE darf nur in OPTION BASE-Anweisungen vorkommen. - -#on ("b")#Bei SWAP nur gleiche Variablentypen erlaubt#off ("b")# -Mit SWAP können nur Variablen von genau dem gleichen Typ bearbeitet werden. - -#on ("b")#Das Feld ist bereits dimensioniert#off ("b")# -Diese Fehlermeldung erscheint bei DIM-Anweisungen, wenn das Feld vorher schon -explizit oder automatisch dimensioniert wurde. - -#on ("b")#ELSE ohne IF#off ("b")# -ELSE darf nur in IF-Anweisungen vorkommen. ELSE muß in der gleichen Zeile -stehen wie die zugehörige IF-Anweisung. - -#on ("b")#Falsche Felddimension: -Dimensioniert in ... Dimensionen, gefundene Anzahl Indizes: ...#off ("b")# -Beim Zugriff auf ein Feldelement wurden zu viele oder zu wenig Indizes angegeben. - -#on ("b")#FOR ohne NEXT#off ("b")# -Diese Fehlermeldung erscheint, wenn am Programmende für eine FOR-Anweisung -kein korrespondierendes NEXT gefunden wurde. - -#on ("b")#Falsche Reihenfolge der Zeilennummern#off ("b")# -Die Zeilennummern wurden nicht in aufsteigender Reihenfolge angegeben. - -#on ("b")#Falscher Typ#off ("b")# -Es wurde ein anderer Datentyp erwartet als angegeben, und es konnte keine automa -tische Konvertierung vorgenommen werden. - -#on ("b")#Falscher Typ der Operanden#off ("b")# -Bei einem dyadischen Operator wurden Operanden angegeben, für deren Typen -dieser Operator nicht definiert ist (vergleiche Kapitel 4.4.). - -#on ("b")#Falscher Typ des Operanden#off ("b")# -Bei einem monadischen Operator wurde ein Operand angegeben, für dessen Typ -dieser Operator nicht definiert ist (vergleiche Kapitel 4.4.). - -#on ("b")#Fehlerhafte Bereichsangabe#off ("b")# -Diese Fehlermeldung kann bei den Anweisungen DEFDBL, DEFINT, DEFSNG und -DEFSTR auftreten, wenn bei einer Bereichsangabe der Buchstabe vor dem Binde -strich im Alphabet nach dem Buchstaben hinter dem Bindestrich steht. - -#on ("b")#Fehlerhafte Dimensionierung: Die Obergrenze muß >= 1 sein#off ("b")# -Es wurde versucht, ein Feld mit dem größten Index null in einer Dimension zu -dimensionieren, obwohl die Index-Untergrenze mit OPTION BASE auf eins einge -stellt war. - -#on ("b")#Fehlerhafte Laufvariable#off ("b")# -Nach einer NEXT-Anweisung wurde eine Laufvariable gefunden, die nicht zur letzten -anhängigen FOR-Anweisung gehört. Der Fehler tritt auf, wenn Schleifen geschachtelt -wurden. - -#on ("b")#Fehlerhafte Zeilennummer#off ("b")# -Die Zeilennumer entspricht nicht der Syntax für Zeilennumern. - -#on ("b")#Fehlerhafter Funktionsaufruf#off ("b")# -- Die Prozedur liefert keinen Wert - Es wurde versucht, eine Prozedur mit USR aufzurufen, die keinen Wert liefert. -- Der Typ des Resultats ist nicht erlaubt, gefunden: ... - Es wurde versucht, eine Prozedur mit USR aufzurufen, die ein Objekt liefert, - dessen Datentyp in BASIC nicht bekannt ist. -- Kein Argument erwartet - Es wurde versucht, eine benutzer-definierte Funktion, die ohne Parameter definiert - wurde, mit Argument(en) aufzurufen. -- ... Argument(e) erwartet - Die Anzahl der angegebenen Argumente ist kleiner als die Anzahl der bei der - Funktionsdefinition angegebenen Parameter. -- Nur ... Argument(e) erwartet - Die Anzahl der angegebenen Argumente ist größer als die Anzahl der bei der Funk - tionsdefinition angegebenen Parameter. -- Kein Resultat erlaubt (gefunden: ...) - Bei CALL oder CHAIN wurde versucht, eine wertliefernde Prozedur aufzurufen. - -#on ("b")#Funktionsaufruf ohne Zusammenhang#off ("b")# -Es wurde ein Funktionsaufruf angegeben, wo eine Anweisung erwartet wurde. - -#on ("b")#GO ohne TO oder SUB#off ("b")# -Das reservierte Wort GO kann nur in GO SUB oder GO TO auftreten. - -#on ("b")#Interner Fehler#off ("b")# -Bei der Übersetzung wurde innerhalb des Compilerprogramms ein interner Fehler -ausgelöst. (vergleiche Kapitel 7.1.) - -#on ("b")#Nach OPTION BASE ist nur 0 oder 1 erlaubt#off ("b")# -Es wurde versucht, eine Zahl > 1 nach OPTION BASE anzugeben. - -#on ("b")#NEXT ohne FOR#off ("b")# -Es wurde eine NEXT-Anweisung gefunden, die keiner FOR-Anweisung zuzuordnen -ist, da keine "offenen" FOR-Schleifen mehr anhängig sind. - -#on ("b")#Nicht implementiert#off ("b")# -Einige reservierte Wörter werden vom BASIC-Compiler erkannt, obwohl die zugehö -rigen Anweisungen oder Funktionen nicht implementiert sind (vgl. Anhang A). - -#on ("b")#Parametervariable kommt mehrmals vor#off ("b")# -Bei der Definition einer "user function" kommt ein Parameter in der Parameterliste -mehr als einmal vor. - -#on ("b")#Rekursive Funktionsdefinition#off ("b")# -Es wurde versucht, in der Definition einer "user function" die zu definierende Funk -tion aufzurufen. - -#on ("b")#STEP ohne FOR#off ("b")# -STEP darf nur in FOR-Anweisungen vorkommen. - -#on ("b")#SUB ohne GO#off ("b")# -SUB darf nur in GOSUB vorkommen. - -#on ("b")#Syntaxfehler: <nähere Fehlerangabe>#off ("b")# -Wenn dieser Fehler erscheint, wurde vom Compiler eine Angabe gefunden, die nach -den Syntaxregeln dort nicht erwartet wurde oder fehlerhaft ist. - -#on ("b")#TAB ohne (L)PRINT#off ("b")# -TAB darf nur in PRINT- und LPRINT-Anweisungen vorkommen. - -#on ("b")#THEN ohne IF#off ("b")# -THEN darf nur in IF-Anweisungen vorkommen. THEN muß in der gleichen Zeile -stehen wie die zugehörige IF-Anweisung. - -#on ("b")#TO ohne Zusammenhang#off ("b")# -TO darf nur in FOR-Anweisungen oder in GO TO vorkommen. - -#on ("b")#Text zu lang#off ("b")# -Dieser Fehler erscheint, wenn ein Anführungszeichen fehlt beziehungsweise ein -Anführungszeichen zu viel gefunden wird. - -#on ("b")#Unbekannte Funktion, Argument(e) angegeben: ...#off ("b")# -Es wurde versucht, eine Funktion mit einem Argument aufzurufen, für dessen Typ die -Funktion nicht definiert ist. - -#on ("b")#Unbekannte Prozedur, Parameter angegeben: ...#off ("b")# -Die angegebene Prozedur konnte mit den angegebenen Parametertypen nicht gefun -den werden. - -#on ("b")#Undefinierte 'user function'#off ("b")# -Es wurde versucht, eine benutzer-definierte Funktion aufzurufen, die (noch) nicht -definiert wurde. - -#on ("b")#USING ohne (L)PRINT#off ("b")# -USING darf nur in PRINT- und LPRINT-Anweisungen vorkommen. - -#on ("b")#WEND ohne WHILE#off ("b")# -Es wurde eine WEND-Anweisung gefunden, die keiner WHILE-Anweisung zuzuord -nen ist, da keine "offenen" WHILE-Schleifen mehr anhängig sind. - -#on ("b")#WHILE ohne WEND#off ("b")# -Diese Fehlermeldung erscheint, wenn am Programmende für eine WHILE-Anweisung -kein korrespondierendes WEND gefunden wurde. - -#on ("b")#Zeile mit dieser Nummer existiert nicht#off ("b")# -Es wurde versucht, mit GOTO oder GOSUB zu einer Zeilennumer zu verzweigen, die -im Programm nicht angegeben wurde. - - - - -Übersicht über die innerhalb des BASIC-Systems -ausgelösten Laufzeitfehler -Die meisten Laufzeitfehler werden auch bei BASIC-Programmen im EUMEL-System -erzeugt (vergleiche Kapitel 7.2.). Einige werden aber innerhalb des BASIC-Systems -erzeugt. Die nachfolgende Übersicht enthält die innerhalb des BASIC-Systems aus -gelösten Fehler mit Angabe des gelieferten Fehlercodes und der Fehlermeldung. - -#on ("b")#Fehlercode:#off ("b")# 1003 -#on ("b")#Fehlermeldung:#off ("b")# RETURN ohne GOSUB -Eine RETURN-Anweisung wurde gefunden, obwohl keine GOSUB-Anweisung mehr -anhängig war. - - -#on ("b")#Fehlercode:#off ("b")# 1004 -#on ("b")#Fehlermeldung:#off ("b")# RESTORE: Keine DATA-Anweisung in oder nach -#right#Zeile ... gefunden -Eine RESTORE-Anweisung konnte nicht ausgeführt werden, weil in oder nach der in -der Anweisung angegebenen Zeilennummer keine DATA-Anweisung mehr steht. - - -#on ("b")#Fehlercode:#off ("b")# 1005 -#on ("b")#Fehlermeldung:#off ("b")# bei ^: negative Basis, gebrochener Exponent: ... -Es wurde versucht, eine negative Zahl mit einer gebrochenen Zahl zu potenzieren. - - -#on ("b")#Fehlercode:#off ("b")# 1005 -#on ("b")#Fehlermeldung:#off ("b")# USING: kein Format gefunden -Bei einer PRINT USING-Anweisung wurde kein Format für die Ausgabe angegeben -oder die Formatzeichenkette enthält keine Formatzeichen. - - -#on ("b")#Fehlercode:#off ("b")# 1005 -#on ("b")#Fehlermeldung:#off ("b")# USING-Format fehlerhaft: ... -Bei einer PRINT USING-Anweisung wurde ein fehlerhaftes Format angegeben. - - -#on ("b")#Fehlercode:#off ("b")# 1004 -#on ("b")#Fehlermeldung:#off ("b")# Keine Daten mehr für READ -Es stehen keine Daten mehr für die READ-Anweisung zur Verfügung; der READ- -DATA-Zeiger zeigt hinter das Ende der letzten DATA-Anweisung. - - -#on ("b")#Fehlercode:#off ("b")# 1005 -#on ("b")#Fehlermeldung:#off ("b")# WIDTH: negative Angabe: ... -Nach WIDTH wurde eine negative Zahl gefunden. - - -#on ("b")#Fehlercode:#off ("b")# 1013 -#on ("b")#Fehlermeldung:#off ("b")# READ: Falscher Datentyp, ... ist kein INT -Einer INT-Variablen konnte kein Wert zugewiesen werden, da das aktuelle Objekt -aus der DATA-Liste keine gültige Darstellung eines INT-Wertes war oder ein -"quoted string" gefunden wurde. - - -#on ("b")#Fehlercode:#off ("b")# 1013 -#on ("b")#Fehlermeldung:#off ("b")# READ: Falscher Datentyp, ... ist kein REAL -Einer REAL-Variablen konnte kein Wert zugewiesen werden, da das aktuelle Objekt -aus der DATA-Liste keine gültige Darstellung eines REAL-Wertes war oder ein -"quoted string" gefunden wurde. - - -#on ("b")#Fehlercode:#off ("b")# 1051 (interner Fehler) -#on ("b")#Fehlermeldung:#off ("b")# variierend -Bei der Ausführung des Programms trat in einer Prozedur des BASIC-Systems ein -interner Fehler auf. (Vergleiche Kapitel 7.) - - -#on ("b")#Fehlercode:#off ("b")# 1080 -#on ("b")#Fehlermeldung:#off ("b")# INPUT-Fehler ( Fehlerart ) : > Eingabezeile < -Bei einer INPUT-Anweisung, die auf eine mit 'sysin' eingestellte Datei wirken sollte, -kam es zu einem Fehler der angegebenen Fehlerart. Nach dem Doppelpunkt wird die -Eingabezeile aus der Eingabedatei ausgegeben. -#page# -#head# -EUMEL-BASIC-Compiler Anhang D: ELAN-Prozeduren des Compilers % - -#end# - -Anhang D: ELAN-Prozeduren des Compilers - - #on ("b")#PROC #ib(3)#basic#ie(3)# (TEXT CONST dateiname)#off ("b")# - Das in der Datei 'dateiname' enthaltene BASIC-Programm wird dem BASIC- - Compiler zur Übersetzung übergeben. Werden keine Fehler gefunden, so wird das - Programm direkt nach der Übersetzung ausgeführt. - Beispiel: - - basic ("Mein liebstes BASIC-Programm")#off ("b")# - - - #on ("b")#PROC basic (TEXT CONST dateiname, prozedurname)#off ("b")# - Das in der Datei 'dateiname' enthaltene BASIC-Programm wird dem BASIC- - Compiler zur Übersetzung übergeben. Werden keine Fehler gefunden, dann wird - das Programm unter dem Namen 'prozedurname' dauerhaft eingetragen (inser - tiert). - Das Programm wird nicht ausgeführt. Beachten Sie, daß der Prozedurname den - Vorschriften für ELAN-Prozedurnamen entsprechen muß und außerdem #on ("b")#keine - Leerzeichen#off ("b")# enthalten darf. (Zur Namenswahl siehe auch Kapitel 3.) - Beispiel: - - basic ("Mein liebstes BASIC-Programm", "liebstesprogramm")#off ("b")# - - - - #on ("b")#PROC #ib(3)#basic list#ie(3)# (BOOL CONST status)#off ("b")# - Mit der Prozedur 'basic list' kann eingestellt werden, ob die gerade vom Compiler - übersetzten Programmzeilen angezeigt werden sollen oder nicht (vergleiche Kapitel - 3.). - - basic list (TRUE)#off ("b")#: Die übersetzten Zeile werden angezeigt - basic list (FALSE)#off ("b")#: Die übersetzten Zeile werden nicht angezeigt - - - #on ("b")#PROC #ib(3)#basic page#ie(3)# (BOOL CONST status)#off ("b")# - Mit der Prozedur 'basic page' kann eingestellt werden, wie die Ausgaben von - BASIC-Programmen behandelt werden, wenn der Bildschirm voll ist (vergleiche - Kapitel 5, Steuerung der Bildschirmausgaben). - - basic page (TRUE): Beim Erreichen des Bildschirmendes wird auf einen - Tastendruck gewartet (vgl. Kap. 5.) - basic page (FALSE): Beim Erreichen des Bildschirmendes wird 'gescrollt'. - |