Skip to main content

SA0052:異常なシフト操作

符号付き変数のシフト演算(ビットシフト)を決定します。ビットフィールドデータ型のシフト操作の場合(ByteDWORDLWORDWORD)エラーは出力されません。

理由: CODESYS 署名されたデータ型のシフト操作を許可します。ただし、これらの操作は一般的ではなく、混乱を招く可能性があります。 IEC-61131-3規格はそのような操作を規定しておらず、他の開発システムへのコードの移植性を高めるためにそれらを避ける必要があります。

重要性:中

62.
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 bitfield datatypes:
dwTemp1 := SHL(dwTemp1, BYTE#3);
byTemp2 := SHR(byTemp2, BYTE#1);

での出力 メッセージ ビュー:

  • sa_icon_message.png SA0052: 異常なシフト操作