Allgemeine BASIC-Befehle (Direktbefehle)

Die in diesem Kapitel beschriebenen Befehle können bis auf PRIVACY als Direktbefehl verwendet werden. Außer bei RENUMBER und CONT ist auch der Einsatz in einer BASIC-Zeile möglich, aber nicht immer sinnvoll. Befehle wie LIST, COPY, DELETE, EDIT, ERROR, MERGE und NEW bewirken in einer Programmzeile nach ihrer Funktion einen Programmstop. Bei den Befehlsbeispielen sind alle angegebenen Zeichen einzutippen, auch die Kommas oder Anführungszeichen.

Beispielprogramm:

10 DIR"B:*.*"
20 TRACE 1
30 REM - 1000 BASIC-Programm
1010 TRACE 0
1020 RESAVE "B:TEST"
1030 LIST

LET:

Der Befehl LET wurde in die Beschreibung nicht aufgenommen, da er bei der Zuweisung eines Wertes zu einer Variablen nicht benötigt wird und auch keinen Geschwindigkeitsvorteil bei der Bearbeitung eines Programmes bietet.

 

AUTO: Befehlsform: AUTO Zeilennummer + , Zeilenabstand

Dieser Befehl gibt automatisch Zeilennummern für Programmzeilen aus. Erste Zeilennummer und Differenz zwischen den Zeilennummern können zusätzlich angegeben werden.

a) AUTO <CR>
Es wird mit Zeilennummer 10 begonnen. Nach jedem nächsten <CR> wird zur Zeilennummer die Zahl 10 addiert und diese ausgegeben.

b) AUTO 100 <CR>
Es wird mit Zeilennummer 100 begonnen und nach jedem <CR> 10 dazu addiert.

c) AUTO 10,100 <CR>
Es wird mit Zeilennummer 10 begonnen, aber nach jedem <CR> wird die Zahl 100 dazu addiert. Wird die Zeilennummer 65535 erreicht, so erfolgt die Fehlermeldung "Zeilen-Nr. falsch".

d) AUTO 10+,100 <CR>
Es wird der Zeilenabstand zum Anfangswert addiert und mit der Summe begonnen.

e) Existiert schon eine durch AUTO erhaltene Zeilennummer, wird diese mit einem vorangestelltem + Zeichen ausgegeben. <CR> läßt die dazugehörige Programmzeile unverändert. Sie kann durch eine neue überschrieben werden.

f) <CTRL-E> beendet die automatische Zeilennummerierung. Wird sie nachher mit AUTO. (Punkt eingeben) wieder begonnen, so werden die Zeilennummern beginnend mit der letzten Nummer weitergeführt, wobei die Differenz wieder angegeben werden kann, z.B. AUTO .,20 (Differenz 20).

 

BYE:

Der Basic-Interpreter wird verlassen und das Betriebssystem steht zur Verfügung. Alle Kanäle, über die Daten ausgegegeben wurden, müssen geschlossen sein, sonst können Daten verloren gehen.

 

CALL:´ Befehlsform: CALL Adresse, Wert 1, Wert 2, ....., Wert n

Mit diesem Befehl wird zu der angegebenen Adresse in Maschinenspracheroutinen gesprungen. Dabei können mit dem Befehl die angegebenen Werte übertragen werden. Sie werden auf dem Stapel abgelegt und sind so zugänglich. Das BC- bzw. CX-Register enthält die Anzahl n der übertragenen Werte, diese ist nur durch den Speicher begrenzt.Mit RET wird ins BASIC-Programm zurückgesprungen.

a) CALL 2024 <CR>
Es wird an die Adresse 2042h gesprungen. Die Adresse kann auch sedezimal angegeben werden, z.B. CALL &7E8.

b) CALL &8000,45,3 <CR>
Ab Adresse 32768 (8000h) muß sich ein Maschinenprogramm befinden, dem die Werte 45 und 3 übergeben werden. Register BC bzw. CX enthält 00 02, auf dem Stapel befinden sich 03 00 2D 00.

c) CALL 0 <CR> (nur CP/M)
BASIC wird verlassen und es meldet sich das Betriebssystem mit dem Laufwerkbuchstaben, z.B. "A>".

 

CLEAR: Befehlsform: CLEAR Byteanzahl oder Variable, Kanalanzahl

Es können Variablenwerte gelöscht, Platz für Zeichenketten reserviert und mehrere, zusätzliche Kanäle für Ein- oder Ausgabebetrieb gleichzeitig geöffnet werden (siehe Abschnitt VI). Mit dem Befehl FRE(X) bzw. FRE(X$) wird der noch freie Speicherplatz ermittelt. X ist eine Hilfsvariable und enthält keinen Wert <siehe den Basic-Befehl FRE(X)>. Noch offene Kanäle werden ohne ordnungsgemäßen Abschluß getrennt.

a) CLEAR <CR>
Dieser Befehl löscht alle Variablen im Speicher. In einem Programm muß dieser Befehl am Anfang stehen, sonst werden nachher Bytes für Zeichenketten und 182 Bytes für einen Kanal für Ein- oder Ausgabebetrieb reserviert.

b) CLEAR 10000 <CR> oder CLEAR N1 (Variable N1 = 1OOOO)
Es werden nun 10000 Bytes für Zeichenketten reserviert. PRINT FRE(X) <CR> ergibt einen Wert, der um 102 Bytes größer, da die Standardreservierung für Zeichenketten entfällt); Print FRE(X$) <CR> ergibt den Wert 10000. Bei zu großen Zahlen erscheint die Fehlermeldung "kein Speicherplatz", bei Zahlen über 65535 die Meldung "nicht erlaubt".

Wurde in einem Programm mit dem CLEAR-Befehl zu wenig Speicherplatz für Zeichenketten reserviert, kommt die Fehlermeldung "kein Stringplatz". Es kann der reservierte Platz auch wieder verkleinert werden. CLEAR 0 beseitigt die Standardreservierung von 100 Bytes für Zeichenketten.

c) CLEAR 1000,2 <CR>
Es werden 1000 Bytes für Zeichenketten und zusätzlich zum Standardkanal noch Speicherplatz für zwei weitere Kanäle für Ein- oder Ausgabebetrieb reserviert. Jeder Kanal braucht weitere 182 Bytes, wie mit
FRE(X) beobachtet werden kann.

d) CLEAR,1 <CR>
Es werden alle Variablen gelöscht und für einen weiteren Kanal Speicherplatz reserviert (siehe II.A Warmstart). Bei ausreichendem Speicherplatz könnten theoretisch bis zu 254 Kanäle reserviert werden.

 

CLOSE: Befehlsform: CLOSE # Kanal, # Kanal, usw.

Der Befehl beendet die Ein- oder Ausgabe über geöffnete Kanäle und schließt diese. Nähere Einzelheiten sind bei den Dateibefehlen beschrieben. Wird ein Kanal geschlossen, der nicht geöffnet war, ergibt dies die Fehlermeldung "Datei nicht offen".

CLOSE #0 <CR>
Der Bildschirm wird gelöscht, der Kanal bleibt offen. Sind noch Kanäle offen und wird ein BASIC-Programm mit <CTRL-E> abgebrochen, so können Programme nicht abgespeichert werden (Fehlermeldung: kein Speicherplatz), bzw. nicht geladen werden (Fehlermeldung: kein Dateiplatz). Mit CLOSE werden die Kanäle geschlossen und die Befehle
SAVE bzw. RESAVE funktionieren einwandfrei.

 

CONTINUE oder CONT

Wird <CTRL-E> während eines Programmablaufes eingegeben oder kommt der Interpreter zu einem STOP-Befehl in einer Programmzeile, so hält das Programm mit der Meldung "** HALT ** Zeile XYZ" an, wobei XYZ die Zeilennummer angibt, in der abgebrochen wurde. Nun kann man mit dem Befehl LVAR die Variablenwerte anschauen, mit LVAR#2 ausdrucken oder die Werte ändern, z.B a = 15 oder a$ = "Text". Anschließend wird mit dem Befehl CONT das Programm unter Berücksichtigung der eventuell geänderten Werte fortgesetzt. So kann man zu Testzwecken die Variable des Schleifenzählers einer FOR-NEXT-Schleife verändern. Nach einer Programmänderung oder nach Auftreten eines Fehlers ergibt der Befehl CONT die Meldung "CONT geht nicht". Nach Abbruch mit <CTRL-E> bei einem INPUT-Befehl wird die Eingabeaufforderung wiederholt.

 

COPY: Befehlsform: COPY neue Zeilen-Nr., Zeilenabstand = alte Zeilennummer

COPY neue Zeilen-Nr., Zeilenabstand = Zeilenbereich

Der Befehl dupliziert einzelne Programmzeilen oder Programmteile. Dabei werden die im Zeilenbereich angegebenen Zeilen beginnend mit der neuen Zeilennummer mit dem angegebenen Zeilenabstand durchnummeriert und kopiert. Vorhandene Programmzeilen werden nicht überschrieben, ergeben die Fehlermeldung "nicht erlaubt" und der COPY-Befehl wird nicht ausgeführt.

a) COPY 200 = 150 <CR>
Die Programmzeile 150 wird kopiert und als Programmzeile 200 abgelegt. Auch COPY 25 = 150 ist möglich.

b) COPY 200 = 50 - 70 <CR>
Die Zeilen 50 bis 70 werden beginnend mit 200 im Zehnerschritt durchnummeriert und ab 200 abgelegt. Wird aus einem höheren Zeilenbereich in einen niedrigeren Bereich kopiert, so ist darauf zu achten, daß genügend Platz für die einzufügenden Zeilen vorhanden ist, sonst macht die Fehlermeldung "Zeilen-Nr. falsch" darauf aufmerksam.

c) COPY 101,1 = 500 - 550 <CR>
Die Programmzeilen 500 bis 550 werden direkt hintereinander nach der Programmzeile 100 eingefügt (Zeilenabstand = 1).

d) COPY 20 = . (Punkt!) <CR>
Die zuletzt bearbeitete BASIC-Zeile wird kopiert und als Zeile 20 abgelegt.

 

