Hey, this is an old problem, and, moreover, one that exists
in *every* language that allows side-effects.
How about :
procedure p(var i:integer):integer;
begin
i := i+1;
p := i;
end (* p *);
begin
j := i + p(i);
end.
Such constructions should *always* be avoided.
--
Jack Jansen, {decvax|philabs|seismo}!mcvax!jack
The shell is my oyster.