Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

@TABS (Format 2) - Softwaretabulatoren definieren und ausgeben

&pagelevel(3)&pagelevel

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
| OFF
| VALUES } 

char

Zeichen, das vom EDT bei nachfolgenden Eingaben als Tabulatorzeichen
interpretiert werden soll. Der Softwaretabulator wird dabei implizit aktiviert.
Als Tabulatorzeichen sollten weder das Anweisungssymbol noch das
Separatorzeichen angegeben werden. Das Zeichen ; kann bei der Eingabe der
Anweisungen im F-Modus nicht verwendet werden, da es als Trennzeichen
für Anweisungen interpretiert wird. Das Tabulatorzeichen char und col
müssen durch : getrennt werden, falls char eines der Zeichen C, F, O, V
oder N oder eine Ziffer ist.

Ist char nicht angegeben, aber eine Strategie, dann wird nur die Strategie
geändert.

Ist weder char noch eine Strategie angegeben, dann werden die aktuellen
Einstellungen für den Softwaretabulator als nicht definiert gesetzt und der
Softwaretabulator deaktiviert.

col

Gibt, durch Komma voneinander getrennt, die Tabulatorpositionen für das
Positionieren mit dem Tabulatorzeichen an. Die Anzahl der möglichen
Tabulatorpositionen ist nur durch die Länge einer Anweisung beschränkt.
Sind die Tabulatorpositionen nicht aufsteigend geordnet, wird die @TABS-
Anweisung nicht ausgeführt und die Fehlermeldung EDT4940 ausgegeben.

CHECK

Der EDT verwendet die in der Einleitung beschriebene Positionier-Strategie
und gibt eine Meldung aus, wenn auf eine Tabulatorposition positioniert
wird, die links von der aktuellen Position in der Zeile liegt. Falls dies bei der
Eingabe von Text an der Datensichtstation auftritt, wird die Meldung
EDT2902 ausgegeben. Falls dies bei der Auswertung von Tabulatorzeichen
in einer Arbeitsdatei mit der Anweisung @TABS (Format 3) vorkommt, wird
die Meldung EDT4312 ausgegeben. Zusätzlich werden in diesem Falle,
beginnend mit der Zeile, auf die sich die Meldung bezieht, keine weiteren
Tabulatorexpansionen durchgeführt.

Wird CHECK angegeben, aber nicht char, so wird die Strategie eingestellt,
unabhängig davon, ob ein Softwaretabulator definiert und aktiv ist. Sie gilt,
bis sie wieder explizit geändert wird.

FORWARD

Der EDT verwendet die in der Einleitung beschriebene Vorwärts-Strategie.

Wird FORWARD angegeben, aber nicht char, so wird die Strategie
eingestellt, unabhängig davon, ob ein Softwaretabulator definiert und aktiv ist.
Sie gilt, bis sie wieder explizit geändert wird.

NOCHECK

Der EDT verwendet die in der Einleitung beschriebene Positionier-Strategie
und überprüft nicht, ob eine Tabulatorexpansion auf eine Position links von
der aktuellen Zeilenposition erfolgt.

Wird NOCHECK angegeben, aber nicht char, so wird die Strategie
eingestellt, unabhängig davon, ob ein Softwaretabulator definiert und aktiv ist.

Sie gilt, bis sie wieder explizit geändert wird.

Beim Start des EDT ist NOCHECK voreingestellt.

col1

Gibt die Anzahl der Zeichen (1..32768) pro Zeile für die Zeilenlängenprüfung
im L-Modus an. Der EDT überprüft die Anzahl der Zeichen in einer
Zeile, die neu eingegeben wurde. Insbesondere sollen Überschreitungen
der vorgegebenen Zeilenlänge als Folge von eventuell stattfindenden
Tabulatorexpansionen angezeigt.

Ist eine Zeile länger als col1, wird diese Zeile zwar angelegt, aber der EDT
macht mit der Meldung EDT2901 darauf aufmerksam, dass die vorgegebene
Anzahl an Zeichen pro Zeile überschritten wurde.

Ist col1 nicht angegeben, dann bleibt der eingestellte Wert unverändert.

Beim Start des EDT ist der Wert für die Zeilenlängenprüfung im L-Modus
auf 32768 Zeichen eingestellt.

ON

Die Funktion des Softwaretabulators wird aktiviert. Es muss dazu bereits
ein Softwaretabulator definiert sein.

Sind keine Tabulatorpositionen definiert, dann wird die @TABS-Anweisung
mit der Fehlermeldung EDT4941 abgewiesen.

OFF

Die Funktion des Softwaretabulators wird ausgeschaltet. Die definierten
Tabulatorpositionen bleiben erhalten und können mit der Anweisung
@TABS ::ON wieder aktiviert werden.

VALUES

Das aktuelle Tabulatorzeichen und die zugehörigen Tabulatorpositionen
des Softwaretabulators werden ausgegeben. Ist kein Tabulatorzeichen
definiert, erfolgt keine Ausgabe.

Die auszugebenden Tabulatorpositionen sind fünfstellig. Pro Ausgabezeile
werden bis zu 11 Tabulatorpositionen ausgegeben und danach erfolgt ein
Umbruch. Das Tabulatorzeichen wird in den Fortsetzungszeilen nicht
ausgegeben.

Die Ausgabe erfolgt im Dialogbetrieb nach SYSOUT und im Stapelbetrieb
nach SYSLST.

Ü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.