DELETE: Befehlsform: DELETE Zeilennummer oder Zeilenbereich

Eine Programmzeile oder ein Zeilenbereich werden gelöscht.

a) DELETE 100 <CR>
Die Zeile 100 wird gelöscht. Dies geht jedoch schneller durch Eingabe der Zeilennummer mit anschließendem <CR>.

b) DELETE 200-300 <CR>
Es werden die Zeilen 200 bis 300 einschließlich gelöscht.

 

DIR: (siehe auch den Befehl USER)

Befehlsform:
DIR #Kanal @Satznummer "Laufwerk : Dateiname . Dateizusatz"

Das Inhaltsverzeichnis der Diskette wird auf den angegebenen Kanal ausgegeben. Dateiname oder Dateizusatz können durch ein Sternchen "*" ersetzt werden. Auch Fragezeichen sind im Dateinamen zulässig. Das Anführungszeichen (") am Befehlsende kann entfallen; fehlt es am Anfang des Befehls, ergibt dies die Fehlermeldung "Datentypen (Zahl/String) vermischt". Die Angabe einer Satznummerzahl mit vorangestelltem Klammeraffen "@" ist nur bei Dateien mit wahlfreiem Zugriff notwendig, wie im Beispiel f) beschrieben.

a) DIR <CR>
Es wird das Inhaltsverzeichnis aller Dateien der Diskette in dem Laufwerk, das angemeldet war, am Bildschirm angezeigt. DIR#2 gibt das Verzeichnis über den Kanal Nr. 2 auf den Drucker aus.

b) DIR"B:Dat1" <CR>
Ist diese Datei im Disketteninhaltsverzeichnis vorhanden, wird der Dateiname mit Dateizusatz ausgegeben, sonst erscheint die Fehlermeldung "nicht gefunden".

c) DIR "C:*.*" <CR>
Es wird eine Liste aller Dateien der Diskette des Laufwerkes Nr. C ausgegeben.

d) DIR "B:*" <CR>
Es werden nur die Dateien aufgezeigt, die den Dateizusatz ".BAS" besitzen. Werden Dateien nicht gefunden, erscheint die Fehlermeldung "nicht gefunden".

e) DIR#20 <CR>
Das Inhaltsverzeichnis der angemeldeten Diskette wird in eine zuvor mit dem Befehl OPEN#20,"O","A:Test" geöffnete Datei "Test" im Laufwerk A sequentiell abgelegt.

f) DIR#20@500 <CR>
Diesen Befehl benötigt man z.B., um bei automatisierten Diskettenverwaltungsprogrammen das Inhaltsverzeichnis der Diskette in eine Datei mit wahlfreiem Zugriff zu schreiben. Dies ähnelt den Möglichkeiten, die sonst nur Dienstprogramme mit UNIX-Merkmalen für Großrechner bieten. Hier wird das Inhaltsverzeichnis über den Kanal Nr.20 in eine zuvor geöffnete Datei mit wahlfreiem Zugriff (Random-Datei) als Datensatz (Record) Nr.500 geschrieben (siehe Dateibefehle).

 

EDIT:

Befehlsform: EDIT Zeilennummer oder EDIT. (Punkt eingeben)

Um Programmzeilen zu korrigieren oder zu ergänzen, wird der EDIT-Befehl verwendet. Anfangs muß man öfters in der EDIT-Kommandoliste nachschauen. Man kann natürlich bei kurzen Programmzeilen die ganze Zeile neu schreiben, was schneller und einfacher geht. Der Editor bearbeitet eine Kopie der Programmzeile in einem Puffer, so daß die eigentliche Programmzeile erst zum Schluß durch die Kopie ersetzt wird. EDIT ohne Zeilennummer oder Punkt ergibt die Fehlermeldung "nicht erlaubt".

a) EDIT 120 <CR>
Es wird die Zeilennummer 120 ausgegeben und auf einzelne EDIT-Kommandos gewartet.

b) EDIT . <CR> (Punkt eingeben)
Nach einer Fehlermeldung, bei einem Programmabbruch oder erneutem EDIT-Kommando kann die Zeilennummer durch einen Punkt ersetzt werden. Erscheint z.B. nach Eingabe von RUN die Fehlermeldung "Syntaxfehler Zeile 115", so kann nach Eingabe von EDIT . die Zeile mit den Edit-Kommandos verbessert werden.

c) EDIT-Kommandos:
Wird für n keine Zahl angegeben, gilt n = 1.

A: Neustart des Editors nach einem Fehler
nD: Löscht n Zeichen.
Die gelöschten Zeichen werden mit Hochkomma (') eingerahmt und angezeigt.
E: Beendet das Editieren. Die Programmzeile wird durch die Kopie ersetzt, aber nicht angezeigt. Es erfolgt keine "Fertig"-Meldung des Interpreters
nFX: Suchbefehl in der Programmzeile: Zeigt die Zeile bis zum n-ten Zeichen X und setzt den Cursor davor.
H: Löscht alles rechts vom Cursor und wartet auf Eingabe.
I: Eingabe von Zeichen ab der Cursorstellung in den Editpuffer und gleichzeitige Anzeige. - <ESCAPE> beendet die Eingabe, <CR> beendet den Editor.
nKX: Löschbefehl in der Programmzeile: Lösche alle Zeichen rechts vom Cursor bis zum n-ten Zeichen X, ohne X zu löschen.
L: Zeigt die im Puffer enthaltene Programmzeile und setzt den Cursor nach der Zeilennummer an den Anfang der Zeile.
Q: Abbruch des Editors, die Programmzeile bleibt unverändert und "Fertig" wird ausgegeben.
nR: Ersetzt n Zeichen ab dem Cursor durch die dann eingebenen Zeichen.
X: Zeigt die Zeile, bewegt den Cursor an das Zeilenende und wartet auf Zeicheneingabe (I-Modus).
<SPACE>: Die Leertaste bewegt den Cursor nach rechts die Zeile wird bis zum Cursor angezeigt.
<CR> : beendet den Eingabemodus (I) und den Editor.
<DEL> : bewegt den Pufferzeiger nach links.
<ESCAPE>: beendet den Eingabemodus (I) und bleibt im Editor.
<CTRL-E>: keine Funktion beim EDIT-Befehl.
Mittels Bell-Funktion (CHR$(7)) werden falsche EDIT-Befehle akustisch angezeigt.

 

ERASE: Befehlsform: ERASE " Laufwerk : DATEINAME . DATEIZUSATZ "

Es wird die angegebene Datei gelöscht. NUR bei CP/M: Soll nach dem ERASE-Befehl die Diskette aus dem Laufwerk genommen werden, muß man unbedingt vor dem Herausnehmen den BASIC-Befehl RESET eingeben, damit das Inhaltsverzeichnis auf der Diskette berichtigt wird. Der Dateiname muß in Großbuchstaben eingegeben werden.

a) ERASE "B:DAT1.BAS" <CR>
Es wird die Datei DAT1.BAS auf der Diskette im Laufwerk B gelöscht. Falls die Datei nicht vorhanden war, wird keine Fehlermeldung "Datei nicht gefunden" ausgegeben. Ein Austausch von Dateiname oder Zusatz durch "*" ist möglich. Es werden alle Dateien mit der Bezeichnung gelöscht.

b) ERASE "DAT1" <CR>
Der Dateizusatz ".BAS" wird zum Befehl hinzugefügt und die Datei "DAT1.BAS" auf dem Laufwerk, das angemeldet war, gelöscht.

c) ERASE "*.*" <CR>
Dieser Befehl bedeutet den Verlust aller Dateien auf der Diskette, denn es werden alle Dateien gelöscht. Hier helfen dann nur noch UNERASE-Programme. Wird mit dem ERASE-Befehl auf eine Datei zugegriffen, die nicht vorhanden ist, erfolgt keine Fehlermeldung!

 

ERROR: Befehlsform: ERROR Nummer

Mit diesem Befehl können einerseits die Fehlermeldungen des Interpreters gelesen, andererseits beliebige Meldungen definiert und ausgegeben werden. Weitergehende Informationen siehe Fehlerbehandlung (ON ERROR GOTO, ERR und ERL).

ERROR 15 <CR>
Es wird die Fehlermeldung "String zu lang" ausgegeben. Bei einer Zahl größer 47 erscheint die Meldung "Fehler unbekannt". Möglich sind Zahlen von 0 bis 255.

Weitere Informationen zu ERROR im Bezug auf Fehlerbehandlungen

 

FIND: Befehlsform: FIND Trennzeichen Zeichenkette Trennzeichen , Zeilenbereich

Beliebige Zeichenketten, z.B. Variablennamen können in einem Programm ermittelt werden. Es werden die Zeilen mit der gesuchten Zeichenkette ausgegeben. Als Trennzeichen können beliebige ASCII-Zeichen im Bereich von 21h bis 40h verwendet werden mit einigen Ausnahmen: keine Zahlen, kein Komma. Wird ein als Trennzeichen verwendbares Zeichen gesucht, darf dieses natürlich nicht als Trennzeichen verwendet werden. FIND ... ergibt die Fehlermeldung "Syntaxfehler" und muß als FIND '.' eingegeben werden.

a) FIND "DATA",100-200 <CR>
Es wird im Programm von Zeile 100 bis Zeile 200 nach der Zeichenkette DATA gesucht. Dabei ist zu beachten, daß BASIC-Befehle nach der Eingabe in Großbuchstaben umgesetzt sind und in Kleinbuchstaben nicht gefunden werden (FIND 'gosub' findet nichts).

b) FIND .Eingabe. <CR>
Es wird das Wort Eingabe im ganzen Programm gesucht.

 

FRE(X) Befehlsform: PRINT FRE(X) oder A = FRE(X)

Es wird der für BASIC-Programme und Variablen zur Verfügung stehende Speicherplatz angegeben. Der Buchstabe in Klammern kann beliebig sein (dummy variable).

