Consider the following situation: program Foo; function a: Integer; function a: Integer; begin a := 42 end; begin a := a end; begin WriteLn ('OK') end. The problem here is that within the outer `a', the identifier `a' can mean both its result variable and the local function `a'. BP allows the declaration, but not the assignment `a := a' (because apparently interprets `a' to mean the local `a'), so there seems to be no way to return a meaningful value from the outer `a' which would render the function quite useless. In EP I don't seem to find any wording that forbids it (but it's quite confusing as usual, so I might have missed it). GPC currently doesn't allow the declaration of the inner `a'. This seems reasonable to me, but is it conforming with the standard? Frank -- Frank Heckenbach, frank@g-n-u.de, http://fjf.gnu.de/, 7977168E GPC To-Do list, latest features, fixed bugs: http://www.gnu-pascal.de/todo.html GPC download signing key: 51FF C1F0 1A77 C6C2 4482 4DDC 117A 9773 7F88 1707