{
-- This is a test of unnested non-recursive procedures with parameters
-- and local variables.
}
$c+
module test16 { locals and params }
private
  integer i,power;
  
  typedefinition tuple [ procedure findpower(value integer in; reference integer power) ] Powers;
  
  Powers powers;
  
  procedure Powers@findpower
   integer j;
  begin 
    j := 1;
    power := 1;
    do j <= in ->	power := power * 2;
			j := j+1;
    od;
    return;
  end;

begin
  write 'Calculate the first 5 powers of 2:';
  i := 1;
  do i <= 5 ->
	powers!findpower(i, power);
	write '2**',i,' = ', power;
	i := i+1;
  od;
end.
