summaryrefslogtreecommitdiff
path: root/doc/basic/basic handbuch.3
diff options
context:
space:
mode:
Diffstat (limited to 'doc/basic/basic handbuch.3')
-rw-r--r--doc/basic/basic handbuch.3698
1 files changed, 698 insertions, 0 deletions
diff --git a/doc/basic/basic handbuch.3 b/doc/basic/basic handbuch.3
new file mode 100644
index 0000000..14cb499
--- /dev/null
+++ b/doc/basic/basic handbuch.3
@@ -0,0 +1,698 @@
+#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'.
+