EM - Editiermaske

Mit diesem Session-Parameter können Sie eine Editiermaske für ein Eingabe- und/oder Ausgabefeld definieren, welches in einem der Statements verwendet wird, die in der folgenden Tabelle unter Gültige Statements aufgeführt sind.

Mögliche Werte Siehe EM-Parameter-Syntax.
Standard-Einstellung Keine  
Gültige Statements FORMAT Parameter kann dynamisch mit dem FORMAT-Statement angegeben werden.

Anmerkung:
Es darf jedoch nur EM=OFF (und keine konkrete Spezifikation einer Editiermaske) angegeben werden

DEFINE DATA
DISPLAY
INPUT
PRINT
PROCESS PAGE/PROCESS PAGE UPDATE
WRITE

Parameter kann auf Statement- und/oder Element-Ebene angegeben werden.
MOVE EDITED Parameter kann auf Element-Ebene angegeben werden.
Gültiges Kommando Keines  

Anmerkungen:

  1. Informationen zu Unicode-Editiermasken siehe Session-Parameter EMU.
  2. Der Session-Parameter EM kann auch bei Feldern mit Format U (Unicode) verwendet werden, siehe auch Unicode and Code Page Support in the Natural Programming Language, Session Parameters, EMU, ICU, LCU, TCU im Vergleich zu EM, IC, LC, TC.
  3. Siehe auch Editiermasken — der EM-Parameter im Leitfaden zur Programmierung.

Die folgenden Themen werden nachfolgend erörtert:


EM-Parameter-Syntax

Bei Eingabefeldern muss ein Wert genau entsprechend der Editiermaske eingegeben werden. Um die Editiermaske für die Eingabe sichtbar zu machen, sollte ein Eingabefeld als modifizierbar (AD=M) definiert werden.

Für ein Datenbankfeld kann im DDM bereits eine Standard-Editiermaske definiert sein. Wenn Sie mit dem EM-Parameter eine Editiermaske für ein Datenbankfeld angeben, so gilt diese anstelle einer möglicherweise im DDM für das Feld definierten Standard-Editiermaske.

Geben Sie für ein Feld EM=OFF an, so wird für das Feld keine Editiermaske verwendet, auch keine möglicherweise im DDM definierte.

Auf Statement-Ebene eines DISPLAY-, FORMAT-, INPUT- oder WRITE-Statements kann keine Editiermaske definiert, sondern allenfalls EM=OFF gesetzt werden.

Wenn eine Editiermaske definiert ist, so überschreibt diese etwaige Einstellungen der Session-Parameter AL, NL and SG.

Diese Schreibweise gilt nur für die Zeichen 9, H, X und Z, mit denen bei numerischen (9,Z), hexadezimalen (H) und alphanumerischen (X) Editiermasken die signifikanten Stellen dargestellt werden. Der Unterschied zwischen 9 und Z ist im Abschnitt Editiermasken für numerische Felder weiter unten beschrieben.

Beispiele

DISPLAY AA(EM=OFF) AB(EM=XX.XX) 
WRITE SALARY (EM=ZZZ,ZZ9)

Sie können eine Abfolge derselben signifikanten Zeichen durch eine numerische Notation ersetzen, zum Beispiel: x(8) for xxxxxxxx. Die folgenden Beispiele veranschaulichen die verkürzte Notation, die für die signifikanten Zeichen von numerischen (Z,9), hexadezimalen (H), alphanumerischen (X) und Datums- (N,L) Editiermasken verwendet werden können:

EM=9(4)-9(5)         is equivalent to: EM=9999-99999
EM=H(10)             is equivalent to: EM=HHHHHHHHHH
EM=X(6)..X(3)        is equivalent to: EM=XXXXXX..XXX
EM=YYYY-L(8)-DD-N(8) is equivalent to: EM=YYYY-LLLLLLLL-DD-NNNNNNNN

Leerzeichen in Editiermasken

Unmittelbar hinter dem Gleichheitszeichen (=) des EM-Parameters sind keine Leerzeichen zulässig (zum Beispiel: EM=<blank>XXX).

Leerzeichen innerhalb einer Editiermaske lassen sich durch das Zeichen auf Ihrer Tastatur darstellen, das in Hexadezimalcode H'20' (ASCII) bzw. H'5F' (EBCDIC) entspricht, d.h. das Zeichen ^ (oder ¬).

