Previous Page | Next Page

Statements under OpenVMS

SYSTASK Statement: OpenVMS



Executes, lists, or kills asynchronous tasks.
Valid: SAS Program Editor
OpenVMS specifics: all

Syntax
Details
See Also

Syntax

SYSTASK COMMAND "operating system command"
<WAIT|NOWAIT>
<TASKNAME=taskname>
<MNAME=name-variable>
<STATUS=status-variable>
SYSTASK LIST <_ALL_ | taskname> <STATE> <STATVAR>;
SYSTASK KILL taskname <taskname...>;

COMMAND

executes the operating system command.

LIST

lists either a specific active task or all of the active tasks in the system.

KILL

forces the termination of the specified task(s).

operating system command

specifies the name of an OpenVMS command (including any command-specific options).

WAIT | NOWAIT

determines whether SYSTASK COMMAND suspends execution of the current SAS session until the task has completed. NOWAIT is the default. For tasks that start with the NOWAIT option, you can use the WAITFOR statement when necessary to suspend execution of the SAS session until the task has finished.

TASKNAME=taskname

specifies a name that identifies the task. Task names must be unique among all active tasks. A task is active if it is running, or if it has completed and has not been waited for using the WAITFOR statement. Duplicate task names generate an error in the SAS log. If you do not specify a task name, SYSTASK will automatically generate a name. If the task name contains a blank character, enclose the task name in quotation marks.

MNAME=name-variable

specifies a macro variable in which you want SYSTASK to store the task name that it automatically generated for the task. If you specify both the TASKNAME option and the MNAME option, SYSTASK copies the name that you specified with TASKNAME into the variable that you specified with MNAME.

STATUS=status-variable

specifies a macro variable in which you want SYSTASK to store the status of the task. Status variable names must be unique among all active tasks.

_ALL_

specifies all active tasks in the system.

STATE

displays the status of the task, which can be Start, Failed, Running, or Complete.

STATVAR

displays the status variable associated with the task. The status variable is the variable that you assigned with the STATUS option in the SYSTASK COMMAND statement.


Details

SYSTASK enables you to execute host-specific commands from within your SAS session or application. Unlike the X statement, SYSTASK runs these commands as asynchronous tasks, which means that these tasks execute independently of all other tasks that are currently running. Asynchronous tasks run in the background, so you can perform additional tasks while the asynchronous task is still running.

Note:   You cannot execute a host-specific command asynchronously if your session is running under a captive account. For more information, see Limitations of Using a Captive Account.  [cautionend]

The output from the command is displayed in the SAS log.

Note:   Program steps that follow the SYSTASK statements in SAS applications usually depend on the successful execution of the SYSTASK statements. Therefore, syntax errors in some SYSTASK statements will cause your SAS application to terminate.  [cautionend]

There are two types of asynchronous processes that can be started from SAS:

Task

All tasks started with SYSTASK COMMAND are of type Task. For these tasks, if you do not specify STATVAR or STATE, then SYSTASK LIST displays the task name, type, and state, and the name of the status macro variable. You can use SYSTASK KILL to kill only tasks of type Task.

SAS/CONNECT Process

Tasks started from SAS/CONNECT with the RSUBMIT statement are of type SAS/CONNECT Process. For SAS/CONNECT processes, SYSTASK LIST displays the task name, type, and state. You can use SYSTASK KILL to kill a SAS/CONNECT process. For information about starting SAS/CONNECT processes, see the SAS/CONNECT User's Guide.

Note:   The preferred method to display any task (not just SAS/CONNECT processes) is to use the LISTTASK statement instead of SYSTASK LIST. The preferred method to end a task is to use the KILLTASK statement instead of SYSTASK KILL.  [cautionend]

The SYSRC macro variable contains the return code for the SYSTASK statement. The status variable that you specify with the STATUS option contains the return code of the process started with SYSTASK COMMAND. To ensure that a task executes successfully, you should monitor both the status of the SYSTASK statement and the status of the process that is started by the SYSTASK statement.

If a SYSTASK statement cannot execute successfully, the SYSRC macro variable will contain a non-zero value. For example, there could be insufficient resources to complete a task, or the SYSTASK statement could contain syntax errors. With the SYSTASK KILL statement, if one or more of the processes cannot be killed, SYSRC is set to a non-zero value.

When a task is started, its status variable is set to NULL. You can use the status variables for each task to determine which tasks failed to complete. Any task whose status variable is NULL did not complete execution.

Unlike the X statement, you cannot use the SYSTASK statement to start a new interactive session.


See Also

Previous Page | Next Page | Top of Page