### RETURN

Control flow statement to return from a procedure or

`Gosub`.

**Syntax:**

`
`

**Return**

*expression*

*or***Return**[

*label*]

**Description:**

`is used to return from a procedure or return from a gosub`

**Return**`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.

`(from procedure) is used inside a procedure to exit the procedure possibly with a return value:`

**Return**`(from gosub) is used to return control back to the statement immediately following a previous`

**Return**`Gosub`call. When used in combination with

`Gosub`, no return value can be specified. If the optional

`is specified, execution continues at the specified label. If no`

*label*`Gosub`was made, a runtime error is generated, and execution continues immediately after

`.`

**Return**A

`Gosub`should always have a matching

`statement. However, if`

**Return**`(from gosub) is used where no`

**Return**`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*dialectalways means return-from-procedure.**Return** - In the
*-lang qb*dialect,means return-from-gosub by default unless changed with**Return**`Option Nogosub`, in which case the compiler will recognizeas return-from-procedure.**Return** - In the
*-lang fblite*dialect,means return-from-procedure by default unless changed with**Return**`Option Gosub`, in which case the compiler will recognizeas return-from-gosub.**Return**

**Differences from QB:**

- None when using the
*-lang qb*dialect.

**See also:**

Back to Control Flow