XUTMRJD ;SEA/RDS - TaskMan: Option, XURESJOB exit action ;08/07/97 15:01
;;8.0;KERNEL;**49,67**;Jul 10, 1995
MAIN ;
;Main module of XURESJOB exit action
I '$O(^%ZTSCH("TASK",0)) Q
N ZTCOUNT,ZTENV,ZTKEY,ZTNAME,ZTPLURAL,ZTSK,ZTOOPS,ZTOUT,XUTMUCI
S (ZTOOPS,ZTOUT)=0
K ^TMP($J,"XUTMRJD")
D ENV^XUTMUTL Q:'$D(ZTENV)
D EXPLAIN
D PROMPT1 Q:ZTOUT
M2 F D I ZTOUT Q
.D PROMPT2 I ZTOUT Q
.D PROMPT3 Q:ZTOUT
.D:'ZTOOPS DISPLAY I ZTOUT Q
.D PROMPT4 I ZTOOPS!ZTOUT Q
.D REMOVE
.Q
K ^TMP($J,"XUTMRJD")
Q
EXPLAIN ;
;MAIN--explain purpose of this exit action
W !!,"If you forcibly exited any processes, some of them may have"
W !,"been TaskMan tasks. If so, TaskMan still believes the tasks"
W !,"are running. You can correct this problem by telling TaskMan"
W !,"which tasks you forcibly exited. TaskMan will then remove those"
W !,"tasks from its list of running tasks.",!
Q
PROMPT1 ;
;MAIN--ask whether system manager forcibly exited any tasks
N DIR,DIRUT,DTOUT,DUOUT,X,Y
S DIR(0)="Y",DIR("A")="Did you forcibly exit any tasks",DIR("B")="Yes"
S DIR("?")="^D HELP1A^XUTMRJD1",DIR("??")="^D HELP1B^XUTMRJD1"
W ! D ^DIR
I $D(DTOUT) W " ** TIME-OUT **",$C(7)
I $D(DUOUT) W " ** ^-ESCAPE **"
I $D(DIRUT) S ZTOUT=1 Q
S ZTOUT='Y
Q
PROMPT2 ;
;MAIN--ask system manager to select tasks to remove from Task List
N DIR,DIRUT,DTOUT,DUOUT,X,Y,XUTMT S ZTSK="" K ^TMP($J,"XUTMT")
F D Q:ZTSK!ZTOUT
.W ! S XUTMT(0)="AL"
.S XUTMT("A")="Which tasks did you forcibly exit (?T for list): "
.S XUTMT("S1")="D SCREEN2A^XUTMRJD1",XUTMT("S2")="D SCREEN2B^XUTMRJD1"
.S XUTMT("?")="^D HELP2A^XUTMRJD1",XUTMT("??")="^D HELP2B^XUTMRJD1"
.D ^XUTMT
P21 .;
.I ZTSK="?SYSTEM STATUS" X ^%ZOSF("SS") Q
.I ZTSK="?TASK LIST" D Q
..K XUTMT
..S XUTMT(0)="R4"
..S XUTMT("NODE")="^%ZTSCH(""TASK"","
..S XUTMT("NONE")="There are no running tasks listed"
..W ! D ^XUTMT
..Q
.I 'ZTSK S ZTOUT=1 W !!?5,"No tasks selected.",! Q
.Q
K ^TMP($J,"XUTMT")
Q
PROMPT3 ;
;MAIN--ask system manager whether to display the selected tasks
N DIR,DIRUT,DTOUT,DUOUT,X,Y
S ZTCOUNT=^TMP($J,"XUTMRJD")
S ZTPLURAL="" I ZTCOUNT>1 S ZTPLURAL="s"
W !!?5,"You have selected ",ZTCOUNT," task",ZTPLURAL," listed as running."
W !
P3 ;
S DIR(0)="Y",DIR("A")="Do you want to see the task"_ZTPLURAL_" you have selected",DIR("B")="Yes"
S DIR("?")="^D HELP3A^XUTMRJD1",DIR("??")="^D HELP3B^XUTMRJD1"
D ^DIR
I $D(DTOUT) W " ** TIME-OUT **",$C(7)
I $D(DUOUT) W " ** ^-ESCAPE **"
I $D(DIRUT) S ZTOUT=1 Q
I 'Y S ZTOOPS=1
Q
DISPLAY ;
;MAIN--display the selected tasks
N XUTMT,ZTSK
S XUTMT(0)="R4"
S XUTMT("NODE")="^TMP($J,""XUTMRJD"","
S XUTMT("NONE")="There is an error in this program."
W ! D ^XUTMT
Q
PROMPT4 ;
;MAIN--ask system manager to confirm choice of tasks
N DIR,DIRUT,DTOUT,DUOUT,X,Y
W ! S DIR(0)="Y",DIR("A")="Are you sure you want to remove"
S DIR("A")=DIR("A")_$S(ZTCOUNT=1:" this task",1:" these tasks")_" from the list of running tasks"
P41 ;
S DIR("B")="No",DIR("?")="^D HELP4A^XUTMRJD1",DIR("??")="^D HELP4B^XUTMRJD1"
D ^DIR
I $D(DTOUT) W " ** TIME-OUT **",$C(7)
I $D(DUOUT) W " ** ^-ESCAPE **"
I $D(DIRUT) S ZTOUT=1 Q
S ZTOOPS='Y I Y Q
W !!?5,"The selected task",ZTPLURAL," will remain listed as running.",!
Q
REMOVE ;
;MAIN--remove selected tasks from Task List
N ZTSK
W !!,"Removing selected task",ZTPLURAL,"..."
;L +^%ZTSCH("TASK") removed patch #67
S ZTSK=0 F S ZTSK=$O(^TMP($J,"XUTMRJD",ZTSK)) Q:'ZTSK D
.L +^%ZTSCH("TASK",ZTSK):0 I '$T D Q
..W !!,"Task is still running, kill job first"
..W !,"Task "_ZTSK_" will not be removed, continuing..."
..Q
.L -^%ZTSCH("TASK",ZTSK)
.K ^%ZTSCH("TASK",ZTSK)
.W !?5,"...",ZTSK," removed."
;L -^%ZTSCH("TASK") removed patch #67
W !?5,"...finished!"
Q
ASK ;Call from the option
I '$O(^%ZTSCH("TASK",0)) Q
N ZTCOUNT,ZTENV,ZTKEY,ZTNAME,ZTPLURAL,ZTSK,ZTOOPS,ZTOUT,XUTMUCI
S (ZTOOPS,ZTOUT)=0
K ^TMP($J,"XUTMRJD")
D ENV^XUTMUTL Q:'$D(ZTENV)
W !,"This will allow you to remove entries from TaskMans list of",!,"running tasks that you believe are not running."
W !,"The questions will be asked assuming you have just killed a task"
G M2
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HXUTMRJD 4266 printed Dec 13, 2024@02:13:35 Page 2
XUTMRJD ;SEA/RDS - TaskMan: Option, XURESJOB exit action ;08/07/97 15:01
+1 ;;8.0;KERNEL;**49,67**;Jul 10, 1995
MAIN ;
+1 ;Main module of XURESJOB exit action
+2 IF '$ORDER(^%ZTSCH("TASK",0))
QUIT
+3 NEW ZTCOUNT,ZTENV,ZTKEY,ZTNAME,ZTPLURAL,ZTSK,ZTOOPS,ZTOUT,XUTMUCI
+4 SET (ZTOOPS,ZTOUT)=0
+5 KILL ^TMP($JOB,"XUTMRJD")
+6 DO ENV^XUTMUTL
if '$DATA(ZTENV)
QUIT
+7 DO EXPLAIN
+8 DO PROMPT1
if ZTOUT
QUIT
M2 FOR
Begin DoDot:1
+1 DO PROMPT2
IF ZTOUT
QUIT
+2 DO PROMPT3
if ZTOUT
QUIT
+3 if 'ZTOOPS
DO DISPLAY
IF ZTOUT
QUIT
+4 DO PROMPT4
IF ZTOOPS!ZTOUT
QUIT
+5 DO REMOVE
+6 QUIT
End DoDot:1
IF ZTOUT
QUIT
+7 KILL ^TMP($JOB,"XUTMRJD")
+8 QUIT
EXPLAIN ;
+1 ;MAIN--explain purpose of this exit action
+2 WRITE !!,"If you forcibly exited any processes, some of them may have"
+3 WRITE !,"been TaskMan tasks. If so, TaskMan still believes the tasks"
+4 WRITE !,"are running. You can correct this problem by telling TaskMan"
+5 WRITE !,"which tasks you forcibly exited. TaskMan will then remove those"
+6 WRITE !,"tasks from its list of running tasks.",!
+7 QUIT
PROMPT1 ;
+1 ;MAIN--ask whether system manager forcibly exited any tasks
+2 NEW DIR,DIRUT,DTOUT,DUOUT,X,Y
+3 SET DIR(0)="Y"
SET DIR("A")="Did you forcibly exit any tasks"
SET DIR("B")="Yes"
+4 SET DIR("?")="^D HELP1A^XUTMRJD1"
SET DIR("??")="^D HELP1B^XUTMRJD1"
+5 WRITE !
DO ^DIR
+6 IF $DATA(DTOUT)
WRITE " ** TIME-OUT **",$CHAR(7)
+7 IF $DATA(DUOUT)
WRITE " ** ^-ESCAPE **"
+8 IF $DATA(DIRUT)
SET ZTOUT=1
QUIT
+9 SET ZTOUT='Y
+10 QUIT
PROMPT2 ;
+1 ;MAIN--ask system manager to select tasks to remove from Task List
+2 NEW DIR,DIRUT,DTOUT,DUOUT,X,Y,XUTMT
SET ZTSK=""
KILL ^TMP($JOB,"XUTMT")
+3 FOR
Begin DoDot:1
+4 WRITE !
SET XUTMT(0)="AL"
+5 SET XUTMT("A")="Which tasks did you forcibly exit (?T for list): "
+6 SET XUTMT("S1")="D SCREEN2A^XUTMRJD1"
SET XUTMT("S2")="D SCREEN2B^XUTMRJD1"
+7 SET XUTMT("?")="^D HELP2A^XUTMRJD1"
SET XUTMT("??")="^D HELP2B^XUTMRJD1"
+8 DO ^XUTMT
P21 ;
+1 IF ZTSK="?SYSTEM STATUS"
XECUTE ^%ZOSF("SS")
QUIT
+2 IF ZTSK="?TASK LIST"
Begin DoDot:2
+3 KILL XUTMT
+4 SET XUTMT(0)="R4"
+5 SET XUTMT("NODE")="^%ZTSCH(""TASK"","
+6 SET XUTMT("NONE")="There are no running tasks listed"
+7 WRITE !
DO ^XUTMT
+8 QUIT
End DoDot:2
QUIT
+9 IF 'ZTSK
SET ZTOUT=1
WRITE !!?5,"No tasks selected.",!
QUIT
+10 QUIT
End DoDot:1
if ZTSK!ZTOUT
QUIT
+11 KILL ^TMP($JOB,"XUTMT")
+12 QUIT
PROMPT3 ;
+1 ;MAIN--ask system manager whether to display the selected tasks
+2 NEW DIR,DIRUT,DTOUT,DUOUT,X,Y
+3 SET ZTCOUNT=^TMP($JOB,"XUTMRJD")
+4 SET ZTPLURAL=""
IF ZTCOUNT>1
SET ZTPLURAL="s"
+5 WRITE !!?5,"You have selected ",ZTCOUNT," task",ZTPLURAL," listed as running."
+6 WRITE !
P3 ;
+1 SET DIR(0)="Y"
SET DIR("A")="Do you want to see the task"_ZTPLURAL_" you have selected"
SET DIR("B")="Yes"
+2 SET DIR("?")="^D HELP3A^XUTMRJD1"
SET DIR("??")="^D HELP3B^XUTMRJD1"
+3 DO ^DIR
+4 IF $DATA(DTOUT)
WRITE " ** TIME-OUT **",$CHAR(7)
+5 IF $DATA(DUOUT)
WRITE " ** ^-ESCAPE **"
+6 IF $DATA(DIRUT)
SET ZTOUT=1
QUIT
+7 IF 'Y
SET ZTOOPS=1
+8 QUIT
DISPLAY ;
+1 ;MAIN--display the selected tasks
+2 NEW XUTMT,ZTSK
+3 SET XUTMT(0)="R4"
+4 SET XUTMT("NODE")="^TMP($J,""XUTMRJD"","
+5 SET XUTMT("NONE")="There is an error in this program."
+6 WRITE !
DO ^XUTMT
+7 QUIT
PROMPT4 ;
+1 ;MAIN--ask system manager to confirm choice of tasks
+2 NEW DIR,DIRUT,DTOUT,DUOUT,X,Y
+3 WRITE !
SET DIR(0)="Y"
SET DIR("A")="Are you sure you want to remove"
+4 SET DIR("A")=DIR("A")_$SELECT(ZTCOUNT=1:" this task",1:" these tasks")_" from the list of running tasks"
P41 ;
+1 SET DIR("B")="No"
SET DIR("?")="^D HELP4A^XUTMRJD1"
SET DIR("??")="^D HELP4B^XUTMRJD1"
+2 DO ^DIR
+3 IF $DATA(DTOUT)
WRITE " ** TIME-OUT **",$CHAR(7)
+4 IF $DATA(DUOUT)
WRITE " ** ^-ESCAPE **"
+5 IF $DATA(DIRUT)
SET ZTOUT=1
QUIT
+6 SET ZTOOPS='Y
IF Y
QUIT
+7 WRITE !!?5,"The selected task",ZTPLURAL," will remain listed as running.",!
+8 QUIT
REMOVE ;
+1 ;MAIN--remove selected tasks from Task List
+2 NEW ZTSK
+3 WRITE !!,"Removing selected task",ZTPLURAL,"..."
+4 ;L +^%ZTSCH("TASK") removed patch #67
+5 SET ZTSK=0
FOR
SET ZTSK=$ORDER(^TMP($JOB,"XUTMRJD",ZTSK))
if 'ZTSK
QUIT
Begin DoDot:1
+6 LOCK +^%ZTSCH("TASK",ZTSK):0
IF '$TEST
Begin DoDot:2
+7 WRITE !!,"Task is still running, kill job first"
+8 WRITE !,"Task "_ZTSK_" will not be removed, continuing..."
+9 QUIT
End DoDot:2
QUIT
+10 LOCK -^%ZTSCH("TASK",ZTSK)
+11 KILL ^%ZTSCH("TASK",ZTSK)
+12 WRITE !?5,"...",ZTSK," removed."
End DoDot:1
+13 ;L -^%ZTSCH("TASK") removed patch #67
+14 WRITE !?5,"...finished!"
+15 QUIT
ASK ;Call from the option
+1 IF '$ORDER(^%ZTSCH("TASK",0))
QUIT
+2 NEW ZTCOUNT,ZTENV,ZTKEY,ZTNAME,ZTPLURAL,ZTSK,ZTOOPS,ZTOUT,XUTMUCI
+3 SET (ZTOOPS,ZTOUT)=0
+4 KILL ^TMP($JOB,"XUTMRJD")
+5 DO ENV^XUTMUTL
if '$DATA(ZTENV)
QUIT
+6 WRITE !,"This will allow you to remove entries from TaskMans list of",!,"running tasks that you believe are not running."
+7 WRITE !,"The questions will be asked assuming you have just killed a task"
+8 GOTO M2