Standard-Editiermasken

Wenn Sie für ein Feld keine Editiermaske angeben, erhält das Feld entsprechend seinem Format eine Standard-Editiermaske:

Feldformat Standard-Editiermaske
A X
B H
N, P, I Z9
F wissenschaftliche Darstellung
D abhängig vom Standard-Datumsformat (wie mit dem Profilparameter DTFORM gesetzt)
T HH:II:SS
L Leerzeichen / X

Editiermasken für numerische Felder

Eine für Felder mit Format N, P, I oder F definierte Editiermaske muss mindestens eine 9 oder ein Z enthalten.

Enthält sie mehr "9er" und "Zs" als der Feldwert lang ist, wird die Anzahl der Ausgabestellen in der Editiermaske der Anzahl der für den Feldwert definierten Stellen angepasst.

Hat die Editiermaske weniger signifikante Stellen als der Feldwert, wird der Feldwert um die entsprechende Anzahl der Stellen vor bzw. nach dem Dezimaltrennzeichen (Punkt oder Komma) verkürzt ausgegeben.

Die folgenden Themen werden nachfolgend erörtert:

Zeichen zur Definition numerischer Editiermasken

Zeichen Funktion
9 Auszugebende Stelle (eine Stelle des Feldwertes).
. (period) Ein Punkt, als erstes Zeichen verwendet, stellt ein Dezimaltrennzeichen (Komma oder Punkt) dar und ist signifikant. Nachfolgende Punkte werden als Literale behandelt.

Anmerkung:
An dieser Stelle stellt der Punkt das zurzeit als Dezimaltrennzeichen festgelegte Zeichen dar. Falls mit dem Session- oder Profilparameter DC ein anderes Zeichen gewählt wird (zum Beispiel ein Komma), dann ist anstelle des Punktes dieses Zeichen zu verwenden.

Z Nullunterdrückung bei vorangestellten Nullen. Dies gilt standardmäßig für numerische Felder. Zur gleitenden Nullunterdrückung kann das Z mehrmals angegeben werden. Rechts vom Dezimaltrennzeichen darf kein Z stehen. Ein Nullwert kann unter Einbeziehung aller Zs in der Editiermaske als lauter Leerzeichen ausgegeben werden (siehe auch Session-Parameter ZP).

Vor den Neunern oder Zs können eins oder mehrere andere Zeichen stehen.

Vorzeichen

Wenn das erste Zeichen vor den Neunern oder Zs ein +, , S oder N ist, kann ein Vorzeichen angezeigt werden:

Zeichen Funktion
+ Ein gleitendes Vorzeichen, das vor/nach der Zahl ausgegeben werden soll. Das Zeichen wird je nach Wert der Zahl als + oder generiert.
- Ein gleitendes Minus-Vorzeichen, das vor/nach der Zahl ausgegeben werden soll, wenn die Zahl negativ ist.
S Ein Vorzeichen, das vor dem Feld ausgegeben werden soll. Das Vorzeichen wird je nach Wert der Zahl als + oder generiert.
N Ein Minus-Vorzeichen, das vor dem Feld ausgegeben werden soll, wenn der Feldwert negativ ist.

Führende Literale

Eine beliebige Anzahl von führenden Literalen kann vor der ersten anzeigbaren Stelle erscheinen (wie durch Z oder 9 angezeigt). Diese müssen auf ein Vorzeichen folgen. Wenn kein Vorzeichen vorhanden ist, und das erste führende Literal ist +, -, S oder N, muss es in Apostrophen stehen. Wenn ein führendes Literal H, X, Z oder 9 ist, muss es in Apostrophen stehen.

Das zuerst angegebene führende Literal erscheint nur in der Ausgabe, wenn der Wert führende Nullen enthält und die Editermaske mit Z definiert ist (führende Nullwertunterdrückung). Dieses Zeichen wird dann als Füllzeichen benutzt, das anstatt eines Leerzeichens für führende Nullen angezeigt wird. Nachfolgende führende Literale werden so angezeigt, wie sie eingegeben werden.

Literale Einschubzeichen und nachgestellte Zeichen

