![]() |
![]() |
Record aggregates (constants) have the same syntax as array aggregates (see the Aggregates section of the Expressions chapter). They can appear anywhere records appear.
The following line illustrates a named record aggregate in a description.
X <= (BYTE => "11110000", IX => 2);
The following line illustrates a positional record aggregate in a description.
X <= ("11110000", 2);
You can use the others construct in a named or positional record aggregate, just as you can in an array aggregate (see the Aggregates section of the Expressions chapter).
You can mix named and positional aggregates in a description, with the positional items listed first.
You cannot have a named item that refers to a field covered in the positional aggregate. The following four examples illustrate this caveat.
The following example shows a simple record type.
type rec is
record
a: integer;
b: integer;
c: integer;
d: integer;
e: integer;
end record
end
The following example shows a named aggregate for the previous example.
(a => 1, b => 2, c => 0, d => 3, e => 0)
In a named aggregate, the items can appear in any order as shown in the following example.
(1, 2, d => 3, others => 0)
The previous example is equivalent to the second example or the following example of positional aggregate.
(1, 2, 0, 3, 0)
You can supply a set of choices in a description of a record aggregate, but a choice cannot be a range. See the following two examples.
The following example shows a record aggregate equivalent to the next example after it.
(b => 2, c => 2, d => 2, a => 1, e => 3)
The following example shows a record aggregate with a set of choices.
(b | c | d => 2, a => 1, e =>3)