program sam8;

{
 Using a subrange type in a packed recrod seems to break passing the type
 by reference
}
type
  t1 = 0..100; {Has to be subrange}

r1 = packed record { Has to be packed }
  f1 : t1;
end;

procedure proc1(var a1: t1); { Has to be var }
begin
  if a1 = 42 then writeln ('OK') else writeln ('failed')
end;

procedure proc2(var a1: t1); { Also has to be var }
begin
proc1(a1);
end;

var a1 : t1;

begin
  a1 := 42;
  proc2 (a1)
end.
