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

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

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.