Rileva le operazioni di spostamento (bit shift) su variabili firmate. Nel caso di
operazioni di spostamento su tipi di dati bitfield (Byte, DWORD, LWORD, WORD), non viene segnalato alcun errore.
Giustificazione: CODESYS consente operazioni di spostamento su tipi di dati firmati. Tuttavia, queste operazioni sono insolite e possono creare confusione. La norma IEC 61131-3 non prevede questo tipo di operazioni. Pertanto, dovrebbero essere evitati per aumentare la portabilità del codice ad altri sistemi di sviluppo.
Importanza: Medio
Esempio
PROGRAM PLC_PRG VAR iTemp : INT; dwTemp1 : DWORD; byTemp2 : BYTE; diTemp3 : DINT; siTemp4 : SINT; liTemp5 : LINT; END_VAR //the following lines each will cause an SA0052: iTemp := SHL(iTemp, BYTE#2); diTemp3 := SHR(diTemp3, BYTE#4); siTemp4 := ROL(siTemp4, BYTE#2); liTemp5 := ROR(liTemp5, BYTE#2); //no error SA0052 because DWORD and BYTE are bit field data types: dwTemp1 := SHL(dwTemp1, BYTE#3); byTemp2 := SHR(byTemp2, BYTE#1); ---> SA0052: Unusual shift operation