Rileva le violazioni fuori campo dei tipi di sottocampo. I letterali assegnati sono già controllati dal compilatore. Quando vengono assegnate delle costanti, i valori devono rientrare nell'intervallo definito. Quando le variabili vengono assegnate, i tipi di dati devono essere identici.
Giustificazione: Se si utilizzano tipi di sottoinsieme, assicurarsi che questo sottoinsieme non sia uscito. Il compilatore verifica la presenza di questo tipo di violazioni dei sottocampi solo per le assegnazioni di costanti.
Importanza: Basso
Il controllo non viene eseguito per gli oggetti CFC perché la struttura del codice non lo consente.
Esempio
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