SA0052: Olağandışı vites değiştirme işlemiPermalink

İşaretli değişkenler üzerindeki kaydırma işlemlerini (bit kaydırma) algılar. Bit alanı veri türlerinde kaydırma işlemleri söz konusu olduğunda (‎Byte‎, ‎DWORD‎, ‎LWORD‎, ‎WORD‎), bir hata bildirilmez.

Gerekçe: CODESYS işaretli veri türleri üzerinde kaydırma işlemlerine izin verir. Ancak bu işlemler olağandışıdır ve kafa karıştırıcı olabilir. IEC 61131-3 standardı bu tür işlemleri öngörmemektedir. Bu nedenle, kodun diğer geliştirme sistemlerine taşınabilirliğini artırmak için bunlardan kaçınılmalıdır.

Önemliymiş: Orta

Örnek

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