@c+
module test17_1 -- factorial
 -- test of parameters and recursion in  GCL 
private
 integer inArg, result;
 
 proc nFac (val integer n; ref integer result)
 	begin
	if 	n <= 0 -> result := 1;
	   [] 	n > 0 -> nFac(n-1, result); result :=  n * result;
	fi;
	end;
	
begin
read inArg; -- use 4
nFac(inArg, result);
write inArg, ' factorial is ', result;
end.  -- 24
