Dieser Abschnitt beschreibt die Möglichkeiten zur Gestaltung des Bildschirm-Layouts.
Mit dem Terminalkommando %Y geben Sie an, wie und wo die
Natural-Funktionstastenleiste angezeigt werden soll.
Dieser Abschnitt enthält Informationen zu folgenden Themen:
Die folgenden Terminalkommandos legen das Format der Funktionstastenleiste fest:
- %YN
Die Funktionstastenleiste wird im tabellarischen Software-AG-Format angezeigt:
Kommando ===> Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Help Exit Canc- %YS
Die Funktionstastenleiste zeigt die einzelnen Tasten und ihre Belegung nacheinander, und zwar nur die Tasten, die mit Funktionen belegt sind:
(PF1=Funktion,PF2=Funktion usw.):
Kommando ===> PF1=Help,PF3=Exit,PF12=Canc- %YP
Die Funktionstastenleiste erscheint im PC-Format, d.h. die einzelnen Tasten werden nacheinander angezeigt, und zwar nur die Tasten, denen Funktionen zugewiesen wurden:
(F1=Funktion,F2=Funktion usw.)
Kommando ===> F1=Help,F3=Exit,F12=Canc
Es stehen verschiedene andere Optionen zur Anzeige der Funktionstastenleiste zur Verfügung, wie:
ein- und zweizeilige Darstellung
intensivierte Darstellung
inverse Darstellung
farbige Darstellung
Einzelheiten zu diesen Optionen entnehmen Sie dem Abschnitt %Y - Steuerung der PF-Tastenleiste in der Terminalkommandos-Dokumentation.
- %YB
Die Funktionstastenleiste wird am unteren Bildschirmrand angezeigt:
13:33:52 ***** NATURAL ***** 2022-11-24 Benutzer SAG - Hauptmenue - Library SAGTEST Funktion _ Entwicklungsfunktionen _ Einstellungen der Entwicklungsumgebung _ Pflegen und Uebertragen von Objekten _ Fehlersuche und Systemueberwachung _ Beispiel-Libraries _ Andere Produkte _ Hilfe _ Natural-Session beenden Kommando ===> Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Help Exit Canc- %YT
Die Funktionstastenleiste wird am oberen Bildschirmrand angezeigt:
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Help Exit Canc 13:33:52 ***** NATURAL ***** 2022-11-24 Benutzer SAG - Hauptmenue - Library SAGTEST Funktion _ Entwicklungsfunktionen _ Einstellungen der Entwicklungsumgebung _ Pflegen und Uebertragen von Objekten _ Fehlersuche und Systemueberwachung _ Beispiel-Libraries _ Andere Produkte _ Hilfe _ Natural-Session beenden Kommando ===>- %Ynn
Die Funktionstastenleiste wird in der nn-ten Zeile des Bildschirms angezeigt. Im nachfolgenden Beispiel befindet sich die Funktionstastenleiste in Zeile 10:
13:33:52 ***** NATURAL ***** 2022-11-24 Benutzer SAG - Hauptmenue - Library SAGTEST Funktion _ Entwicklungsfunktionen _ Einstellungen der Entwicklungsumgebung _ Pflegen und Uebertragen von Objekten Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Help Exit Canc _ Fehlersuche und Systemueberwachung _ Beispiel-Libraries _ Andere Produkte _ Hilfe _ Natural-Session beenden Kommando ===>
- %YC
Dieses Kommando macht die Funktionstastenleiste Cursor-empfindlich. Sie reagiert dann wie eine Aktionsleiste auf einem PC-Bildschirm: der Benutzer wählt mit dem Cursor lediglich den Namen oder die Nummer der gewünschten Funktionstaste aus und drückt EINGABE, und Natural reagiert, als ob die betreffende Funktionstaste gedrückt worden wäre.
Durch nochmaliges Eingeben von
%YCschalten Sie die Cursor-Sensitivität wieder aus.Durch Verwendung von
%YCin Verbindung mit tabellarischem Anzeigeformat (%YN) und einzeiliger Anzeige (%YH) können Sie Ihre Anwendungen mit einer sehr komfortablen Aktionsleisten-Verarbeitung ausstatten: der Benutzer wählt dann nur noch den Namen einer Funktion mit dem Cursor aus und drückt EINGABE, und die Funktion wird ausgeführt.
Mit dem Terminalkommando %M geben Sie an, wie und wo die
Natural-Meldungszeile angezeigt werden soll.
Im folgenden finden Sie Informationen zu:
- %MB
Die Meldungszeile wird am unteren Bildschirmrand angezeigt:
13:43:40 ***** NATURAL ***** 2022-11-24 Benutzer SAG - Hauptmenue - Library SAGTEST Funktion _ Entwicklungsfunktionen _ Einstellungen der Entwicklungsumgebung _ Pflegen und Uebertragen von Objekten _ Fehlersuche und Systemueberwachung _ Beispiel-Libraries _ Andere Produkte _ Hilfe _ Natural-Session beenden Kommando ===> Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Help Exit Canc NAT4492 Bitte eine Funktion selektieren/eingeben.- %MT
Die Meldungszeile wird am oberen Bildschirmrand angezeigt:
NAT4492 Bitte eine Funktion selektieren/eingeben. 13:43:40 ***** NATURAL ***** 2022-11-24 Benutzer SAG - Hauptmenue - Library SAGTEST Funktion _ Entwicklungsfunktionen _ Einstellungen der Entwicklungsumgebung _ Pflegen und Uebertragen von Objekten _ Fehlersuche und Systemueberwachung _ Beispiel-Libraries _ Andere Produkte _ Hilfe _ Natural-Session beenden Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12--- Help Exit Canc Kommando ===>
Weitere Optionen zur Positionierung der Meldungszeile sind im Abschnitt %M - Steuerung der Meldungszeile in der Terminalkommandos-Dokumentation beschrieben.
- %MP
Der Schutz der Meldungszeile wird ein- bzw. ausgeschaltet. Ist die Meldungszeile nicht geschützt, kann sie auch für Bildschirmeingaben benutzt werden.
- %M=color-code
Die Meldungszeile wird in der angegebenen Farbe angezeigt (eine Beschreibung der Farbcodes finden Sie unter Session-Parameter
CDin der Parameter-Referenz-Dokumentation.
Mit dem Terminalkommando %= können Sie bestimmten Feldern bestimmte Farben
zuweisen, und zwar für Programme, die ursprünglich ohne Berücksichtigung von Farbgebung
geschrieben wurden. Sie geben einen Feldtyp und/oder ein Feldattribut an sowie eine Farbe.
Alle Felder/Texte dieses Typs/Attributs werden dann in dieser Farbe angezeigt.
Außerdem können Sie bestehende Farbzuweisungen ändern, falls bereits vordefinierte Farbgebungen ungeeignet sind.
Darüber hinaus können Sie das Terminalkommando %= in den
Natural-Editoren benutzen, um Farben dynamisch zuordnen, z.B. beim Erstellen einer Maske
(Map).
| Codes | Beschreibung |
|---|---|
| leer | Bestehende Farbzuweisungen werden gelöscht. |
F |
Neu definierte Farbzuweisungen gelten statt denen des Programms. |
N |
Im Programm definierte Farbzuweisungen behalten ihre Gültigkeit. |
O |
Ausgabefeld (Output). |
M |
Modifizierbares Feld (Aus- und Eingabe). |
T |
Textkonstante. |
B |
Blinkend. |
C |
Kursiv. |
D |
Standard (Default). |
I |
Intensiviert. |
U |
Unterstrichen. |
V |
Invers. |
BG |
Bildschirmhintergrund (Background). |
BL |
Blau. |
GR |
Grün. |
NE |
Neutral. |
PI |
Rosa (Pink). |
RE |
Rot (Red). |
TU |
Türkis. |
YE |
Gelb (Yellow). |
Beispiel:
%=TI=RE,OB=YE
Dieses Beispiel ordnet die Farbe Rot allen intensivierten Text-Feldern und Gelb allen blinkenden Ausgabefeldern zu.
"Outlining" (Boxing) ist die Möglichkeit, bestimmte Felder auf dem Bildschirm "eingerahmt" (d.h. von einer Linie umgeben) anzuzeigen. Diese Form der Anzeige ist eine weitere Möglichkeit, dem Benutzer Länge und Position von Feldern auf dem Bildschirm deutlich zu machen.
"Outlining" ist nur auf bestimmten Terminaltypen möglich, in der Regel auf solchen, die auch Doppelbyte-Zeichensätze (Kanji) unterstützen.
Mit dem Terminalkommando %D=B steuern Sie das "Outlining".
Einzelheiten zu diesem Kommando entnehmen Sie dem entsprechenden Abschnitt in der
Terminalkommandos-Dokumentation.
Dieses Terminalkommando steuert die Anzeige der Natural-Statistikzeile/Infoline. Die Zeile kann als Statistikzeile oder als Infoline benutzt werden, aber nicht beides gleichzeitig.
Im Folgenden finden Sie Informationen zu:
%X schaltet die
Anzeige der Statistikzeile/Infoline ein bzw. wieder aus. Schalten Sie die Statistikzeile
ein, so können Sie statistische Informationen sehen wie:
die Anzahl der während der letzten Bildschirmoperation an den Bildschirm übergebenen Bytes,
die logische Zeilenlänge der aktuellen logischen Seite,
die physische Zeilenlänge des aktiven Natural-Fensters.
Weitere Einzelheiten zur Statistikzeile können Sie der Beschreibung des
Terminalkommandos %X in der
Terminalkommandos-Dokumentation.
Das nachstehende Beispiel zeigt die Statistikzeile, wie sie unten am Bildschirmrand angezeigt wird:
> > + Program POS Lib SAG
All ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 SET CONTROL 'XB'
0020 SET CONTROL 'XI-'
0030 DEFINE PRINTER (2) OUTPUT 'INFOLINE'
0040 WRITE (2) 'EXECUTING' *PROGRAM 'BY' *INIT-USER
0050 WRITE 'TEST OUTPUT'
0070 END
0080
0090
0100
0110
0120
0130
0140
0150
0160
0170
0180
0190
0200
IO=264,AI =292,L=0 C= ,LS=80,P =23,PLS=80,PCS=24,FLD=82,CLS=1,ADA=0
|
Sie können die Statistikzeile auch als Infoline benutzen, in der Sie Status-Informationen ausgeben können, z.B. bei der Fehlersuche. Alternativ können Sie die Infoline als Trennlinie (wie in den SAA-Standards definiert) verwenden.
%XI+ definiert die Statistikzeile als Infoline.
Sobald Sie die Infoline mit dem oben erwähnten Kommando aktiviert haben, können Sie die
Infoline als Ausgabemedium für Daten mit dem DEFINE PRINTER-Statement definieren, wie im folgenden
Beispiel veranschaulicht:
SET CONTROL 'XT' SET CONTROL 'XI+' DEFINE PRINTER (2) OUTPUT 'INFOLINE' WRITE (2) 'EXECUTING' *PROGRAM 'BY' *INIT-USER WRITE 'TEST OUTPUT' END
Wenn dieses Programm gestartet wird, werden die Status-Informationen in der Infoline am oberen Rand des Ausgabeschirms angezeigt:
EXECUTING POS BY SAG
Page 1 2014-02-07 09:34:08
TEST OUTPUT
|
Weitere Einzelheiten zur Statistikzeile/Infoline, siehe das Terminalkommando %X in der
Terminalkommandos-Dokumentation.
Im folgenden finden Sie Informationen zu:
Ein Fenster ist jener, von einem Programm aufgebaute Abschnitt einer logischen Seite, der auf dem Terminal-Bildschirm angezeigt wird.
Eine logische Seite ist der Ausgabebereich für Natural; mit anderen Worten enthält die logische Seite den/die vom Natural-Programm für die Anzeige erzeugte/n Report/Map. Diese logische Seite kann breiter als der physische Bildschirm sein.
Es ist immer ein Fenster vorhanden, auch wenn dessen Vorhandensein Ihnen nicht bewusst
sein mag. Wenn es (durch ein DEFINE
WINDOW-Statement) nicht anders angegeben ist, ist die Größe des
Fensters mit der physischen Größe Ihres Terminal-Bildschirms identisch.
Sie können ein Fenster auf zwei Arten handhaben:
Sie können die Größe und Position des Fensters auf dem physischen Bildschirm steuern.
Sie können die Position des Fensters auf der logischen Seite steuern.
Die Abbildung unten veranschaulicht die Positionierung des Fensters auf dem physischen Bildschirm. Beachten Sie, dass in beiden Fällen der gleiche Ausschnitt der logischen Seite angezeigt wird; es wird lediglich die Position des Fensters auf dem physischen Bildschirm geändert.

Die Abbildung unten veranschaulicht die Positionierung des Fensters auf der logischen Seite.
Wenn Sie die Position des Fensters auf der logischen Seite verändern, bleiben Position und Größe des Fensters auf dem physischen Bildschirm gleich; d.h. das Fenster wird nicht über der logischen Seite bewegt, sondern die logische Seite wird sozusagen "unter" dem Fenster verschoben.

Das DEFINE WINDOW-Statement
dient dazu, die Größe, Position und Attribute eines Bildschirmfensters auf dem
physischen Bildschirm zu definieren.
Mit einem DEFINE WINDOW-Statement wird ein Fenster nicht aktiviert; dies
geschieht mit einem SET
WINDOW-Statement oder der WINDOW-Klausel eines
INPUT-Statements.
Das DEFINE WINDOW-Statement
bietet verschiedene Optionen. Diese werden anhand des nachstehenden Beispiels erläutert.
Es bezieht sich auf die standardmäßige Terminaltyp-Einstellung von Natural; siehe auch
Terminalkommando %T= und Profilparameter TTYPE).
Das folgende Programm definiert ein Fenster auf dem physischen Bildschirm.
** Example 'WINDX01': DEFINE WINDOW
************************************************************************
DEFINE DATA LOCAL
1 COMMAND (A10)
END-DEFINE
*
DEFINE WINDOW TEST
SIZE 5*25
BASE 5/40
TITLE 'Sample Window'
CONTROL WINDOW
FRAMED POSITION SYMBOL BOTTOM LEFT
*
INPUT WINDOW='TEST' WITH TEXT 'message line'
COMMAND (AD=I'_') /
'dataline 1' /
'dataline 2' /
'dataline 3' 'long data line'
*
IF COMMAND = 'TEST2'
FETCH 'WINDX02'
ELSE
IF COMMAND = '.'
STOP
ELSE
REINPUT 'invalid command'
END-IF
END-IF
END
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.
Hier lautet der Name TEST.
Mit der SIZE-Klausel
bestimmen Sie die Größe des Fensters. In dem Beispiel ist das Fenster 5 Zeilen hoch und
25 Spalten (Stellen) breit.
Mit der BASE-Klausel
bestimmen Sie die Position des Fensters auf dem physischen Bildschirm. In dem Beispiel
ist die obere linke Ecke des Fensters auf Zeile 5, Spalte 40 positioniert.
Mit der TITLE-Klausel können Sie eine Überschrift für das Fenster
angeben. Die angegebene Überschrift wird zentriert in der oberen Rahmenzeile des
Fensters angezeigt (natürlich nur, wenn ein Rahmen für das Fenster definiert ist).
Mit der CONTROL-Klausel können sie festlegen, ob die PF-Tastenzeile,
die Meldungs- und die Statistikzeile in dem Fenster oder auf dem vollen physischen
Bildschirm angezeigt werden. In diesem Fall bewirkt CONTROL WINDOW, dass
die Meldungszeile im Fenster angezeigt wird. CONTROL SCREEN hingegen
bewirkt, dass die Zeilen auf dem vollen physischen Bildschirm außerhalb des Fenster
angezeigt werden. Wenn Sie die CONTROL-Klausel weglassen, gilt
standardmäßig CONTROL WINDOW.
Mit der FRAMED-Option
geben Sie an, dass das Fenster eingerahmt werden soll.
Dieser Rahmen ist dann cursor-sensitiv. Sie können gegebenenfalls im Fenster vor,
zurück, nach rechts oder links blättern, indem Sie den Cursor einfach auf das
entsprechende Symbol <, -, + oder
> (vgl. POSITION-Klausel weiter unten) platzieren und
EINGABE drücken. Anders ausgedrückt, bewegen Sie damit die logische Seite
unter dem Fenster auf dem physischen Bildschirm. Werden keine Symbole angezeigt, können
Sie vor- und zurückblättern, indem Sie den Cursor in die obere (zum Zurückblättern) bzw.
untere (zum Vorblättern) Rahmenzeile platzieren und EINGABE drücken.
Mit der POSITION-Klausel der FRAMED-Option bestimmen Sie, dass Informationen über die
Position des Fensters auf der logischen Seite in dem Fensterrahmen angezeigt werden.
Diese Positionsangaben werden nur angezeigt, wenn die logische Seite größer ist als das
Fenster; sonst wird die POSITION-Klausel ignoriert. Die Positionsangaben
geben an, in welche Richtungen die logische Seite nach oben, unten, links und rechts
über das aktuelle Fenster hinausgeht.
Wird keine POSITION-Klausel angegeben, gilt standardmäßig POSITION
SYMBOL TOP RIGHT.
POSITION
SYMBOL bewirkt, dass die Positionsangaben als Symbole More:
< - + > angezeigt werden. Die Angaben werden in der oberen und/oder
unteren Rahmenzeile angezeigt.
TOP/BOTTOM bestimmt, in welcher Rahmenzeile (oben oder unten)
die Angaben erscheinen sollen.
LEFT/RIGHT bestimmt, ob die Positionsangaben im linken oder
rechten Teil der Rahmenzeile angezeigt werden.
Mit dem Terminalkommando %F=chv bestimmen
Sie, aus welchen Zeichen der Fensterrahmen zusammengesetzt werden soll.
c |
Das erste Zeichen wird für die vier Ecken (corners) des Rahmens verwendet. |
|---|---|
h |
Das zweite Zeichen wird für die horizontalen Linien des Rahmens verwendet. |
v |
Das dritte Zeichen wird für die vertikalen Linien des Rahmens verwendet. |
Beispiel:
%F=+-!
Der mit dem obigen Kommando definierte Fensterrahmen sieht wie folgt aus:
+------------------------+ ! ! ! ! ! ! ! ! +------------------------+
Das INPUT
WINDOW-Statement aktiviert das in dem DEFINE WINDOW-Statement definierte
Fenster. In dem Beispiel wird das Fenster TEST aktiviert. Wollen Sie Daten
in einem Fenster ausgeben (z.B. mit einem WRITE-Statement), benutzen Sie das SET WINDOW-Statement.
Wenn das obige Programm ausgeführt wird, wird das Fenster mit einem Eingabefeld
COMMAND angezeigt. Mit dem Session-Parameter AD legen Sie fest, dass der
Wert des Feldes intensiviert dargestellt und ein Unterstrich als Füllzeichen benutzt
wird.
Ausgabe des Programms WINDX01:
> r > + Program WINDX01 Lib SYSEXPG
Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 ** Example 'WINDX01': DEFINE WINDOW
0020 ******************************* +----Sample Window-----+ ***************
0030 DEFINE DATA LOCAL ! message line !
0040 1 COMMAND (A10) ! COMMAND __________ !
0050 END-DEFINE ! dataline 1 !
0060 * +More: + >---------+
0070 DEFINE WINDOW TEST
0080 SIZE 5*25
0090 BASE 5/40
0100 TITLE 'Sample Window'
0110 CONTROL WINDOW
0120 FRAMED POSITION SYMBOL BOTTOM LEFT
0130 *
0140 INPUT WINDOW='TEST' WITH TEXT 'message line'
0150 COMMAND (AD=I'_') /
0160 'dataline 1' /
0170 'dataline 2' /
0180 'dataline 3' 'long data line'
0190 *
0200 IF COMMAND = 'TEST2'
....+....1....+....2....+....3....+....4....+....5....+... S 29 L 1
|
Die in der unteren Rahmenzeile erscheinenden Positionsangaben More + >
zeigen an, dass die logische Seite mehr Informationen enthält, als im Fenster zu sehen
sind.
Um die Informationen anzuzeigen, die sich weiter unten auf der logischen Seite
befinden, platzieren Sie den Cursor in die untere Rahmenzeile auf das
+-Symbol und drücken EINGABE.
Dadurch wird das Fenster nach unten bewegt. Beachten Sie, dass der Text long data
line (lange Datenzeile) nicht in das Fenster passt und daher nicht vollständig
angezeigt wird.
> r > + Program WINDX01 Lib SYSEXPG
Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 ** Example 'WINDX01': DEFINE WINDOW
0020 ******************************* +----Sample Window-----+ ***************
0030 DEFINE DATA LOCAL ! message line !
0040 1 COMMAND (A10) ! dataline 3 long data !
0050 END-DEFINE ! dataline 2 !
0060 * +More: - >---------+
0070 DEFINE WINDOW TEST
0080 SIZE 5*25
0090 BASE 5/40
0100 TITLE 'Sample Window'
0110 CONTROL WINDOW
0120 FRAMED POSITION SYMBOL BOTTOM LEFT
0130 *
0140 INPUT WINDOW='TEST' WITH TEXT 'message line'
0150 COMMAND (AD=I'_') /
0160 'dataline 1' /
0170 'dataline 2' /
0180 'dataline 3' 'long data line'
0190 *
0200 IF COMMAND = 'TEST2'
....+....1....+....2....+....3....+....4....+....5....+... S 29 L 1
|
Um diese verborgenen Informationen auf der rechten Seite zu sehen, platzieren
Sie den Cursor in die untere Rahmenzeile auf das >-Symbol und drücken
EINGABE. Das Fenster wird dadurch auf der logischen Seite nach rechts
bewegt; das vorher unsichtbare Wort line (Zeile) wird angezeigt:
> r > + Program WINDX01 Lib SYSEXPG
Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7..
0010 ** Example 'WINDX01': DEFINE WINDOW
0020 ******************************* +----Sample Window-----+ ***************
0030 DEFINE DATA LOCAL ! message line !
0040 1 COMMAND (A10) ! line ! <==
0050 END-DEFINE ! !
0060 * +More: < - ---------+
0070 DEFINE WINDOW TEST
0080 SIZE 5*25
0090 BASE 5/40
0100 TITLE 'Sample Window'
0110 CONTROL WINDOW
0120 FRAMED POSITION SYMBOL BOTTOM LEFT
0130 *
0140 INPUT WINDOW='TEST' WITH TEXT 'message line'
0150 COMMAND (AD=I'_') /
0160 'dataline 1' /
0170 'dataline 2' /
0180 'dataline 3' 'long data line'
0190 *
0200 IF COMMAND = 'TEST2'
....+....1....+....2....+....3....+....4....+....5....+... S 29 L 1
|
Sie können mehrere Fenster öffnen. Allerdings ist jeweils nur ein Natural-Fenster aktiv, und zwar das letzte. Vorherige Fenster mögen auf dem Bildschirm noch sichtbar sein, sind aber nicht mehr aktiv und werden von Natural ignoriert. Sie können Eingaben nur im jeweils letzten Fenster machen. Sollte der Platz hierzu nicht ausreichen, müssen Sie das Fenster vorher entsprechend vergrößern.
Wird TEST2 in das COMMAND-Feld eingegeben, wird das
Programm WINDX02 ausgeführt.
** Example 'WINDX02': DEFINE WINDOW
************************************************************************
DEFINE DATA LOCAL
1 COMMAND (A10)
END-DEFINE
*
DEFINE WINDOW TEST2
SIZE 5*30
BASE 15/40
TITLE 'Another Window'
CONTROL SCREEN
FRAMED POSITION SYMBOL BOTTOM LEFT
*
INPUT WINDOW='TEST2' WITH TEXT 'message line'
COMMAND (AD=I'_') /
'dataline 1' /
'dataline 2' /
'dataline 3' 'long data line'
*
IF COMMAND = 'TEST'
FETCH 'WINDX01'
ELSE
IF COMMAND = '.'
STOP
ELSE
REINPUT 'invalid command'
END-IF
END-IF
END
Ein zweites Fenster wird nun geöffnet. Das andere Fenster ist zwar noch sichtbar, jedoch inaktiv.
message line > r > + Program WINDX01 Lib SYSEXPG Top ....+....1....+....2....+....3....+....4....+....5....+....6....+....7.. 0010 ** Example 'WINDX01': DEFINE WINDOW 0020 ******************************* +----Sample Window-----+ *************** 0030 DEFINE DATA LOCAL ! message line ! Inactive 0040 1 COMMAND (A10) ! COMMAND TEST2_____ ! Window 0050 END-DEFINE ! dataline 1 ! <== 0060 * +More: + >---------+ 0070 DEFINE WINDOW TEST 0080 SIZE 5*25 0090 BASE 5/40 0100 TITLE 'Sample Window' 0110 CONTROL WINDOW 0120 FRAMED POSITION SYMBOL B +------Another Window-------+ Currently 0130 * ! COMMAND __________ ! Active 0140 INPUT WINDOW='TEST' WITH TEXT ' ! dataline 1 ! Window 0150 COMMAND (AD=I'_') / ! dataline 2 ! <== 0160 'dataline 1' / +More: +------------------+ 0170 'dataline 2' / 0180 'dataline 3' 'long data line' 0190 * 0200 IF COMMAND = 'TEST2' |
Beachten Sie, dass die Meldungszeile (message line) für das neue Fenster außerhalb
des Fensters (oben auf dem physischen Bildschirm)angezeigt wird. Dies wurde mit der
CONTROL
SCREEN-Klausel im Programm WINDX02 definiert.
Weitere Einzelheiten zu den Statements DEFINE WINDOW, INPUT WINDOW und
SET WINDOW finden Sie in
den entsprechenden Beschreibungen in der
Statements-Dokumentation.
Ein Standard-Layout kann im Map-Editor definiert werden. Wird dieses Layout bei der Erstellung aller Maps (Masken) verwendet, so wird gewährleistet, dass die gesamte Anwendung ein einheitliches Erscheinungsbild aufweist.
Wenn eine Map, die ein Standard-Layout referenziert, initialisiert wird, wird dieses Layout zum festen Bestandteil der Map. Falls das Standard-Layout nachträglich geändert wird, bedeutet dies allerdings, dass alle Maps neu katalogisiert werden müssen, damit die Änderungen greifen.
Im Gegensatz zum Standard-Layout, wird ein dynamisches Layout nicht zum festen Bestandteil einer sich darauf beziehenden Map; vielmehr wird das Layout jeweils zur Laufzeit generiert.
Wenn Sie also im Map-Editor die Layout-Map als dynamisch definieren, werden alle Änderungen der Layout-Map automatisch auch bei allen Maps, die sich darauf beziehen, durchgeführt. Die Maps müssen nicht neu katalogisiert werden.
Weitere Einzelheiten über Standard-Layouts und dynamische Layouts für Maps finden Sie im Abschnitt Format unter Masken-Editor in der Editoren-Dokumentation.
Mit Natural können Sie mehrsprachige Anwendungen für den internationalen Einsatz erstellen.
Maps, Helproutinen, Fehlermeldungen, Programme, Functions,Subprogramme und Copycodes können in bis zu 60 verschiedenen Sprachen (inklusive Sprachen, die einen Doppelbyte-Zeichensatz benutzen) definiert werden.
Im folgenden finden Sie Informationen zu:
In Natural hat jede Sprache einen Sprachcode (von 1 bis
60). Die folgende Tabelle ist ein Auszug der Gesamttabelle der
Sprachcodes.
Eine vollständige Aufstellung der Sprachcodes finden Sie in der Beschreibung der
Systemvariablen *LANGUAGE in der
Systemvariablen-Dokumentation.
| Sprachcode | Sprache | Mapcode in Objekt-Namen |
|---|---|---|
| 1 | Englisch | 1 |
| 2 | Deutsch | 2 |
| 3 | Französisch | 3 |
| 4 | Spanisch | 4 |
| 5 | Italienisch | 5 |
| 6 | Niederländisch | 6 |
| 7 | Türkisch | 7 |
| 8 | Dänisch | 8 |
| 9 | Norwegisch | 9 |
| 10 | Albanisch | A |
| 11 | Portugiesisch | B |
Der Sprachcode (linke Spalte) ist der Code, der in der Systemvariable *LANGUAGE
enthalten ist. Dieser Code wird von Natural intern benutzt. Es ist der Code, den Sie zur
Definition der Benutzersprache benutzen (siehe Definition der
Benutzersprache weiter unten). Der Code, den Sie zur
Identifikation der Sprache eines Natural-Objekts angeben, ist der Mapcode in
der rechten Spalte der Tabelle.
Beispiel:
Der Sprachcode für Portugiesisch ist 11. Der Code, den Sie beim
Katalogisieren eines portugiesischen Natural-Objekts angeben, ist B.
Sie definieren die Sprache eines Natural-Objektes (Map, Helproutine, Programm, Subprogramm oder Copycode), indem Sie den entsprechenden Mapcode dem Objektnamen hinzufügen. Bis auf diesen Mapcode muss der Objektname identisch für alle Sprachen sein.
Beim folgenden Beispiel wurden zwei Maps erzeugt, und zwar eine englische und eine deutsche. Um die Sprachen der Maps zu identifizieren, wurde der entsprechende Mapcode jeweils den Mapnamen hinzugefügt.
DEMO1 = englische Map (Mapcode 1)
DEMO2 = deutsche Map (Mapcode 2)
Mapcodes können im Bereich 1-9, A-Z oder a-y
liegen. Die alphabetischen Mapcodes bedürfen einer besonderen Handhabung.
Normalerweise ist es nicht möglich, ein Objekt zu katalogisieren, das einen Kleinbuchstaben im Namen hat - alle Buchstaben werden automatisch in Großbuchstaben umgewandelt.
Genau dies ist aber erforderlich, wenn Sie z.B. ein Objekt als japanisch (Kanji)
definieren wollen. Japanisch hat den Sprachcode 59 und den Mapcode
x.
Um ein solches Objekt zu katalogisieren, müssen Sie zuerst den Sprachcode (in diesem
Fall Sprachcode 59) richtig setzen, indem Sie das Terminalkommando
%L=nn
(nn entspricht dem Sprachcode) benutzen.
Jetzt können Sie das Objekt katalogisieren, wobei Sie das Und-Zeichen (&) anstelle
des eigentlichen Mapcodes im Objektnamen benutzen. Um eine japanische Version der Map
DEMO zu erhalten, katalogisieren Sie die Map also unter dem Namen
DEMO&.
Wenn Sie jetzt in der Liste der Natural-Objekte nachschauen, wird die Map
richtigerweise als DEMOx aufgelistet.
Sie können Objekte mit Sprachcode 1 bis 9 und A
bis Z direkt katalogisieren, d.h. ohne die &-Notation.
Im nachfolgenden Beispiel sehen Sie die drei Maps DEMO1,
DEMO2 und DEMOx. Um die Map DEMOx zu löschen,
benutzen Sie die gleiche Technik wie bei der Definition des Mapnamens, d.h. Sie setzen
zuerst die richtige Sprache mit dem Terminalkommando %L=59, dann bestätigen Sie den Löschvorgang
mit der &-Notation (DEMO&).
11:48:55 ***** NATURAL LIST COMMAND ***** 2014-02-17
User SAG - LIST Objects in a Library - Library SAGTEST
Cmd Name Type S/C SM Version User ID Date Time
--- *________ M__________ *__ * *______ *________ *__________ *________
__ DEMO Ma +---------------DELETE---------------+ 013-10-24 11:31:51
de DEMOx Ma ! +----------DELETE----------+ ! 013-10-24 11:31:51
__ DEMOB Ma ! ! ! ! 013-10-24 11:31:51
__ DEMO1 Ma ! ! Please confirm deletion ! ! 013-10-24 11:31:51
__ DEMO2 Ma ! ! with name DEMOx ! ! 013-10-24 11:31:51
__ MAPTEST Ma ! ! DEMO&___ ! n ! 012-07-24 10:04:44
__ MAP01 Ma ! +--------------------------+ ! 012-07-24 10:04:25
! !
+------------------------------------+
7 Objects found
Command ===>
Enter-PF1---PF2---PF3---PF4---PF5---PF6---PF7---PF8---PF9---PF10--PF11--PF12---
Help Print Exit Sort -- - + ++ > Canc
|
Sie können pro Benutzer bestimmen, welche Sprache (wie in der Systemvariablen *LANGUAGE
definiert) benutzt wird, und zwar mit dem Profilparameter ULANG (der in der
Parameter-Referenz-Dokumentation beschrieben ist) oder mit dem
Terminalkommando %L=nn (wobei
nn der Sprachcode ist).
Um in einem Programm mehrsprachige Objekte zu referenzieren, benutzen Sie das
&-Zeichen im Namen des Objektes.
Das Programm unten benutzt die zwei Maps DEMO1 und DEMO2. Das
&-Zeichen am Ende des Mapnamens steht anstelle des Mapcodes und
bedeutet, dass die Map mit der Sprache, die dem Wert in der Systemvariable
*LANGUAGE entspricht, benutzt werden soll.
DEFINE DATA LOCAL 1 PERSONNEL VIEW OF EMPLOYEES 2 NAME (A20) 2 PERSONNEL-ID (A8) 1 CAR VIEW OF VEHICLES 2 REG-NUM (A15) 1 #CODE (N1) END-DEFINE * INPUT USING MAP 'DEMO&' /* <--- INVOKE MAP WITH CURRENT LANGUAGE CODE ...
Wird dieses Programm ausgeführt, so wird die englische Map (DEMO1)
ausgegeben, denn der Wert von *LANGUAGE ist 1 =
englisch.
MAP DEMO1
SAMPLE MAP
Please select a function!
1.) Employee information
2.) Vehicle information
Enter code here: _
|
Im Beispiel unten wird der Sprachcode auf 2 = deutsch umgesetzt und zwar
mit dem Terminalkommando %L=2.
Wird das Programm nun ausgeführt, wird die deutsche Map (DEMO2)
ausgegeben.
BEISPIEL-MAP
Bitte wählen Sie eine Funktion!
1.) Mitarbeiterdaten
2.) Fahrzeugdaten
Code hier eingeben: _
|
Bei manchen Anwendungen kann es nützlich sein, mehrsprachige Programme zu definieren. Ein Fakturierungsprogramm könnte z.B. verschiedene Subprogramme benutzen, um gewisse steuerliche Aspekte zu berücksichtigen, je nachdem in welchem Land die Rechnung erstellt werden soll.
Mehrsprachige Programme werden genauso definiert wie Maps (siehe Beschreibung oben).
Mit der Natural-Utility SYSERR können Sie die Natural-Fehlermeldungen in
bis zu 60 Sprachen übersetzen. Sie können aber auch eigene Fehlermeldungen
erstellen.
Die Sprache der ausgegebenen Fehlermeldungen wird durch den Inhalt der Systemvariable
*LANGUAGE bestimmt.
Einzelheiten über Fehlermeldungen finden Sie in der SYSERR Utility in der Utilities-Dokumentation.
Die Sprache für Datums- und Uhrzeitfelder, die mit Editiermasken definiert wurden, wird
auch durch die Systemvariable *LANGUAGE festgelegt.
Weitere Einzelheiten zu Editiermasken entnehmen Sie dem Session-Parameter EM in der
Parameter Reference.
Es kann sinnvoll sein, Benutzern mit unterschiedlicher Erfahrung bei der Benutzung derselben Anwendung verschiedene Maps mit unterschiedlichem Informationsgehalt zu bieten.
Ist Ihre Anwendung nicht für den internationalen Einsatz bestimmt, können Sie die gleichen Techniken, die zur Unterstützung von mehrsprachigen Anwendungen benutzt werden, auch zur Definition von unterschiedlich detaillierten Maps verwenden.
Sie können z.B. Sprachcode 1 als Kenntnisstufe 1 = Kenntnisstand eines
Anfängers, und Sprachcode 2 als Kenntnisstufe 2 = Kenntnisstand eines
fortgeschrittenen Benutzers definieren. Die Anwendung dieser einfachen Technik wird im
Folgenden veranschaulicht.
Die folgende Map (PERS1) enthält ausführliche Anweisungen, die dem
Endbenutzer sagen, wie eine Funktion ausgewählt wird. Die Informationen sind sehr
detailliert. Der Name dieser Map enthält den Mapcode 1.
MAP PERS1
SAMPLE MAP
Please select a function
1.) Employee information _
2.) Vehicle information _
Enter code: _
To select a function, do one of the following:
- place the cursor on the input field next to desired function and press ENTER
- mark the input field next to desired function with an X and press ENTER
- enter the desired function code (1 or 2) in the 'Enter code' field and press
ENTER
|
Die gleiche Map - aber ohne die ausführlichen Anweisungen - wird unter dem gleichen
Namen, aber mit Mapcode 2 gespeichert.
MAP PERS2
SAMPLE MAP
Please select a function
1.) Employee information _
2.) Vehicle information _
Enter code: _
|
In dem obigen Beispiel wird die Map mit den vollständigen Anweisungen dann ausgegeben,
wenn der ULANG-Profilparameter auf 1 gesetzt ist und
die Map ohne die Anweisungen, wenn er auf 2 gesetzt ist.