SPDO Procedure

OPER Statement

Specifies a privileged action to perform on the connected proxy.

Requirements: You must have special privilege and specify ACLSPECIAL=YES in the LIBNAME statement in order to use this statement.
Before you can issue this statement, you must have connected to a proxy with the SET USER or SET USER/LOCKING statement and invoked operator privilege with the SET OPER MODE statement .
See: SPD Server proxies are described in detail in Managing SPDSBASE Processes.

Syntax

OPER action;
OPER CANCEL [/DUMP];
| OPER DISCONNECT;
| OPER INTERRUPT;

Arguments

CANCEL [/DUMP]

cancels and exits the user proxy. If you specify the /DUMP option for a non-locking user proxy, the proxy exits with an ABORT function call, which produces a core file. If you are the operator of a locking user proxy, the /DUMP option is ignored.

CANCEL initiates a hard exit of the user proxy. Hard exits might leave tables opened for UPDATE access, which is an inconsistent and unusable state. In this case, you can submit the PROC DATASETS REPAIR statement to restore the tables to a usable state.

DISCONNECT

drops the control socket from the user proxy to the client. This action causes the user proxy to terminate the next time it tries to communicate with the client.

This termination initiates a hard exit of the user proxy. Hard exits might leave tables opened for UPDATE access, which is an inconsistent and unusable state. In this case, you can submit the PROC DATASETS REPAIR statement to restore the tables to a usable state.
DISCONNECT differs from CANCEL in that DISCONNECT continues the user proxy until it detects that the control socket connection has been dropped. As a result, DISCONNECT has the potential to complete. However, the point at which the user proxy detects that the control socket has been disconnected varies, which can produce different results.

INTERRUPT

sets a soft interrupt flag in any open tables that belong to the user proxy. During certain long-running operations such as large table sorts, table scans with a WHERE clause, or index creations, the user proxy periodically checks for an interrupt flag in all of the open tables that are involved in the operation. If the user proxy detects an interrupt flag, it terminates the operation and any previously opened tables are closed.

Unlike CANCEL and DISCONNECT, INTERRUPT initiates a soft exit of the user proxy. The user receives a message in the SAS log that states that the job has been interrupted. If the job did not finish, the results might be incomplete. However, the user libref remains intact, and the user proxy is still viable.
Tip
To determine whether a job can be interrupted, submit a SHOWLIBNAME libref / DATA=_ALL_ statement before you submit the OPER INTERRUPT statement to see all of the open tables. Then, submit the SHOWLIBNAME libref/ DATA=_ALL_ statement again after you submit the OPER INTERRUPT statement to see whether the open tables were closed. If the tables are still open after you submit the interrupt, wait a few moments and then check again. If the tables need to be closed immediately, issue an OPER CANCEL statement to cancel the user proxy.
Last updated: February 3, 2017