Previous Page | Next Page

Statements under UNIX

WAITFOR Statement: UNIX



Suspends execution of the current SAS session until the specified tasks finish executing.
Valid: anywhere
UNIX specifics: all

Syntax
Details
See Also

Syntax

WAITFOR <_ANY | _ALL_> taskname <taskname...> <TIMEOUT=seconds>;

taskname

specifies the name of the tasks that you want to wait for. See SYSTASK Statement: UNIX for information about task names. The task names that you specify must match exactly the task names assigned through the SYSTASK COMMAND statement. You cannot use wildcards to specify task names.

_ANY_ | _ALL_

suspends execution of the current SAS session until either one or all of the specified tasks finishes executing. The default setting is _ANY_, which means that as soon as one of the specified tasks completes executing, the WAITFOR statement will finish executing.

TIMEOUT=seconds

specifies the maximum number of seconds that WAITFOR should suspend the current SAS session. If you do not specify the TIMEOUT option, WAITFOR will suspend execution of the SAS session indefinitely.


Details

The WAITFOR statements suspends execution of the current SAS session until the specified tasks finish executing or until the TIMEOUT= interval has elapsed. If the specified task was started with the WAIT option, then the WAITFOR statement ignores that task. See SYSTASK Statement: UNIX for a description of the WAIT option.

For example, the following statement starts three different X Windows programs and waits for them to complete:

systask command "xv" taskname=pgm1;
systask command "xterm" taskname=pgm2;
systask command "xcalc" taskname=pgm3;
waitfor _all_ pgm1 pgm2 pgm3;

The WAITFOR statement can be used to execute multiple concurrent SAS sessions. The following statements start three different SAS jobs and suspend the execution of the current SAS session until those three jobs have finished executing:

systask command "sas myprog1.sas" taskname=sas1;
systask command "sas myprog2.sas" taskname=sas2;
systask command "sas myprog3.sas" taskname=sas3;
waitfor _all_ sas1 sas2 sas3;

Note:   In this method, SAS terminates after each command, which can result in reduced performance. SAS/CONNECT can also be used for executing parallel SAS sessions. See the SAS/CONNECT User's Guide for more information.  [cautionend]

The SYSRC macro variable contains the return code for the WAITFOR statement. If a WAITFOR statement cannot execute successfully, the SYSRC macro variable will contain a nonzero value. For example, the WAITFOR statement might contain syntax errors. If the number of seconds specified with the TIMEOUT option elapses, then the WAITFOR statement finishes executing, and SYSRC is set to a nonzero value if one of the following occurs:

Any task whose status variable is still NULL after the WAITFOR statement has executed did not complete execution. See SYSTASK Statement: UNIX for a description of status variables for individual tasks.

See Also

Previous Page | Next Page | Top of Page