Es können auch literale Einschubzeichen und nachgestellte Zeichen benutzt werden. Das Symbol (^) kann zur Darstellung eines vorangestellten, eingefügten oder nachgestellten Leerzeichens verwendet werden. Durch Setzen von signifikanten Zeichen (9, H, Z, X) in Apostrophen ist es möglich, vorangestellte, eingefügte und nachgestellte Zeichenketten zu haben.

Nicht signifikante Editiermasken-Zeichen müssen nicht in Apostrophen stehen. Innerhalb derselben Editiermasken-Notation ist es möglich, Gruppen von vorangestellten Zeichenketten, Einschubzeichen und/oder nachfolgenden Zeichen zu haben, von denen einige in Apostrophen stehen und andere nicht.

Nachfolgende Vorzeichen

Ein nachfolgendes Vorzeichen wird durch ein + oder - als letztes Zeichen der Editiermaske angegeben. Ein + bewirkt, dass das Vorzeichen je nach Feldwert entweder als + oder - ausgegeben wird; ein - bewirkt, dass bei einem positiven Feldwert ein Leerzeichen und bei einem negativen Feldwert ein - ausgegeben wird. Ist für eine Editiermaske ein vorangestelltes und ein nachgestelltes Vorzeichen definiert, werden beide ausgegeben.

Beispiele für numerische Editiermasken

Die folgende Tabelle zeigt in der oberen Zeile die Werte numerischer Felder (Format N), wie sie ohne Editiermaske ausgegeben würden, und darunter die unter Verwendung der verschiedenen Editiermasken ausgegebene Form:

Wert 0000.03 (N4.2) -0054 (N4) +0087 (N4) 0962 (N4) 1830 (N4)
Editiermaske
EM=9.9 0.0 4. 7. 2. 0.
EM=99 00 54 87 62 30
EM=S99 +00 -54 +87 +62 +30
EM=+Z9 +0 -54 +87 +62 +30
EM=-9.99 0.03 -4. 7. 2. 0.
EM=N9 0 -4 7 2 0
EM=*9.99 0.03 4. 7. 2. 0.
EM=Z99 00 54 87 962 830
EM=*EURZZ9.9 EUR**0.0 EUR*54. EUR*87. EUR962. EUR830.
EM=999+ 000+ 054- 087+ 962+ 830+
EM=999- 000 054- 087 962 830
IC=$ EM=ZZZ.99 $.03 $54. $87. $962. $830.
EM=H(6)
- ASCII: 303030303033 30303574 30303837 30393632 31383330
- EBCDIC: F0F0F0F0F0F3 F0F0F5D4 F0F0F8F7 F0F9F6F2 F1F8F3F0

Durch Kombination von Editiermasken mit den Parametern IC und TC ist es bei einem DISPLAY-Statement möglich, negative Zahlen in verschiedenen Formen auszugeben.

Editiermasken für alphanumerische Felder

Für mit Format A definierte Felder kann eine alphanumerische Editiermaske definiert werden; sie muss mindestens ein X enthalten; jedes X steht für ein auszugebendes Zeichen. Ein H als erstes Zeichen kennzeichnet eine hexadezimale Editiermaske. Ein Leerzeichen wird durch ein Circumflex (^) dargestellt.