PRINT FRE(X) <CR>
Ist beim Start des Interpreters die Frage nach der Speichergrenze mit <CR> beantwortet worden, so gibt dieser Befehl PRINT FRE(X) den freien Speicherplatz an. Nach dem Laden eines Basic-Programmes wird mit dem Befehl der nun noch zur Verfügung stehende Speicherplatz angegeben.

 

FRE(X$): Befehlsform: PRINT FRE(X$) oder A = FRE(X$)

Der Befehl ermittelt den für Zeichenketten verfügbaren Speicherplatz. Nach dem Start des Interpreters sind für Zeichenketten immer 100 Bytes reserviert. Durch CLEAR kann diese Reservierung verändert werden (siehe CLEAR!). Der Buchstabe X ist beliebig wählbar.

PRINT FRE(X$) <CR>
Ohne Speicherplatzreservierung durch CLEAR wird die Zahl 100 angegeben. Bei vorheriger Eingabe von CLEAR 1000 ergibt PRINT FRE(X$) den Wert 1000.

 

GOTO: Befehlsform: GOTO Zeilennummer

Der Befehl kann wie RUN zum Start eines Programmes verwendet werden, wenn die Zeilennummer der ersten BASIC-Zeile angegeben wird. Variableninhalte werden dann nicht gelöscht. Es kann auch zu einer beliebigen Zeilennummer gesprungen werden, um dort das Programm fortzusetzen. Existiert die angegebene Zeilennummer nicht, ist die Folge eine Fehlermeldung: "Sprungziel fehlt".Der Befehl wird im Kapitel IV näher beschrieben.
siehe
GOTO (Teil 2)

 

INP: bzw. OUT:

Von BASIC aus werden mit diesem Befehl die Eingangs-Ports direkt angesprochen, wobei ein Byte gelesen und dezimal angezeigt wird. Die Ausgabe eines Bytes erfolgt mit dem Befehl OUT. Man kann so z.B. von BASIC aus die Ports der Floppy-Karte testen.

Befehlsform: INP (Portnummer dezimal!) OUT (Portnummer dezimal!) , BYTE

Portnummern größer 255 ergeben die Fehlermeldung "nicht erlaubt".

a) PRINT INP(50) <CR>
Es wird der Wert des Ports Nummer 50 (dezimal!) gelesen und dezimal ausgegeben. Der Wert kann auch einer Variablen zugewiesen werden: A = INP(&32).

b) OUT &30,15 <CR> : An das Ausgabeport 30h wird der Wert 15 gegeben.

c) OUT 52,1 <CR> OUT 48,15 <CR>

d) OUT &32,&AA <CR> PRINT INP(&32) <CR>

Der Wert AAh wird auf Port 50 (32h) ausgegeben und wieder zurückgelesen, der Dezimalwert 170 wird angezeigt (Test für LeseSchreibbefehle).

 

INTERRUPT: Siehe Kontrollzeichen

 

KILL: Befehlsform: KILL erste Variable, zweite Variable, .....

Sind im Programm für größere Variablenmengen mit dem DIM-Befehl Speicherbereiche reserviert, so kann die Reservierung wieder aufgehoben werden. Das Dollar-Zeichen kennzeichnet Variablen für Zeichenketten.

a) KILL A$,B$,C$ <CR>
Es werden die Dimensionierungen von A$,B$ und C$ aufgehoben. Eine Löschung einer nicht existierenden Dimensionierung ergibt keinen Fehler.

b) KILL A,B <CR>
Die Dimensionierung für Zahlen wird gelöscht.

 

LIST: Befehlsform: LIST # Kanal @ Satznummer , Zeilennummer oder Zeilenbereich

Es werden BASIC-Programmzeilen auf den angegebenen Kanal ausgegeben. Ohne Kanalangabe erfolgt die Ausgabe am Bildschirm, mit LIST#2 über den Kanal Nr.2 auf den Drucker.

Mit dem Befehl OPTION kann die vorgegebene Zeilenlänge von 80 Zeichen getrennt für Bildschirm und Drucker verändert werden (siehe OPTION). Eine Zeilennummer kann durch einen Punkt ersetzt werden. Die Leertaste stoppt die Ausgabe, mit nochmaligem Drücken wird sie fortgesetzt, mit <CTRL-E> abgebrochen (Meldung: ** HALT **). <CTRL-O> verhindert die Bildschirmanzeige, am Ende wird die Systemmeldung "Fertig" ausgegeben. Wie beim Befehl DIR ist die Angabe einer Satznummerzahl mit vorangestelltem Klammeraffen "@" nur für Dateien mit wahlfreiem Zugriff notwendig (siehe Beispiel h).

a) LIST <CR>
Das Programm wird von Anfang an am Bildschirm aufgezeigt.

b) LIST 100 <CR>
Die Programmzeile 100 wird angezeigt. Auch LIST 0 ist möglich, wenn die Zeile 0 vorhanden ist.

c) LIST 130-250 <CR>
Ausgabe ab Zeilennummer 130 bis 250 einschließlich.

d) LIST -200 <CR>
Ausgabe ab der ersten Zeile bis zur Zeile 200.

e) LIST 1000- <CR>
Ausgabe ab Zeile 1000 bis zum Programmende.

f) LIST . -200 <CR> oder LIST.- <CR>
Ausgabe ab der zuletzt bearbeiteten Zeile bis Zeile 200 oder bis zum Programmende.

g) LIST#15 <CR>
Es wird das gesamte BASIC-Programm in eine zuvor mit dem Befehl OPEN#15,"O","A:Test" geöffnete Datei "Test.BAS" im Laufwerk A sequentiell in ASCII-Zeichen abgelegt (siehe OPEN-Befehl). In den Programmzeilen dürfen jedoch keine Zeichen 0Ah (Linefeed) zur Gliederung des Programmes vorkommen, da sonst die nachfolgenden Zeilen nicht abgespeichert werden. Mit einem Texteditor kann man dann die Datei bearbeiten. Allerdings erfüllt der Befehl SAVE "A:TEST",A (Satzzeichen miteingeben) einen ähnlichen Effekt, wobei aber das Zeichen 1Ah als Dateiende mitabgespeichert wird.

h) LIST #20@0,150 <CR>
Die Zeile 150 wird über den Kanal Nr. 20 in eine zuvor geöffnete Datei mit wahlfreiem Zugriff als Datensatz Nr. 0 geschrieben.

 

LOAD: Befehlsform: LOAD # Kanal , " Laufwerk : Dateiname . Dateizusatz "

BASIC-Programmdateien werden in den Speicher geladen, wobei die Dateien auch im ASCII-Format (siehe RESAVE-Befehl) vorliegen dürfen. Wird das Laufwerk nicht angegeben, sucht der Interpreter die Datei auf der Diskette in dem Laufwerk, das angemeldet war. Der Zusatz .BAS und das letzte Anführungszeichen können entfallen. Fehlt das erste Anführungszeichen, kommt die Fehlermeldung "Datentypen (Zahl/ String) vermischt". Alle dem LOAD-Befehl folgenden Angaben können auch durch Textvariablen ersetzt oder durch ein Sternchen (*) abgekürzt werden.

a) LOAD "ALLDRU <CR>
An den Dateinamen ALLDRU wird der Zusatz .BAS angehängt, das BASIC-Programm von dem aktuellem Laufwerk geladen und die Fehlermeldung "Datei nicht gefunden" ausgegeben, falls die Datei nicht vorhanden ist.

b) LOAD "REC* <CR>
Von der Diskette im angemeldetem Laufwerk wird das erste Programm geladen, das mit den Buchstaben "REC" beginnt.

c) LOAD"* <CR>
Von der Diskette im angemeldetem Laufwerk wird das erste Programm geladen.

c) LOAD "B:ALLDRU.COM <CR>
Es wird versucht, von dem Laufwerk B das Programm ALLDRU.COM zu laden. Liegt kein BASIC-Programm vor, fehlen die Zeilennummern (Fehlermeldung "Zeilen-Nr. fehlt").

d) LOAD D1$ + ":" + DA$ <CR>
In D1$ ist die Laufwerkangabe (ein Buchstabe), in DA$ der Dateiname mit oder ohne Zusatz enthalten. Auch die Zusammenfassung aller Angaben in einer Variablen ist erlaubt.

e) LOAD#3 <CR> **** nur CP/M ****
Mit diesem Befehl kann von der Tastatur ohne Bildschirmanzeige gelesen werden. Es können z.B. BASIC-Programmzeilen mit Zeilennummer eingegeben werden, allerdings werden die eingegebenen Zeichen nicht auf dem Bildschirm angezeigt. <CTRL-Z> beendet die Eingabe und die Meldung "Fertig" erscheint. Mit
LIST wird die gesamte Eingabe ausgegeben. Mit dem Befehl LOAD#3 kann auch ein Strichcodeleser oder ein Modem bedient werden. Die Kanalnummern 2 und 4 ergeben die Fehlermeldung "OPEN-Modus falsch", die anderen außer Nummer 3 die Meldung "Syntaxfehler" (siehe auch MERGE#3). Alle Kanäle sind aber im Quellcode des Interpreters umdefinierbar.

 

LOADGO: keine Programme im ASCII-Format

Befehlsform: LOADGO " Laufwerk : Dateiname . Dateizusatz " , Startzeile

Mit diesem Befehl wird ein Basic-Programm geladen und dann gestartet, also der RUN-Befehl ausgeführt. Die Ausführungen zum LOAD-Befehl gelten hier ebenso. Allerdings kann man keine Programme, die im ASCII-Format abgespeichert wurden (siehe RESAVE), mit dem LOADGO-Befehl laden (ergibt eine Fehlermeldung). Programme lassen sich so über ein Menue bequem laden, ohne daß man sich um die Programmlängen wie bei anderen BASIC-Interpretern kümmern muß. Variablen werden allerdings gelöscht. Sie können vorher z.B. mit dem Befehl MAT WRITE auf Diskette geschrieben werden.

 

LVAR: Befehlsform: LVAR #Kanal @Satznummer

