-- Copyright 2020-2021 Free Software Foundation, Inc. -- -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 3 of the License, or -- (at your option) any later version. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program. If not, see . package P is type Kind_Type is (No_Kind, A_Kind, B_Kind); type PID_Type is new Integer; Default_Value : constant PID_Type := 0; type Name_Type is array (1 ..3) of Character; Name_Default_Value : constant Name_Type := "AAA"; type Variable_Record_Type(Kind : Kind_Type := No_Kind) is record case Kind is when A_Kind => Variable_Record_A : PID_Type := Default_Value; when B_Kind => Variable_Record_B : Name_Type := Name_Default_Value; when No_Kind => null; end case; end record; type Complex_Variable_Record_Type (Kind : Kind_Type := No_Kind) is record Complex_Variable_Record_Variable_Record : Variable_Record_Type(Kind); end record; type Top_Level_Record_Type is record Top_Level_Record_Complex_Record : Complex_Variable_Record_Type; end record; end P;