SA0081: Obergrenze ist kein konstanter Wert
Funktion | Ermittelt 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 |
Beispiele:
PROGRAM MAIN
VAR CONSTANT
cMax : INT := 10;
END_VAR
VAR
nIndex : INT;
nVar : INT;
nMax1 : INT := 10;
nMax2 : INT := 10;
END_VARFOR nIndex := 0 TO 10 DO // no error
nVar := nIndex;
END_FOR
FOR nIndex := 0 TO cMax DO // no error
nVar := nIndex;
END_FOR
FOR nIndex := 0 TO nMax1 DO // => SA0081
nVar := nIndex;
END_FOR
FOR nIndex := 0 TO nMax2 DO // => SA0081
nVar := nIndex;
IF nVar = 10 THEN
nMax2 := 50;
END_IF
END_FOR