SA0008: Controllare i tipi di sottogammaPermalink

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