EM - Editiermaske

#### Search Results

Search

# EM - Editiermaske

Mit em Session-Parameter `EM` 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- und Codepage-Unterstützung in der Natural-Programmiersprache, Session-Parameter, EMU, ICU, LCU, TCU im Vergleich zu EM, IC, LC, TC in der Unicode- und Codepage-Unterstützung-Dokumentation.
3. Siehe auch Editiermasken — der EM-Parameter im Leitfaden zur Programmierung.

Die folgenden Themen werden nachfolgend erörtert:

- EM-Parameter-Syntax

- Beispiele

- Leerzeichen in Editiermasken

- Standard-Editiermasken

- Editiermasken für numerische Felder

- Editiermasken für alphanumerische Felder

- Editiermasken für binäre Felder − Format B

- Hexadezimale Editiermasken

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

- Editiermasken für logische Felder (Format L)

## 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 Datebdefinitionsmodul (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 an die 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

- Vorzeichen

- Führende Literale

- Literale Einschubzeichen und nachgestellte Zeichen

- Nachfolgende Vorzeichen

- Beispiele für numerische Editiermasken

### 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 `Z`s in der Editiermaske als lauter Leerzeichen ausgegeben werden (siehe auch Session-Parameter `ZP`).

Vor den Neunern oder `Z`s können eins oder mehrere andere Zeichen stehen.

### Vorzeichen

Wenn das erste Zeichen vor den Neunern oder `Z`s 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 `H`angegeben, 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)

- Syntaktische Einschränkungen für Datumszeichen

- Hinweise zur Eingabe-Editiermaske

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

- Nur für Zeitfelder (Format T):

- Beispiele für Datums- und Zeit-Editiermasken

### 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 `N`s 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 `L`s 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

### On this page

- EM-Parameter-Syntax
- Beispiele
- Leerzeichen in Editiermasken
- Standard-Editiermasken
- Editiermasken für numerische Felder
- Editiermasken für alphanumerische Felder
- Editiermasken für binäre Felder − Format B
- Hexadezimale Editiermasken
- Editiermasken für Datums- und Zeitfelder (Formate D und T)
- Editiermasken für logische Felder (Format L)