Für Syntax siehe hier.
Wenn 2 Gleitkommazahlen (e.g. System.Single
oder System.Double
) auf Gleichheit geprüft werden, muss berücksichtigt werden, dass immer eine Ungenauigkeit vorhanden ist. Deswegen wird für einen solchen Vergleich immer einen Toleranz verwendet. Diese Toleranz wird auf Basis der definierte Anzahl Nachkommastellen produziert:
// ORIG: 10 ZW-JRATZ-WRT PIC S9(10)V9(3) COMP. // ORIG: 10 K-NULL PIC S9(10)V9(5) VALUE 0. ... // ORIG: IF ZW-JRATZ-WRT NOT = K-NULL // ORIG: THEN if (Math.Abs(ZwJratzWrt - PraeKonstanten.KNull) > 0.000001) {
// ORIG: 10 ZW-NETPRAE-PRT PIC S9(10)V9(5) COMP. ... // ORIG: IF ZW-NETPRAE-PRT NOT = ZEROS // ORIG: THEN if (Math.Abs(ZwNetpraePrt) > 0.000001) { ...
Wenn beim einem Vergleichsbedingung festgestellt wird, dass es sich bei einer der Operanden um ein Datumsfeld handelt, wird der Vergleich ggfs. unter zur Hilfenahme der FromTimestampString
- bzw. FromDateString
-Aufruf realisiert:
// ORIG: IF Z0AAPME-000-UNIT-ID-TS >= SKZ-SIGABTS OR // ORIG: Z0AAPME-000-UNIT-ID-TS = SKZ-Z0AAPME // ORIG: THEN if (Z0aapme._000UnitIdTs >= SkzSigabts.FromTimestampString() || Z0aapme._000UnitIdTs == SkzZ0aapme.FromTimestampString()) { // Stornierte Prämie in diesem GeVo // ORIG: IF B-VEV-STORNIERT-GEVO // ORIG: THEN if (SVevStorniert == VevStorniertEnum.Gevo) { // ORIG: SET B-VERWENDEN TO TRUE BVerwenden = true; } // ORIG: END-IF }
Wenn beim einen Vergleichsbedingung festgestellt wird, dass es sich bei einer oder beiden Operanden um eine Zeichenfolge handelt, wird immer die String.CompareOrdinal
Methode verwendet:
// ORIG: IF LLPPMEU-PME-PRAE-LBZ < LLPPMED-PME-PRAE-LBZ // ORIG: THEN if (String.CompareOrdinal(Llppmeu.PmePraeLbz, Llppmed.PmePraeLbz) < 0) { // SKZ des Nachfolgeres sichern // ---------------------------- // ORIG: MOVE LLPPMED-PME-PRAE-SORT-NR TO ZW-NACH-SKZ ZwNachSkz = Llppmed.PmePraeSortNr; // ORIG: MOVE INDEX-SNLPME TO ZW-NACH-ADR ZwNachAdr = IndexSnlpme; }
Gegebenenfalls wird ein numerische Operand als Zeichenfolge, ggf. unter zur Hilfenahme einem ToAlphanumeric
-Aufruf erzeugt:
// ORIG: IF (L-AKT-SNT-RI-NR > ZERO) // ORIG: THEN if (String.CompareOrdinal(LAktSntRiNr, "0") > 0) { // ORIG: MOVE SPACE TO L-AKT-AUSW-KRIT LAktAuswKrit = String.Empty; // ORIG: PERFORM M30-ETI-SUCHEN M30EtiSuchen(); }
// ORIG: EVALUATE SNLLPME-X6A-WRT-TYP-K // ORIG: WHEN K-BUCH-DIREKTER-BT // ORIG: WHEN K-BUCH-NETTO if (String.CompareOrdinal(Snllpme.X6aWrtTypK, PraeKonstanten.KBuchDirekterBt.ToAlphanumeric(2)) == 0 || String.CompareOrdinal(Snllpme.X6aWrtTypK, PraeKonstanten.KBuchNetto.ToAlphanumeric(2)) == 0) { // ORIG: MOVE SNLLPME-PME-PRAE-BT TO ZW-NETPRAE-PRT ZwNetpraePrt = Snllpme.PmePraeBt; }