>At first our statements don't look different, but I keep adding that while both a PRIVATE and PUBLIC created by the same routine is in scope, only the PUBLIC can be seen above the calling program. This cannot be tested in code, but can be tested in the debugger using the Locals Window.
Mike,
That is where you are mistaken, the locals window is showing the memory at the current execution point in the code. There is no way for the calling program to address the private variable, because before the calling program is back in control the private variable is released from memory. If a routine cannot address the variable then the variable is out of scope for that routine.
PRGs are not objects adn they don't have the features of objects. So if I run your code and suspend it on line 12 of the second program, then what I am looking at in the debugger is the state of memory at line 12 of the second program. I don't know of any way to get the debugger to show me some previous state of memory before line 12 ran without suspending back then.