QB64.com

QB64 is a modern extended BASIC programming language that retains QBasic/QuickBASIC 4.5 compatibility and compiles native binaries for Windows, Linux, and macOS.

A SUB procedure is a procedure within a program that can calculate and return multiple parameter values just like a full program.

Syntax

SUB Procedure_name [(parameter[, list…])] [STATIC]

‘procedure variable definitions and statements

END SUB

Parameter(s)

Description

Example(s)

Text PRINT screen centering using PEEK to find the SCREEN mode width. Call and SUB procedure code:


DEFINT A-Z
SCREEN 13
Center 10, 15, "This text is centered." ' example module sub call
END

DEFINT A-Z ' only code allowed before SUB line is a DEF statement or a comment
SUB Center (Tclr, Trow, Text$)
Columns = _WIDTH / _FONTWIDTH 'Convert _WIDTH (in pixels) to width in characters
Middle = (Columns \ 2) + 1 ' reads any screen mode width
Tcol = Middle - (LEN(Text$) \ 2)
COLOR Tclr: LOCATE Trow, Tcol: PRINT Text$; ' end semicolon prevents screen roll
END SUB 

Explanation: The procedure centers text printed to the screen. The parameters are the text color, row and the text itself as a string or string variable. The maximum width of the screen mode in characters is found and divided in half to find the center point. The text string’s length is also divided in half and subtracted from the screen’s center position. The procedure will also work when the WIDTH statement has been used. When adding variables to Text$ use the + concatenation operator. Not semicolons!

SUB and FUNCTION procedures always return to the place they were called in the main or other sub-procedures:


a = 10
Add1 a
PRINT a  'Add1 returns final 'a' value here

END

SUB Add1 (n)
n = n + 1
Add2 n
PRINT "exit 1"
END SUB

SUB Add2 (m)
m = m + 2
PRINT "exit 2"
END SUB


exit 2
exit 1
 13

Note: Parameter a is used to call the sub-procedures even though parameters n and m are used internally.

See Also