%W — Window-Verarbeitung

%W

Anmerkung:
Es empfiehlt sich sehr, statt des %W-Kommandos das DEFINE WINDOW-Statement zu verwenden.

Ein Natural-"Window" oder -Fenster ist der Ausschnitt einer von einem Natural-Programm erzeugten logischen Seite, der auf dem Bildschirm zu sehen ist.

Dieses Fenster kann mit dem Terminalkommando %W beeinflusst werden.

Das Kommando muss immer mit Parametern eingegeben werden, um die einzelnen im folgenden beschriebenen Funktionen auszuführen. Sie können mehrere Funktionen gleichzeitig ausführen, indem Sie mehrere Parameter mit einem %W-Kommando angeben. Zwischen Kommando und Parametern dürfen keine Trennzeichen oder Leerzeichen stehen.

Das Fenster ist ständig vorhanden, auch wenn Sie sich dessen nicht bewusst sind, da die Größe des Fensters — solange Sie sie nicht mit einem DEFINE WINDOW-Statement oder %W-Kommando ändern — mit der Größe Ihres Bildschirms identisch ist.

Weitere Informationen über Fensterverarbeitung siehe auch DEFINE WINDOW-Statement in der Statements-Dokumentation.

Es gibt zwei Arten von Window-Kommandos:

  • Kommandos, mit denen Sie die Größe und Position des Fensters auf dem physischen Bildschirm Ihres Terminals verändern können.

  • Kommandos, mit denen Sie die Position des Fensters auf der vom Programm erzeugten logischen Seite verändern können.

Dieses Dokument behandelt folgende Themen:


Größe und Position des Fensters auf dem physischen Bildschirm

Mit den folgenden Window-Kommandos bestimmen Sie die Größe und Position des Fensters auf dem physischen Bildschirm.

Wenn Sie die Position des Fensters auf dem physischen Bildschirm ändern, wird die Position des Fensters auf der logischen Seite dadurch nicht verändert:

Physischer Bildschirm

Zu Informationen über mögliche Fenstergrößen siehe DEFINE WINDOW-Statement.

Kommando Funktion
%WB Die Fenstergröße (ausschließlich Rahmen) wird auf Bildschirmgröße gesetzt. Falls ein Rahmen definiert ist, ist dieser nicht sichtbar.
%WBlll/ccc Die obere linke Ecke des Fensters wird in Zeile lll / Spalte ccc platziert (Zeilen und Spalten werden auf dem physischen Bildschirm gezählt). Die Größe des Fensters bleibt dabei gleich. Falls das Fenster zu groß ist, um an die angegebene Stelle platziert zu werden, wird es so nahe wie möglich an diese Stelle platziert.
%WB0 Das Fenster wird an die obere linke Bildschirmecke verschoben. Die Fenstergröße bleibt dabei unverändert.
%W# Die obere linke Ecke des Fensters wird an die Cursor-Position plaziert. Die Größe des Fensters bleibt dabei gleich. Falls das Fenster zu groß ist, um an die angegebene Stelle plaziert zu werden, wird es so nahe wie möglich an diese Stelle plaziert.
%W? Die untere rechte Ecke des Fensters wird an die Cursor-Position plaziert. Die obere linke Ecke des Fensters verschiebt sich dabei nicht, und die Größe des Fensters wird entsprechend angepasst.
%WLnn Die Zeilenlänge (horizontale Ausdehnung) des Fensters (einschließlich Rahmen, falls angegeben) wird auf nn Stellen gesetzt.

Wenn Sie nn nicht oder größer als auf den Bildschirm passend, angeben, wird die horizontale Ausdehnung auf größtmögliche Zeilenlänge gesetzt, d.h. bis zum rechten Bildschirmrand.

%WCnn Die Spaltenlänge (vertikale Ausdehnung) des Fensters (einschließlich Rahmen, falls angegeben) wird auf nn Zeilen gesetzt.

Wenn Sie nn nicht oder größer als auf den Bildschirm passend, angeben, wird die vertikale Ausdehnung auf größtmögliche Spaltenlänge gesetzt, d.h. bis zum unteren Bildschirmrand.

Zeilen- und Spaltenangaben beziehen sich auf die physische Gesamtgröße des Fensters (einschließlich Rahmen, falls angegeben), nicht auf die Größe dessen, was innerhalb des Fensters logisch sichtbar ist.

Wird ein Fenster nicht korrekt definiert, so wird ein solches Kommando entweder ignoriert oder die Fenstergröße und -position im Rahmen der physischen Möglichkeiten angepasst.

Kommando Funktion
%WF Schaltet die Rahmung (Frame) ein. Die Größe des Fensters wird durch einen Rahmen angezeigt.

Falls das Fenster kleiner als 4 Zeilen mal 13 Spalten ist, ist der Rahmen nicht sichtbar.

%WM Schaltet die Rahmung aus. Die Größe des Fensters wird nicht durch einen Rahmen angezeigt.