Die in einem Programm verwendeten Variablen und ihre Werte können auf den Bildschirm (keine Kanalangabe oder #0) bzw. auf den Drucker (Kanal #2) ausgegeben werden, allerdings erst, nachdem das Programm mit LOADGO geladen und gestartet oder nur mit RUN gestartet wurde. Die Ausgabe kann wie beim LIST-Befehl unterbrochen bzw. abgebrochen werden (siehe LIST-Befehl). Es werden keine dimensionierten Variablen angezeigt.

a) LVAR <CR>
Ausgabe der verwendeten Variablen am Bildschirm.

b) LVAR#2 <CR>
Ausgabe auf den Drucker

c) LVAR#20 <CR>
Die Variablen werden über den Kanal Nr.20 in eine zuvor geöffnete Datei geschrieben (siehe auch den LIST-Befehl).

d) LVAR#20@1 <CR>
Mit diesem Befehl werden die Variablen in eine Datei mit wahlfreiem Zugriff als Datensatz Nr. 1 geschrieben.

 

MERGE: Befehlsform: MERGE # Kanal "Laufwerk : Dateiname . Dateizusatz"

Mit diesem Befehl können nur BASIC-Programme im ASCII-Format (siehe RESAVE) von der Diskette geladen und miteinander verbunden werden. Die Befehlsform entspricht der des LOAD-Befehls (Bitte dort nachlesen). Dabei überschreiben nachgeladene Programmzeilen die im Speicher mit der gleichen Zeilennummer vorhandenen Zeilen. Vor dem MERGE-Befehl muß man also die nachzuladenden Programmteile eventuell mit dem Befehl RENUMBER neu durchnummerieren (siehe RENUMBER).

a) MERGE "B:TEST.BAS" <CR>
Zu den im Speicher vorhandenen Programmzeilen wird vom Laufwerk B das Programm TEST.BAS hinzugefügt.

b) MERGE #3 <CR> (Nur ältere Betriebssysteme)
Mit diesem Befehl können an ein im Speicher vorhandenes Programm über die READER-Routine von der Tastatur weitere Programmzeilen angehängt werden, die mit <CR> abschließen. Es erfolgt wie beim Befehl LOAD#3 keine Bildschirmanzeige der eingegebenen Zeichen. Mit <CTRL-Z> wird die Eingabe beendet. Werden Zeichen ohne Zeilennummer eingegeben, so führt dies zur Fehlermeldung "Zeilen-Nr. fehlt". Das Ganze mag recht merkwürdig erscheinen. Für ein sinnvolles Funktionieren dieses Befehls muß jedoch ein Treiber (eigenes Maschinenprogramm) z.B. für einen Strichcodeleser vorhanden sein.

 

NEW:

Dieser Befehl löscht scheinbar ein im Speicher vorhandenes BASIC-Programm, da nicht mehr darauf zugegriffen werden kann. Es wird allerdings nur der Zeilenzeiger gelöscht, der zu Beginn der ersten BASIC-Zeile in den ersten Speicherstellen als LOW-Byte und HIGH-Byte enthalten ist.

 

OPTION: Befehlsform: OPTION # Kanal , " Parameter " , Argumente

Dieser Befehl ermöglicht die Veränderung der vorgegebenen Werte der Parameter der Ein- und Ausgabekanäle.

a) Parameter W (Zeilenlänge):
Mit dem Parameter W wird als Argument die Anzahl der Zeichen einer Zeile angegeben, nach denen automatisch ein Carriage Return (CR) und ein Linefeed (LF) folgen. Möglich sind Zeichenanzahlen von 14-255 (sonst Fehlermeldung "nicht erlaubt"). So können verschiedene Bildschirme und Drucker angepaßt werden.

OPTION#0,"W",60 <CR> ergibt eine Bildschirmzeilenlänge von 60 Zeichen. Eine Anpassung der Zeilenlänge bei einem Drucker erfolgt mit OPTION#2,"W",60 <CR>.

b) Parameter N (Zeichenanzahl, Art nach CR und LF):
Im Argument 1 kann die Anzahl der Zeichen, im Argument 2 die Zeichenart als Dezimalwert angegeben werden, die nach CR/LF zusätzlich vom Interpreter ausgegeben werden. Damit können Zeitprobleme bei Peripherieeinheiten umgangen werden, z.B. bei der seriellen Schnittstelle. Möglich sind 0-255 Zeichen im Argument 1. Fehlt Argument 2, wird es gleich 0 gesetzt.Beim Bildschirm oder Drucker kann mit diesem Befehl der linke Rand nach rechts verschoben werden. Der Befehl OPTION#0,"N",7,32 <CR> gibt zu Beginn jeder Bildschirmzeile 7 Leerzeichen (Blanks) aus, was auch für den Druckerkanal Nr.2 möglich ist.

c) Parameter Q (Anfangs- und Schlußzeichen für Zeichenketten)
Als Argument kann der Dezimalwert dieser Zeichen angegeben werden. Null bedeutet ohne Begrenzungszeichen, 34 ergibt ein Anführungszeichen ("). Die Wahl des Begrenzungszeichen von Zeichenketten (strings) erleichtert die Bearbeitung von sequentiellen Dateien, die durch ein BASIC-Programm erstellt wurden, mittels Textverarbeitungsprogramm, ohne daß die Trennzeichen erscheinen. So kann z.B. eine sequentielle Datei leicht mittels BASIC-Routine alphabetisch sortiert werden, was oft auch mit kommerziellen Textprogrammen nicht geht.

Der Befehl OPTION#10,"Q",0 ergibt Dateien ohne Trennzeichen. Zuvor muß allerdings ein OPEN-Befehl für Kanal #10 erfolgen.

d) Parameter P (Zeichen nach dem Input-Befehl = Prompt)
Wartet der BASIC-Interpreter bei einem Input-Befehl auf eine Eingabe, so wird dies normalerweise durch ein Fragezeichen am Bildschirm angezeigt. Als Argument kann der Dezimalwert eines beliebigen Zeichens eingesetzt werden, mit 0 (Null!) entfällt dieses. Der Wert 63 ergibt ein Fragezeichen. Mit OPTION#0,"P",42 <CR> wird nach dem INPUT-Befehl ein Sternchen (*) ausgegeben.

Voreinstellungen: Mit dem Start des Interpreters sind für die Kanäle folgende Voreinstellungen gegeben:

Bildschirm (Kanal#0): W = 80, N = 0,0 , Q = 0 , P = 63
Drucker (Kanal#2): W = 80, N = 0,0 , Q = 0
PUNCH (Kanal#4): W = 253, N = 0,0 , Q = 34
DISK (Kanal#10 bis Kanal#255): W = 253, N = 0,0 , Q = 34

 

OUT: Beschreibung siehe INP

 

PEEK(: Befehlsform: PEEK (Speicheradresse)

Es können Speicheradressen von 0 bis 65535 gelesen werden. Der Inhalt wird dezimal ausgegeben. Andere Adressen ergeben die Fehlermeldung "nicht erlaubt". Der Inhalt einer Speicherstelle kann auch einer Variablen zugewiesen werden.
PRINT PEEK(4149) <CR> oder PRINT PEEK(&1035) <CR>
Es wird der dezimale Inhalt der angegebenen Speicherstelle angezeigt.

POKE: Befehlsform: POKE Speicheradresse , Wert

In die Speicherstellen 0 bis 65535 können Dezimalwerte von 0 bis 255 geschrieben werden. Beide Parameter sind auch über Variablen zuweisbar.

POKE &1035,&3E <CR>
Der Wert 62 wird in die Speicherstelle 4149 geschrieben. Die Zahlen wurden sedezimal angegeben (Kennzeichnung mit "&", Buchstaben müssen groß geschrieben werden!)

 

PRINT: Befehlsform: PRINT # Kanal @ Satznummer , Konstante oder Variable oder Zeichenkette

Mit dem PRINT-Befehl erfolgt die Ausgabe von Zeichen oder Zeichenketten über den angegebenen Kanal (siehe Dateibefehle).

a) PRINT 123; A; "Testsatz" <CR>
Am Bildschirm werden die Zahl 123, der Wert der Variablen A und das Wort "Testsatz" jeweils mit zwei Leerzeichen Abstand voneinander ausgegeben. Kommas zwischen den Zeichen oder Zeichenketten ergeben einen Ausdruck jede 14. Position, solange die Zeichenketten kürzer als 14 Zeichen sind.

b) PRINT#2:PRINT#2,"kurzer";"Testsatz" <CR>
Vom Drucker wird nach einer Leerzeile der Satz "kurzer Testsatz" ausgegeben. Je nach Drucker müssen nach diesem Direktbefehl noch weitere Befehle oder eine Leerzeile folgen, damit der Ausdruck stattfindet.

c) ? 123 <CR>
An Stelle des Befehlswortes PRINT kann auch die Kurzform, ein Fragezeichen eingegeben werden. In BASIC-Zeilen wird das Fragezeichen jedoch nicht durch PRINT ersetzt, auch nicht beim Speichern oder Laden von Programmen.

 

PRIVACY: Befehlsform: PRIVACY "Zeichenkette" oder Variable

Durch die Angabe eines Schlüsselwortes (password) an erster Stelle in irgendeiner Programmzeile sind alle Befehle geschützt, mit denen der Inhalt eines BASIC-Programmes zugänglich gemacht oder verändert werden kann (AUTO, COPY, DELETE, EDIT, FIND, LIST, RENUMBER, REPLACE, RESAVE und SAVE). In allen Fällen wird die Fehlermeldung "nicht verfügbar" ausgegeben. Auch das Löschen einer Zeile durch Eingeben der Zeilennummer mit nachfolgendem <CR> geht nicht. Das Schlüsselwort kann irgendeine Konstante, Variable oder beliebige Zeichenkette sein.

10020 Privacy "SeCrEt" oder 10020 Privacy A$

In der Zeile 10020 wird als Schlüsselwort die Zeichenkette "SeCrEt" definiert. Allen oben aufgeführten Befehlen muß unmittelbar nach dem Befehl das Schlüsselwort in Anführungszeichen folgen, danach können weitere, durch ein Komma getrennte Befehle angegeben werden, z. B. LIST "SeCrEt",100-200.

 

RENAME: Befehlsform: RENAME "Laufwerk : alter Name" , "Laufwerk : neuer Name"

Der Dateiname wird im Inhaltsverzeichnis der Diskette des angegebenen Laufwerks geändert. Ein nicht angegebener Dateizusatz wird durch ".BAS" ersetzt. Ohne Angabe des Laufwerkes wird auf das angemeldete Laufwerk zugegriffen. Besteht schon eine Datei unter dem neuen Namen, erfolgt die Fehlermeldung "Datei existiert". Bei einem anschließendem Diskettenwechsel unbedingt den Befehl RESET eingeben, damit auf der Diskette das Inhaltsverzeichnis geändert wird.

RENAME "B:TEST1.BAS","B:TEST.BAS" <CR>

Der Name TEST1.BAS wird auf Laufwerk B in TEST.BAS geändert.

 

RENUMBER: Befehlsform: RENUMBER Zeile , Abstand , Startzeile

Sind bei einem BASIC-Programm die Zeilennummern mit zu kleinem Abstand nummeriert worden, so schafft dieser Befehl Abhilfe. Alle Zeilennummern (Sprünge wie GOTO, GOSUB usw.) in einer BASIC-Zeile werden entsprechend berichtigt. Es kann auch erst ab einer bestimmten Zeile mit der Neunummerierung begonnen werden. Fehlt einer der Parameter, so wird der Wert 10 dafür angenommen. In einer Programmzeile XY bewirkt der Befehl RENUMBER die Meldung "nicht erlaubt Zeile XY".

a) RENUMBER <CR>
Alle Programmzeilen werden mit 10 beginnend mit dem Abstand 10 durchnummeriert. Die Befehle RENUMBER 10 <CR>, RENUMBER,10 <CR> oder RENUMBER 10,10 <CR> bewirken dasselbe.

b) RENUMBER 200,50 <CR>
Alle Programmzeilen werden mit 200 beginnend mit dem Abstand 50 durchnummeriert.

