1-- { dg-do run } 2 3procedure Pack4 is 4 5 type Time_T is record 6 Hour : Integer; 7 end record; 8 9 type Date_And_Time_T is record 10 Date : Integer; 11 Time : Time_T; 12 end record; 13 14 pragma Pack(Date_And_Time_T); 15 16 procedure 17 Assign_Hour_Of (T : out Time_T) 18 is 19 begin 20 T.Hour := 44; 21 end; 22 23 procedure 24 Clobber_Hour_Of (DT: out Date_And_Time_T) 25 is 26 begin 27 Assign_Hour_Of (Dt.Time); 28 end; 29 30 DT : Date_And_Time_T; 31 32begin 33 DT.Time.Hour := 22; 34 Clobber_Hour_Of (DT); 35 if DT.Time.Hour /= 44 then 36 raise Program_Error; 37 end if; 38end; 39