Universal Data Mover Subroutines
Universal Data Mover Subroutines
The Universal Data Mover scripting language provides support for subroutines.
Subroutines are portions of the script code that can be called, by name, at any point. This provides a convenient way to reuse common script code.
Usage
There are two parts to a subroutine:
Definition | Names the subroutine and defines the script code that becomes associated with that subroutine name. |
Invocation | Carries out the work of lines of script associated with a subroutine. |
Defining a Subroutine
subroutine name [script line 1] ... [script line n] endsub
Invoking a Subroutine
callsub name
Sequence of Defining / Invoking a Subroutine
A subroutine must be physically defined before the callsub to the routine is used.
For example, the following subroutine will function correctly:
subroutine test echo "This is subroutine test" echo "$(_halton)" endsub echo "This is main()" callsub test
However, this subroutine will fail:
echo "This is main()" callsub test subroutine test echo "This is subroutine test" echo "$(_halton)" endsub
Nesting / Recursion of Subroutines
UDM allows subroutine nesting (one subroutine calls another subroutine) and recursion (a subroutine calls itself).
For example, the following illustrates subroutine nesting:
subroutine a echo "Beginning subroutine A" callsub b echo "Ending subroutine A" endsub subroutine b echo "Beginning subroutine B" echo "Ending subroutine B" endsub callsub a
Example
subroutine loop_increment echo "inside loop_increment: $(LOOP)" set LOOP=<$(LOOP) + 1> endsub echo "Starting Loop:" set LOOP=0 if <$(LOOP) LT 1> callsub loop_increment end if <$(LOOP) LT 2> callsub loop_increment end if <$(LOOP) EQ 2> callsub loop_increment end echo "Final Value of LOOP: $(LOOP)"
Output
Starting Loop: inside loop_increment: 0 inside loop_increment: 1 inside loop_increment: 2 Final Value of LOOP: 3