summaryrefslogtreecommitdiff
path: root/lang/basic/1.8.7/doc/basic handbuch.3
blob: 14cb4994bc7075fbb06777af66d2425c3989d707 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
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'.