To refer to an entire record variable (for assignment, parameter, comparison, etc) just use its name
To refer to a field of a record, use record_name.field_name
average_male.weight
average_female.name
Remember, use the name of the record variable, not the record type
You can assign one record variable to another of identical type
that_person := this_person;
You cannot read an entire record variable in a single operation. You must read each field separately.
To input a record variable use a procedure:
procedure get_person_record(a_person: out persons) is
space : constant CHARACTER := ' '; -- a space char
nchar : NATURAL; -- for GET_LINE
begin -- get_person_record
a_person.name := (others => space); -- clear name
PUT("Enter name "); GET_LINE(a_person.name, nchar);
a_person.phone := (others => space); -- clear phone
PUT("Enter phone "); GET_LINE(a_person.phone, nchar);
PUT("Enter sex ");
safe_get_sex(a_person.sex );
PUT("Enter age. ");
gen_int_input(a_person.age, min_age, max_age);
PUT("Enter weight. ");
gen_float_input(a_person.weight, min_weight, max_weight);
end get_person_record;
You cannot display an entire record variable in a single operation. You must display each field separately.
To display a record variable use a procedure:
procedure show_person_record(a_person: in persons) is
begin
PUT("Name "); PUT_LINE( a_person.name );
PUT("Phone "); PUT_LINE( a_person.phone );
PUT("Sex "); PUT(a_person.sex, SET => LOWER_CASE);
NEW_LINE;
PUT("Age "); PUT(a_person.age, WIDTH => 3);
NEW_LINE;
PUT("Weight "); PUT(a_person.weight, EXP => 0, AFT =>2);
NEW_LINE;
end show_person_record;
You can compare one record variable to another of identical type using "is equal to" or "is not equal to" operators
if this_person = that_person then
You should use a function to compare specific fields
function is_heavier_than(a_person,
another_person : persons ) return BOOLEAN is
begin -- is_heavier_than
return a_person.weight > another_person.weight;
end is_heavier_than;
To use this function:
if is_heavier_than(this_person, that_person) then
PUT(this_person.name); PUT_LINE(" is heavier.");
else
PUT(that_person.name); PUT_LINE(" is heavier.");
end if;