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:
SA0081: Obergrenze für eine FOR-Schleife muss ein konstanter Wert sein