Alle anderen Zeichen — außer Klammern — können als vorangestellte, eingeschobene oder nachgestellte Zeichen verwendet werden, wobei diese Zeichen wahlweise durch Apostrophe eingegrenzt werden können oder nicht. Sollen die Zeichen X, eine abschließende runde Klammer ()) oder ein Anführungszeichen (") als nichtsignifikante Einschubzeichen verwendet werden, müssen sie in Apostrophen angegeben werden.

Werden dem ersten signifikanten X Zeichen vorangestellt, wird das erste dieser Zeichen nicht ausgegeben, sondern als Füllzeichen benutzt, und es tritt an die Stelle aller führenden Leerzeichen im alphanumerischen Ausgabefeld.

Beispiel:

DEFINE DATA LOCAL                                          
1 #X (A4)  INIT <'  34'>                                   
END-DEFINE                                                 
WRITE #X (EM=*A:X:)                                        
   6X #X (EM=*A:XX:)                                       
   6X #X (EM=*A:XXX:)                                      
   6X #X (EM=*A:XXXX:)                                     
   6X #X (EM=1234XXXX5678)                                 
END

Ausgabe:

A:*:      A:**:      A:**3:      A:**34:      23411345678

Zeichen, die unmittelbar auf das letzte signifikante X folgen, werden ausgegeben.

Ist die Editiermaske kürzer als das Feld, wird die Anzahl der ausgegebenen Stellen auf die Länge der Editiermaske gekürzt.

Ist die Editiermaske länger als das Feld, wird die Anzahl der ausgegebenen Stellen bei der ersten überstehenden Stelle abgeschnitten.

Beispiel:

DEFINE DATA LOCAL                                                
1 #TEXT  (A4) INIT <'BLUE'>                                      
END-DEFINE                                                       
WRITE #TEXT (EM=X-X-X)        /* 'B-L-U', 3 bytes of field only. 
WRITE #TEXT (EM=X-X-X-X-X)    /* 'B-L-U-E-', with truncated mask.
END

Beispiel für alphanumerische Editiermasken

Das folgende Programm definiert Editiermasken für ein Feld mit Format/Länge A4, das den Wert BLUE enthält:

** Example 'EMMASK1': Edit mask                                         
************************************************************************
DEFINE DATA LOCAL                                                       
1 #TEXT  (A4)                                                           
END-DEFINE                                                              
*                                                                       
ASSIGN #TEXT = 'BLUE'                                                   
WRITE NOTITLE 'MASK 1:' 5X #TEXT (EM=X.X.X.X)                           
      /       'MASK 2:' 5X #TEXT (EM=X^X^X^X)                           
      /       'MASK 3:' 5X #TEXT (EM=X--X--X)                           
      /       'MASK 4:' 5X #TEXT (EM=X-X-X-X-X-X)                       
      /       'MASK 5:' 5X #TEXT (EM=X' 'X' 'X' 'X)                     
      /       'MASK 6:' 5X #TEXT (EM=XX....XXX)                         
      /       'MASK 7:' 5X #TEXT (EM=1234XXXX)                          
END                                                                     

Ausgabe des Programms EMMASK1:

MASK 1:     B.L.U.E 
MASK 2:     B L U E 
MASK 3:     B--L--U 
MASK 4:     B-L-U-E-
MASK 5:     B L U E 
MASK 6:     BL....UE
MASK 7:     234BLUE 

Editiermasken für binäre Felder − Format B

Editiermasken für binäre Felder können mittels der Notation X oder H definiert werden. Für binäre Felder wird die Notation X unterstützt, als ob H anstelle von X angegeben worden wäre.

Hexadezimale Editiermasken

Wird als erstes Zeichen einer Editiermaske ein Hangegeben, so wird der Wert eines alphanumerischen oder numerischen Feldes in hexadezimaler Form ausgegeben. Jedes H steht für zwei Hexadezimalstellen, die jeweils einem numerischen/alphanumerischen Byte im Source-Feld entsprechen.

Alle anderen Zeichen können als Einschubzeichen oder nachgestellte Zeichen verwendet werden. Ist die Editiermaske kürzer als das Feld, wird der Feldwert entsprechend verkürzt ausgegeben. Ist das Feld kürzer als die Editiermaske, wird die Editiermaske der Feldlänge entsprechend verkürzt ausgegeben.

Einschubzeichen oder nachgestellte Zeichen können wahlweise durch Apostrophe eingegrenzt werden.

Alle mit einer hexadezimalen Editiermaske angezeigten Felder werden als alphanumerische Felder behandelt. Ist die Editiermaske kürzer als das Feld, werden daher alle numerischen oder alphanumerischen Stellen von links nach rechts ohne Berücksichtigung von Dezimalstellen ausgegeben.

Wenn eine hexadezimale Editiermaske als eine Eingabeeditiermaske benutzt wird, werden alle Zeichen 0-9, a-f,, A-F, Leerzeichen und die hexadezimale Null als eine hexadezimale Ziffer akzeptiert.

Anmerkung:
Leerzeichen und die hexadezimale Null werden als 0 und ein Kleinbuchstabe (a-f) als Großbuchstabe angesehen.

Editiermasken-Beispiele für hexadezimale Felder

Die folgenden Tabellen zeigen hexadezimale Editiermasken mit Ergebnissen aus den ursprünglichen Feldern und über jeder Spalte angezeigten Werten. Alle numerischen Werte (-10, +10, 01), für die Editiermasken gelten, stammen aus im Format N2 definierten Feldern. Der alphanumerische Wert AB stammt aus einem mit Format/Länge A2 definierten Feld.

ASCII:

Wert => AB -10 +10 01
EM=HH 
4142 3170 3130 3031
EM=H^H 
41 42 31 70 31 30 30 31
EM=HH^H 
4142 3170 3130 3031
EM=H-H 
41-42 31-70 31-30 30-31
EM=H 
41 31 31 30

EBCDIC:

Wert => AB -10 +10 01
EM=HH 
C1C2 F1D0 F1F0 F0F1
EM=H:H 
C1 C2 F1 D0 F1 F0 F0 F1
EM=HH:H
C1C2 F1D0 F1F0 F0F1
EM=H-H 
C1-C2 F1-D0 F1-F0 F0-F1
EM=H 
C1 F1 F1 F0

Beispielprogramm mit hexadezimalen Editiermasken:

** Example 'EMMASK2': Edit mask                                         
************************************************************************
DEFINE DATA LOCAL                                                       
1 #TEXT1 (A2)                                                           
1 #TEXT2 (N2)                                                           
END-DEFINE                                                              
*                                                                       
ASSIGN #TEXT1 = 'AB'                                                    
ASSIGN #TEXT2 =  10                                                     
*                                                                       
WRITE NOTITLE                                                           
        'MASK (EM=HH)  :' 18T #TEXT1 (EM=HH)    30T #TEXT2 (EM=HH)      
      / 'MASK (EM=H^H) :' 18T #TEXT1 (EM=H^H)   30T #TEXT2 (EM=H^H)     
      / 'MASK (EM=HH^H):' 18T #TEXT1 (EM=HH^H)  30T #TEXT2 (EM=HH^H)    
      / 'MASK (EM=H-H) :' 18T #TEXT1 (EM=H-H)   30T #TEXT2 (EM=H-H)     
      / 'MASK (EM=H)   :' 18T #TEXT1 (EM=H)     30T #TEXT2 (EM=H)       
END                                                                     

Ausgabe des Programms EMMASK2 (ASCII):

MASK (EM=HH)  :  4142        3130 
MASK (EM=H^H) :  41 42       31 30
MASK (EM=HH^H):  4142        3130 
MASK (EM=H-H) :  41-42       31-30
MASK (EM=H)   :  41          31   

Ausgabe des Programms EMMASK2 (EBCDIC):

MASK (EM=HH)  :  C1C2        F1F0 
MASK (EM=H^H) :  C1 C2       F1 F0
MASK (EM=HH^H):  C1C2        F1F0 
MASK (EM=H-H) :  C1-C2       F1-F0
MASK (EM=H)   :  C1          F1   

Editiermasken für Datums- und Zeitfelder (Formate D und T)

Zur Definition von Editiermasken für Felder, die mit dem Format D (Datumsfeld) oder T (= Time; Zeitfeld) definiert sind, können die in den folgenden Abschnitten beschriebenen Zeichen verwendet werden:

Datums- und Zeitfelder (Formate D und T)

Zeichen Bedeutung
DD Tag (Day).
ZD Tag mit Nullwertunterdrückung.
MM Monat.
ZM Monat mit Nullwertunterdrückung.
YYYY Jahr (Year), vierstellig (siehe Abschnitt Hinweise für Eingabe-Editiermaske).
YY Jahr, zweistellig (siehe Abschnitt Hinweise für Eingabe-Editiermaske).
Y Jahr, einstellig. Darf nicht für Eingabefelder verwendet werden.
WW Woche (siehe die Abschnitte Hinweise für Eingabe-Editiermaske und Hinweise für Wochenanzeige in Ausgabe-Editiermaske).
ZW Woche mit Nullwertunterdrückung (siehe die Abschnitte Hinweise für Eingabe- Editiermaske und Hinweise für Wochenanzeige in Ausgabe-Editiermaske).
JJJ Julianischer Tag.
ZZJ Julianischer Tag mit Nullwertunterdrückung.
NN... oder N(n) Name des Wochentages (sprachabhängig). Die Maximallänge wird durch die Anzahl der Ns bzw. durch n bestimmt. Ist der Name länger als die Maximallänge, wird er abgeschnitten; ist er kürzer, wird seine tatsächliche Länge genommen.
O Nummer des Wochentags.

Ob Montag oder Sonntag als erster Wochentag genommen wird, hängt vom Profilparameter DTFORM ab).

