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)

