Variable declaration modifier specifying visibility throughout a module
Syntax
Description
Shared makes module-level variables visible inside
Subs and
Functions. If
Shared is not used on a module-level variable's declaration, it is stored on the stack of the implicit main function and therefore only visible to the module-level code in that file.
Note: A shared variable may only be initialised with a constant value: its starting value is set at the start of the program before any code is run, and so it cannot depend on any variables or functions in it.
Example
'' Compile with -lang qb or fblite
'$lang: "qb"
Declare Sub MySub
Dim Shared x As Integer
Dim y As Integer
x = 10
y = 5
MySub
Sub MySub
Print "x is "; x 'this will report 10 as it is shared
Print "y is "; y 'this will not report 5 because it is not shared
End Sub
Differences from QB
- The Shared statement inside scope blocks -- functions, subs, if/thens, and loops -- is not supported. Use Dim|Redim|Common Shared in the main program instead. Or if you're inside a scope block and Redimming a variable or array previously set up with Shared, just do a Redim without Shared; it will work fine and won't ruin anything.
See also