Mit dem Format 2 der @TABS-Anweisung können für das Positionieren mit Softwaretabulatoren Tabulatorzeichen und Tabulatorpositionen definiert, deren aktuelle Werte ausgegeben und der Softwaretabulator aktiviert bzw. deaktiviert werden.
Sind Softwaretabulatoren aktiviert, dann erfolgt die Tabulatorexpansion bei der Eingabe von Datenzeilen von einer Datensichtstation (nicht im Stapelbetrieb oder bei Eingabe aus Prozeduren) im L-Modus (auch bei indirekter Eingabe über den Text-Operand einiger Anweisungen) oder der Eingabe/Modifikation von Datenzeilen im Datenfenster des F-Modus durch den EDT. Ist der Softwaretabulator definiert (nicht notwendig aktiviert), kann man die Tabulatorexpansion für existierende Zeilen durch @TABS (Format 3) veranlassen. Die Tabulatorexpansion erfolgt von links nach rechts in den Datenzeilen, wobei zwei Expansi-ons-Strategien eingestellt werden können.
Die übliche Vorwärts-Strategie bewirkt, dass ein Tabulatorzeichen durch so viele Leerzeichen (mindestens eines) ersetzt wird, dass das darauf folgende Zeichen auf der nächsten rechts von der aktuellen Position liegenden Tabulatorposition steht.
Die eher ungewöhnliche Positionier-Strategie bewirkt, dass das n-te Tabulatorzeichen auf die n-te Tabulatorposition positioniert, unabhängig davon, ob diese links oder rechts von der aktuellen Position liegt. Liegt sie rechts von der aktuellen Position, wird das Tabulatorzeichen wie bei der Vorwärts-Strategie durch entsprechend viele Leerzeichen ersetzt. Liegt sie dagegen links von der aktuellen Position (oder genau darauf), wird das Tabulatorzeichen gelöscht und die aktuelle Position auf die Tabulatorposition gesetzt. Nachfolgende Zeichen werden dann normalerweise in der eingegebenen Zeile davor stehende Zeichen überschreiben. Man kann eine Meldung ausgeben lassen, wenn das geschieht.
In beiden Strategien werden Tabulatorzeichen, zu denen keine Tabulatorposition mehr ermittelt werden kann, nicht ersetzt und bleiben als normale Textzeichen erhalten.
Die Einstellungen des Software- und Hardwaretabulators werden getrennt gespeichert.
Es kann allerdings nur einer der beiden Tabulatoren aktiv sein. Wird der Softwaretabulator aktiviert, wird daher automatisch ein evtl. aktiver Hardwaretabulator deaktiviert.
Operation | Operanden | F-Modus, L-Modus |
@TABS | : : { [char [:] col [,...] ] [ {CHECK | FORWARD | NOCHECK} [col1] ] | ON |
char | Zeichen, das vom EDT bei nachfolgenden Eingaben als Tabulatorzeichen Ist Ist weder |
col | Gibt, durch Komma voneinander getrennt, die Tabulatorpositionen für das |
CHECK | Der EDT verwendet die in der Einleitung beschriebene Positionier-Strategie Wird |
FORWARD | Der EDT verwendet die in der Einleitung beschriebene Vorwärts-Strategie. Wird |
NOCHECK | Der EDT verwendet die in der Einleitung beschriebene Positionier-Strategie Wird Sie gilt, bis sie wieder explizit geändert wird. Beim Start des EDT ist |
col1 | Gibt die Anzahl der Zeichen ( Ist eine Zeile länger als Ist Beim Start des EDT ist der Wert für die Zeilenlängenprüfung im L-Modus |
ON | Die Funktion des Softwaretabulators wird aktiviert. Es muss dazu bereits Sind keine Tabulatorpositionen definiert, dann wird die @TABS-Anweisung |
OFF | Die Funktion des Softwaretabulators wird ausgeschaltet. Die definierten |
VALUES | Das aktuelle Tabulatorzeichen und die zugehörigen Tabulatorpositionen Die auszugebenden Tabulatorpositionen sind fünfstellig. Pro Ausgabezeile Die Ausgabe erfolgt im Dialogbetrieb nach |
Überschreitet eine Zeile durch die Tabulatorexpansion die maximale Länge von 32768 Zeichen, wird auf die maximale Länge abgeschnitten und und im L-Modus die Meldung EDT1903
bzw. im F-Modus die Meldung EDT2400
ausgegeben.
Sind Tabulatorpositionen definiert und ist mit der Anweisung @SCALE ON im F-Modus die Anzeige des Spaltenzählers eingeschaltet, dann wird eine weitere Bildschirmzeile ausgegeben, in der die aktuellen Tabulatorpositionen mit 'I'
angezeigt werden. In dieser Zeile wird auch das Tabulatorzeichen selbst in der Kurzanweisungsspalte abgebildet.
Das Tabulatorzeichen wirkt global für alle Arbeitsdateien. Bei der Dateneingabe im F-Modus erfolgt die Tabulatorexpansion in der gesamten Zeile und nicht nur im angezeigten Ausschnitt.
Wird nur eine Strategie angegeben (z.B. @TABS::FORWARD), wird diese Strategie eingestellt, auch wenn kein Softwaretabulator definiert ist. Wird keine Strategie angegeben, bleibt die eingestellte Strategie erhalten. Beim Start des EDT ist NOCHECK
voreingestellt.
Hinweis
Durch die Angabe von @TABS:: werden die aktuellen Einstellungen für den Software-Tabulator als nicht definiert gesetzt. Ist gar kein Software-Tabulator definiert (aber z.B. ein Hardware-Tabulator) bleibt diese Anweisung wirkungslos.
Der Wert für die Zeilenlängenprüfung im L-Modus sollte besser durch die Anweisung @CHECK verändert werden. Hier wird sie nur noch aus Kompatibilitätsgründen unterstützt.
Die Hauptanwendung der @TABS-Anweisung ist das spaltengerechte Erstellen von Dateien, z.B. von Quelldateien. Beispielsweise ist bei der Erstellung einer Quelldatei für ein Assemblerprogramm die Anweisung @TABS::[:10,16,40 CHECK 71 sinnvoll. Mit CHECK
wird erreicht, dass bei Angabe überlanger Namen eine Meldung ausgegeben wird (FORWARD
anstelle von CHECK
wäre hier nicht sinnvoll). Die Angabe einer maximalen Zeilenlänge von 71 ist deshalb sinnvoll, damit die Spalte 72, mit der man Fortsetzungzeilen kennzeichnet, nicht versehentlich überschrieben wird.
Achtung
Überzählige Tabulatorzeichen in einer Zeile sind bei der Positionier-Strategie gefährlich. Kommt es zur erneuten Tabulatorexpansion, z.B. durch eine Korrektur in der Zeile im F-Modus, werden diese plötzlich wirksam, meist auf nicht erwünschte Weise.
Beispiel
Als Tabulatorzeichen wird [
vereinbart. Die Tabulatorpositionen seien 10, 16 und 40.
Text wird zusammen mit 3 Tabulatorzeichen eingegeben.
Es werden Tabulatorexpansionen auf die Spalten 10, 16 und 40 durchgeführt.