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;