Codepage-Editiermasken — der EM-Parameter

#### Search Results

Search

# Codepage-Editiermasken — der EM-Parameter

Dieses Dokument beschreibt, wie Sie eine Editiermaske für ein alphanumerisches oder numerisches Feld angeben können.

Folgende Themen werden behandelt:

- Verwendung des EM-Parameters

- Editiermasken für numerische Felder

- Editiermasken für alphanumerische Felder

- Länge der Felder

- Editiermasken für Datums- und Zeitfelder

- Trennzeichen-Angaben an lokale Standards anpassen

- Beispiele für Editiermasken

- Weitere Beispiele für Editiermasken

## Verwendung des EM-Parameters

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 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 Programm-Ebene definierten Editiermaske.

Eine auf Feldebene definierte Editiermaske hat Vorrang vor einer auf Statement-Ebene definierten Editiermaske.

## Editiermasken für numerische Felder

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

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.

## Länge der Felder

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.

#### Beispiele:

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 Datums- und Zeitfelder

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.

## Trennzeichen-Angaben an lokale Standards anpassen

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:

- Dezimaltrennzeichen

- Dynamisches Tausendertrennzeichen

- Beispiele

### Dezimaltrennzeichen

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.

### Dynamisches Tausendertrennzeichen

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.

### Beispiele

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`

## Beispiele für Editiermasken

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.

### Beispielprogramm ohne EM-Parameter

    ** 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

### Beispielprogramm mit EM-Parametern

    ** 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

## Weitere Beispiele für Editiermasken

Siehe die folgenden Beispiel-Programme.

- EDITMX03 - Editiermaske (unterschiedliche EM-Angabe bei alphanumerischen Feldern)

- EDITMX04 - Editiermaske (unterschiedliche EM-Angaben bei numerischen Feldern)

- EDITMX05 - Editiermaske (EM-Angaben für Datums- und Uhrzeit-Systemvariablen)

### On this page

- Verwendung des EM-Parameters
- Editiermasken für numerische Felder
- Editiermasken für alphanumerische Felder
- Länge der Felder
- Editiermasken für Datums- und Zeitfelder
- Trennzeichen-Angaben an lokale Standards anpassen
- Beispiele für Editiermasken
- Weitere Beispiele für Editiermasken