RETURN
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:
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 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.
Examples:
'' 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
'$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
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:
- None when using the -lang qb dialect.
See also:
Back to Control Flow