1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-07-05 22:50:23 +00:00
QB64-PE/internal/help/RUN.txt

88 lines
4.2 KiB
Plaintext

'''RUN''' is a control flow statement that clears and restarts the program currently in memory or executes another specified program.
{{PageSyntax}}
:: '''RUN''' [{''line_number'' | ''filespec$''}] [''command_parameter(s)'']
{{Parameters}}
* ''line number'' specifies a line number in the main module code.
* An optional ''filespec'' specifies a program to load into memory and run.
: * BAS or EXE extensions are assumed to be the same as the calling module's extension, EXE or BAS (Qbasic only).
: * ''file names specs'' with other extensions must use the full filename. No extension requires a dot.
* In '''QB64''' ''command line parameters'' can follow the program file name and be read using the [[COMMAND$]] function later.
''Usage:''
* The starting [[line number]] MUST be one used in the main module code! Even with [[SUB]] or [[FUNCTION]] references.
* If no line number is given the currently loaded program runs from the first executable line.
* In '''QB64''' RUN can open any kind of executable program and provide case sensitive program specific parameters.
* RUN does not return to the calling procedure if the program called is not a Qbasic procedure!
* RUN closes all open files and closes the invoking program module before the called program starts. (Cannot use Basica's R)
* If you do NOT want opened files to be closed use [[CHAIN]] instead.
* In Qbasic '''/RUN''' can also be used to run a program module in a command line. Example: QB.EXE /L /RUN Module1.BAS
* RUN should reset the [[RANDOMIZE]] sequence to the starting [[RND]] function value.(Not yet in QB64)
* Note: Qbasic also allowed /RUN in a command line call to run a BAS file with the interpreter. QB64 cannot run BAS files!
* '''Note: RUN causes a stack leak in QB64 if it is called from within a [[SUB]] or [[FUNCTION]]. Avoid when possible!'''
* '''NOTE: [[Keywords_currently_not_supported_by_QB64#Keywords_Not_Supported_in_Linux_or_MAC_OSX_versions |Not currently available in Linux or Mac operating systems!]]'''
''Example 1:'' Shows how RUN can reference multiple line numbers in the main module code. No line number executes first code line.
{{CodeStart}} '' ''
PRINT " A", " B", " C", " D"
10 A = 1
20 B = 2
30 C = 3
40 D = 4
50 {{Cl|PRINT}} A, B, C, D
60 {{Cl|IF...THEN|IF}} A = 0 {{Cl|THEN}} 70 {{Cl|ELSE}} {{Cl|RUN}} 20 'RUN clears all values
70 {{Cl|IF...THEN|IF}} B = 0 {{Cl|THEN}} 80 {{Cl|ELSE}} {{Cl|RUN}} 30
80 {{Cl|IF...THEN|IF}} C = 0 {{Cl|THEN}} 90 {{Cl|ELSE}} {{Cl|RUN}} 40
90 {{Cl|IF...THEN|IF}} D = 0 {{Cl|THEN}} 100 {{Cl|ELSE}} {{Cl|RUN}} 50
100 {{Cl|PRINT}}
{{Cl|INPUT}} "Do you want to quit?(Y/N)", quit$
{{Cl|IF...THEN|IF}} {{Cl|UCASE$}}(quit$) = "Y" {{Cl|THEN}} {{Cl|END}} {{Cl|ELSE}} {{Cl|RUN}} 'RUN without line number executes at first code line
'' ''
{{CodeEnd}}
{{OutputStart}}A B C D
1 2 3 4
0 2 3 4
0 0 3 4
0 0 0 4
0 0 0 0
Do you want to quit?(Y/N)_
{{OutputEnd}}
''Example 2:'' Compile both programs below with QB64. ProgramA [[RUN]]s ProgramB with a parameter passed following the filename:
{{CodeStart}} ' ================ ProgramA.BAS ===================
{{Cl|LOCATE}} 12, 36: {{Cl|PRINT}} "ProgramA"
{{Cl|LOCATE}} 23, 25: {{Cl|PRINT}} "Press any key to run ProgramB"
K$ = {{Cl|INPUT$}}(1)
{{Cl|RUN}} "ProgramB FS" 'pass FS parameter to ProgramB in QB64 ONLY
{{Cl|END}} '' ''
{{CodeEnd}}
: ''ProgramB'' checks for fullscreen parameter pass in QB64 and goes full screen.
{{CodeStart}} ' ================ ProgramB.BAS ===================
{{Cl|LOCATE}} 12, 36: {{Cl|PRINT}} "ProgramB"
parameter$ = {{Cl|UCASE$}}({{Cl|COMMAND$}})
{{Cl|LOCATE}} 20, 33: {{Cl|PRINT}} "Parameter = " + parameter$
{{Cl|IF...THEN|IF}} {{Cl|LEFT$}}(parameter$, 2) = "FS" {{Cl|THEN}} {{Cl|_FULLSCREEN}} 'parameter changes to full screen
{{Cl|END}} '' ''
{{CodeEnd}}
{{OutputStart}} Parameter = FS.EXE
{{OutputEnd}}
: '''Note:''' The above RUN procedure will NOT work in Qbasic! Qbasic cannot pass [[COMMAND$]] parameters with RUN!
''See also:''
* [[CHAIN]], [[SHELL]]
* [[COMMAND$]]
{{PageNavigation}}