Awesome help here, thanks!
So, if you don't mind TM (or anybody else) if you could entertain a couple more questions.
First, a question regarding var types being passed to a sub declaring a new #NSNAME:
set !var1 Hello
gosub sub1 !var1
halt
sub sub1
namespace push
namespace local Test
set !NSVar1 %1
Display !NSVar1
namespace pop
return
So, as #NSNAME Test knows nothing about !var1 in the default space why does passing the variable actually work? Wait, maybe I've just answered my own question. Is it becaue the value of !var1 gets assigned to the %1 global variable thus making it available to all namespaces as the currently declared %1? That just makes too much sense.
On a similar note, I'm assuming that any variable being set in a declared namespace that will be used in another namespace (default or otherwise) will need to be a global thus the following won't work:
gosub sub1
Display !NSVar1
halt
sub sub1
namespace push
namespace local Test
set !NSVar1 Hello , #spc , World
namespace pop
return !NSVar1
Now what would be cool is if namespace vars were indeed like an array in that they could be called throught a script such as #NSNAME:!NSVarName (e.g. #TEST:!NSVar1) - now this would be cool!!

Last question - do the variable values in a namespace get saved in memory until overwritten? In other words, can I repeatedly go back to a namespace and further modify a NS variable?
for %i 1 10
gosub sub1
halt
sub sub1
namespace push
namespace local Test
set !NSVar1 !NSVar1 +1
Display !NSVar1
namespace pop
return
Would the result of the above be 1,2,3,4,5,6,7,8,9,10 in 10 Display iterations?
X