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