SA0147 : Opération de déplacement inhabituelle - stricte
Détermine les opérations de décalage de bits qui ne s'appliquent pas aux types de données de champ de bits (BYTE
, WORD
, DWORD
, LWORD
) respectivement.
Raison : La norme CEI 61131-3 n'autorise l'accès binaire qu'aux types de données de champ binaire. la CODESYSCependant, le compilateur autorise également les opérations de décalage de bits avec des types de données non signés.
Importance : faible
Astuce
Voir aussi la règle non stricte SA0018.
Exemple 108. Exemple
PROGRAM PLC_PRG VAR in_byte : BYTE := 16#45; // 2#01000101 in_word : WORD := 16#0045; // 2#0000000001000101 in_uint : UINT; in_dint : DINT; erg_byte : BYTE; erg_word : WORD; erg_uint : UINT; erg_dint : DINT; n: BYTE := 2; END_VAR
erg_byte := SHL(in_byte,n); // no error because BYTE is a bit field erg_word := SHL(in_word,n); // no error because WORD is a bit field erg_uint := SHL(in_uint,n); // SA0147 erg_dint := SHL(in_dint,n); // SA0147
Sortie dans le messages voir:
SA0147 : Opération de quart de travail inhabituelle – stricte