Skip to main content

SA0008: Unterbereichstypen prüfen

Ermittelt Bereichsüberschreitungen von Unterbereichstypen. Zugewiesene Literale werden bereits vom Compiler geprüft. Wenn Konstanten zugeordnet sind, müssen die Werte innerhalb des definierten Bereichs liegen. Wenn Variablen zugeordnet sind, müssen die Datentypen identisch sein.

Begründung: Wenn Unterbereichstypen verwendet werden, dann sollte sichergestellt werden, dass dieser Unterbereich nicht verlassen wird. Der Compiler überprüft solche Unterbereichsverletzungen nur für Zuweisungen von Konstanten.

Wichtigkeit: Niedrig

Tipp

Die Prüfung wird nicht für CFC-Objekte durchgeführt, da die Codestruktur dies nicht zulässt.

Beispiel 20. Beispiel
VAR_GLOBAL
    iVarGlob:INT;
END_VAR
PROGRAM PLC_PRG
VAR
    iSubr1: INT (INT#1..INT#10);
    iSubr2: INT (INT#1..INT#1000);
    iCount: INT;
    by_SubType : BYTE (BYTE#0..BYTE#11);
    iVar : INT (-4095..4095);
END_VAR
iSubr1 := nCount;              // SA0008
iSubr1 := subr2;               // SA0008
iSubr1 := gvl.iVarGlob;        // SA0008
//byBYTE_SubType := BYTE#123;  //already detected by compiler, error "Cannot convert type..."

Ausgabe unter Ansicht Meldungen:

  • sa_icon_message.png SA0008: Unterbereichsvariable 'iSubr1' eventuell außerhalb des zulässigen Bereichs