Skip to main content

SA0081: Obergrenze ist kein konstanter Wert

Ermittelt die FOR-Anweisungen, bei denen die Obergrenze nicht mit einem konstanten Wert definiert ist.

Begründung: Wenn die Obergrenze einer Schleife ein variabler Wert ist, dann lässt sich nicht mehr erkennen wie oft eine Schleife ausgeführt wird. Dies kann zur Laufzeit zu gravierenden Problemen führen, im schlimmsten Fall zu einer Endlosschleife.

Wichtigkeit: Hoch

Beispiel 86. Beispiel
PROGRAM PLC_PRG
VAR
    i:INT;
    iBorder1: INT := 10;
    iBorder2: INT := 10;
    iCounter: INT;
END_VAR
VAR CONSTANT
    ciBorder:INT := 10;
END_VAR
FOR i:=0 TO 10 DO    //OK
    iCounter := i;
END_FOR

FOR i:=0 TO ciBorder DO    // OK
    iCounter := i;
END_FOR

FOR i:=0 TO iBorder1 DO    // SA0081
    iCounter := i;
END_FOR

FOR i:=0 TO iBorder2 DO    // SA0081
    iCounter := i;
    IF iCounter = 10 THEN
        iBorder2 := 50;
    END_IF
END_FOR

Ausgabe unter Ansicht Meldungen:

  • sa_icon_message.png SA0081: Obergrenze für eine FOR-Schleife muss ein konstanter Wert sein