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").