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