Ist DTFORM=U, dann ist Sonntag = 1, Montag = 2 usw.).

Ist DTFORM=sonstige, dann ist Montag = 1, Dienstag = 2 usw.).

LL... oder L(n) Name des Monats (sprachabhängig).

Die Maximallänge wird durch die Anzahl der Ls bzw. durch n bestimmt.

Ist der Name länger als die Maximallänge, wird er abgeschnitten; ist er kürzer, wird seine tatsächliche Länge genommen.

R Jahr in römischen Ziffern (maximal 13 Stellen).

Darf für Eingabefelder nicht benutzt werden.

Die obere Grenze für anzeigbare Jahrwerte ist 2887.

Syntaktische Einschränkungen für Datumszeichen

Für Eingabe-/Ausgabe-Editiermasken dürfen Sie die folgenden Zeichen nicht verwenden:

Text Zeichen
Monat mit Monatsnamen MM oder ZM mit LL oder L(n)
Tagesname mit Wochentag NN oder N(n) mit O

Für Eingabe-Editiermasken dürfen Sie die folgenden Zeichen nicht verwenden:

Text Zeichen
1-stelliges Jahr und auch nicht ein Jahr in römischen Ziffern Y und auch nicht R
Day ohne Monat oder Monatsnamen DD oder ZD ohne MM oder ZM oder LL oder L(n)
Woche ohne Jahr WW oder ZW ohne YYYY oder YY
Monat ohne Jahr MM oder ZM ohne YYYY oder YY
Julian. Tag ohne Jahr JJJ oder ZZJ ohne YYYY oder YY
Tagesname ohne Woche NN oder N(n) ohne WW oder ZW
Wochentag ohne Woche O ohne WW oder ZW
Julian. Tag mit Monat JJJ oder ZZJ mit MM oder ZM
Julian. Tag mit Woche JJJ oder ZZJ mit WW oder ZW
Monat mit Woche MM oder ZM mit WW oder ZW

