with Ada.Integer_Text_IO; use  Ada.Integer_Text_IO;
with Ada.Text_IO;         use  Ada.Text_IO;

procedure tryRecords1 is

   type Pair is record        -- A new type
      x: Integer;             -- Fields
      y: Integer;
   end record;

   procedure putPair(p: Pair) is
   begin
      put(p.x);                -- Access fields with dot notation
      put(p.y);
      new_line;
   end putPair;

   p1: Pair;                  -- Declare AND allocate!
   p2: Pair;                  -- Not initialized

begin
   p1.x := 1;
   p1.y := 2;

   putPair(p1);

   put(p1.x);
   new_line;

   p2.x := p1.x;
   p2.y := p1.y;
   putPair(p2);

   -- positional aggregate assignment
   p1 := (3, 4);
   putPair(p1);

   -- keyword aggregate assignment
   p2 := (y => 6, others => 5);
   putPair(p2);

   -- Assignment of all fields
   p1 := p2;
   putPair(p1);

end tryRecords1;
-- OUTPUT
          1          2
          1
          1          2
          3          4
          5          6
          5          6