package Discr29 is type Rec1 is record I1 : Integer; I2 : Integer; I3 : Integer; end record; type Rec2 is tagged record I1 : Integer; I2 : Integer; end record; type Rec3 (D : Boolean) is record case D is when True => A : Rec1; when False => B : Rec2; end case; end record; procedure Proc (R : out Rec3); Tmp : Rec2; end Discr29;