A subroutine is a named "black box" that performs a specific task. The user interacts with the subroutine through the subroutine’s parameters, and possibly through global variables (Global Variables).
LUX offers many built-in subroutines (Internal Routines), and also allows you to define your own in the LUX language, with a subroutine definition statement. All variables that are used inside such a definition are local to the routine (Local Variables), except for those variables whose names start with one of the characters ! # $, which are global (Global Variables).
SUBR name [ , par1, par2, … ] statement1 [ statement2 … ] ENDSUBR
This defines a subroutine called
name, with parameters
par2, etcetera. The subroutine consists
of the statements
etcetera, which use the parameters to determine what needs to be done.
A special method is available for allowing arbitrary numbers of
variables. It is selected by adding a triple period (
...) as the
last parameter of the subroutine, and then if any arguments fall beyond
the last regular one, then the last regular parameter is changed into a
cplist variable and its previous value and all subsequent ones
are entered into the list in the order in which they are specified. An
argument list that ends with
... is referred to as an
extended parameter list.
See also: Subroutine Call, Extended Parameter Lists