Dieses Kapitel beschreibt, wie Sie eine Editiermaske für ein alphanumerisches oder numerisches Feld angeben können.
Folgende Themen werden behandelt:
Der Session-Parameter EM wird verwendet, um 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- oder PRINT-Statement)
oder auf Elementebene, d.h. Feldebene, (in einem DISPLAY-, WRITE-, INPUT-, COMPRESS-, DOWNLOAD PC FILE, MOVE EDITED- oder WRITE WORK
FILE-Statement).
Eine mit dem EM-Parameter definierte Editiermaske hat Vorrang vor
einer im DDM für das betreffende Feld
definierten Standard-Editiermaske. Siehe auch Spalten für
Feld-Attribute, Erweiterte
Feld-Attribute angeben.
Falls EM=OFF gesetzt worden ist, wird überhaupt keine Editiermaske
verwendet.
Eine auf Statement-Ebene definierte Editiermaske hat Vorrang vor einer auf Report-Ebene definierten Editiermaske.
Eine auf Elementebene 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 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 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 im Kapitel Referenzierte Beispielprogramme.