Return (From Procedure)

Control flow statement to return from a procedure or KeyPgGosubGoSub.

Syntax
	Return expression

Description
	Return is used to return from a procedure.

	Because Return could mean return-from-gosub or return-from-procedure, 
	KeyPgOptiongosubOption Gosub and KeyPgOptionnogosubOption Nogosub can be used to enable and disable KeyPgGosubGoSub 
	support.  When KeyPgGosubGoSub support is disabled, KeyPgReturnReturn is then recognized as 
	return-from-procedure.  When KeyPgGosubGoSub support is enabled, KeyPgReturnGosub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 KeyPgSubSub cannot specify a return return value. Return is roughly 
		  equivalent to the KeyPgExitExit Sub idiom.
		* In a KeyPgFunctionFunction, Return must specify its return value.  Return 
		  expression is roughly equivalent to the Function = expression : KeyPgExit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 CompilerOptlang-lang fb dialect Return always means return-from-procedure.
	* In the CompilerOptlang-lang qb dialect, Return means return-from-gosub by default 
	  unless changed with KeyPgOptionnogosubOption Nogosub, in which case the compiler will 
	  recognize Return as return-from-procedure.
	* In the CompilerOptlang-lang fblite dialect, Return means return-from-procedure by 
	  default unless changed with KeyPgOptiongosubOption Gosub, in which case the compiler 
	  will recognize Return as return-from-gosub.

Differences from QB
	* None when using the CompilerOptlang-lang qb dialect.

See also
	* KeyPgSubSub
	* KeyPgFunctionFunction
	* KeyPgGosubGoSub
	* KeyPgOptiongosubOption Gosub
	* KeyPgOptionnogosubOption Nogosub
	* ProPgLabelsLabels
	* KeyPgReturnGosubReturn (From Gosub)

