SA0018: Accesso insolito ai bitPermalink

Rileva l'accesso di bit alle variabili firmate. Tuttavia, lo standard IEC 61131-3 consente solo operazioni di accesso ai bit e di spostamento dei bit sui campi di bit. Si vedano anche le regole severe SA0147 e SA0148.

Giustificazione: I tipi di dati con segno non devono essere utilizzati come campi di bit e viceversa. Lo standard IEC 61131-3 non prevede questo tipo di accesso e pertanto è necessario rispettare questa regola quando si scrive codice portatile.

Importanza: Medio

Eccezione per le enumerazioni dei flag: Quando un'enumerazione è dichiarata come flag mediante l'attributo pragma ‎{attribute 'flags'}‎, l'errore ‎SA0018‎ non viene emesso per l'accesso ai bit con gli operatori ‎OR‎, ‎AND‎ o ‎NOT‎.

Esempio

PROGRAM PLC_PRG
VAR
	iTemp1 : INT;
	diTemp3 : DINT;
	uliTemp4 : ULINT;
	siTemp5 : SINT;
	usiTemp6 : USINT;
	byTemp2 : BYTE;
END_VAR
iTemp1.3 := TRUE;     // SA0018
diTemp3.4 := TRUE;    // SA0018
uliTemp4.18 := FALSE; // no error because this is an unsigned data type
siTemp5.2 := FALSE;   // SA0018
usiTemp6.3 := TRUE;   // no error because this is an unsigned data type
byTemp2.5 := FALSE;   // no error because the byte is a bitfield

--> SA0018: Unusual bit access