RUN - QB64 Wiki


From QB64 Wiki

Jump to: navigation, search

RUN is a control flow statement that clears and restarts the program currently in memory or executes another specified program.


RUN [{line_number | filespec$}] [command_parameter(s)]


  • 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.


  • 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: 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.

PRINT " A", " B", " C", " D" 10 A = 1 20 B = 2 30 C = 3 40 D = 4 50 PRINT A, B, C, D 60 IF A = 0 THEN 70 ELSE RUN 20 'RUN clears all values 70 IF B = 0 THEN 80 ELSE RUN 30 80 IF C = 0 THEN 90 ELSE RUN 40 90 IF D = 0 THEN 100 ELSE RUN 50 100 PRINT INPUT "Do you want to quit?(Y/N)", quit$ IF UCASE$(quit$) = "Y" THEN END ELSE RUN 'RUN without line number executes at first code line

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)_

Example 2: Compile both programs below with QB64. ProgramA RUNs ProgramB with a parameter passed following the filename:

' ================ ProgramA.BAS =================== LOCATE 12, 36: PRINT "ProgramA" LOCATE 23, 25: PRINT "Press any key to run ProgramB" K$ = INPUT$(1) RUN "ProgramB FS" 'pass FS parameter to ProgramB in QB64 ONLY END

ProgramB checks for fullscreen parameter pass in QB64 and goes full screen.

' ================ ProgramB.BAS =================== LOCATE 12, 36: PRINT "ProgramB" parameter$ = UCASE$(COMMAND$) LOCATE 20, 33: PRINT "Parameter = " + parameter$ IF LEFT$(parameter$, 2) = "FS" THEN _FULLSCREEN 'parameter changes to full screen END

Parameter = FS.EXE

Note: The above RUN procedure will NOT work in Qbasic! Qbasic cannot pass COMMAND$ parameters with RUN!

See also:

Go to Keyword Reference - Alphabetical
Go to Keyword Reference - By usage
Go to Main WIKI Page
Personal tools