SA0081: Il confine superiore non è una costantePermalink

Rileva le istruzioni FOR in cui il limite superiore non è definito con un valore costante.

Giustificazione: Se il limite superiore di un ciclo è un valore variabile, non è più possibile vedere la frequenza di esecuzione del ciclo. Ciò può causare seri problemi in fase di esecuzione. Il caso peggiore è un ciclo infinito.

Importanza: Alto

Esempio

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

--> SA0081: Upper border of a for loop must be a constant value