qb45advr.hlp (Topic list)
SUB...END SUB Statement Details
  QuickSCREEN      Details      Example      Contents      Index
──────────────────────────────────────────────────────────────────────────────
SUB...END SUB Statement Details
 
Syntax
  SUB globalname[parameterlist][STATIC]
    [statements]
  [EXIT SUB]
    [statements]
  END SUB
 
  Argument        Description
  globalname      A variable name up to 40 characters long. This name
                  cannot appear in any other FUNCTION or SUB
                  statement in the same program or the user library.
 
  parameterlist   Contains the names of simple variables and arrays
                  passed to the subprogram when the SUB is invoked.
                  Each name is separated from the preceding name by
                  a comma. Note that these variables and arrays are
                  passed by reference, so any change to an argument's
                  value in the subprogram also changes its value in
                  the calling program. See below for a complete
                  description of the syntax.
 
A SUB parameterlist has the following syntax:
 
  variable[()] [AS type][, variable[( )] [AS type]]...
 
  ■ A variable is a BASIC variable name. Previous versions of BASIC
    required the number of dimensions in parentheses after an array name.
    In QuickBASIC, the number of dimensions is not required.
  ■ The argument type is the type of the variable. The type argument can be
    INTEGER, LONG, SINGLE, DOUBLE, STRING, or a user-defined type. You may
    not use a fixed-length string, or an array of fixed-length strings, as a
    parameter. However, you may use a simple fixed-length string as an
    argument in a CALL statement-QuickBASIC converts a simple fixed-length
    string argument to a variable-length string argument before passing
    the string to a SUB.
 
A subprogram is a separate procedure, like a FUNCTION. However,
unlike a FUNCTION, a SUB cannot be used in an expression.
 
SUB and END SUB mark the beginning and end of a subprogram. You may
also use the optional EXIT SUB statement to exit a subprogram.
 
Subprograms are called by a CALL statement or by using the subprogram name
followed by the argument list. See the entry for the CALL statement.
 
QuickBASIC subprograms can be recursive--they can call themselves
to perform a given task.
 
The  STATIC attribute indicates that all variables local to the SUB
are STATIC--their values are saved between calls. Using the STATIC
keyword slightly increases execution speed. STATIC is not usually
used with recursive subprograms.
 
Any subprogram variables or arrays are considered local to that sub-
program, unless they are explicitly declared as shared variables in
a SHARED statement.
 
You cannot define SUB procedures, DEF FN functions, or FUNCTION
procedures inside a SUB procedure.
 
  Note: You cannot use GOSUB, GOTO, or RETURN to enter or exit a
        subprogram.