Attribut 'strict'
Das Attribut 'strict' bewirkt, dass in folgenden Fällen Übersetzungsfehler entstehen:
- Arithmetische Operation mit Variablen des Enumerationstyps
- Zuweisung eines konstanten Werts, der nicht einem Enumerationswert entspricht, zu einer Variablen des Enumerationstyps
(wenngleich nur die Zuweisung von Komponenten eines Enumerationstyps zu einer Variablen dieses Enumerationstype empfohlen wird) - Zuweisung einer nichtkonstanten Variablen, die mit einem Datentyp ungleich des Enumerationstyps deklariert ist, zu einer Variablen des Enumerationstyps.
(Wenn die rechte Seite der Zuweisung keine Konstante ist, dann muss der Datentyp der rechten und linken Seite gleich sein und somit dem Enumerationstyp entsprechen.)
Syntax: {attribute 'strict'}
Einfügeort: Zeile oberhalb der TYPE-Definition
Beispiele
Enumeration E_Colors:
{attribute 'qualified_only'}
{attribute 'strict'}
TYPE E_Colors :
(
eRed := 0,
eGreen := 1,
eBlue := 2
);
END_TYPEProgramm MAIN:
PROGRAM MAIN
VAR CONSTANT
c2 : INT := 2;
END_VAR
VAR
e1, e2 : E_Colors;
nVar : INT;
END_VAR// Regel 1
e1 := e1 + 1; // NOK: Arithmetische Operation nicht erlaubt
// Regel 2
e1 := 2; // OK: Wert 2 ist im Enum definiert
e1 := c2; // OK: Wert 2 ist im Enum definiert
e1 := 3; // NOK: Wert 3 ist nicht im Enum definiert
// Regel 3
e1 := e2; // OK: Datentyp stimmen überein
e1 := nVar; // NOK: Datentypen stimmen nicht überein