Hinweise zur Eingabe-Editiermaske

Die gültigen Jahreswerte (YYYY) sind 1582 - 2699.

Wird der Profilparameter MAXYEAR auf"9999" gesetzt, ist der Bereich der gültigen Jahreswerte 1582 - 9999.

Wird in einer Eingabe-Editiermaske nur das Jahr (YY oder YYYY) angegeben, aber nicht Monat und Tag, werden die Werte für Monat und Tag jeweils auf 01 gesetzt. Werden in einer Eingabe-Editiermaske nur Jahr (YY oder YYYY) und Monat (MM) angegeben, aber kein Tag, wird der Wert für Tag auf 01 gesetzt.

Bei einer 2-stelligen Jahresangabe (YY) ist das zum Füllen der Jahresdarstellung benutzte Jahrhundert standardmäßig das aktuelle Jahrhundert. Dies gilt aber nicht, wenn ein Sliding Window oder Fixed Window definiert ist. Weitere Einzelheiten entnehmen Sie dem Profilparameter YSLW.

Wird eine Woche (WW oder ZW) aber kein Wochentag (O) oder Tagesname (NN...) angegeben, geht man vom ersten Wochentag aus.

Hinweise zur Wochenanzeige (WW oder ZW) in Ausgabe-Editiermaske

Wenn DTFORM=U (USA-Format) gesetzt ist, beginnt die Woche am Sonntag, wohingegen bei allen anderen DTFORM-Einstellungen der erste Wochentag der Montag ist. Ob eine Woche die 52./53. Woche des alten oder die 1. Woche des neuen Jahres ist, hängt davon ab, welches Jahr mehr Wochentage enthält. Mit anderen Worten, wenn der Donnerstag (Mittwoch bei DTFORM=U) dieser Woche im alten Jahr liegt, gehört die Woche zum alten Jahr; liegt er im neuen Jahr, gehört die Woche zum neuen Jahr.

Wenn sich eine Darstellung der Woche (WW oder ZW) und des Jahres (YYYY oder YY oder Y) auf derselben Editiermaske befinden, entspricht die Anzeige des Jahres stets der Woche, ungeachtet des Jahres in dem zugrundeliegenden Datumsfeld.

Beispiel:

