SA0052:異常なシフト操作
符号付き変数のシフト演算(ビットシフト)を決定します。ビットフィールドデータ型のシフト操作の場合(Byte
、 DWORD
、 LWORD
、 WORD
)エラーは出力されません。
理由: 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);
での出力 メッセージ ビュー:
SA0052: 異常なシフト操作