1
1
Fork 0
mirror of https://github.com/QB64Official/qb64.git synced 2024-07-16 22:25:14 +00:00
qb64/internal/help/COMMON-SHARED.md

38 lines
2.1 KiB
Markdown

**COMMON SHARED** is used to pass variable values between 2 or more program modules and sub procedures within that module.
The multi-modular technique goes back to when QBasic and QuickBASIC had module size constraints. In QB64 it has been implemented so that that older code can still be compiled, though **it is advisable to use single modules for a single project (not counting [$INCLUDE]($INCLUDE) libraries), for ease of sharing and also because the module size constraints no longer exist.**
## Syntax
> **COMMON** [**SHARED**][/block_name/]variable_list
* COMMON statements must be made before any program code execution.
* The [SHARED](SHARED) statement allows the variable values to also be used in module [SUB](SUB) and [FUNCTION](FUNCTION) procedures.
* The list of variables(separated by commas) to pass MUST be in the same type order in ALL modules used!
* [COMMON](COMMON) variable list names(but not variable types) can change between modules.
* The list can hold any variable type.
* The list cannot define a variable's value, but can use [AS](AS) to designate the type.
* Use [DIM](DIM) [SHARED](SHARED) variables when working in a module to pass variable values to SUB procedures.
* Data files could be used as an alternative to using COMMON SHARED values.
* In **QB64** COMMON values are sent using files instead of memory presently.
* **Note: Values assigned to shared variables used as procedure call parameters will not be passed to other procedures! The shared variable value MUST be assigned INSIDE of the [SUB](SUB) or [FUNCTION](FUNCTION) procedure to be passed!**
## QBasic/QuickBASIC
* Quickbasic 4.5 required you to include BRUN45.EXE when you compile COMMON SHARED values between EXE modules.
* The COMMON block name designates a certain block of variables that certain program modules may use, the name must be within two forward slashes/ (Ex: /thename/ ). **[Keywords currently not supported by QB64](Keywords-currently-not-supported-by-QB64)**
## Example(s)
```vb
COMMON SHARED x%, y%, user$, speed!, score&
```
## See Also
* [CHAIN](CHAIN), [RUN](RUN)
* [COMMON](COMMON)
* [SHARED](SHARED)