Los record son estructuras heterogéneas: agregados de elementos (campos) del mismo o distintos tipos que se pueden acceder individualmente mediante su nombre. Un record se define con la palabra record, seguida de la declaración de los campos del record y end record.
record_full_type_declaration ::= type defining_identifier [known_discriminant_part] is record_type_definition;
record_type_definition ::= record_modifiers record_definition
record_definition ::=
record
component_list
end record
| null record
component_list ::=
component_item {component_item}
| {component_item} variant_part
| null;
component_item ::= component_declaration | aspect_clause
component_declaration ::=
defining_identifier_list : component_definition [:= expression];
component_definition ::=
[aliased] subtype_indication
| [aliased] access_definition
record_modifiers ::= [[abstract] tagged] [limited]
type Complejo is
record
Real, Imag: Float := 0.0;
end record;
type Record_Nulo is null record;