[[CHAIN]] is used to change seamlessly from one module to another one in a program. {{PageLegacySupport}} * The multi-modular technique goes back to when QBasic and QuickBASIC had module size constraints. In QB64 [[CHAIN]] 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.''' {{PageSyntax}} : [[CHAIN]] {{Parameter|moduleName$}} {{PageParameters}} * {{Parameter|moduleName$}} is a variable or a literal [[STRING]] value in quotation marks with the optional EXE or BAS file name extension. {{PageDescription}} * 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 [[Variable Types|type]]s 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. * [[Keywords_currently_not_supported_by_QB64#Keywords_Not_Supported_in_Linux_or_MAC_OSX_versions|Not available in Linux or macOS]]'''. {{PageExamples}} ''Example:'' CHAIN looks for same file type extension as program module (BAS or EXE). {{CodeStart}} '' '' {{Cl|CHAIN}} "Level1" '' '' {{CodeEnd}} ''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". {{PageSeeAlso}} * [[RUN]] * [[COMMON]], [[COMMON SHARED]] * [[SHARED]] {{PageNavigation}}