Control flow statement to return from a procedure or Gosub.

Return expression
Return [ label ]

Return is used to return from a procedure or return from a gosub Gosub.

Because Return could mean return-from-gosub or return-from-procedure, Option Gosub and Option Nogosub can be used to enable and disable Gosub support. When Gosub support is disabled, Return is then recognized as return-from-procedure. When Gosub support is enabled, Return is then recognized as return-from-gosub.

Return (from procedure) is used inside a procedure to exit the procedure possibly with a return value:
  • A Sub cannot specify a return return value. Return is roughly equivalent to the Exit Sub idiom.
  • In a Function, Return must specify its return value. Return expression is roughly equivalent to the Function = expression : Exit Function idiom.

Return (from gosub) is used to return control back to the statement immediately following a previous Gosub call. When used in combination with Gosub, no return value can be specified. If the optional label is specified, execution continues at the specified label. If no Gosub was made, a runtime error is generated, and execution continues immediately after Return.

A Gosub should always have a matching Return statement. However, if Return (from gosub) is used where no Gosub was made, a run-time error is generated.

'' GOSUB & RETURN example, compile with "-lang qb" or use "$lang" as below

'$lang: "qb"

Print "Let's Gosub!"
GoSub MyGosub
Print "Back from Gosub!"

Print "In Gosub!"

'' Return from function

Type rational              '' simple rational number type
    numerator As Integer
    denominator As Integer
End Type

'' multiplies two rational types
Function rational_multiply( r1 As rational, r2 As rational ) As rational

    Dim r As rational
    '' multiply the divisors ...
    r.numerator   = r1.numerator   * r2.numerator
    r.denominator = r1.denominator * r2.denominator

    '' ... and return the result
    Return r

End Function

Dim As rational r1 = ( 6, 105 )   '' define some rationals r1 and r2
Dim As rational r2 = ( 70, 4 )
Dim As rational r3

r3 = rational_multiply( r1, r2 )  '' multiply and store the result in r3

'' display the expression
Print r1.numerator & "/" & r1.denominator; " * ";
Print r2.numerator & "/" & r2.denominator; " = ";
Print r3.numerator & "/" & r3.denominator

Dialect Differences:
Differences from QB:
See also:
Back to Control Flow

Valid XHTML :: Valid CSS: :: Powered by WikkaWiki phatcode