Rileva le operazioni di spostamento di bit che non vengono effettuate sui tipi di
dati bitfield (BYTE, WORD, DWORD, LWORD)
Giustificazione: Lo standard IEC 61131-3 consente l'accesso ai bit solo ai tipi di dati bitfield. Tuttavia, il compilatore CODESYS consente anche operazioni di bit shift con tipi di dati senza segno.
Importanza: Basso
Si veda anche la regola rigorosa SA0018.
Esempio
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 --> SA0147: Unusual shift operation - strict