✓Whole structs and arrays assign as values
TYPE Pkg : STRUCT id : DINT; dest : INT; END_STRUCT; END_TYPE
VAR a : Pkg; b : Pkg; track : ARRAY [0..3] OF Pkg; i : INT; END_VAR
b := a;
FOR i := 3 TO 1 BY -1 DO track[i] := track[i - 1]; END_FOR;
✓An enumeration value written with its type (Mode#Idle)
TYPE Mode : (Idle, Running); END_TYPE
VAR m : Mode := Mode#Idle; END_VAR
IF m = Mode#Idle THEN m := Mode#Running; END_IF;
✓Several names on one declaration line
VAR x, y, z : INT := 3; END_VAR
x := y + z;
✓CONSTANT
VAR CONSTANT Limit : INT := 100; END_VAR VAR n : INT; END_VAR
n := Limit;
✓VAR_GLOBAL, shared by every POU
VAR_GLOBAL Shared : INT := 5; END_VAR
VAR n : INT; END_VAR
n := Shared;
✓A function-block instance in VAR_GLOBAL
VAR_GLOBAL t : TON; END_VAR
VAR q : BOOL; END_VAR
t(IN := TRUE, PT := T#1s);
q := t.Q;
✓TYPE ... STRUCT, nested access paths
TYPE Inner : STRUCT a : INT; END_STRUCT; END_TYPE
TYPE Outer : STRUCT
inner : Inner;
data : ARRAY [1..3] OF INT;
END_STRUCT; END_TYPE
VAR p : Outer; n : INT; END_VAR
n := p.inner.a + p.data[2];
✓Multi-dimensional ARRAY with a repeated initialiser
VAR grid : ARRAY [1..2, 0..3] OF INT := [1, 2, 6(0)]; n : INT; END_VAR
n := grid[2, 1];
✓Enumerations are their own type
TYPE Mode : (Idle, Running := 10, Fault); END_TYPE
VAR m : Mode := Running; n : INT; END_VAR
CASE m OF
Idle: n := 0;
Running: n := 1;
Fault: n := 2;
END_CASE;
✓Subranges, enforced on every store
TYPE Percent : INT (0..100); END_TYPE
VAR p : Percent := 50; END_VAR
p := 60;
✓VAR_EXTERNAL, checked against the VAR_GLOBAL it names
VAR_GLOBAL Shared : INT; END_VAR
VAR_EXTERNAL Shared : INT; END_VAR
Shared := 1;
✓Located variables at inputs and outputs (AT %IX0.0, AT %QW4)
VAR
Eye AT %IX100.0 : BOOL;
Run AT %QX100.0 : BOOL;
Count AT %IW2 : INT;
END_VAR
Run := NOT Eye;
✓A plain type alias (TYPE Count : INT)
TYPE Count : INT; END_TYPE
VAR n : Count; END_VAR
✓A named array type, one type under its name
TYPE Row : ARRAY [1..3] OF INT; END_TYPE
VAR a : Row; b : Row := [1, 2, 3]; END_VAR
a := b;
✓Array bounds written as named CONSTANTs
VAR CONSTANT ZONES : INT := 4; END_VAR
VAR eyes : ARRAY [0..ZONES - 1] OF BOOL; END_VAR
eyes[ZONES - 1] := TRUE;
✓Structured initial values: (field := value), and arrays of them
TYPE Pkg : STRUCT id : DINT; dest : INT; END_STRUCT; END_TYPE
VAR p : Pkg := (id := 7, dest := 3); lane : ARRAY [1..2] OF Pkg := [(id := 1), (id := 2)]; END_VAR
p.dest := 4;