c) RENUMBER 1000,20,500 <CR>
Ab der alten Programmzeile 500 wird beginnend mit 1000 mit dem Abstand 20 durchnummeriert. Wird als Startzeile eine nicht existierende Programmzeile angegeben, erfolgt die Fehlermeldung "Sprungziel fehlt".

 

REPLACE: Befehlsform: REPLACE "alte Zeichenkette" "neue Zeichenkette", Zeilennummer oder Zeilenbereich

Ein bestimmte Zeichengruppe kann durch eine andere ersetzt werden. Dies erspart viele EDIT-Aufrufe, wenn z.B. in allen Programmzeilen ein Variablenname durch einen anderen ersetzt werden soll. Die veränderten Zeilen werden angezeigt. Die Trennzeichen können verschiedenartig sein, sie sind bei dem Befehl FIND näher erläutert. Allerdings müssen Anfangs- und Endzeichen jeweils gleich sein. Da BASIC-Befehle nur in Großbuchstaben in Programmen vorhanden sind, werden klein geschriebene Zeichenketten natürlich nicht gefunden. Die maximale Zeichenanzahl von 254 Zeichen darf durch die Veränderung nicht überschritten werden, sonst ergibt dies die Fehlermeldung "String zu lang".

REPLACE 'A$'"B$",10-2300

Die Variable A$ wird, soweit vorhanden, in den Zeilen 10 - 2300 durch die Variable B$ ersetzt. Sind Hochkommas in einer Zeichenkette zu ersetzen, müssen andere Trennzeichen wie z.B. (') verwendet werden.

 

RESAVE: Befehlsform: RESAVE "Laufwerk : Dateiname , Dateizusatz" , A

Es wird ein BASIC-Programm unter dem angegebenen Namen auf der Diskette abgelegt. Ein mit diesem Namen auf der Diskette vorhandenes Programm wird vorher gelöscht. Ein nicht angegebener Dateizusatz wird mit ".BAS" ergänzt. Nur der Dateizusatz darf durch ein "*" abgekürzt werden, er wird dann durch ".???" ersetzt. Beide Dateikennzeichnungen dürfen beliebig in Groß- oder Kleinbuchstaben eingegeben werden. Es sind alle Zeichen außer den Anführungszeichen im Dateinamen erlaubt, also auch Komma, Punkt und sogar Linefeed. Die Länge des Dateinamens darf 8 Zeichen, die des Zusatzes 3 Zeichen betragen (sonst Fehlermeldung: Dateiname falsch).

Nur CP/M: ** Achtung ** Vor anschließendem Diskettenwechsel unbedingt den RESET-Befehl eingeben (ergibt sonst beim späteren Laden des Programmes die Fehlermeldung: Dateiende falsch)

Wurde am Ende des Befehls der Buchstabe "A" nach dem Komma angegeben, wird der Speicherinhalt nicht in der Kurzform mit 1-BYTE-Befehlen abgespeichert (internes Format), sondern jedes Zeichen einzeln (ASCII-Format), was jedoch länger dauert und mehr Platz auf der Diskette beansprucht. Mit dem Befehl MERGE können nur solche Programme im ASCII-Format geladen werden.

Internes und ASCII-Format unterscheiden sich dabei in den auf der Diskette abgelegten Zeichen erheblich, wie folgendes Beispiel einer Programmzeile zeigt:

Programmzeile: 10 PRINT A

internes Format: B8 47 0A 00 95 20 41 00

ASCII-Format: 31 30 20 50 52 49 4E 54 20 41 0D 0A

Sind mehrere Programmzeilen vorhanden, so endet die letzte Zeile im ASCII-Format mit dem Zeichen 1A (CTRL-Z). BASIC-Programme kann man mit ASCII-Texteditoren ohne Steuerzeichen bearbeiten und dann nach dem Laden mit dem BASIC-Intepreter im kürzeren internen Format erneut abspeichern.

a) RESAVE "TEST "<CR> (letztes Anführungszeichen unnötig)
Ein Programm mit dem gleichen Namen wird zuvor auf der Diskette im angemeldetem Laufwerk gelöscht und dann das Programm TEST.BAS im internen Format auf die Diskette abgespeichert. Dies führt bei Verwechslung der Dateinamen zum Verlust des ursprüng-lichen Programmes.

b) RESAVE "b:DaT.,#!%&" <CR>
Diese Schreibweise ist unzulässig. Nach dem Punkt folgen 4 Zeichen als Dateizusatz, erlaubt sind nur drei.

c) RESAVE "TEST." <CR> (Punkt miteingeben)
Der Dateiname wird ohne Dateizusatz unverändert mit Punkt abgespeichert.

d) RESAVE "TEST.*" <CR>
Das Sternchen (*) wird durch drei Fragezeichen ersetzt und der Dateiname als TEST.??? abgespeichert.

** Achtung ** Der Befehl RESAVE "*.*" löscht alle Dateien auf der angemeldeten Diskette und speichert ein vorhandenes Programm mit dem Namen ????????.??? ab. Wird nach dem RESAVE-Befehl die Fehlermeldung "kein Dateiplatz" ausgegeben, so wurde entweder ein Warmstart ohne den Befehl CLEAR,0 durchgeführt oder vorher mit <CTRL-E> ein Programmablauf abgebrochen, ohne mit CLOSE offene Kanäle zu schließen.

 

RESET oder RESET(Laufwerk)

Der Befehl RESET(Laufwerk) wechselt auf ein angebenes Laufwerk, d.h. die durch das Betriebssystem vorgegebene Defaulteinstellung wird geändert. Es wird nun ohne Laufwerkangabe immer darauf zugegriffen, z.B. mit dem Befehl DIR oder SAVE etc.

 

RUN: Befehlsform: RUN Zeilennummer der Startzeile

Es erfolgt die Löschung aller eventuell vorhandener Variablen und das Programm wird ab der angegebenen Zeilennummer gestartet. Entfällt die Zeilennummer, wird mit der ersten Programmzeile begonnen. RUN XY ergibt bei fehlender Zeile XY die Fehlermeldung "Sprungziel fehlt" (siehe auch GOTO).

 

SAVE: Befehlsform: SAVE "Laufwerk : Dateiname . Dateizusatz ",A

Es gelten für diesen Befehl die selben Anweisungen wie für den RESAVE-Befehl mit einer Ausnahme: Befindet sich ein Programm mit dem angegebenen Namen auf der Diskette, wird die Fehlermeldung "Datei existiert" ausgegeben und dann die "Fertig"-Meldung, die Abspeicherung also nicht durchgeführt.

 

STOP: Befehlsform: STOP

Mit diesem Befehl kann ein Programm, das nicht so funktioniert wie erwartet (soll häufig vorkommen!), an einer beliebigen Stelle im Programm angehalten werden. Alle Variablen bleiben erhalten und können z.B. mit LVAR oder mittels PRINT-Befehl untersucht werden.

145 STOP <CR>

Das Programm hält in Zeile 145 an und gibt die Meldung "** HALT ** Zeile 145" und "Fertig" aus.

 

TRACE: Befehlsform: TRACE # Kanal @ Satznummer , Wert

Die Zeilennummern der vom BASIC-Interpreter bearbeiteten Programmzeilen werden acheinander auf den angegebenen Kanal ausgegeben, wenn für den Parameter WERT die Zahl 1 eingesetzt wurde. Wie bei dem Befehl LVAR kann die Ausgabe auch auf Diskette sequentiell oder mit wahlfreiem Zugriff erfolgen. TRACE wird durch den WERT 0 wieder ausgeschaltet.

a) TRACE 1 <CR>
Ausgabe der Zeilennummern der bearbeiteten Programmzeilen in Spitzklammern am Bildschirm ( <10><20><30><145> usw.). Trace 0 schaltet den Befehl ab.

b) TRACE#2,1 <CR>
Ausgabe der Zeilennummern auf den Drucker.

c) TRACE#11,1 <CR>
Die Zeilennummern werden z.B. in eine mit OPEN#11,"O","TRATEST" eröffnete Datei geschrieben. Im Programm darf jedoch kein
CLEAR-Befehl enthalten sein, da sonst der Kanal #11 wieder geschlossen wird (Fehlermeldung "Datei nicht offen"). Der CLEAR-Befehl kann ersatzweise direkt vor dem RUN-Befehl eingegeben werden.

 

