A VSL procedure libary is an object which can contain a set of general purpose VSL functions. For example, an advanced user may create a VSL procedure library called 'Noise Functions' and place frequently needed noise related VSL algorithms there.
When a procedure library is selected in the VSL editor, only Procedure objects can be added at the top level of the VSL hierarchy. Each procedure defines a symbolic name, a parameter list and some VSL code. Note that VSL objects in a procedure can refer only to the defined input parameters and to the output value (procedure's return value). This supports good programming. All required data must be passed in as parameters. Input parameters are used by address, not by value, so assigning a value to an input will change the original parameter defined in the call. This also means that a procedure can return multiple output values.
All defined procedures in all memory-resident procedure libraries can be called from the usual VSL materials. A procedure call is defined using the Call VSL object. A call to a non-existing (unloaded or deleted) procedure does nothing.