Dieser Abschnitt behandelt folgende Themen:
Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.
Verwandte Statements: INPUT | REINPUT | SET WINDOW
Gehört zur Funktionsgruppe: Bildschirmgenerierung für interaktive Verarbeitung
Das DEFINE WINDOW-Statement dient dazu, Größe, Position und Attribute eines
Bildschirmfensters (Window) zu definieren.
Ein Fenster ist der Ausschnitt einer von einem Programm erzeugten logischen Seite, der auf dem Bildschirm zu sehen ist. Das Fenster ist ständig vorhanden, auch wenn Sie sich dessen nicht bewusst sind, weil die Größe des Fensters, solange Sie sie nicht anders definieren, mit der Größe Ihres Bildschirms identisch ist.
Mit einem DEFINE WINDOW-Statement wird ein Fenster nicht aktiviert; dies
geschieht mit einem SET
WINDOW-Statement oder der WINDOW-Klausel eines INPUT-Statements.
Siehe auch den Abschnitt Bildschirmgestaltung/Fenster im Kapitel Gestaltung von Benutzeroberflächen von Anwendungen im Leitfaden zur Programmierung.
Anmerkung
Es gibt stets nur ein Natural-Fenster, und zwar das jeweils neueste.
Vorherige Fenster mögen auf dem Bildschirm noch sichtbar sein, sind aber nicht länger
aktiv und werden von Natural ignoriert. Sie können Eingaben nur im jeweils neuesten
Fenster machen. Sollte der Platz hierzu nicht ausreichen, müssen Sie das Fenster vorher
entsprechend vergrößern.
Operanden-Definitionstabelle:
| Operand | Mögliche Struktur | Mögliche Formate | Referenzierung erlaubt | Dynam. Definition | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| operand1 | C | S | N | P | I | ja | nein | |||||||||||||
| operand2 | C | S | N | P | I | ja | nein | |||||||||||||
| operand3 | C | S | N | P | I | ja | nein | |||||||||||||
| operand4 | C | S | N | P | I | ja | nein | |||||||||||||
| operand5 | C | S | A | U | ja | nein | ||||||||||||||
Syntax-Element-Beschreibung:
| Syntax-Element | Beschreibung |
|---|---|
window-name
|
Der window-name identifiziert das Fenster. Der
Name darf bis zu 32 Stellen lang sein.
Für Fensternamen gelten die gleichen Namenskonventionen wie für Benutzervariablen. Siehe Namenskonventionen für Benutzervariablen in der Dokumentation Natural benutzen. |
SIZE
|
Mit der Anmerkung Beispiel: Angenommen, die Größe eines Fensters ist mit
|
SIZE AUTO
|
Die Größe des Fensters wird von Natural automatisch zur Laufzeit festgelegt. Die Größe wird wie folgt durch die in das Fenster hineingenerierten Daten bestimmt:
Wenn Sie die Anmerkung |
SIZE QUARTER
|
Die Größe des Fensters entspricht einem Viertel der physischen Bildschirmgröße. |
SIZE operand1 *
operand2
|
Die Größe des Fensters beträgt n Zeilen mal n Spalten. operand1 bestimmt die Anzahl der Zeilen, operand2 die Anzahl der Spalten. Die beiden Operanden dürfen keine Dezimalstellen enthalten. Ist das Fenster gerahmt ( Die kleinstmögliche Fenstergröße ist:
Die größtmögliche Fenstergröße ist die Größe des physischen Bildschirms. |
BASE
|
Mit der BASE-Klausel bestimmen Sie die Position des Fensters
auf dem physischen Bildschirm. Lassen Sie die BASE-Klausel weg, gilt
standardmäßig BASE CURSOR.
|
BASE CURSOR
|
Platziert die obere linke Ecke des Fensters an die aktuelle Cursor-Position. Die Cursor-Position ist die physische Position des Cursors auf dem Bildschirm. Wenn es aufgrund der Größe des Fensters nicht möglich ist, das Fenster an die Cursor-Position zu platzieren, platziert Natural es automatisch so dicht wie möglich an die gewünschte Position. |
BASE TOP/BOTTOM LEFT/RIGHT
|
Platziert das Fenster in die obere linke, untere linke, obere rechte bzw. untere rechte Ecke des physischen Bildschirms. |
BASE
operand3/operand4
|
Platziert die obere linke Ecke des Fensters in die angegebene Zeile/Spalte auf dem physischen Bildschirm. operand3 bestimmt die Zeilennummer, operand4 die Spaltennummer. Die beiden Operanden dürfen keine Dezimalstellen enthalten. Ist es aufgrund der Größe des Fensters nicht möglich, das Fenster an die angegebene Position zu platzieren, erhalten Sie eine Fehlermeldung. |
REVERSED
|
|
REVERSED CD=
background-color
|
Dies bewirkt, dass das Fenster invers und der Fensterhintergrund in der angegebenen Farbe (background-color) angezeigt wird (falls der verwendete Bildschirm dies ermöglicht; falls nicht, wird die betreffende Angabe ignoriert). Informationen über gültige Farbcodes. Session-Parameter |
TITLE
operand5
|
Mit der Die Überschrift kann entweder als Textkonstante (in Apostrophen) oder als Inhalt einer Benutzervariablen angegeben werden. Ist die Überschrift länger als das Fenster, wird sie abgeschnitten. Die Überschrift wird nur angezeigt, wenn das Fenster gerahmt ( Anmerkung |
CONTROL
|
Mit der CONTROL-Klausel bestimmen Sie, ob die PF-Tastenleiste,
die Meldungszeile und die Statistikzeile innerhalb oder außerhalb des Fensters
angezeigt werden.
|
CONTROL WINDOW
|
CONTROL WINDOW zeigt die Zeilen innerhalb des Fensters an.
Wenn Sie die |
CONTROL SCREEN
|
CONTROL SCREEN zeigt die Zeilen auf dem vollen physischen Schirm
außerhalb des Fensters an.
|
FRAMED
|
Standardmäßig, d.h. wenn Sie die Die obere und die untere Rahmenlinie sind cursor-sensitiv: Sie können im Fenster vor, zurück, nach links oder rechts blättern, indem Sie einfach den Cursor auf das entsprechende Symbol (<, -, +, oder >; siehe position-clause unten) stellen und FREIG drücken. Wenn keine Symbole angezeigt werden, können Sie im Fenster vor- oder zurückblättern, indem Sie den Cursor in die obere (zum Zurückblättern) bzw. untere (zum Vorblättern) Rahmenlinie platzieren und FREIG drücken. Anmerkung |
FRAMED OFF
|
Wenn Sie FRAMED OFF angeben, wird die Rahmung und alles mit dem
Rahmen zusammenhängende (Überschrift für das Fenster und
Positionierungsinformationen) ausgeschaltet.
|
FRAMED (CD=
frame-color)
|
Dies bewirkt, dass der Fensterrahmen in der angegebenen Farbe (frame-color) angezeigt wird (falls ein Farbbildschirm verwendet wird; falls nicht, wird die Farbangabe ignoriert). Informationen über gültige Farbcodes siehe Session-Parameter Anmerkung |
position-clause
|
Die POSITION-Klausel wird nur auf z/OS-Computern ausgewertet:
auf allen anderen Plattformen wird sie ignoriert. Einzelheiten, siehe POSITION-Klausel
weiter unten.
|
Die POSITION-Klausel wird nur auf z/OS-Computern ausgewertet, auf allen
anderen Plattformen wird sie ignoriert.
POSITION
|
|
SYMBOL
|
|
TOP
|
|
[AUTO] [SHORT]
|
|
LEFT
|
|
|
|||
BOTTOM
|
RIGHT
|
||||||||||||
TEXT
|
[MORE]
|
|
LEFT
|
|
|||||||||
RIGHT
|
|||||||||||||
OFF
|
|||||||||||||
Mit der POSITION-Klausel steuern Sie die Anzeige von Informationen über
die Position des Fensters auf der logischen Seite: Im Rahmen des Fensters wird
angezeigt, in welche Richtungen die logische Seite nach oben, unten, links und rechts
über das aktuelle Fenster hinausgeht. Dies gilt nur, falls die logische Seite größer als
das Fenster ist; falls nicht, wird die POSITION-Klausel ignoriert.
Wenn Sie die POSITION-Klausel nicht angeben, gilt standardmäßig
POSITION SYMBOL TOP RIGHT.
Für Eingabefelder (AD=A oder AD=M), die sich
nicht vollständig innerhalb des Fensters befinden, gilt folgendes:
Ein Eingabefeld, dessen Anfang außerhalb des Fensters liegt, wird immer zu einem geschützten Feld gemacht.
Ein Eingabefeld, das im Fenster beginnt, aber außerhalb des Fensters endet, wird nur
dann geschützt, wenn der Wert, den es enthält, nicht vollständig innerhalb des
Fensters sichtbar ist. Bitte beachten Sie, dass es hierbei darauf ankommt, ob die
Wertlänge, nicht die Feldlänge, über das Fenster hinausgeht.
Füllzeichen (wie mit dem Profilparameter FC angegeben) zählen nicht als Teil des
Wertes.
Falls Sie in ein derart geschütztes Eingabefeld Eingaben machen möchten, müssen Sie zunächst die Fenstergröße so ändern, dass sich der Anfang des Feldes/das Ende des Feldwertes innerhalb des Fensters befindet.
Ein DEFINE WINDOW-Statement darf nicht innerhalb einer logischen Bedingung
stehen. Wollen Sie in Abhängigkeit von einer Bedingung unterschiedliche Fenster aufrufen,
verwenden Sie dazu verschiedene SET
WINDOW-Statements (bzw. INPUT-Statements mit
WINDOW-Klausel) in einer Bedingung.
** Example 'DWDEX1': DEFINE WINDOW
************************************************************************
DEFINE DATA LOCAL
01 #I (P3)
END-DEFINE
*
SET KEY PF1='%W<<' PF2='%W>>' PF4='%W--' PF5='%W++'
*
DEFINE WINDOW WIND1
SIZE QUARTER
BASE TOP RIGHT
FRAMED ON POSITION SYMBOL AUTO
*
SET WINDOW 'WIND1'
FOR #I = 1 TO 10
WRITE 25X #I 'THIS IS SOME LONG TEXT' #I
END-FOR
*
END
Ausgabe des Programms DWDEX1:
+------------------------More: + >+
> r ! Page 1 !
All ....+....1....+....2....+....3.. ! !
0010 ** Example 'DWDEX1': DEFINE WIND ! 1 THIS !
0020 ******************************** ! 2 THIS !
0030 DEFINE DATA LOCAL ! 3 THIS !
0040 01 #I (P3) ! 4 THIS !
0050 END-DEFINE ! 5 THIS !
0060 * ! 6 THIS !
0070 SET KEY PF1='%W<<' PF2='%W>>' PF ! 7 THIS !
0080 * ! MORE !
0090 DEFINE WINDOW WIND1 +-------------------------------------+
0100 SIZE QUARTER
0110 BASE TOP RIGHT
0120 FRAMED ON POSITION SYMBOL AUTO
0130 *
0140 SET WINDOW 'WIND1'
0150 FOR #I = 1 TO 10
0160 WRITE 25X #I 'THIS IS SOME LONG TEXT' #I
0170 END-FOR
0180 *
0190 END
0200
....+....1....+....2....+....3....+....4....+....5....+... S 19 L 1