Detecta violaciones fuera de rango de los tipos de subrango. Los literales asignados ya son comprobados por el compilador. Cuando se asignan constantes, los valores deben estar dentro del intervalo definido. Cuando se asignan variables, los tipos de datos deben ser idénticos.
Justificación: Si se utilizan tipos de subrango, asegúrese de que no se sale de este subrango. El compilador comprueba este tipo de violaciones de subrango sólo para asignaciones de constantes.
Importancia: Bajo
La comprobación no se realiza para los objetos CFC porque la estructura del código no lo permite.
Ejemplo
VAR_GLOBAL iVarGlob:INT; END_VAR PROGRAM PLC_PRG VAR iSubr1: INT (INT#1..INT#10); iSubr2: INT (INT#1..INT#1000); iCount: INT; by_SubType : BYTE (BYTE#0..BYTE#11); iVar : INT (-4095..4095); END_VAR iSubr1 := nCount; // SA0008 iSubr1 := subr2; // SA0008 iSubr1 := gvl.iVarGlob; // SA0008 //byBYTE_SubType := BYTE#123; //already detected by compiler, error "Cannot convert type..." --> SA0008: Subrange variable 'iSubr1' maybe out of allowed range