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.
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 Screen,
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.
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.
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
(Dezimalzeichen)
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
Tausender-Trennzeichen 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
Tausender-Trennzeichen ein Komma (oder Punkt), welches die Position anzeigt, an
der (mit dem Parameter THSEPCH
definierte) Tausender-Trennzeichen zur Laufzeit eingefügt werden. Zur
Kompilierungszeit aktiviert oder deaktiviert die Option THSEP
des Systemkommandos
COMPOPT
oder
der Subparameter THSEP
des Profileparameters
CMPO
bzw.
des Macros NTCCMPO
die Interpretation des Kommas (oder Punktes) als ein dynamisches
Tausender-Trennzeichen.
Wenn THSEP
auf OFF
(Voreinstellung)
gesetzt ist, wird jedes in der Editiermaske als Tausender-Trennzeichen 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
Tausender-Trennzeichen interpretiert. Im Allgemeinen ist das dynamische
Tausender-Trennzeichen ein Komma, aber wenn das Komma bereits als
Dezimalzeichen (DC
) vergeben ist, wird der Punkt als
dynamisches Trennzeichen verwendet.
Zur Laufzeit werden die dynamischen Tausender-Trennzeichen durch den
aktuellen Wert des Parameters THSEPCH
(Tausender-Trennzeichen) 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.