Shared
Variable declaration modifier specifying visibility throughout a module
Syntax
`
Dim Shared ...
ReDim Shared ...
Common Shared ...
`
Description
`Shared` makes module-level variables visible inside `Sub`s and `Function`s. 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 `Redim`ming 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

- `Common`
- `Dim`
- `Erase`
- `Extern`
- `LBound`
- `ReDim`
- `Preserve`
- `Shared`
- `Static`
- `UBound`
- `Var`