SA0081: El borde superior no es una constante
Detecta el FOR declaraciones donde el límite superior no está definido con un valor constante
Justificación: si el límite superior de un bucle es un valor variable, ya no es posible ver con qué frecuencia se ejecuta un bucle. Esto puede resultar en serios problemas en tiempo de ejecución. El peor de los casos es un bucle infinito.
Importancia: Alta
ejemplo 86. Ejemplo
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
Salida en el Mensajes vista:
SA0081: El borde superior de un bucle for debe ser un valor constante