Global scope means that a variable can be accessed by code in any procedure within a PowerBASIC program.
Where a variable declaration is made determines the scope that a variable will exhibit. Declarations made within a procedure result in local scope, while declarations made outside procedures result in global scope.
When a procedure is closed the local variables are destroyed and their values lost (unless STATIC was used to declare the variables). Global variables are not destroyed until the application closes.
Here are the PowerBASIC variable declaration statements.
| Dim, ReDim, Local, Static, Instance |
| Global, Threaded |
And here are the allowed locations of declaration statements within PowerBASIC programs. You can see from this listing that only Global and Threaded declaration statements result in global variables. Note also that the PowerBASIC compiler allows the CLASS/Sub/Function code blocks to be placed before or after the PBMain() function.
#COMPILE EXE GLOBAL/THREADED ... 'global declarations Function PBMain() As Long DIM/REDIM/LOCAL/STATIC ... 'local declarations End Function CLASS myClass INSTANCE 'local declarations INTERFACE myInterface METHOD myMethod DIM/REDIM/LOCAL/STATIC... 'local declarations END METHOD PROPERTY myProperty DIM/REDIM/LOCAL/STATIC... 'local declarations END PROPERTY END INTERFACE END CLASS SUB mySub() DIM/REDIM/LOCAL/STATIC ... 'local declarations END SUB FUNCTION myFunction() DIM/REDIM/LOCAL/STATIC ... 'local declarations END SUB
Note also that while the code that defines a CLASS is placed outside all procedures, object variable definition occurs in the same locations as all other variable types.
See the declarations tutorial for syntax and examples on using the declare statements. Usage is very straight-forward but be sure to note that when using the GLOBAL declaration on arrays, the array variables must be declared with no subscripts.
Local Scope
When a variable declaration statement is used inside a procedure
(Sub/Function/Method/Property), the variable may be accessed only
by code within that procedure.
This is called local scope.
When a procedure ends any local variables created within the procedure are destoryed and their values lost.
Locally scoped variable, those declared inside procedures, can use only DIM/REDIM/LOCAL/STATIC/INSTANCE declaration statements. Their positions within a PowerBASIC application are shown in the listing above.
PowerBASIC also allows declaring variables which can be accessed anywhere in a program. This is know as global scope.
Global Scope
Variable declaration statements can also be placed outside
procedures, typically at the top of the source code file
before any procedures are defined.
These variables can be accessed anywhere in the program, particularly inside of all procedures.
This is called global scope.
Only GLOBAL/THREADED declaration statements can be used to create variables with global scope. Their positions within a PowerBASIC application are shown in the listing above.
If you have any suggestions or corrections, please let me know.