Skip to main content

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:

  • sa_icon_message.png SA0081: El borde superior de un bucle for debe ser un valor constante