SA0008 : Vérifier les types de sous-gamme
Détecte les violations hors plage des types de sous-plage. Les littéraux assignés sont déjà vérifiés par le compilateur. Lorsque des constantes sont affectées, les valeurs doivent être comprises dans la plage définie. Lorsque des variables sont affectées, les types de données doivent être identiques.
Justification : Si des types de sous-gamme sont utilisés, assurez-vous que cette sous-gamme n'est pas quittée. Le compilateur vérifie ces types de violations de sous-intervalle uniquement pour les affectations de constantes.
Importance : Faible
Astuce
Le contrôle n'est pas effectué pour les objets CFC car la structure du code ne le permet pas.
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..."
Sortie dans le messages voir:
SA0008 : La variable de sous-plage 'iSubr1' est peut-être hors de la plage autorisée