Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Nationale Datenfelder in Bedingungen

&pagelevel(4)&pagelevel

In einer Vergleichsbedingung darf ein nationales Datenfeld mit Operanden verschiedener Klassen verglichen werden. Dabei kann ebenfalls eine implizite Konvertierung von Datenfeldinhalten in die entsprechende nationale Darstellung stattfinden.

Für den Vergleich werden nicht-nationale Operanden so behandelt, als ob sie mittels MOVE in ein „gleichgroßes“ nationales Datenfeld übertragen wurden. Anschließend erfolgt dann ein Vergleich der nationalen Daten. Der kürzere Operand wird dazu rechts mit nationalen Leerzeichen auf die Länge des längeren Operanden aufgefüllt.

Beispiel 12-16

Beispiel 12-16
01 num     PIC 9(4) VALUE 1860.
01 alfa     VALUE "TSV MÜNCHEN".
01 nat.
  02 nat1  PIC NNN VALUE N"TSV".
  02 nat2  PIC NNNN VALUE N"1860".
IF num = nat2 THEN ...                 (1)
IF alfa = nat1 THEN ...                (2)


(1) Das numerische Feld num wird in ein 4 Zeichen langes nationales Vergleichsfeld (definiert als NNNN) übertragen und mit nat2 verglichen. Der Vergleich ist wahr.

(2) Das alphanumerische Feld alfa ist in ein nationales Vergleichsfeld (definiert als N(11)) konvertiert zu denken. Dieses wird verglichen mit einem Vergleichsfeld (ebenfalls als N(11) definiert, dessen Inhalt nat1 entspricht, ergänzt um 8 nationalen Leerzeichen).
Der Vergleich ist falsch.

Der Vergleich einzelner nationaler Zeichen erfolgt immer auf Basis der Binär-Darstellung dieser Zeichen. Das gilt auch für die Anweisungen SORT und MERGE. Die erweiterten Möglichkeiten beim Vergleich entsprechend Unicode werden nicht unterstützt (culturally sensitive, normalization).
Zu beachten ist auch, dass eine Vergleichsrelation, die zwischen 2 alphanumerischen Zeichen besteht, nicht genauso zwischen den entsprechenden beiden nationalen Zeichen bestehen muss (z.B. "A" < "1", aber N"A" > N"1").