Hello Marco,
I have copied my reply to the list.
On 21 May 2000, at 15:56, Marco van de Voort wrote:
Or do they mean:
procedure x;
var i : integer;
procedure nestedx;
begin i:=5; end;
begin for i:=1 to 5 do nestedx; end;
I believe you are correct, and my original reading that:
i := 0; for i := 1 to 10 do ;
was incorrect is itself incorrect. The key part of the statement in the standard is that the "...procedure-and-function-definition part of the block that closest-contains a for-statement..." cannot threaten the control variable. In your example, the "procedure x" block (the second begin-end block) is the "block that closest-contains a for-statement." Therefore, your first block, that of "procedure nestedx", forms the "procedure-and- function-definition-part of the block...."
So your example breaks the requirement listed in the standard, meaning your interpretation is correct. In my example, the threat ("i := 0") is not in either the for-statement nor the procedure-and-function-definition part, so it is legal.
-- Dave