1-- { dg-do run } 2 3procedure Slice10 is 4 5 subtype Str is String (1 .. 3); 6 7 type T is record 8 B : Boolean; 9 S : Str; 10 end record; 11 12 for T use record 13 B at 0 range 0 .. 0; 14 S at 0 range 1 .. 24; 15 end record; 16 17 function Match (X, Y: T; Length : Positive) return Boolean is 18 begin 19 return X.S (1 .. Length) = Y.S (1 .. Length); 20 end; 21 22 X, Y : T := (B => True, S => "123"); 23 24begin 25 X.B := False; 26 if not match (X, Y, 3) then 27 raise Program_Error; 28 end if; 29end; 30