Durch Ausschalten des Rahmens ändert sich die Größe des Fensters nicht (lediglich die Größe des im Fenster sichtbaren Seitenausschnitts).

%WO Die Anzeige von Funktionstastenleiste, Meldungszeile und Statistikzeile wird unterdrückt. Dieses Kommando wirkt nur, falls das betreffende Fenster ein "echtes" Fenster ist (d.h. kleiner als der physische Bildschirm ist).

Um die Wirkung von %WO auszuschalten, geben Sie %WO noch einmal ein (oder %WD).

%WP Standardmäßig werden die Funktionstastenleiste, die Meldungszeile und die Statistikzeile innerhalb eines Fensters angezeigt. Um sie auf dem Schirm außerhalb des Fensters anzuzeigen, verwenden Sie %WP.

Um die Wirkung von %WP auszuschalten, verwenden Sie %WD.

%WD Schaltet die Wirkung von %WF, %WO und %WP sowie der TITLE-Option des DEFINE WINDOW-Statements aus.
%WX Befindet sich außerhalb des Fensters ein *COM-Feld, so ist dieses Feld normalerweise nicht schreibgeschützt. Mit %WX können Sie es schreibgeschützt machen.
%WY Schaltet die Wirkung von %WX wieder aus.

Position des Fensters auf der logischen Seite

Mit den folgenden Window-Kommandos können Sie die Position des Fensters auf der aktuellen logischen Seite ändern, d.h. der vom Natural-Programm angezeigten Ausgabe oder Map. Die Größe dieser logischen Seite kann über die Größe Ihres Bildschirms hinausgehen.

Wenn Sie die Position des Fensters auf der logischen Seite ändern, bleibt die Position des Fensters auf dem physischen Bildschirm unverändert. Die logische Seite verschiebt sich also quasi "unter" dem Fenster:

Logische Seite

Normalerweise — wenn Sie die Position nicht durch eines der folgenden Kommandos ändern — befindet sich das Fenster an der oberen linken Ecke der logischen Seite, d.h. Sie sehen durch das Fenster den oberen linken Ausschnitt der logischen Seite.

Kommando Funktion
%W* Der durch den Cursor auf der Seite markierte Punkt wird an die obere linke Fensterecke geschoben.
%Wlll,ccc Die Seite wird so verschoben, dass der durch Zeile lll /Spalte ccc definierte Punkt an der oberen linken Fensterecke ist. Zeilen und Spalten werden auf der logischen Seite gezählt.
%W< Die Seite verschiebt sich um eine Fensterbreite nach links. Die Verschiebung entspricht der Zeilenbreite (horizontale Ausdehnung) des Fensters.
%W<< Das Fenster wird bis zum linken Rand der Seite verschoben.
%W<n Das Fenster wird um n Stellen nach links verschoben (0 =< n =< Zeilenlänge der Seite).
%W> Die Seite verschiebt sich um eine Fensterbreite nach rechts. Die Verschiebung entspricht der Zeilenbreite (horizontale Ausdehnung) des Fensters.
%W>> Das Fenster wird bis zum rechten Rand der Seite verschoben.
%W>n Das Fenster wird um n Stellen nach rechts verschoben (0 =< n =< Zeilenlänge der Seite).
%W+ Die Seite verschiebt sich um eine Fensterhöhe nach unten. Die Anzahl der verschobenen Zeilen entspricht der Anzahl der Zeilen im Fenster. (*)
%W++ Das Fenster wird ans untere Ende der Seite verschoben. (*)
%W+n Das Fenster wird um n Zeilen nach unten verschoben (0 =< n =< Spaltenlänge der Seite). (*)
%W- Die Seite verschiebt sich um eine Fensterhöhe nach oben. Die Anzahl der verschobenen Zeilen entspricht der Anzahl der Zeilen im Fenster.
%W-- Das Fenster wird ans obere Ende der Seite verschoben.
%W-n Das Fenster wird um n Zeilen nach oben verschoben (0 =< n =< Spaltenlänge der Seite).
%WH Standardmäßig wird die Fenster-Position auf der logischen Seite bei einer Bildschirm-Eingabe/Ausgabe wieder auf die obere linke Ecke zurückgesetzt. %WH bewirkt, dass die gesetzte Fenster-Position beim nächsten Eingabe/Ausgabe nicht zurückgesetzt wird, sondern erhalten bleibt. %WH gilt jeweils nur für den nächsten Eingabe/Ausgabe.
%WS Die STAY-Option ist eingeschaltet; d.h. die Kontrolle bleibt auf der aktuellen Seite, bis das Ende der Seite erreicht ist.

Wenn eine Seite in vertikaler Richtung noch nicht vollständig angezeigt worden ist, wird Ihnen dies durch die Zeichenkette VVVV angezeigt. Jedesmal, wenn Sie EINGABE drücken, verschiebt sich die Seite um ein Fenster nach unten, bis das Seitenende erreicht ist. Mit der nächsten EINGABE wird dann die Kontrolle wieder an das Programm übergeben. Dies gilt nicht für Seiten, die über ein INPUT-Statement mit Eingabefeldern (mit FeldattributAD=A oder AD=M) erzeugt wurden.)