VARPTR: Befehlsform: VARPTR ( Variable )

Die dezimale Adresse der Inhalte von Variablen und Matritzenelementen im Speicher wird mit diesem Befehl ermittelt und kann direkt bei den Befehlen PEEK und POKE verwendet werden. Bei Variablen für Zeichenketten (z.B. A$) wird die Adresse des Stringzeigers angegeben. Das erste Byte an dieser Adresse enthält die Länge der Zeichenkette, das nächste Byte ist immer 0. Die folgenden beiden Bytes enthalten die Adresse der Zeichenkette, das LOW-Byte zuerst. Die letzten beiden Bytes sind nicht benützt.

Für die Befehlsbeispiele ist folgendes Programm einzugeben und mit RUN zu starten.

10 A = 2
20 A$ = "TEST"

a) PRINT VARPTR(A) <CR>
Ausgabe der dezimalen Adresse

b) PRINT VARPTR(A$) <CR>
Ausgabe der dezimalen Adresse des Stringzeigers

 

WAIT: Befehlsform: WAIT (Adresse A, Maske M, Zustand Z)

Der BASIC-Interpreter wartet in einer Schleife, bis ein Eingangsport mit der dezimalen Adresse A in den mit der Maske M angegebenen Bits den Zustand Z erreicht hat. Erst dann wird die nächste Programmzeile bearbeitet. So können z.B. direkt vom Port A der PIO einzelne Bits untersucht werden, ob sie den Zustand 0 oder 1 besitzen. Der vom Port A eingelesene Wert wird mit dem Wert Z EXKLUSIV-ODER verknüpft und das Ergebnis mit dem in M angegeben Wert UND verknüpft. Solange das Ergebnis gleich 0 ist, wird das Ganze wiederholt. Erst dann geht es zum nächsten Befehlsabschnitt. Wird der Parameter Z nicht angegeben, so ist Z=0. Die Werte A, M und Z müssen dezimal angegeben werden (einfach sedezimal mit "&" angeben).

Beispiel: Es soll solange gewartet werden, bis am Anschluß für Bit 1 der PIO-B der Pegel 5 Volt angelegt wird. Für die PIO ergeben sich folgende Adressen:

Port A: Daten: F4 Steueradresse: F5
Port B: Daten: F6 Steueradresse: F7

Für die Ein- und Ausgabe von Bitkombinationen muß das Steuerwort 11XX1111 lauten (X beliebig).

a) Einschalten der PIO-B auf Bit-Modus:
Out &F7,&CF <CR> (CF oder 207, binär 11001111)

b) Abfragen des Bit 0 der PIO-B:
WAIT &F6,1 <CR>

Werden 5 Volt an den Anschluß 27 der PIO gelegt, erscheint die Meldung "Fertig".

 

BASIC-Befehle

Die nun folgenden Befehle lassen sich nicht allein als Direktbefehl verwenden, jedoch oft nach einem solchen. Die Befehle sind wieder alphabetisch geordnet (außer zusammengehörende Befehle).

 

