CHAIN

From QB64 Phoenix Edition Wiki
Jump to navigation Jump to search

CHAIN is used to change seamlessly from one module to another one in a program.


Syntax

CHAIN moduleName$

Legacy support

  • The multi-modular technique goes back to when QBasic and QuickBASIC had module size constraints. In QB64 the CHAIN statement 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 libraries), for ease of sharing and also because the module size constraints no longer exist.


Parameters

  • moduleName$ is a variable or a literal STRING value in quotation marks with the optional EXE or BAS file name extension.


Description

  • CHAIN requires that both the invoking and called modules are of either .BAS or .EXE file types.
  • In Windows, QB64 will automatically compile a CHAIN referenced BAS file if there is no EXE file found.
  • CHAIN looks for a file extension that is the same as the invoking module's extension.
  • The module's filename extension is not required. To save editing at compile time just omit the extensions in the calls.
  • To pass data from one module to the other use COMMON SHARED. The COMMON list should match types and names.
  • QB64 does not retain the SCREEN mode like QBasic did.
  • Variable data can be passed in files instead of using COMMON SHARED values. QB64 uses files to pass COMMON lists.
  • Keyword not supported in Linux or macOS versions


QBasic/QuickBASIC:

  • Compiled EXE files had to include BRUN45.EXE in QuickBASIC 4.5 when CHAIN was used with COMMON SHARED.


Examples

Example: CHAIN looks for same file type extension as program module (BAS or EXE).

 CHAIN "Level1"

Explanation: The file referred to is "Level1.BAS" if the program module using the call is a BAS file. If the program was compiled, it would look for "Level1.EXE".


See also



Navigation:
Main Page with Articles and Tutorials
Keyword Reference - Alphabetical
Keyword Reference - By usage