SA0059: Vergleichsoperationen, die immer TRUE oder FALSE liefern

Funktion

Ermittelt Vergleiche mit Literalen, deren Ergebnis immer TRUE oder FALSE ist und die bereits während der Kompilierung ausgewertet werden können.

Begründung

Eine Operation, die konstant TRUE oder FALSE liefert, ist ein Hinweis auf einen Programmierfehler.

Wichtigkeit

Hoch

Beispiele:

PROGRAM MAIN
VAR
    nBYTE   : BYTE;
    nWORD   : WORD;
    nDWORD  : DWORD;
    nLWORD  : LWORD;
    nUSINT  : USINT;
    nUINT   : UINT;
    nUDINT  : UDINT;
    nULINT  : ULINT;
    nSINT   : SINT;
    nINT    : INT;
    nDINT   : DINT;
    nLINT   : LINT;
    bResult : BOOL;
END_VAR
bResult := nBYTE  <= 255;                           // => SA0059
bResult := nBYTE  <= BYTE#255;                      // => SA0059
bResult := nWORD  <= WORD#65535;                    // => SA0059
bResult := nDWORD <= DWORD#4294967295;              // => SA0059
bResult := nLWORD <= LWORD#18446744073709551615;    // => SA0059
bResult := nUSINT <= USINT#255;                     // => SA0059
bResult := nUINT  <= UINT#65535;                    // => SA0059
bResult := nUDINT <= UDINT#4294967295;              // => SA0059
bResult := nULINT <= ULINT#18446744073709551615;    // => SA0059
bResult := nSINT  >= -128;                          // => SA0059
bResult := nSINT  >= SINT#-128;                     // => SA0059
bResult := nINT   >= INT#-32768;                    // => SA0059
bResult := nDINT  >= DINT#-2147483648;              // => SA0059
bResult := nLINT  >= LINT#-9223372036854775808;     // => SA0059