DEFINE DATA LOCAL
1 D (D)
END-DEFINE
MOVE EDITED '31-12-2003' TO D(EM=DD-MM-YYYY)
DISPLAY D(EM=DD-MM-YYYY_N(10)) D(EM=DD-MM-YYYY/WW)
END

Obwohl das zugrundeliegende Datum der 31. Dezember 2003 ist, wenn die Woche WW in der Editiermaske enthalten ist, wird es wie folgt angezeigt:

          D                 D
--------------------  -------------
31-12-2003_Wednesday  31-12-2004/01
          

Nur für Zeitfelder (Format T):

Zeichen Bedeutung
T Zehntelsekunden (Tenths of a second).
SS Sekunden.
ZS Sekunden mit Nullwertunterdrückung.
II Minuten.
ZI Minuten mit Nullwertunterdrückung.
HH Stunden.
ZH Stunden mit Nullwertunterdrückung.
AP AM/PM-Element (englische Zeitangabe: AM = vormittags, PM = nachmittags).

Beispiele für Datums- und Zeit-Editiermasken

** Example 'EMDATI': Edit mask for date and time variables              
************************************************************************
*                                                                       
WRITE NOTITLE                                                           
  'DATE INTERNAL :' *DATX (DF=L) /                                      
  '              :' *DATX (EM=N(9)' 'ZW.'WEEK 'YYYY)  /                 
  '              :' *DATX (EM=ZZJ'.DAY 'YYYY)        /                  
  '     ROMAN    :' *DATX (EM=R)  /                                     
  '     AMERICAN :' *DATX (EM=MM/DD/YYYY)      12X 'OR  ' *DAT4U /      
  '     JULIAN   :' *DATX (EM=YYYYJJJ)         15X 'OR  ' *DAT4J /      
  '     GREGORIAN:' *DATX (EM=ZD.''L(10)''YYYY) 5X 'OR  ' *DATG ///     
*                                                                       
  'TIME INTERNAL :' *TIMX                      14X 'OR  ' *TIME /       
  '              :' *TIMX (EM=HH.II.SS.T) /                             
  '              :' *TIMX (EM=HH.II.SS' 'AP) /                          
  '              :' *TIMX (EM=HH)                                       
END                                                                     

Ausgabe des Programms EMDATI:

DATE INTERNAL : 2005-01-12                                
              : Wednesday  2.WEEK 2005                    
              :  12.DAY 2005                              
     ROMAN    : MMV                                       
     AMERICAN : 01/12/2005            OR   01/12/2005     
     JULIAN   : 2005012               OR   2005012        
     GREGORIAN: 12.January2005        OR   12January  2005
                                                          
                                                          
TIME INTERNAL : 16:04:14              OR   16:04:14.8     
              : 16.04.14.8                                
              : 04.04.14 PM                               
              : 16                                        

Editiermasken für logische Felder (Format L)

Editiermasken für Felder, die das Format L haben (logische Felder), können wie folgt definiert werden:

(EM=[false-string/]true-string)

wobei false-string für die für "falsch" auszugebende Zeichenkette und true-string für die für "wahr" auszugebende Zeichenkette steht.

Beispiel für Editiermasken für logisches Feld

** Example 'EMLOGV': Edit mask for logical variables                    
************************************************************************
DEFINE DATA LOCAL                                                       
1 #SWITCH (L)  INIT <true>                                              
1 #INDEX  (I1)                                                          
END-DEFINE                                                              
*                                                                       
FOR #INDEX 1 5                                                          
  WRITE NOTITLE #SWITCH (EM=FALSE/TRUE) 5X 'INDEX =' #INDEX             
  WRITE NOTITLE #SWITCH (EM=OFF/ON)     7X 'INDEX =' #INDEX             
  IF #SWITCH                                                            
    MOVE FALSE TO #SWITCH                                               
  ELSE                                                                  
    MOVE TRUE TO #SWITCH                                                
  END-IF                                                                
  /*                                                                    
  SKIP 1                                                                
END-FOR                                                                 
END                                                                     

Ausgabe des Programms EMLOGV:

TRUE      INDEX =    1
ON        INDEX =    1
                      
FALSE     INDEX =    2
OFF       INDEX =    2
                      
TRUE      INDEX =    3
ON        INDEX =    3
                      
FALSE     INDEX =    4
OFF       INDEX =    4
                      
TRUE      INDEX =    5
ON        INDEX =    5