Control flow statement to return from a procedure or
GoSub.
Syntax
Return [ expression ]
or
Return [ label ]
Description
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. 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.
Example
'' GOSUB & RETURN example, compile with "-lang qb" or use "$lang" as below
'$lang: "qb"
Print "Let's Gosub!"
GoSub MyGosub
Print "Back from Gosub!"
Sleep
End
MyGosub:
Print "In Gosub!"
Return
'' 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
- In the -lang fb dialect Return always means return-from-procedure.
- In the -lang qb dialect, Return means return-from-gosub by default unless changed with Option Nogosub, in which case the compiler will recognize Return as return-from-procedure.
- In the -lang fblite dialect, Return means return-from-procedure by default unless changed with Option Gosub, in which case the compiler will recognize Return as return-from-gosub.
Differences from QB
See also