XUTMQ ;SEA/RDS - TaskMan: Option, XUTMINQ, Show task lists ;07/24/2000 13:23 [ 04/02/2003 8:29 AM ]
;;8.0;KERNEL;**1002,1003,1004,1005,1007**;APR 1, 2003
;;8.0;KERNEL;**20,136,169**;Jul 10, 1995
;
ENV ;Establish Routine Environment
N %,%ZTF,%ZTI,%ZTJ,%ZTL,%ZTR,DDH,DIR,DIRUT,DTOUT,DUOUT,X,Y,ZT,ZT1,ZTENV,ZTKEY,ZTNAME,XUTMUCI
D ENV^XUTMUTL Q:'$D(ZTENV)
I '+$O(^%ZTSK(0))&'$D(^%ZTSCH("TASK")) W !!,"The Task File is empty, and there are no tasks currently running." S DIR(0)="E" D ^DIR Q
;
SELECT ;Select listing (main loop)
F ZT=0:0 D FLAGS,SET,PROMPT,^DIR Q:$D(DIRUT) K DIR,DIRUT,DTOUT,DUOUT D BRANCH
I $D(DTOUT) W "*TIMEOUT*",$C(7)
K DIR,DIRUT,DTOUT,DUOUT,X,Y
Q
;
FLAGS ;Reset Taskman Files Status Flags
N X,Y
W @IOF S ZT1="",%ZTL=0 F S ZT1=$O(^%ZTSCH("LINK",ZT1)) Q:ZT1="" I $O(^%ZTSCH("LINK",ZT1,""))]"" S %ZTL=1 Q
S ZT1="",%ZTJ=0 F S ZT1=$O(^%ZTSCH("JOB",ZT1)) Q:ZT1="" I $O(^%ZTSCH("JOB",ZT1,0))]"" S %ZTJ=1 Q
S X="",%ZTI=0
F S X=$O(^%ZTSCH("IO",X)) Q:X="" I $D(^%ZTSCH("IO",X))>9 S %ZTI=1 Q
S %ZTF=+$O(^%ZTSCH(""))!%ZTI!%ZTL!%ZTJ,%ZTR=$D(^%ZTSCH("TASK"))
Q
;
SET ;Create set of choices for user
I ZTKEY S DIR(0)="A:All of one user's tasks.;O:One user's future tasks.;"
E S DIR(0)="A:All of your tasks.;Y:Your future tasks.;"
S DIR(0)="SAOM^"_DIR(0)_"E:Every task.;L:List of tasks.;U:Unsuccessful tasks." S:%ZTF DIR(0)=DIR(0)_";F:Future tasks."
S:%ZTI DIR(0)=DIR(0)_";T:Tasks waiting for devices.;W:Waiting list for a device." S:%ZTR DIR(0)=DIR(0)_";R:Running tasks."
S:%ZTL DIR(0)=DIR(0)_";C:Cross-cpu waiting lists."
Q
;
PROMPT ;Create prompt and help text
S DIR("A",1)=" List Tasks Option"
S DIR("A",2)=""
S DIR("A",3)=" All of one user's tasks."
S DIR("A",4)=" One user's future tasks."
S:'ZTKEY DIR("A",3)=" All your tasks."
S:'ZTKEY DIR("A",4)=" Your future tasks."
S DIR("A",5)=" Every task."
S DIR("A",6)=" List of tasks."
S DIR("A",7)=" Unsuccessful tasks."
S:%ZTF DIR("A",8)=" Future tasks."
S:%ZTI DIR("A",9)=" Tasks waiting for devices."
S:%ZTI DIR("A",10)=" Waiting list for a device."
S X=$S(%ZTI:11,%ZTF:9,1:8)
S:%ZTR DIR("A",X)=" Running tasks.",X=X+1
S:%ZTL DIR("A",X)=" Cross-cpu waiting lists.",X=X+1
S DIR("A",X)="",DIR("A")=" Select Type Of Listing: "
S DIR("?")="^D HELP^XUTMQH"
Q
;
BRANCH ;DO selected listing
N ZT
D @$S(Y="A":"ALL^XUTMQ0",Y="O"!(Y="Y"):"FUT^XUTMQ0",Y="E":"EVERY^XUTMQ1",Y="L":"LIST^XUTMQ1",Y="U":"NOT^XUTMQ1",Y="C":"LINK^XUTMQ2",Y="R":"RUN^XUTMQ2",Y="F":"FUT^XUTMQ2",Y="T":"IOQ^XUTMQ3",1:"IO1^XUTMQ3")
Q
LIST ;Print a list of tasks in ^TMP($J,n,m).
N XUTMT,XU1,XU2,IOCRT,XUDD,XUTSK,PG
D LSTPRE,HDR S XU1=0
F S XU1=$O(^TMP($J,XU1)),XU2=0 Q:XU1'>0 F S XU2=$O(^TMP($J,XU1,XU2)) Q:XU2'>0 D I $D(DIRUT) S (XU1,XU2)="A"
. I $Y+5'<IOSL D HDR Q:$D(DIRUT)
. W !,"-------------------------------------------------------------------------------"
. D EN^XUTMTP(XU2)
. Q
D:'$D(DIRUT)&IOCRT WAIT
Q
LSTPRE ;
S IOCRT=$E(IOST,1,2)["C-",XUDD=$$HTE^XLFDT($H,"1MP"),PG=0
Q
HDR I PG>0,IOCRT D WAIT Q:$D(DIRUT)
I (PG>0)!(IOCRT) W @IOF
S PG=PG+1
W "Task list ",XUDD,?70,"Page ",PG
Q
WAIT S DIR(0)="E" D ^DIR
Q
XUTMQ ;SEA/RDS - TaskMan: Option, XUTMINQ, Show task lists ;07/24/2000 13:23 [ 04/02/2003 8:29 AM ]
+1 ;;8.0;KERNEL;**1002,1003,1004,1005,1007**;APR 1, 2003
+2 ;;8.0;KERNEL;**20,136,169**;Jul 10, 1995
+3 ;
ENV ;Establish Routine Environment
+1 NEW %,%ZTF,%ZTI,%ZTJ,%ZTL,%ZTR,DDH,DIR,DIRUT,DTOUT,DUOUT,X,Y,ZT,ZT1,ZTENV,ZTKEY,ZTNAME,XUTMUCI
+2 DO ENV^XUTMUTL
IF '$DATA(ZTENV)
QUIT
+3 IF '+$ORDER(^%ZTSK(0))&'$DATA(^%ZTSCH("TASK"))
WRITE !!,"The Task File is empty, and there are no tasks currently running."
SET DIR(0)="E"
DO ^DIR
QUIT
+4 ;
SELECT ;Select listing (main loop)
+1 FOR ZT=0:0
DO FLAGS
DO SET
DO PROMPT
DO ^DIR
IF $DATA(DIRUT)
QUIT
KILL DIR,DIRUT,DTOUT,DUOUT
DO BRANCH
+2 IF $DATA(DTOUT)
WRITE "*TIMEOUT*",$CHAR(7)
+3 KILL DIR,DIRUT,DTOUT,DUOUT,X,Y
+4 QUIT
+5 ;
FLAGS ;Reset Taskman Files Status Flags
+1 NEW X,Y
+2 WRITE @IOF
SET ZT1=""
SET %ZTL=0
FOR
SET ZT1=$ORDER(^%ZTSCH("LINK",ZT1))
IF ZT1=""
QUIT
IF $ORDER(^%ZTSCH("LINK",ZT1,""))]""
SET %ZTL=1
QUIT
+3 SET ZT1=""
SET %ZTJ=0
FOR
SET ZT1=$ORDER(^%ZTSCH("JOB",ZT1))
IF ZT1=""
QUIT
IF $ORDER(^%ZTSCH("JOB",ZT1,0))]""
SET %ZTJ=1
QUIT
+4 SET X=""
SET %ZTI=0
+5 FOR
SET X=$ORDER(^%ZTSCH("IO",X))
IF X=""
QUIT
IF $DATA(^%ZTSCH("IO",X))>9
SET %ZTI=1
QUIT
+6 SET %ZTF=+$ORDER(^%ZTSCH(""))!%ZTI!%ZTL!%ZTJ
SET %ZTR=$DATA(^%ZTSCH("TASK"))
+7 QUIT
+8 ;
SET ;Create set of choices for user
+1 IF ZTKEY
SET DIR(0)="A:All of one user's tasks.;O:One user's future tasks.;"
+2 IF '$TEST
SET DIR(0)="A:All of your tasks.;Y:Your future tasks.;"
+3 SET DIR(0)="SAOM^"_DIR(0)_"E:Every task.;L:List of tasks.;U:Unsuccessful tasks."
IF %ZTF
SET DIR(0)=DIR(0)_";F:Future tasks."
+4 IF %ZTI
SET DIR(0)=DIR(0)_";T:Tasks waiting for devices.;W:Waiting list for a device."
IF %ZTR
SET DIR(0)=DIR(0)_";R:Running tasks."
+5 IF %ZTL
SET DIR(0)=DIR(0)_";C:Cross-cpu waiting lists."
+6 QUIT
+7 ;
PROMPT ;Create prompt and help text
+1 SET DIR("A",1)=" List Tasks Option"
+2 SET DIR("A",2)=""
+3 SET DIR("A",3)=" All of one user's tasks."
+4 SET DIR("A",4)=" One user's future tasks."
+5 IF 'ZTKEY
SET DIR("A",3)=" All your tasks."
+6 IF 'ZTKEY
SET DIR("A",4)=" Your future tasks."
+7 SET DIR("A",5)=" Every task."
+8 SET DIR("A",6)=" List of tasks."
+9 SET DIR("A",7)=" Unsuccessful tasks."
+10 IF %ZTF
SET DIR("A",8)=" Future tasks."
+11 IF %ZTI
SET DIR("A",9)=" Tasks waiting for devices."
+12 IF %ZTI
SET DIR("A",10)=" Waiting list for a device."
+13 SET X=$SELECT(%ZTI:11,%ZTF:9,1:8)
+14 IF %ZTR
SET DIR("A",X)=" Running tasks."
SET X=X+1
+15 IF %ZTL
SET DIR("A",X)=" Cross-cpu waiting lists."
SET X=X+1
+16 SET DIR("A",X)=""
SET DIR("A")=" Select Type Of Listing: "
+17 SET DIR("?")="^D HELP^XUTMQH"
+18 QUIT
+19 ;
BRANCH ;DO selected listing
+1 NEW ZT
+2 DO @$SELECT(Y="A":"ALL^XUTMQ0",Y="O"!(Y="Y"):"FUT^XUTMQ0",Y="E":"EVERY^XUTMQ1",Y="L":"LIST^XUTMQ1",Y="U":"NOT^XUTMQ1",Y="C":"LINK^XUTMQ2",Y="R":"RUN^XUTMQ2",Y="F":"FUT^XUTMQ2",Y="T":"IOQ^XUTMQ3",1:"IO1^XUTMQ3")
+3 QUIT
LIST ;Print a list of tasks in ^TMP($J,n,m).
+1 NEW XUTMT,XU1,XU2,IOCRT,XUDD,XUTSK,PG
+2 DO LSTPRE
DO HDR
SET XU1=0
+3 FOR
SET XU1=$ORDER(^TMP($JOB,XU1))
SET XU2=0
IF XU1'>0
QUIT
FOR
SET XU2=$ORDER(^TMP($JOB,XU1,XU2))
IF XU2'>0
QUIT
Begin DoDot:1
+4 IF $Y+5'<IOSL
DO HDR
IF $DATA(DIRUT)
QUIT
+5 WRITE !,"-------------------------------------------------------------------------------"
+6 DO EN^XUTMTP(XU2)
+7 QUIT
End DoDot:1
IF $DATA(DIRUT)
SET (XU1,XU2)="A"
+8 IF '$DATA(DIRUT)&IOCRT
DO WAIT
+9 QUIT
LSTPRE ;
+1 SET IOCRT=$EXTRACT(IOST,1,2)["C-"
SET XUDD=$$HTE^XLFDT($HOROLOG,"1MP")
SET PG=0
+2 QUIT
HDR IF PG>0
IF IOCRT
DO WAIT
IF $DATA(DIRUT)
QUIT
+1 IF (PG>0)!(IOCRT)
WRITE @IOF
+2 SET PG=PG+1
+3 WRITE "Task list ",XUDD,?70,"Page ",PG
+4 QUIT
WAIT SET DIR(0)="E"
DO ^DIR
+1 QUIT