%WN Die STAY-Option ist ausgeschaltet. Wenn Sie EINGABE drücken, wird die Kontrolle an das Programm übergeben.

* Das Fenster kann höchstens bis zur letzten nicht leeren Zeile der Seite verschoben werden.

Anmerkungen:

  1. Wenn Sie eines der obigen Kommandos zum Verschieben des Fensters in einem Programm verwenden wollen, weisen Sie das Kommando einer Funktionstaste zu (mit einem SET KEY-Statement).
  2. Wenn Sie es mit einem SET CONTROL-Statement angeben wollen, muss diesem ein REINPUT-Statement folgen (d.h. es muss zwischen dem REINPUT-Statement und dem entsprechenden INPUT-Statement stehen); sonst kann Natural das Kommando nicht eindeutig einem bestimmten Fenster zuordnen (und ignoriert es).
  3. Allerdings sollte zwischen einem INPUT-Statement mit Option WINDOW='window-name' und dem dazugehörigen REINPUT-Statement grundsätzlich kein SET CONTROL ’W’-Statement stehen.

Beispiele für Kommando-Kombinationen

Sie können die verschiedenen Parameter des %W-Kommandos auch miteinander kombinieren. Zum Beispiel:

%W<<-- Das Fenster wird an die obere linke Ecke der Seite geschoben.
%W>>++ Das Fenster wird an die untere rechte Ecke der Seite geschoben.
%W++- Der (in vertikaler Richtung) vorletzte Fensterausschnitt der Seite wird gezeigt.
%W+3>6 Das Fenster verschiebt sich auf der Seite um 3 Zeilen nach unten und 6 Spalten nach rechts.
%W10+> Das Fenster wird an Zeile 10 der Seite geschoben, dann um ein Fenster nach unten und um ein Fenster nach rechts.
%WL40C10++-3 Das Fenster wird mit einer Zeilenlänge von 40 Stellen und einer Spaltenlänge von 10 Zeilen definiert, es wird ans untere Ende der logischen Seite und dann wieder 3 Zeilen nach oben geschoben.
%WL30C10B3/15--<< Das Fenster wird mit einer Zeilenlänge von 30 Stellen und einer Spaltenlänge von 10 Zeilen definiert, es wird in Zeile 3 und Spalte 15 des physischen Bildschirms platziert und an die obere linke Ecke der logischen Seite geschoben.
%WFS Um das Fenster wird ein Rahmen generiert, und die STAY-Option wird eingeschaltet.

Wenn Sie mehrere Parameter mit dem %W-Kommando angeben, beachten Sie bitte, dass Sie auf Großrechnern nach dem Prozentzeichen (%) höchstens 24 Zeichen angeben können; alle weiteren Zeichen werden ignoriert.

Die Parameter werden der Reihe nach ausgewertet, so dass unterschiedliche Reihenfolgen derselben Parameter zu unterschiedlichen Ergebnissen führen können.

%WA und %WZ — Bildschirm speichern vor Fenster

Kommando Funktion
%WA

Mit %WA aktivieren Sie die Funktion "Bildschirm speichern vor Fenster". Wenn diese Funktion aktiv ist und ein Fenster geöffnet wird, werden alle aktiven Bildschirmdaten, die von dem Fenster überlagert werden, vorher gespeichert. Wenn das Fenster verschoben wird, wird der gespeicherte Bildschirm rekonstruiert, bevor das Fenster an einer anderen Stelle auf dem Schirm aufgebaut wird. Es ist auch möglich, mehrere aufgerufene Fenster zu rekonstruieren, wenn das aufrufende Fenster wieder aktiv wird.

Wenn das aktuelle INPUT-Statement ein Fenster verwendet, wird der Bildschirm gespeichert, bevor das Fenster ausgegeben wird. Wenn dasselbe INPUT-Statement wiederholt wird, wird der aktuelle Bildschirm bzw. alle anschließend gespeicherten Bildschirme rekonstruiert und wieder auf den Schirm zurückgeschrieben.

Diese Funktion ermöglicht beispielsweise die Verwendung von Fenstern in PC-ähnlicher Form. Für ein bestimmtes Fenster können beliebig viele aufgerufene, "abhängige" Fenster gespeichert werden. All diese Fenster verschwinden vom Schirm, wenn das Haupteingabefenster wiederausgeführt wird.

Der Inhalt des Puffers (d.h. die gespeicherten Schirme) wird gelöscht, wenn Natural wieder einen ganzen Bildschirm ausgibt, wenn Natural in den Kommandomodus (NEXT) gelangt, nach einem LOGON-Kommando oder nach Drücken der CLEAR- bzw. LÖSCH-Taste.

%WZ Mit %WZ deaktivieren Sie ein vorhergegangenes %WA-Kommando.