A composite type object is one having multiple elements. There are two classes of composite types: array types and record types.
composite_type_definition ::= array_type_definition | record_type_definition
An object of a composite type is a collection of other objects, called elements. The elements can be of any scalar, composite or access type. It is not allowed to use file types as elements of a composite type.
The difference between arrays and records lies in that all elements of an array must be of the same type. For example, each array element can be a voltage value. On the other hand, each element of a record can be of a different type (Voltage1, current1, resistance1,Voltage2,&ldots;). Each element of an array is referred to by its array name and position (index). On the other hand, the record elements (called fields) are referred to through their individual names (together with the name of entire record), or through an aggregate.
See array and record for details.
type T_MonthlyIncome is
array (1 to 12) of Integer;
type T_PersonalData is
FirstName : String (1 to 6);
LastName : String (1 to 10);
IDNumber : String (1 to 5);
Incomes : T_MonthlyIncome;
TaxPaid : Boolean;
The two types above illustrate two classes of composite type. The first one defines a 12-position array of integer values, while the second one is a record with five fields. First four fields are of composite types, while the very last one is of a scalar type.
Signal Year97Inc : T_MonthlyIncome;
Signal SomeEmployee : T_PersonalData;
. . .
Year97Inc(12) <= 5500;
SomeEmployee.FirstName <= "Gordon";
The signals are declared to be of the types declared in Example 1. Note the way elements of the composite types are accessed: in case of arrays through the position index, while in record through the field name (preceded by a dot).