Dieses Dokument beschreibt, wie Sie eine Editiermaske für ein alphanumerisches oder numerisches Feld angeben können.
Folgende Themen werden behandelt:
Der Session-Parameter EM
wird dazu
verwendet, für ein numerisches oder alphanumerisches Feld eine sogenannte
Editiermaske anzugeben, d.h. das Format, in dem die Feldwerte ausgegeben werden
sollen, Zeichen für Zeichen festzulegen. Wenn Sie den Session-Parameter
EMU
verwenden, können Sie Unicode-Zeichen auf die gleiche Weise benutzen wie für
den Session-Parameter EM
beschrieben.
Beispiel:
DISPLAY NAME (EM=X^X^X^X^X^X^X^X^X^X)
In diesem Beispiel steht jedes X
für ein Zeichen eines
ausgegebenen alphanumerischen Feldwertes und jedes Circumflex (^) für eine
Leerstelle. Bei Anzeige mittels DISPLAY
-Statement, würde
der Name JOHNSON
in diesem Fall wie folgt ausgegeben:
J O H N S O N
Sie können den Session-Parameter EM
an folgenden
Stellen angeben:
auf Report-Ebene (in einem FORMAT
-Statement),
auf Statement-Ebene (in einem DISPLAY
-,
WRITE
-,
INPUT
-, MOVE EDITED
- oder
PRINT
-Statement)
oder auf Elementebene, d.h. Feldebene, (in einem
DISPLAY
-, WRITE
- oder -Statement).
Eine mit dem EM
-Parameter definierte Editiermaske
hat Vorrang vor einer im DDM für
das betreffende Feld definierten Standard-Editiermaske. Siehe auch
Using the DDM
Editor Windows,
Specifying
Extended Field Attributes.
Falls EM=OFF
gesetzt worden ist, wird überhaupt keine
Editiermaske verwendet.
Eine auf Statement-Ebene definierte Editiermaske hat Vorrang vor einer auf Programm-Ebene definierten Editiermaske.
Eine auf Feldebene definierte Editiermaske hat Vorrang vor einer auf Statement-Ebene definierten Editiermaske.
Bei Editiermasken für numerische Felder (Formate N, I, P, F) geben Sie
für jede auszugebende Ziffer eine 9
an, und ein Z
für
jede Ziffer, die nur ausgegeben werden soll, wenn sie nicht 0
ist.
Ein Z
wird benutzt, um anzuzeigen, dass die
Ausgabe-Position nur ausgefüllt wird, wenn die verfügbare Zahl nicht Null
ist.
Ein Dezimalkomma wird durch einen Punkt (.) angegeben.
Stellen nach dem Komma dürfen nicht mit Z
angegeben werden.
Weitere Zeichen dürfen vor oder nachgestellt oder eingefügt werden, z.B.
Vorzeichen.
Weitere Informationen siehe Session-Parameter
EM
,
Editiermasken
für numerische Felder in der
Parameter-Referenz-Dokumentation.
Editiermasken für alphanumerische Felder müssen für jedes auszugebende
alphanumerische Zeichen ein X
enthalten.
Auch hier dürfen weitere Zeichen (bis auf einige Ausnahmen) vor,- nachgestellt oder hinzugefügt werden (in Apostrophen (') oder ohne).
Leerstellen in numerischen wie alphanumerischen Feldern werden mit einem Circumflex (^) gekennzeichnet.
Weitere Informationen siehe Session-Parameter
EM
,
Editiermasken
für alphanumerische Felder in der
Parameter-Referenz-Dokumentation.
Wenn Sie für ein Feld eine Editiermaske definieren, beachten Sie bitte die Länge des Feldes.
Ist die Editiermaske länger als das Feld, hat dies unvorhersehbare Auswirkungen.
Ist die Editiermaske kürzer als das Feld, kann es sein, dass ein Feldwert nur unvollständig ausgegeben wird.
Nehmen wir an, ein alphanumerisches Feld ist 12 Stellen lang und der
ausgegebene Feldwert ist JOHNSON
, dann würden folgende
Editiermasken in folgenden Ausgaben resultieren:
Editiermaske | Ausgabe |
---|---|
EM=X.X.X.X.X |
J.O.H.N.S |
EM=****XXXXXX**** |
****JOHNSO** |
Editiermasken für Datumsfelder können die Zeichen
D
für Tag, M
für Monat und Y
für Jahr in
verschiedenen Kombinationen enthalten.
Editiermasken für Zeitfelder können die Zeichen H
für Stunde, I
für Minute, S
für Sekunde und
T
für Zehntelsekunde in verschiedenen Kombinationen enthalten.
Im Zusammenhang mit Editiermasken für Datums- und Zeitfelder siehe auch die Datums- und Uhrzeit-Systemvariablen.
Natural-Programme werden in der ganzen Welt in Geschäftsanwendungen eingesetzt. Je nach den lokalen Gegebenheiten ist es üblich, numerische Datenfelder und Felder mit einer Datums- oder Zeitangabe bei der Anzeige in Eingabe/Ausgabe-Statements in einem ganz bestimmten Format auszugeben. Die unterschiedliche Erscheinungsform sollte nicht durch einen anderen Programmcode realisiert werden, der selektiv als eine Funktion des Bereichs verarbeitet wird, in dem das Programm ausgeführt wird, sondern sollte mit demselben Programmtyp in Verbindung mit einer Reihe von Laufzeit-Parametern ausgeführt werden, um das Dezimalpunkt-Zeichen und das "Tausender-Trennzeichen" anzugeben.
Folgende Themen werden behandelt:
Der Natural-Parameter DC
(Dezimaltrennzeichen) steht zur Verfügung, um das Zeichen anzugeben, das
anstelle von Zeichen eingefügt wird, die zur Darstellung des
Dezimal-Trennzeichens (auch als "Basiszeichen" bezeichnet) in
Editiermasken benutzt werden. Dieser Parameter ermöglicht es den Benutzern
eines Natural-Programms oder einer Natural-Anwendung, beliebige Zeichen oder
Sonderzeichen zu wählen, um die Ganzzahl-Stellen von den Dezimalstellen eines
numerischen Datenelements zu trennen, und ermöglicht es zum Beispiel
US-Unternehmen, den Dezimalpunkt (.) zu verwenden, und europäischen
Unternehmen, das Komma (,) zu benutzen.
Um die Ausgabe von großen Ganzzahl-Werten zu strukturieren, ist es
üblich, Trennzeichen zwischen jeder dritten Ziffer einer Ganzzahl einzufügen,
um Tausender voneinander zu trennen. Dieses Trennzeichen wird als
Tausendertrennzeichen bezeichnet. Beispielsweise kann in den Vereinigten
Staaten und Großbritannien ein Komma für diesem Zweck benutzt
(1,000,000.00
) werden, wohingegen in Deutschland und Österreich
das Leerzeichen (1'000'000,00
) oder der Punkt
(1.000.000,00
) und in der Schweiz und Liechtenstein das Hochkomma
(1'000'000,00
) verwendet werden kann.
In einer Natural-Editiermaske ist ein dynamisches Tausendertrennzeichen
ein Komma (oder Punkt), welches die Position anzeigt, an der (mit dem Parameter
THSEPCH
definierte) Tausendertrennzeichen zur Laufzeit eingefügt werden. Zur
Kompilierungszeit aktiviert oder deaktiviert der
Natural-Profilparameter THSEP
oder die
Option THSEP
des Systemkommandos
COMPOPT
die Interpretation des Kommas (oder Punktes) als ein dynamisches
Tausendertrennzeichen.
Wenn THSEP
auf OFF
(Voreinstellung)
gesetzt ist, wird jedes in der Editiermaske als Tausendertrennzeichen benutzte
Zeichen als Literal behandelt und zur Laufzeit unverändert angezeigt. Diese
Einstellung gewährleistet die Abwärtskompatibilität.
Wenn THSEP
auf ON
gesetzt ist, wird
ein Komma (oder Punkt) in der Editiermaske als dynamisches
Tausendertrennzeichen interpretiert. Im Allgemeinen ist das dynamische
Tausendertrennzeichen ein Komma, aber wenn das Komma bereits als Dezimalzeichen
(DC
) vergeben ist, wird der Punkt als dynamisches
Trennzeichen verwendet.
Zur Laufzeit werden die dynamischen Tausendertrennzeichen durch den
aktuellen Wert des Parameters THSEPCH
(Tausendertrennzeichen) ersetzt.
Ein Natural-Programm, das mit den Parameter-Einstellungen
DC='.'
und THSEP=ON
katalogisiert ist, benutzt die
Editiermaske (EM=ZZ,ZZZ,ZZ9.99)
.
Parameter-Einstellungen zur Laufzeit | Wird angezeigt als |
---|---|
DC='.' und THSEPCH=',' |
1,234,567.89 |
DC=',' und THSEPCH='.' |
1.234.567,89 |
DC=',' und THSEPCH='/' |
1/234/567,89 |
DC=',' und THSEPCH=' ' |
1 234 567,89 |
DC=',' und THSEPCH='''' |
1'234'567,89 |
Im folgenden sehen Sie einige Beispiele für Editiermasken und die Ausgaben, die sie erzeugen.
Zusätzlich ist die jeweilige Kurzschreibweise angegeben. Sie können die Kurz- oder Langschreibweise wahlweise verwenden.
Editiermaske | Kurzschreibweise | Ausgabe A | Ausgabe B |
---|---|---|---|
EM=999.99 |
EM=9(3).9(2) |
367.32 |
005.40 |
EM=ZZZZZ9 |
EM=Z(5)9(1) |
0 |
579 |
EM=X^XXXXX |
EM=X(1)^X(5) |
B LUE |
A 19379 |
EM=XXX...XX |
EM=X(3)...X(2) |
BLU...E |
AAB...01 |
EM=MM.DD.YY |
* |
01.05.87 |
12.22.86 |
EM=HH.II.SS.T |
** |
08.54.12.7 |
14.32.54.3 |
* Verwenden Sie eine Datums-Systemvariable.
** Verwenden Sie eine Uhrzeit-Systemvariable.
Weitere Informationen zu Editiermasken finden Sie unter
Session-Parameter EM
in der
Parameter-Referenz-Dokumentation.
** Example 'EDITMX01': Edit mask (using default edit masks) ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 JOB-TITLE 2 SALARY (1:3) 2 CITY END-DEFINE * READ (3) VIEWEMP BY NAME STARTING FROM 'JONES' DISPLAY 'N A M E' NAME / 'OCCUPATION' JOB-TITLE 'SALARY' SALARY (1:3) 'LOCATION' CITY SKIP 1 END-READ END
Ausgabe des Programms EDITMX01
:
Es erzeugt die folgende Ausgabe unter Verwendung von Standard-Editiermasken (soweit vorhanden):
Page 1 04-11-11 14:15:54 N A M E SALARY LOCATION OCCUPATION ------------------------- ---------- -------------------- JONES 46000 TULSA MANAGER 42300 39300 JONES 50000 MOBILE DIRECTOR 46000 42700 JONES 31000 MILWAUKEE PROGRAMMER 29400 27600
** Example 'EDITMX02': Edit mask (using EM) ************************************************************************ DEFINE DATA LOCAL 1 VIEWEMP VIEW OF EMPLOYEES 2 NAME 2 FIRST-NAME 2 JOB-TITLE 2 SALARY (1:3) END-DEFINE * READ (3) VIEWEMP BY NAME STARTING FROM 'JONES' DISPLAY 'N A M E' NAME (EM=X^X^X^X^X^X^X^X^X^X^X^X^X^X^X) / FIRST-NAME (EM=...X(10)...) 'OCCUPATION' JOB-TITLE (EM=' ___ 'X(12)) 'SALARY' SALARY (1:3) (EM=' USD 'ZZZ,999) SKIP 1 END-READ END
Ausgabe des Programms EDITMX02
:
Vergleichen Sie sie mit der des vorigen Programms (Beispielprogramm ohne
EM-Parameter), um zu sehen, wie sich die
EM
-Angaben auf die Anzeige der Felder auswirken:
Page 1 04-11-11 14:15:54 N A M E OCCUPATION SALARY FIRST-NAME ----------------------------- ---------------- ----------- J O N E S ___ MANAGER USD 46,000 ..VIRGINIA ... USD 42,300 USD 39,300 J O N E S ___ DIRECTOR USD 50,000 ..MARSHA ... USD 46,000 USD 42,700 J O N E S ___ PROGRAMMER USD 31,000 ..ROBERT ... USD 29,400 USD 27,600
Siehe die folgenden Beispiel-Programme.