Detecta operaciones de desplazamiento (desplazamiento de bits) en variables con signo.
En el caso de operaciones de desplazamiento en tipos de datos de campo de bits (Byte, DWORD, LWORD, WORD), no se notifica ningún error.
Justificación: CODESYS permite operaciones de desplazamiento en tipos de datos con signo. Sin embargo, estas operaciones son poco habituales y pueden resultar confusas. La norma IEC 61131-3 no contempla este tipo de operaciones. Por lo tanto, deben evitarse para aumentar la portabilidad del código a otros sistemas de desarrollo.
Importancia: Medio
Ejemplo
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