Distributed Systems Network Management (DSNM) Subsystem Interface Development Guide

I Process Development Process
Distributed Systems Network Management (DSNM) Subsystem Interface Development
Guide109759 3-41
Altering the Current Thread Procedure and Thread
State
PROC^X calls PROC^Y in STATE^B by:
Setting its return state to STATE^A.
Saving the old current thread procedure and state values, and setting new current
thread procedure and thread state values.
Signaling an event and returning to the frame to dispatch the new thread procedure
PROC^Y in the new state STATE^B.
PROC^Y checks for event _EV^STARTUP; resets the current thread procedure and
thread state to the previously saved values of PROC^X and STATE^A; and returns to the
frame to dispatch PROC^X in STATE^A.
_THREAD^PROC (PROC^X);
BEGIN
.
CASE _THREAD^STATE OF
BEGIN
_ST^INITIAL -->
_THREAD^STATE := STATE^A;
IF (error :=_PUSH^THREAD^PROCSTATE (@PROC^Y,STATE^B))
THEN ... <error> ;
CALL _SIGNAL^EVENT (_EV^STARTUP);
RETURN _RC^WAIT;
STATE^A -->
.
.
RETURN _RC^STOP;
END;
_END^THREAD^PROC;‘
_THREAD^PROC (PROC^Y);
BEGIN
.
CASE _THREAD^STATE OF
BEGIN
STATE^B -->
IF _ON (_LAST^EVENTS,_EV^STARTUP)
THEN
BEGIN
.
.
IF (error := _POP^THREAD^PROCSTATE)
THEN ... <error> ;
CALL _SIGNAL^EVENT (_EV^CONTINUE);
RETURN _RC^WAIT;
END;
END;
_END^THREAD^PROC;
Figure 3-7 illustrates using _THREAD^STATE, _SET^THREAD^PROC,
_PUSH^THREAD^PROCSTATE, and _POP^THREAD^PROCSTATE.