Return (From Procedure)
Control flow statement to return from a procedure or `GoSub`.
Syntax
`
Return expression
`
Description
`Return` is used to return from a procedure.
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.

Warning: Whatever the output branch used, the return value must be always defined, otherwise an unexpected behavior may occur.
Example
`
'' 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

- None when using the -lang qb dialect.

See also

- `Sub`
- `Function`
- `GoSub`
- `Option Gosub`
- `Option Nogosub`
- `Labels`
- `Return (From Gosub)`