CHAIN Transfer control to a new script file |
Top Previous Next |
Use of this script command transfers control to another script file. Unlike the CALL command, control does not return to the original script file when execution of the chained script is complete. Any changes made to the Robo-FTP environment in the original calling script will persist in the chained script. For example, if the working folder is changed in the original script then the chained script will also use that same folder rather than the default working folder; and if a user-defined script variable named count is set to the value "5" in the original script there will be a variable with the same name and value in the chained script. It helps if you view chained scripts as a appendage to the bottom of the original script, not as a separate environment.
Note: It is possible to simulate a separate environment by using the SET command by itself with no arguments to unassign all current user-defined script variables but this does not reset the values of internal variables. Consider using the EXEC command with the -s command line switch to launch another instance of Robo-FTP if you require a separate pristine environment.
Arguments may be passed to a called script using the double ampersand syntax. Any strings found between two ampersand delimiters (ie &value&) are saved in sequence in internal variables named %1 through %9 which are then accessible within the chained to script. The following example passes two arguments.
CHAIN "called_script.s" &arg1& &arg2&
When the new script is running, it will find %1 = “arg1” and %2 = “arg2”.
Note: It not often necessary or even desirable to pass arguments in this way because variables set in the original script will retain their value in the chained script.
Consider the following example where a variable named which_one has been previously populated with a value used to determine which of two script files are to be executed.
IFSTRCMP which_one "its2" GOTO chain_to2 DASHBOARDMSG "Launching script1.s" CHAIN "script1.s" :chain to2 DASHBOARDMSG "Launching script2.s" CHAIN "script2.s"
Use /waitifrunning to prevent the simultaneous execution of the script specified in the file name argument. The following example will not begin processing the automation script if another instance of Robo-FTP is currently running the same script and that other script was also launched using either the /waitifrunning option or the -r command line switch.
CHAIN "script1.s" /waitifrunning=abort
In the following example the CHAIN command times out if the same script is running in another instance and it does not complete within 30 seconds.
CHAIN "script1.s" /waitifrunning=30
When the /waitifrunning=continue option is used, the script is run immediately without checking for previous instances.
Related command(s): CALL, EXEC See also: Passing External Values Into Command Scripts, Alternate Default Path, Simultaneous Execution
|