ASC(: Befehlsform: ASC(Zeichen oder Variable oder Zeichenkette)

Es wird der dezimale Wert (nach ASCII) des Zeichens, des Variablenwertes oder des ersten Zeichens der Zeichenkette ermittelt.

A = ASC("H") <CR> PRINT A <CR> Anzeige: 72
A$ = "Meier" <CR> PRINT ASC(A$) <CR> Anzeige: 77
PRINT ASC("") <CR> Anzeige: 0

 

BYTEPOLL(: Befehlsform: BYTEPOLL (# Kanal)

In Kombination mit dem INTERRUPT-Befehl kann abgefragt werden, ob ein Byte an einer Eingabeeinheit zum Lesen vorliegt, z.B. ob eine Taste der Tastatur gedrückt wurde. BASIC führt eine Tastaturabfrage nach Kontrollzeichen normalerweise ständig durch. Der Befehl BYTEPOLL kann so nie den Wert -1 (ein Byte liegt vor und kann gelesen werden) erreichen. Mit dem Befehl INTERRUPT 0 muß daher die automatische Tastaturabfrage ausgeschaltet werden.

10 Interrupt 0 20 If Bytepoll(#0) = -1 then .....

 

DATE$: siehe I. Start des Interpreters

 

CHR$(: Befehlsform: CHR$(dezimaler Wert 0 - 255 oder nummerische Variable)

Das der angegebenen Zahl entsprechende Zeichen nach ASCII kann ausgegeben oder einer Variablen zugewiesen werden. So lassen sich auch Steuerzeichen an Drucker und Videoeinheiten übermitteln.

a) CR$ = "TEST" + CHR$(13) + CHR$(10) + "ENDE" <CR>
PRINT CR$ <CR>

Anzeige: TEST

ENDE

b) A$ = CHR$(34) <CR> PRINT A$ <CR> Anzeige: "
dagegen: A$ =""" <CR> Anzeige: Syntaxfehler

c) PRINT CHR$(26) <CR> Bildschirmlöschung (NDR-Klein-Rechner)

d) Ausgabe einer Escape-Sequenz an den Drucker:

PRINT#2,CHR$(27);CHR$(17) <CR> (je nach Drucker unterschiedliche Wirkung)

e) PRINT CHR$(256) <CR> Anzeige: nicht erlaubt
PRINT CHR$(-5) <CR> " : " "

f) 10 INPUT"Kleinbuchstabe eingeben";a$ Eingabe: w
20 PRINT CHR$(ASC(A$)-32):GOTO 10 Anzeige: W

 

DATA ...... READ ...... RESTORE XYZ

Diese Befehle werden zusammen benötigt, um in einem BASIC-Programm beliebigen Variablen bestimmte Werte oder Zeichen zuweisen zu können.

a) DATA

Befehlsform: DATA Zahl oder Zeichenkette, durch Komma getrennt (insgesamt 255 Zeichen in einer BASIC-Zeile)
Mögliche Zuweisungen: 10 DATA 1,2," HUBER",MEIER,,,4,ZZ
Sollen Leerzeichen am Anfang einer Zeichenkette mitgelesen werden, so müssen die Zeichenketten in Anführungszeichen gesetzt werden (z.B. " HUBER").
b) READ Befehlsform: READ nummerische Variable, Stringvariable, durch Komma getrennt

10 DATA 1,2," HUBER",MEIER,,,4,ZZ
20 READ A,B,A$,B$,C,C$,D(1,1,1),D$(1,3)
30 PRINT A;B;A$;B$;C;C$;D(1,1,1);D4(1,3)
Anzeige: 1 2 HUBERMEIER 0 4 ZZ

Die Variable C enthält den Wert 0, C$ ist leer.

c) RESTORE XYZ Befehlsform: RESTORE Zeilennummer

Mit jedem Lesevorgang wird ein Zeiger auf die nächste Konstante innerhalb der DATA-Zeilen gesetzt. Am Ende der letzten DATA-Zeile eines Programmes zeigt der DATA-Zeiger ins "Leere", ein weiterer Lesezugriff ergibt die Fehlermeldung "keine Daten Zeile XYZ". Ein RESTORE-Befehl setzt den DATA-Zeiger auf die erste Konstante zurück.Die Angabe der Zeilennummer einer DATA-Zeile setzt den Zeiger auf die erste Konstante in dieser Zeile zurück. Die Fehlermeldung "Sprungziel fehlt Zeile XYZ" wird durch Angabe einer nicht vorhandenen BASIC-Zeile nach dem Befehl RESTORE verursacht.

 

DIM Befehlsform: DIM Variable 1 (Elementanzahl), Variable 2 (Elementanzahl), usw.

Ohne diesen Befehl am Programmanfang werden pro Matrixvariable 10 Elemente zugelassen (0 - 9). Matrixvariablen (indizierte Variablen) sind Variablen vom Typ A(I), A$(I), A(2,3) oder A$(20,8,2). Zur Reservierung des benötigten Speicherplatzes bei mehr als 10 Elementen dient der DIM-Befehl. Doppelte Reservierung für die gleiche Variable ergibt die Fehlermeldung "DIM-Befehl doppelt".

Der Interpreter HEBAS besitzt zur Löschung der Dimensionierungen von Variablen den Befehl KILL , falls Speicherplatz knapp werden sollte.

DIM A$(100),B(20,20),C$(30,30,30),F$(A),D$(X,Y,Z)

Die Elementanzahl einer indizierten Variablen kann selber durch eine Variable angegeben werden.

 

ELSE:

Dieser Befehl wird in der Befehlsgruppe IF .... THEN .... ELSE verwendet und dort beschrieben.

 

END:

Nach einer solchen Anweisung in einer BASIC-Programmzeile wird das Programm verlassen und die Meldung "Fertig" angezeigt. Direkt-Befehle wie LIST, EDIT usw. können eingegeben werden. Der Befehl ist nicht unbedingt als Programmende notwendig; er trennt jedoch Unterprogramme, die mit GOSUB aufgerufen werden, vom Hauptprogramm ab.

 

EOF: a) Befehlsform: ON EOF GOTO Zeilennummer

Der Befehl ermittelt in den gelesenen Daten das Zeichen (Dateiende) CTRL-Z (1A), falls Daten im "O"-Modus auf Diskette geschrieben wurden und verzweigt zur angegebenen Zeilennummer (siehe Abschnitt VI. B.2). Der Befehl kann vor dem OPEN-Befehl angeordnet werden.

10 INPUT"Dateiname";D1$
20 ON EOF GOTO 70
30 OPEN#11,"I",D1$
40 INPUT#11,A$:PRINT A$
60 GOTO 40
70 CLOSE #11:END

Es werden solange Daten gelesen, bis das Dateiende-Zeichen erkannt wurde.

 

EXCHANGE: Befehlsform: EXCHANGE Variable 1, Variable 2

In Sortierroutinen müssen oft Variablen vertauscht werden. Dies geschieht im einfachsten Fall mit einer Hilfsvariablen wie beim sog. Dreieckstausch:

W$ = A$(I): A$(I) = A$(I+1): A$(I+1) = W$

Dies kostet Zeit und Speicherplatz. Wesentlich schneller geht es mit dem Befehl EXCHANGE A$(J),A$(I), wobei nun nur Zeiger auf die Variablen vertauscht werden.

 

EXIT: siehe den Befehl FOR.

 

FIX$(: Befehlsform: FIX$(Variable , Zeichenanzahl)

Für Stringoperationen benötigt man oft eine ganz bestimmte Länge einer Zeichenkette. Dieser Befehl füllt eine vorhandene Zeichenkette mit Leerzeichen (space) bis zur angegebenen Länge (bis zu 255 Zeichen) auf oder schneidet sie ab.

10 INPUT"Wort, Länge";A$,L
20 IF A$ = "E" THEN END
30 A$ = FIX$(A$,L)
40 PRINT A$;"Länge";LEN(A$)
50 GOTO 10

 

FOR ... TO ... STEP ... EXIT ... NEXT

Diese Befehle dienen zum Aufbau von Befehlsschleifen.
Befehlsform: FOR Laufvariable = Anfangswert TO Endwert STEP Schrittweite beliebige Befehle NEXT Laufvariable

10 FOR I = -1 TO 1 STEP 0.1
20 PRINT I,"TEST"
30 NEXT I

Die Angabe der Laufvariable nach dem Befehl NEXT kann bei nur einer Schleife entfallen (siehe auch Abschnitt V.4: Fallentest). Bei verschachtelten Schleifen muß die jeweilige Laufvariable angegeben werden. Solche Schleifen müssen nach dem Schema FOR A..FOR B..FOR C..usw - NEXT C..NEXT B.. NEXT A aufgebaut sein. Da die Rücksprungadressen der Schleifen in einem bestimmten Speicherbereich (stack) zwischengespeichert werden, ist auch die Anzahl der verschachtelten Schleifen begrenzt.

5 DIM A(15,15,15)
10 FOR I = 1 TO 15
20 FOR K = 1 TO 15
30 FOR L = 1 TO 15
40 A(I,K,L) = 1
50 NEXT L,K,I

Eine dreidimensionale Matrix wird mit dem Wert 1 aufgefüllt. Mehrere Laufvariablen können, durch ein Komma getrennt, in eine Zeile geschrieben werden.

EXIT: Befehlsform: EXIT Zeilennummer, Laufvariable

Mit dem Befehl EXIT wird die Schleife verlassen, bevor die jeweilige Laufvariable ihren Endwert erreicht hat. Dies kann zwar auch mit dem Befehl GOTO durchgeführt werden, aber dann kommt es bei nachfolgenden Schleifen zu der Fehlermeldung "NEXT ohne FOR Zeile XYZ".

10 FOR I = 1 TO 10
15 INPUT"Eingabe";X$
20 IF X$ = "e" THEN 100
25 A$(I) = X$
30 NEXT
40 END
50 :
100 FOR J = 1 TO 10
110 FOR I = 1 TO 10
120 PRINT I;J
130 NEXT I
140 NEXT J

Nach dem Sprung zur Zeile 100 tritt beim ersten NEXT J die Fehlermeldung "NEXT ohne FOR Zeile 140" auf. Der EXIT-Befehl in einer neuen Zeile 20 beseitigt diesen Fehler: 20 IF X$ = "e" THEN EXIT 100,I

 

GOSUB ... RETURN

a) GOSUB: Befehlsform: GOSUB Zeilennummer

Der Interpreter springt zur angegebenen Zeilenummer und setzt dort seine Arbeit fort, bis der Befehl RETURN auftaucht. Dabei wird die Rücksprungadresse gespeichert. Mehrere GOSUB-Befehle können nacheinander folgen.

Befehlsform: ON Z GOSUB Zeilennummer A, Zeilennummer B, usw.

Entsprechend der Zahl Z (0 - 255) wird zu den angegebenen Zeilen verzweigt, bei Z = 2 also zur Zeilennummer B. Ist Z = 0 oder größer als die Anzahl der angegebenen Zeilennummern, so wird der nächste Befehl nach dem vollständigen GOSUB-Befehl bearbeitet.

b) RETURN: Befehlsform: RETURN Zeilennummer

Nach der Bearbeitung eines mit dem Befehl GOSUB erreichten Unterprogrammes wird nicht hinter diesen Befehl gesprungen, sondern zu der angegebenen Zeilennummer. So kann über GOSUB-Ebenen hinweg gesprungen werden.

Befehlsform: ON Z RETURN Zeilennummer A, Zeilennummer B, usw.

Wie beim GOSUB-Befehl kann auch unter bestimmten Bedingungen der RETURN-Befehl ausgeführt werden.

 

GOTO: Befehlsform: GOTO Zeilennummer

Der Interpreter verzweigt zur angebenen Zeilennummer, falls sie vorhanden ist, sonst erfolgt Fehlermeldung "Sprungziel fehlt". Ein Rücksprung ist nicht möglich.

Befehlsform: ON Z GOTO Zeilennummer A, Zeilennummer B, usw.

Die Wirkungsweise ist dieselbe wie beim GOSUB-Befehl, ein Rücksprung kann jedoch nicht erfolgen (siehe auch III.16).

 

IF...THEN (GOTO)...ELSE

Befehlsform: IF Bedingung THEN (oder GOTO) Befehlsgruppe 1 ELSE Befehlsgruppe 2

Programmverzweigungen unter bestimmten Bedingungen sind mit dieser Befehlsgruppe möglich, ebenso mehrere aufeinanderfolgende IF-Befehle, die durch logische Operatoren (siehe Abschnitt V) verknüpft sind. Klammern sind bei der folgenden Form erforderlich: IF X$ = (A$ + B$) THEN .. , sonst erfolgt die Fehlermeldung "Datentypen (Zahl/String) vermischt".

10 INPUT A,B$
10 IF A = 2 AND B$ = "E" THEN 30 ELSE 40
20 STOP
30 PRINT"EINGABE RICHTIG":END
40 GOTO 10

 

INPUT: a) Befehlsform: INPUT "beliebiger Text" ; Variable 1, Variable 2, usw.

Mit diesem Befehl werden Zahlen in nummerische (A0 - Z9) und Zeichenketten in Stringvariablen (A0$ - Z9$) eingelesen (siehe VARPTR). Variablenkennzeichnungen mit mehr als zwei Buchstaben sind erlaubt, werden aber nicht unterschieden. <CR> als Eingabe führt nicht zum Programmabbruch, sondern übernimmt den Wert 0 bei nummerischen bzw. einen Leerstring bei Stringvariablen (siehe auch INPUT#).

10 INPUT "EINGABE";A

Auf dem Bildschirm erscheint nach dem Wort "Eingabe" ein Fragezeichen (siehe OPTION) und der Interpreter wartet solange, bis eine Zahl über die Tastatur eingegeben wurde. Der Versuch, Buchstaben einzugeben, ergibt die Fehlermeldung "* Falsche Eingabe *". Sedezimale Zahlen werden mit vorangestelltem "&"-Zeichen und mit Großbuchstaben eingegeben.

10 INPUT "Eingabe";A1,BA$,A2

Nach der Ausgabe des Fragezeichens können eine Zahl, eine Zeichenkette und wieder eine Zahl, durch Komma getrennt, eingegeben werden. Wird die erste Eingabe mit <CR> abgeschlossen, so erscheinen zwei Fragezeichen ohne daß der Text in Anführungszeichen nochmal ausgegeben wird. Bei der zweiten Eingabe (Variable BA$) ergibt ein Komma die Fehlermeldung "* Komma falsch *" und die Zeichen nach dem Komma werden nicht übernommen.

b) Befehlsform: INPUT LINE "Text"; Stringvariable

Nun dürfen auch Kommas in der Eingabe sein, ohne daß es zu Fehlermeldungen kommt. Es sind nur Stringvariablen erlaubt.

 

INSTR(: Befehlsform: INSTR ( "Zeichenkette 1", "Zeichenkette 2", Startzeichen, Zeichenanzahl)

Dieser Befehl durchsucht eine Zeichenkette (Stringvariable oder Zeichenkette in Anführungszeichen) nach einer zweiten Zeichenkette. Die Suche beginnt ab dem ersten Zeichen oder falls angegeben, ab dem Startzeichen und erstreckt sich über soviele Zeichen wie mit der Zeichenanzahl angegeben sind.

PRINT INSTR("aabbccddeeffgg","bb") <CR> Anzeige: 3
PRINT INSTR("aabbccddeeffgg","hh") <CR> " : 0
PRINT INSTR("abcdefabcdefgh","cd",4) <CR> " : 9

 

LEFT$( ... RIGHT$(:

a) Befehlsform: LEFT$("Zeichenkette" oder Stringvariable, Zeichenanzahl 0 - 255)

Vom linken Teil der Zeichenkette wird die angegebene Zeichenanzahl übernommen. Eine negative Zeichenanzahl ist nicht erlaubt.

10 A$ = "1234567890" Eingabe: 3 Anzeige: 123
20 INPUT"Zahl";Z " : 0 keine Anzeige
25 IF Z = -1 THEN END " : 11 Anzeige: 1234567890
30 LE$ = LEFT$(A$,Z) " : -2 " : nicht erlaubt Zeile 30
40 PRINT LE$ 50 GOTO 20

b) Befehlsform: RIGHT$("Zeichenkette" oder Stringvariable, Zeichenanzahl 0 - 255)

Für diesen Befehl gelten die gleichen Bedingungen wie für LEFT$(, nur wird jetzt der rechte Teil der Zeichenkette übernommen.

 

LEN(: Befehlsform: LEN("Zeichenkette" oder Stringvariable)

Die Byteanzahl der Zeichenkette wird dezimal ausgegeben.

PRINT LEN("EEEEEEEE") <CR> Anzeige: 8

 

MID$(: a) Befehlsform: MID$("Zeichenkette" oder Stringvariable, Startzeichen, Zeichenanzahl)

Eine durch das Startzeichen und die Zeichenanzahl bestimmte Folge von Zeichen wird von links beginnend in der Zeichenkette gesucht und übernommen.

10 INPUT"Wort";A$
20 IF A$ = "E" THEN END
30 INPUT"Startzeichen";SZ
40 INPUT"Zeichenanzahl";ZA
50 B$ = MID$(A$,SZ,ZA)
60 PRINT B$:GOTO 10

Eingabe: Wort: Startzeichen: Zeichenanzahl: Anzeige:

Testwort 1 3 Tes
" 5 1 w
" 0 3 nicht erlaubt
" 1 10 Testwort
" <CR> <CR> nicht erlaubt

b) Befehlsform: MID$(Stringvariable,Startzeichen,Zeichenanzahl)=Zeichenkette

In einem vorhandenen String kann ab einem Startzeichen eine bestimmte Zeichenanzahl mit Zeichen aus einer Zeichenkette überschrieben werden. Dies ist wesentlich schneller als eine Teilung und Ergänzung einer Zeichenkette.

10 INPUT"Satz";A$
20 INPUT"Startzeichen";SZ
30 INPUT"Zeichenanzahl";ZA
40 INPUT"Zeichenfolge";B$
50 MID$(A$,SZ,ZA) = B$
60 PRINT A$:GOTO 20

Eingabe:

Satz : Drei Chinesen mit dem Kontrabaß
Startzeichen : 8
Zeichenanzahl: 6
Zeichenfolge : anasen Anzeige: Drei Chanasen mit dem Kontrabaß

Fehlt die Zeichenanzahl, wird die gesamte Zeichenfolge ab dem Startzeichen eingesetzt. Ist die vorhandene Zeichenkette kürzer, wird der einzusetzende Textteil auf die angegebene Zeichenanzahl mit Leerzeichen ergänzt.

 

POS(X): Befehlsform: POS (# Kanal)

Die momentane Druck- oder Cursorposition wird ausgegeben oder einer Variablen zugewiesen, wobei die erste Postion den Wert 0 besitzt. X ist eine beliebige Hilfsvariable.

10 CLEAR 250
20 FOR I = 1 TO 70
30 A$ = A$ + "*":PRINT A$;:PRINT POS(X):NEXT

 

REM:

Zur Dokumentation von Programmen empfehlen sich Hinweise, die aber nicht vom Interpreter bearbeitet werden dürfen. Der Befehl REM oder die Kurzfassung (') kennzeichnen solche Hinweise in BASIC-Zeilen, die durch einen Doppelpunkt oder durch das Ende der Programmzeile beendet werden. Es können also weitere BASIC-Befehle in einer Programmzeile nach dem REM-Befehl angefügt werden.

Beispiel: 10 A1 = 0: ' Anzahl Daten : B1 = 0: ' Anzahl Zeilen

 

SPACE$(: Befehlsform: SPACE$( Anzahl der Leerzeichen )

Dieser Befehl ergibt eine Leerzeichenkette mit der angegebenen Länge, wobei maximal 255 Zeichen erlaubt sind und diese einer Variablen zugewiesen werden können.

10 A$ = SPACE$(20)
20 PRINT "A" + A$ + "Z"

Anzeige: A (20 Leerzeichen) Z

 

SPC(: Befehlsform: SPC( Zahl der Leerzeichen )

Zur Ausgabe von Zwischenräumen dient der Befehl SPC(. Eine Zuweisung zu einer Variablen ergibt die Fehlermeldung "Syntaxfehler Zeile XYZ".

PRINT "TEST";SPC(10);"TEST" <CR>
Anzeige: TEST TEST

Es werden zehn Leerzeichen eingefügt.

 

STRING$(: Befehlsform: STRING$( "Zeichenkette" oder Stringvariable , Anzahl X)

Eine bestimmte Zeichenkette wird mit der angegebenen Anzahl X "multipliziert", d.h. die neue Zeichenkette enthält X-mal die alte Zeichenkette. Die Summe aller Zeichen darf die Zahl 255 nicht überschreiten (Fehlermeldung: nicht erlaubt Zeile 20).

10 A$ = "*-"
20 B$ = STRING$(A$,10)
30 PRINT B$
Anzeige: *-*-*-*-*-*-*-*-*-*-

 

TAB(: Befehlsform: TAB( Position X ab linkem Rand);

Bei der Ausgabe eines Zeichens am Bildschirm oder auf den Drucker wird der Cursor oder Druckkopf immer vom linken Rand aus X Zeichen nach rechts versetzt. Im Beispiel kann daher der zweite Befehl TAB(5) nicht ausgeführt werden.

PRINT TAB(10);"*";TAB(5);"*" <CR> Anzeige: **

 

USING

Bei der Ausgabe von Zahlen und Zeichenketten ergibt sich die Anordnung aus der Zeichenanzahl. Ein Tabellenaufbau ist daher nur mühsam mit entsprechenden Stringoperationen möglich. Der Befehl USING bietet einfache Tabellierungsanweisungen, die sogar im Programm gewechselt werden können.

a) Befehlsform: PRINT # Kanal, USING Zeilennummer XYZ; Variable 1, Variable 2, usw.

XYZ ! Formatierungsangabe (#,.,+,-,**,$$,**$,',^^^,L,R,C,E)

b) Befehlsform: PRINT # Kanal, USING "Formatierungsanweisung" oder Variable;

Variable 1, usw.

 

Zahlenformatierung:

Die Beispiele enthalten zuerst das Format, dann die Zahl und die Anzeige (bzw. Ausdruck).

10 INPUT LINE "Format";A$
20 INPUT"Zahl";A
30 PRINT USING A$;A

a) #

Jedes Nummernzeichen (#) kennzeichnet eine Zeichenposition in einem Zahlenfeld. Die Zahl wird rechtsbündig ausgegeben und notfalls gerundet.

###### 234 234

122345.6 122346

b) . (Punkt!)

Ein Dezimalpunkt innerhalb der Nummernzeichen bestimmt die Anordnung der Dezimalzahl, die notfalls gerundet wird. Bei Zahlen kleiner 1 wird vor den Punkt eine Null gesetzt.

###.## 23.456 23.46

.12345 0.12

###.### -24.5 -24.500

c) +

Das Plus-Zeichen kann am Anfang oder am Ende eines Nummernfeldes benutzt werden, entsprechend wird das Vorzeichen (+ oder - ) vor oder hinter die Zahl gedruckt.

####.###+ 234 234.000+

-234.5 234.500-

+####.### 234 +234.000

-234.5 -234.500

d) -

Ein Minus-Zeichen am Ende des Nummernfeldes ergibt bei negativen Zahlen ein Minus-Zeichen am Ende, bei positiven ein Leerzeichen.

####.###- 123.567 123.567

-123.567 123.567-

e) **

Zwei Sternchen am Anfang eines Nummernfeldes bedeuten, daß an jede nicht besetzte Position des Nummernfeldes ein Sternchen gesetzt wird (z.B. für Zahlkarten üblich).

**###.### 1212.12 *1212.12

12.12 ***12.12

2.30 ****2.30

f) $$

Zwei Dollarzeichen am Anfang eines Nummernfeldes setzen das Dollarzeichen unmittelbar vor das erste Zeichen der Zahl, das nicht Null ist.

$$###.## 555 $555.00

4.45 $4.45

g) **$ Es werden die Anweisungen Nr.5 und 6 gemeinsam benützt.

**$##.## 333 *$333.00

3.4 ***$3.40

h) , (Komma!)

Ein Komma links vom Dezimalpunkt im Nummernfeld bedingt, daß alle drei Zeichen ein Komma gesetzt wird.

########,.## 12345 12,345.00

1234567.1 1,234,567.10

i) ^^^^

Vier Pfeile am Ende der Kennzeichnung des Nummernfeldes deuten an, daß die Zahl immer in exponentialer Schreibweise angegeben wird (E+nn oder E-nn). Ein Dezimalpunkt ist erlaubt.

###.##^^^^ 1234567 12.35E+05

0.123 12.30E-02

Paßt eine Zahl nicht in das Nummernfeld, wird sie doch ganz ausgegeben und durch ein vor die Zahl gestelltes Prozentzeichen (%) gekennzeichnet.

Textformatierung

Textformatierungsanweisungen sind durch ein Apostroph (') gekennzeichnet. Jedes Apostroph bedeutet ein einzelnes Zeichen. Zur Vereinfachung gibt es die Buchstaben L, R, C und E (nur Großbuchstaben erlaubt) zur Kennzeichnung von längeren Zeichenketten.

a) L (linksbündig): Befehlsform: 'LLLL

Die Anzahl der L-Buchstaben ergibt die max. Länge der Zeichenkette, eine längere wird rechts abgeschnitten.

b) R (rechtsbündig): Befehlsform: 'RRRRRRRR

Die Anzahl der R-Buchstaben ergibt die max. Länge der Zeichenkette, eine längere wird links abgeschnitten.

c) C (zentrieren): Befehlsform: 'CCCCCCCCCCCCCCCCCCCCC

Die Zeichenkette wird im C-Feld zentriert, eine zulange Zeichenkette wird rechts abgeschnitten.

d) E (linksbündung und ergänzen): Befehlsform: 'E

Es braucht nur ein E angegeben werden, da die gesamte Zeichenkette ausgegeben wird.

5 CLEAR 250
10 INPUT"Zeichenkette";A$
20 INPUT LINE "Format";X$
30 PRINT X$
40 PRINT USING X$; A$
50 GOTO 20

Anzeige: (Format und darunter Ausdruck)

'E

Wir gehen nach Hause und schlafen

'LLLLLLLLLLLLLLLLLLLLLLLLL

Wir gehen nach Hause und s

'RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR

Wir gehen nach Hause und schlafen

'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC

Wir gehen nach Hause und schlafen

Allgemeines Beispiel:

Es wird die Formatzeile mit Zeilennummer angegeben

300 PRINT#2, USING 320; I,FNR(A);FNR(T)
320 ! ## #########.## ########.##