On...Gosub

Calls a label based on an expression

Syntax
   On expression GoSub label1[, ...]

Description
   Branches to different labels depending on the value of expression. An 
   expression value of 1 will branch to the first label, a value of 2 to 
   the second, etc.  If the value of expression is zero (0) or greater than 
   the number of items in the list, execution continues on the next 
   statement following the On...Gosub.

   This statement behaves exactly like GoSub and execution may return to 
   the statement following the On...Gosub using Return.

   It is recommended that the structured Select Case conditional statement 
   be used instead of On...Gosub.

Example
   '' Compile with -lang qb

   '$lang: "qb"

   choice = 3
   On choice GoSub labela, labelb, labelc
   Print "Good bye."
   End

   labela:
   Print "choice a"
   Return

   labelb:
   Print "choice b"
   Return

   labelc:
   Print "choice c"
   Return

Dialect Differences
   * Only available in the -lang qb and -lang fblite dialects.
   * On Gosub support is disabled by default in the -lang fblite unless 
     the Option Gosub statement is used.

Differences from QB
   * FreeBASIC does not generate a run-time error if expression is 
     negative or greater than 255.

See also
   * Select Case
   * On...Goto
   * GoSub
   * Return (From Gosub)
   * Option Gosub
   * Labels

