Mit dem primary-command INPUT (Kurzform: IN) können sequentielle Dateien von beliebigen Peripheriegeräten eingelesen werden. Vor der Ausführung des Kommandos können Sie die Einfügeposition mit den line-commands A oder B (after und before) festlegen. Beim Fehlen einer solchen Angabe wird der Text der sequentiellen Datei vor Zeile 0000 eingefügt.
Nach der Bestätigung des primary-commands gelangen Sie in ein Menü, in dem folgende Parameter eingegeben werden, die den Einlesevorgang steuern:
DEVICE NUMBER: ['*' OR '?' FOR END] ==>
Zunächst bestimmen Sie das Peripheriegerät durch die Angabe seiner Geräteadresse. So besitzt z.B. die Diskettenstation die Geräteadresse 8. Durch die Eingabe von »*« oder »?« können Sie den INPUT-Befehl an dieser Stelle abbrechen.
SEK. ADDRESS: ['*' OR '?' FOR NONE] ==>
Viele Geräte besitzen unter derselben Geräteadresse noch eine sogenannte Sekundäradresse, die an dieser Stelle angegeben werden kann. Wollen Sie keine Sekundäradresse spezifizieren, so können Sie »*« oder »?« eingeben.
FILE NAME: ==>
Auf Disketten und Cassetten werden Dateien mit einem Namen gespeichert. Beim Laden einer Datei muß der Name an dieser Stelle genannt werden.
CODE OF DELIMITER: ['*' OR '?' FOR NONE] ==>13
Nachdem die Datei vollständig beschrieben wurde, werden Sie jetzt nach dem Code eines Begrenzungszeichens gefragt. Sequentielle Dateien werden meist dadurch in Zeilen (Sätze oder records) gegliedert, daß am Ende jeder Zeile ein Begrenzungszeichen steht. Üblicherweise handelt es sich bei diesem Zeichen um das sogenannte carriage return (Wagenrücklaufcode). Es besitzt den dezimalen ASCII-Code 13. Daher erhalten Sie diesen Wert bei der Eingabe als Vorgabe.
Um jedoch auch Textdateien in exotischen Formaten einlesen zu können, dürfen Sie an dieser Stelle einen beliebigen Code (zwischen 0 und 255) eingeben. Außerdem können Sie mit der Eingabe von »*« oder »?« anzeigen, daß die Datei übehaupt keine Begrenzungszeichen enthält. In diesem Fall werden genau so viele Zeichen in eine Zeile gestellt, wie als maximale Zeilenlänge beim Anlegen des Textes im Editor vereinbart wurde.
Tritt ein Systemfehler beim Einlesen auf, so wird das Einlesen abgebrochen und eine Fehlermeldung in der Kopfzeile angezeigt.
Beispiel: INPUT mit folgenden Parametern:
DEVICE NUMBER:8 SEK. ADDRESS:0 FILE NAME:$0: CODE OF DELIMITER:0
Damit wird ab der mit dem line-command A oder B markierten Zeile das Inhaltsverzeichnis der Diskette im Laufwerk 0 der Diskettenstation mit der Geräteadresse 8 eingelesen. Dieses Verzeichnis ist wie ein BASIC-Programm codiert, und enthält daher einige Steuerzeichen, die als invertierte Zeichen dargestellt werden.
Beispiel: INPUT mit folgenden Parametern:
DEVICE NUMBER:8 SEK. ADDRESS:3 FILE NAME:0:ERRORS.TXT,SEQ,READ CODE OF DELIMITER:13
Es wird die sequentielle Datei »ERRORS.TXT« von der Diskette gelesen. In dieser Datei wird jede Zeile mit einem carriage-return, dem Zeichen mit dem ASCII-Code 13 beendet.
Mit dem primary-command INPUT können Sie auch Files lesen, die in Pascalprogrammen mit den Anweisungen WRITE(Filevariable, Ausdruck) erzeugt wurden. Dabei erzeugt die Anweisung WRITELN(Filevariable) einen Zeilenwechsel durch die Ausgabe eines carriage-return.
Mit dem primary-command OUTPUT (Kurzform: OUT) wird der Inhalt des Arbeitsspeichers als sequentielle Datei auf einem beliebigen Peripheriegerät gespeichert.
Nach der Bestätigung des primary-commands gelangen Sie in ein Menü, in dem folgende Parameter eingegeben werden, die die Ausgabe steuern.
DEVICE NUMBER: ['*' OR '?' FOR END] ==>
Zunächst bestimmen Sie das Peripheriegerät durch die Angabe seiner Geräteadresse. Die Cassette besitzt z.B. die Geräteadresse 1. Durch die Eingabe von »*« oder »?« können Sie den OUTPUT-Befehl an dieser Stelle abbrechen.
SEK. ADDRESS: ['*' OR '?' FOR NONE] ==>
Mit der Sekundäradresse können Sie z.B. bei Cassettendateien bestimmen, ob eine end-of-tape Markierung geschrieben wird. Wollen Sie keine Sekundäradresse spezifizieren, so können Sie »*« oder »?« eingeben.
FILE NAME: ==>
Schließlich geben Sie an dieser Stelle an, unter welchem Namen die Datei gespeichert werden soll. Drücken Sie nur die RETURN-Taste, so wird kein Name vergeben.
CODE OF DELIMITER: ['*' OR '?' FOR NONE] ==>13
Zur Anpassung an die unterschiedlichen Formate bei der Speicherung sequentieller Dateien können Sie jetzt den Code für ein Begrenzungszeichen eingeben, das am Ende jeder Zeile des Textes angefügt werden soll.
Wie bei dem primary-command INPUT beschrieben, handelt es sich hierbei üblicherweise um das sogenannte carriage return (Wagenrücklaufcode). Es besitzt den dezimalen ASCII-Code 13. Daher erhalten Sie diesen Wert bei der Eingabe als Vorgabe. Durch die Eingabe von »*« oder »?« wird am Ende einer Zeile kein Begrenzungszeichen ausgegeben.
TRUNCATE TRAILING SPACES? [YES OR NO] ==>Y
Während die Texte innerhalb des Editors mit einer festen Zeilenlänge gespeichert werden, wird in Textdateien oft auf die Ausgabe von Leerstellen am Zeilenende verzichtet. Zum Beispiel wird die Druckerausgabe durch das Abschneiden nachfolgender Leerzeichen erheblich beschleunigt. Durch die Eingabe des Buchstabens »N« anstelle des vorgegebenen »Y« werden die Zeilen jedoch in voller Länge ausgegeben.
Beispiel: Die Zeile
»Dies ist eine Zeile mit Leerstellen «wird bei der Eingabe »Y« folgendermaßen ausgegeben:
»Dies ist eine Zeile mit Leerstellen«Bei der Eingabe »N« werden nachfolgende Leerzeichen nicht abgeschnitten:
»Dies ist eine Zeile mit Leerstellen «
Tritt ein Systemfehler bei der Ausgabe auf, so wird die Ausgabe abgebrochen und eine Fehlermeldung ausgegeben.
Beispiel:
SYSTEM ERROR NR:5
zeigt an, daß kein Gerät mit der genannten Geräteadresse mit dem Computer verbunden ist.
Beispiel: OUTPUT mit folgenden Parametern:
DEVICE NUMBER:4 SEK. ADDRESS:7 FILE NAME:* CODE OF DELIMITER:13 TRUNCATE TRAILING SPACES:Y
Durch diese Angaben wird der Inhalt des Arbeitsspeichers an den Drucker gesendet. Bei dem Drucker MPS-802 bewirkt die Sekundäradresse 7 eine Ausgabe in Kleinschrift.
Beispiel: OUTPUT mit folgenden Parametern:
DEVICE NUMBER:8 SEK. ADDRESS:3 FILE NAME:@0:TEST,SEQ,WRITE CODE OF DELIMITER:13 TRUNCATE TRAILING SPACES:Y
Der gesamte Text wird als sequentielles File mit dem Namen »TEST« im Laufwerk 0 auf der Diskettenstation mit der Geräteadresse 8 gespeichert. Eine eventuell zuvor existierende Datei gleichen Namens wird überschrieben.
Mit dem primary-command OUTPUT können Sie auch Files erzeugen, die in Pascalprogrammen mit den Anweisungen READ(Filevariable, Variable) gelesen werden können.
Mit diesem primary-command können Sie Teile anderer Texte, die auf Diskette gespeichert sind, an einer beliebigen Stelle im Arbeitsspeicher einfügen. Die Einfügeposition wird vor der Ausführung des primary-commands mit den line-commands A oder B definiert. Fehlt eine solche Angabe, wird der Text von Diskette vor der ersten Textzeile (0000) eingefügt.
Editortexte können nicht mit dem Befehl INPUT eingelesen werden, da sie neben dem eigentlichen Text noch Steuerinformationen und den Inhalt der Statuszeilen beinhalten.
In der Kopfzeile können Sie hinter dem COPY-Befehl noch eine ganze Zahl eingeben. Diese legt dann die Geräteadresse der Diskettenstation für den COPY-Befehl fest. Fehlt diese Angabe, so wird der Text vom angemeldeten Laufwerk (s. Befehl DRIVE in Abschnitt 4.2.4) gelesen.
Wie bei den Befehlen INPUT und OUTPUT gelangen Sie bei der Betätigung mit SHIFT-RETURN in ein spezielles Menü:
COPY DATASET ------------ ENTER DATASET-NAME: ['*' OR '?' FOR END] ==>
An dieser Stelle geben Sie den Namen eines Editortextes ein, der auf der eingelegten Diskette im angegebenen Diskettenlaufwerk (mit SAVE) gespeichert wurde. Wird der Text nicht gefunden, so erfolgt ein Rücksprung in das Editorbild. Dies geschieht ebenfalls bei der Eingabe von »*« oder »?«.
Problematisch ist das Kopieren aus einem Datenbestand, der eine andere Satzlänge als der Text im Arbeitsspeicher besitzt. Hierbei können unter Umständen Zeilen zerstückelt werden. Es erscheint daher zur Warnung folgende Meldung, in der Sie das Kopieren durch die Eingabe des Buchstabens »C« bestätigen müssen:
THIS DATASET HAS A DIFFERENT RECORD-SIZE! CONFIRM COPY WITH 'C'! ==>
Jede andere Eingabe bricht das Kommando COPY ab. Anschließend können Sie noch den Zeilenbereich festlegen, der kopiert werden soll:
FIRST LINE COPIED: ['*' OR '?' TO COPY ALL] ==>
Hier geben Sie die Zeilennummer der ersten Zeile ein, die von der Diskette gelesen werden soll. Mit der Eingabe »*« oder »?« wird der gesamte Text von der Diskette gelesen, ansonsten können Sie noch die letzte zu kopierende Zeile definieren:
LAST LINE COPIED: ==>
Ist die letzte Zeilennummer kleiner als die erste Zeilennummer, oder geben Sie als letzte Zeilennummer »*« oder »?« ein, so können Sie die erste Zeilennummer korrigieren.
Es ist nicht möglich, mit COPY aus einem Text auf Diskette die Statuszeilen (wie z.B. die Tabulatorzeile) zu kopieren. Reicht beim Kopieren der verfügbare Speicherplatz im Arbeitsspeicher nicht aus, so wird die Meldung »OUT OF MEMORY« angezeigt und das Einlesen abgebrochen.
Während die Funktionstasten »F1«, »F2«, »F3«, »F4«, »F5« und »F7« innerhalb des Editors eine vordefinierte Bedeutung besitzen (s. Abschnitt 4.2.3 und 4.2.9), können folgende Tasten von Ihnen mit eigenen Texten belegt werden:
1.»SHIFT RUN/STOP«
2.»HELP«
2.»F6«
4.»F8«
Jedoch lassen sich nicht nur Texte, sondern auch lange Kommandosequenzen (Makros) speichern. Um eine dieser Tasten neu zu definieren, betätigen Sie zunächst die RUN/STOP Taste. Es erscheint folgende Meldung in der Kopfzeile:
SELECT KEY-NUMBER (1-4)
Nun können Sie eine der Ziffern-Tasten »1« bis »4« wählen. Die Ziffer entspricht der Nummer der Funktionstaste in der obigen Liste. (Die Tasten sind auf der Tastatur von links nach rechts durchnumeriert).
Beispiel: Wählen Sie die Ziffer »2« (Sie können auch die Tasten auf der abgesetzten Zehnertastatur verwenden). Dadurch wird die HELP-Taste programmiert.
Haben Sie sich jedoch entschlossen, keine Taste neu zu programmieren, können Sie die Neubelegung mit der RUN/STOP-Taste abbrechen. Nachdem Sie eine gültige Ziffer gewählt haben, verschwindet die Auswahlmeldung und der Inhalt der Kopfzeile wird wieder hergestellt.
Nun befinden Sie sich im Programmiermodus für die gewählte Taste. Sie können jetzt normal mit dem Editor weiterarbeiten, jedoch werden alle nachfolgenden Eingaben von der Tastatur innerhalb des Editors gespeichert.
Diesen Programmiermodus verlassen Sie durch die erneute Betätigung der RUN/STOP Taste. Jetzt werden alle zwischenzeitlichen Tastatur- eingaben der entsprechenden Taste (im Beispiel der Taste »HELP«) zugewiesen.
Solange Sie den Editor nicht zum BASIC-Interpreter verlassen, bleibt diese Tastaturbelegung erhalten. Jede Betätigung der »HELP«-Taste wiederholt die gespeicherten Tastatureingaben. Besonders interessant ist die Möglichkeit, während der Programmierung Kommandos und andere Funktionstasten zu speichern. Dadurch lassen sich häufig wiederholte Aktionen zu einem Tastendruck zusammenfassen.
Ein einzelner Tastaturstring darf nicht länger als 64 Zeichen werden. Für alle 4 Funktionstasten dürfen maximal 250 Zeichen definiert werden.
Beispiel: Sie wollen die Taste »F6« mit dem Text »HALLO OTTO« belegen, da Sie diesen Text mehrmals im Textfenster eingeben wollen.
Zunächst gehen Sie an die Textposition, an welcher der Text zum ersten Mal verwendet werden soll. Die Programmierung der Taste starten Sie mit der Taste RUN/STOP:
SELCET KEY-NUMBER (1-4)
Jetzt drücken Sie die Zifferntaste »3«, um die nachfolgenden Tastatureingaben auf der dritten frei belegbare Funktionstaste »F6« zu speichern. Die angezeigt Meldung wird wieder ausgeblendet. Anschließend geben Sie den Text »HALLO OTTO« ein.
Um die Programmierung der Taste zu beenden, drücken Sie noch einmal auf die »RUN/STOP« Taste. Fortan müssen Sie anstatt den Text »HALLO OTTO« einzugeben, nur noch die Tast »F6« betätigen. Den Text können Sie überall (auch in der Kopfzeile) verwenden.
Beispiel: Sie wollen mit der Funktionstaste »F8« zum Textanfang blättern. Nachdem Sie mit der RUN/STOP-Taste und der Zifferntaste »4« die Programmierung eingeleitet haben, bewegen Sie den Cursor mit der Taste »SHIFT CLR« in die Kopfzeile und geben dort den Text »LOCATE 0« ein. Führen Sie das Kommando mit »SHIFT RETURN« aus. Jetzt beenden Sie noch die Programmierung mit der »RUN/STOP« Taste. Von nun an können Sie an jeder Bildschirmposition mit der Betätigung der »F8« Taste zum Textanfang blättern.
Eine nützliche Tastenbelegung besteht darin, die Taste »F6« mit 10 Cursorbewegungen nach links und die Taste »F8« mit 10 Cursorbewegungen nach rechts zu belegen. Damit kann man sich im 80-Zeichen Modus sehr schnell horizonal im Text vorwärts und rückwärts bewegen. Wenn Sie längere Zeit mit dem Editor gearbeitet haben, werden Sie sicher oft von den Möglichkeiten der definierbaren Funktionstasten Gebrauch machen.
Folgende Meldungen können im Editor auftreten. Zu jeder Meldung wird ein kurzer Hinweis zu ihrer Bedeutung und eventuelle Korrekturmöglichkeiten gegeben. Nähere Informationen finden Sie bei der Beschreibung der Kommandos, bei deren Ausführung der Fehler gemeldet wurde.
Meldung | Erklärung und Korrekturmöglichkeiten | ||||||||||||||||||||
LINE-COMM. IGNORED | Es wurden zu viele line-commands eines Typs angegeben. Die erkannten line-commands werden nicht ausgeführt, sondern nochmals angezeigt. Diese Meldung tritt auch auf, falls Sie z.B. zu einem DD-Kommando statt des zugehörigen DD- ein D-Komando eingeben. Um unvollständige line-commands zu löschen, können Sie das primary-command RESET verwenden. | ||||||||||||||||||||
COMMAND CONFLICT | Bei den line-commands MM und CC liegt die A oder B Markierung innerhalb des Quellblockes. | ||||||||||||||||||||
OUT OF MEMORY | Der Arbeitsspeicher ist zu klein, um den Text mit den line-commands I, R oder C zu erweitern. Bei dem line-command MM hilft in diesem Fall ein Zerlegen des Blockes in kleinere Teile. | ||||||||||||||||||||
BLOCK TOO LONG | Ein mit den line-commands MM, CC, >>, RR etc. definierter Block darf nicht mehr als 256 Zeilen umfassen. Sie müssen die Operation mit mehreren Blockbefehlen durchführen. | ||||||||||||||||||||
ILLEGAL BOUNDS | In der Statuszeile nach »BND=« wurden ungültige Eingaben gemacht (s. 4.2.2.3). | ||||||||||||||||||||
MOVE ERROR | Bei den line-commands > oder < würden Zeichen über den Textrand verschoben. Dieser Fehler tritt auch bei dem primary-command CHANGE auf, falls in der Einfügezeile nicht genügend Platz am Zeilenende vorhanden ist. | ||||||||||||||||||||
ILLEGAL COMMAND | Bei den primary-commands FIND und CHANGE wurden ungültige Parameter angegeben. | ||||||||||||||||||||
ENTER A STRING! | Ein String bei den primary-commands FIND oder CHANNGE hat nicht die korrekte Form (Es fehlt z.B. ein Apostroph »'«) | ||||||||||||||||||||
ILLEGAL COLUMN | Eine Spaltenangabe bei FIND und CHANGE (nnnn-mmmm) liegt außerhalb des Bereiches 0 und der maximalen Zeilenlänge. | ||||||||||||||||||||
STRING FOUND | Meldung bei dem primary-command FIND. Der Cursor steht auf dem gesuchten String im Textfenster. | ||||||||||||||||||||
** BOTTOM REACHED ** | Bei FIND oder CHANGE wurde das Textende (dort steht die Zeile BOTTOM) erreicht. | ||||||||||||||||||||
STRING NOT FOUND | Der Suchstring befindet sich nicht im Bereich, der durch die Textgrenzen in der Statuszeile »BND=« festgelegt wird. | ||||||||||||||||||||
KEY IS NOT ACTIVE | Die Funktionstasten »F2« und »F4« sind nur aktiviert, falls zuvor das primary-command FIND oder CHANGE verwendet wurde. | ||||||||||||||||||||
nnnn TIMES FOUND | Diese Meldung wird nach dem Kommando FIND ... ALL ausgegeben. nnnn gibt an, wie oft der Suchstring gefunden wurde. | ||||||||||||||||||||
nnnn CHANGED | nnnn gibt die Anzahl der geänderten Strings bei einem CHANGE-Befehl an. | ||||||||||||||||||||
nnnn/mmmm ERRORS | Bei dem primary-command CHANGE ... ALL wurden nnnn Strings gefunden, von denen mmmm nicht geändert werden konnten. | ||||||||||||||||||||
SYSTEM ERROR NR:n | Bei einem Betriebssystem-Aufruf (bei den primary-commands INPUT
und OUTPUT) trat ein Fehler auf. Die Fehlerursache hängt von dem angesprochenen
Peripheriegerät ab, so daß keine allgemeingültigen Aussagen
zur Fehlerbeseitigung gemacht werden können.
| ||||||||||||||||||||
SELECT KEY-NUMBER (1-4) | Diese Meldung wird nach der Betätigung der »RUN/STOP« Taste im Editor angezeigt. Durch die Eingabe einer Zahl zwischen 1 und 4 können Sie eine Funktionstaste belegen (s. Abschnitt 4.2.13). Um die Belegung abzubrechen genügt eine nochmalige Betätigung von »RUN/STOP«. |
Außerdem werden bei Diskettenoperationen noch Meldungen der Floppy im folgenden Format angezeigt (nähere Erläuterungen finden sich im Handbuch der Diskettenstation):
Fehlernummer, Fehlertext, Spur, Sektor