Repeat blocks have their own scope while If blocks do not, for example.
If blocks have their own scope too. If you take effort to indent your blocks carefully, you'll notice that variable scope is in effect for the duation of the indentation (think of it like { and } in all other languages since Pascal or something, but you guys don't like visible indication of scope, [it is appearently evil] so we'll just leave it at that). p.s. Static would be nice as well :)
Except it's called Global in Blitz. When is a Global not Global? When it's inside a type declaration... It's hard to grasp, I understand. If you ask me, anything in the main body should be considered Global (and in most languages it is).
It isn't "Global" as such (nor is it nessecarilly in other languages). It is however Local to the "root" or "main" scope of the program. No big deal, but it's easier to get a 'handle' on things if you know the reasoning behind it.
Well that's really the core of the problem, isn't it?