From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

GOSUB is a command in many versions of the BASIC computer programming language. A GOSUB statement jumps to a line elsewhere in the program. That line and the following lines up to a RETURN are used as a simple kind of a subroutine without (sometimes with) parameters or local variables.

The GOSUB command may be used to emulate functions in a BASIC dialect that does not support functions in its syntax. GOSUB is convenient for performing the same function several times in a BASIC program without duplicating the code.[1]


A RETURN command resumes program flow from the point at which GOSUB was invoked.

Using GOSUB too many times, as in a loop or recursively, without corresponding RETURN statements, would typically cause a stack overflow. On the other hand, when the BASIC interpreter encounters a RETURN statement without a GOSUB it will emit a RETURN WITHOUT GOSUB error.

Computed GOSUB[edit]

A computed GOSUB statement, ON...GOSUB, exists in some BASIC dialects. The syntax of the statement is ON x GOSUB line1, line2, ... Computed GOSUB branches to one of several destinations based on the value of x. RETURN commands return program flow to the statement following ON..GOSUB.


Not all BASIC implementations support GOSUB or ON..GOSUB. For example, in FreeBASIC GOSUB is considered as deprecated in favor of SUB/FUNCTION, and is disabled by default.[2] In Visual Basic, GOSUB and ON..GOSUB were removed when VB.NET was released. In Gambas GOSUB as well as ON .. GOSUB were introduced in version 3.1 and 3.2.

See also[edit]


  1. ^ "GOSUB...RETURN Statement Details". Microsoft. 1988. Retrieved 2008-07-04.
  2. ^ "GOSUB". FBWiki. 2008-05-08. Retrieved 2008-07-04. Gosub support is disabled by default in the -lang fblite unless the Option Gosub statement is used.