Bedingungen

Gleitkommazahlen

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

Datum

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
}

Zeichenfolge

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;
}
cobmig:cs:procdiv:condition:start · Zuletzt geändert: 12.06.2020 13:26

Copyright © 1992-2024 TeamWiSE Gesellschaft für Softwaretechnik mbH         Adressen |  Kontakt |  AGB |  Datenschutzerklärung |  Impressum