| .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. See the second example below. |
|   |
| 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. See the examples below. |
|   |
| 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. |