XQ83 ;SF-ISC.SEA/JLI/LUKE,ISD/HGW - FIND ^XUTL NODES NEEDING SURGERY ;05/01/12 09:43
;;8.0;KERNEL;**60,157,286,593**;Jul 10, 1995;Build 7
;Per VHA Directive 2004-038, this routine should not be modified
Q
DQ ;TaskMan entry fired by CHEK below
;
Q:'$D(^DIC(19,"AT")) ;Nothing to do
;
I $D(^DIC(19,"AXQ","P0"))=1 D ;Somebody is rebuilding menus
.L +^DIC(19,"AXQ","P0"):DILOCKTM ;If we can lock it the flag is bogus ;P593
.I $T L -^DIC(19,"AXQ","P0") K ^DIC(19,"AXQ","P0")
.Q
Q:$D(^DIC(19,"AXQ","P0"))=1
;
I $D(^DIC(19,"AXQ","P0","STOP")) D
.N X,Y,Z
.S X=$G(^DIC(19,"AXQ","P0","STOP")) Q:X=""
.S Y=$H
.S Z=$$HDIFF^XLFDT(Y,X,1)
.I Z>0 K ^DIC(19,"AXQ","P0","STOP") Q ;Flag left over from yesterday
.S Z=$$HDIFF^XLFDT(Y,X,2)
.I Z>11000 K ^DIC(19,"AXQ","P0","STOP") Q ;Flag is over 2 hours old
.Q
Q:$D(^DIC(19,"AXQ","P0","STOP")) ;Rebuilding - stop micro surgery
;
S ^DIC(19,"AXQ","P0","MICRO")=$H ;Set the 'I am working' flag.
;
D NOW^%DTC ;Returns: %=3010706.131332, %H=58626,47612, X=3010706
S X=% S %XQT1=X H 2
S XQSTART=$$HTE^XLFDT($H) ;Returns: Jul 06, 2001@13:19:20
;
S X1=X,X2=-21 D C^%DTC F %K=0:0 S %K=$O(^DIC(19,"AT",%K)) Q:%K'>0!(%K'<X) K ^(%K) ;Kill of those that are 21 days old
S X=DT+2 F S X=$O(^DIC(19,"AT",X)) Q:X'>0 S %K="" F S %K=$O(^DIC(19,"AT",X,%K)) Q:%K="" W !,X K ^(%K) S ^DIC(19,"AT",$$NOW^XLFDT(),%K)="" W " ",$$NOW^XLFDT()
;Kill off old "AT" nodes
;
LOOP ;Main loop
;
;I $D(^DIC(19,"AXQ","P0","STOP")) G KILL
K ^TMP($J) S X=%XQT,%XQX="",N=0 F %K=X:0 S %K=$O(^DIC(19,"AT",%K)) Q:%K'>0!(%K>%XQT1) S %XQT=%K,%Z="" F %J=0:0 S %Z=$O(^DIC(19,"AT",%K,%Z)) Q:%Z="" S N=N+1,^TMP($J,N,%Z)="",^TMP($J,"A",%Z,N)=""
;$O through "AT" and set up lists in ^TMP, ^TMP($J,"A" is the XREF
;
I '$D(^TMP($J)) S XQN="P0",X=%XQT D H^%DTC S %XQT=%H_","_%T F %K=0:0 S XQN=$O(^XUTL("XQO",XQN)) Q:$E(XQN)'="P" S ^(XQN,0)=%XQT
I '$D(^TMP($J)) G KILL
;If nothing appears in TMP quit
;
S %Z="" F %K=0:0 S %Z=$O(^TMP($J,"A",%Z)) Q:%Z="" F N=0:0 S N=$O(^TMP($J,"A",%Z,N)) Q:N'>0 I $O(^(N))>0 K ^TMP($J,N)
;F N=0:0 S N=$O(^TMP($J,N)) Q:N'>0 S %Z=$O(^(N,"")),%X1=+%Z,%XC=$E(%Z,$L(%X1)+1,99),%X2=$E(%XC,2,99),XJ=$S(%XC="DIFROM":"DNUL",%XC["I":"DINS",%XC["D":"DDEL",%Z=+%Z:"DREG",%XC["S":"DSYN",%XC["P":"DPRI",1:"DNUL") D @XJ
F XQXM=0:0 S XQXM=$O(^TMP($J,XQXM)) Q:XQXM'>0 S XQOP=$O(^(XQXM,"")),XQENT=$S(XQOP["S":"SYN",XQOP["I":"INS",XQOP["D":"DEL",XQOP["P":"PRI",1:"REG") D @XQENT
;solve the entry for the type of operation needs to be performed and
; to that code below.
;Remove the "AT" nodes that we processed
F XQI=0:0 S XQI=$O(^DIC(19,"AT",XQI)) Q:(XQI'<%XQT1)!(XQI<1) K ^(XQI)
D NOW^%DTC S %XQT=%XQT1 S:%=0 %="" S %XQT1=X H 2
G LOOP
;
DINS F %M=N:0 S %M=$O(^TMP($J,%M)) Q:%M'>0 I $D(^(%M,(%X1_"D"_%X2)))!$D(^(%X1))!$D(^(%X2)) K ^TMP($J,N) Q
I $D(^TMP($J,N)) F %M=N:0 S %M=$O(^TMP($J,%M)) Q:%M'>0 I $D(^(%M,(%X1_"S"_%X2))) K ^TMP($J,%M)
Q
DDEL F %M=N:0 S %M=$O(^TMP($J,%M)) Q:%M'>0 I $D(^(%M,(%X1_"I"_%X2))) K ^TMP($J,N) Q
I $D(^TMP($J,N)) F %M=N:0 S %M=$O(^TMP($J,%M)) Q:%M'>0 I $D(^(%M,(%X1_"S"_%X2))) K ^TMP($J,%M)
Q
DREG F %M=N:0 S %M=$O(^TMP($J,%M)) Q:%M'>0 S X=$O(^(%M,"")) I X[("I"_%X2)!(X[("S"_%X2)) K ^TMP($J,%M)
Q
DSYN F %M=N:0 S %M=$O(^TMP($J,%M)) Q:%M'>0 S X=$O(^(%M,"")) I X=%X2!(X=(%X1_"I"_%X2)) K ^TMP($J,N) Q
Q
DNUL K ^TMP($J,N)
DPRI Q
;
DEL S XQC="D" D SPLIT D ^XQ83D Q
;
DIFROM S XQH=%XQT D QUE^XQ81
G KILL
;
INS S XQC="I" D SPLIT D ^XQ83A Q
;
SYN S XQC="S" D SPLIT D SYN^XQ83R Q
;
REG S XQC="" D REG^XQ83R Q
;
PRI ; Enter a new Primary menu
S XQC="P" D SPLIT S (A,XQDIC)="P"_XQOPM,XQVE=0,XQRB=0,XQFG1=1 K XQFG L +^XUTL("XQO",A):0 D PM1^XQ8 S ^XUTL("XQO",XQDIC,0)=%XQT1 L -^XUTL("XQO",XQDIC)
Q
;
SPLIT S XQOPM=+XQOP,XQOPI=+$P(XQOP,XQC,2),XQC1=XQOPM_","_XQOPI_",",XQC2=","_XQC1,XQOPI1=XQOPI_",",XQOPI2=","_XQOPI1 Q
;
;
CHEKV ;First see if the compiled menus live on this system
;If so fall through to CHEK, else quit (called by XQOO*)
Q:'$D(^XUTL("XQO"))
;
CHEK ;See if microsurgery needs to be run here
;Called by XUS+25 and XUSG+18
;Also kicked off by the option XQKICKMICRO
;
Q:'$D(^DIC(19,"AT")) ;Nothing to do
;
I $D(^DIC(19,"AXQ","P0"))=1 D ;Somebody is rebuilding menus
.L +^DIC(19,"AXQ","P0"):DILOCKTM ;If we can lock it the flag is bogus ;P593
.I $T L -^DIC(19,"AXQ","P0") K ^DIC(19,"AXQ","P0")
.Q
Q:$D(^DIC(19,"AXQ","P0"))=1
;
I $D(^DIC(19,"AXQ","P0","STOP")) D
.N X,Y,Z
.S X=$G(^DIC(19,"AXQ","P0","STOP")) Q:X=""
.S Y=$H
.S Z=$$HDIFF^XLFDT(Y,X,1)
.I Z>0 K ^DIC(19,"AXQ","P0","STOP") Q ;Flag left over from yesterday
.S Z=$$HDIFF^XLFDT(Y,X,2)
.I Z>11000 K ^DIC(19,"AXQ","P0","STOP") Q ;Flag is over 2 hours old
.Q
Q:$D(^DIC(19,"AXQ","P0","STOP")) ;Rebuilding - stop micro surgery
;
;If the compiled menus do not exist on "AXQ" rebuild all of them
S %XQH=$O(^DIC(19,"AXQ","P")) I %XQH'["P" D Q
.;S ^DIC(19,"AXQ","P0")=$H
.S ZTIO="",ZTDTH=$H,ZTRTN="QUE^XQ81",ZTSAVE("DUZ")=.5
.D SETVOL
.D ^%ZTLOAD
.Q
;
Q:'$D(^XUTL("XQO",%XQH,0)) L ^XUTL("XQO",%XQH,0):DILOCKTM I '$T K %XQH Q ;P593
;If the first menu has a 0th node lock it, if it won't lock quit
N X S %H=$P(^XUTL("XQO",%XQH,0),U,1) D YMD^%DTC S:%>.001 %=%-.001 S:%=0 %="" S %XQT=X_%
;Get date off first entry set %XQT (looks like: 3000414.081043)
S %XQX="",%ZO="" S:'$D(XQM) XQM=+$G(^VA(200,DUZ,201)) I XQM>0,'$D(^XUTL("XQO","P"_XQM)) S %XQX=XQM_"P",^DIC(19,"AT",%XQT+.0001,%XQX)=""
;Set Primary menu of this user, if not there flag it in "AT" it looks
; like this: ^DIC(19,"AT",3000414.081143,9P)
;I $O(^DIC(19,"AT",%XQT))>0
;
S ^DIC(19,"AXQ","P0","MICRO")=$H,%XQX=1
S %TIM=$P($H,",")-1_","_$P($H,",",2)
L -^XUTL("XQO",%XQH,0)
;
S ZTDESC="MICRO UPDATING XUTL",ZTRTN="DQ^XQ83",ZTSAVE("%XQT")="",ZTSAVE("DUZ")=.5,ZTDTH=%TIM,ZTIO="" D:'$D(ZTCPU) SETVOL D ^%ZTLOAD
;Unlock the node and task off DQ above and quit
;
Q
SETVOL ;
X ^%ZOSF("UCI") S ZTCPU=$P(Y,",",2),ZTUCI=$P(Y,",")
Q
;
KILL D REPORT^XQ84("MICRO")
K ^DIC(19,"AXQ","P0","MICRO")
;
K %,%H,%J,%K,%M,%X1,%X2,%TIM,%XQT1,%XQH,%I,%T,%XQA,%XQX,%XQT,%XQX1,%XQX2,%XQY,A,B,I,I0,%Z,%ZO
K J,K,M,N,P,X1,X2,XQA,XQC,XQC1,XQC2,XQE,XQENT,XQK,XQOP,XQOPI,XQOPI1,XQOPI2
K XQI,XQH,XQFG1,XQM,XQN,XQOPM,XQOPS,XQP,XQRB,XQSTART,XQVE,XQXM,Y
I $D(ZTQUEUED) S ZTREQ="@"
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HXQ83 6383 printed Nov 22, 2024@17:15:15 Page 2
XQ83 ;SF-ISC.SEA/JLI/LUKE,ISD/HGW - FIND ^XUTL NODES NEEDING SURGERY ;05/01/12 09:43
+1 ;;8.0;KERNEL;**60,157,286,593**;Jul 10, 1995;Build 7
+2 ;Per VHA Directive 2004-038, this routine should not be modified
+3 QUIT
DQ ;TaskMan entry fired by CHEK below
+1 ;
+2 ;Nothing to do
if '$DATA(^DIC(19,"AT"))
QUIT
+3 ;
+4 ;Somebody is rebuilding menus
IF $DATA(^DIC(19,"AXQ","P0"))=1
Begin DoDot:1
+5 ;If we can lock it the flag is bogus ;P593
LOCK +^DIC(19,"AXQ","P0"):DILOCKTM
+6 IF $TEST
LOCK -^DIC(19,"AXQ","P0")
KILL ^DIC(19,"AXQ","P0")
+7 QUIT
End DoDot:1
+8 if $DATA(^DIC(19,"AXQ","P0"))=1
QUIT
+9 ;
+10 IF $DATA(^DIC(19,"AXQ","P0","STOP"))
Begin DoDot:1
+11 NEW X,Y,Z
+12 SET X=$GET(^DIC(19,"AXQ","P0","STOP"))
if X=""
QUIT
+13 SET Y=$HOROLOG
+14 SET Z=$$HDIFF^XLFDT(Y,X,1)
+15 ;Flag left over from yesterday
IF Z>0
KILL ^DIC(19,"AXQ","P0","STOP")
QUIT
+16 SET Z=$$HDIFF^XLFDT(Y,X,2)
+17 ;Flag is over 2 hours old
IF Z>11000
KILL ^DIC(19,"AXQ","P0","STOP")
QUIT
+18 QUIT
End DoDot:1
+19 ;Rebuilding - stop micro surgery
if $DATA(^DIC(19,"AXQ","P0","STOP"))
QUIT
+20 ;
+21 ;Set the 'I am working' flag.
SET ^DIC(19,"AXQ","P0","MICRO")=$HOROLOG
+22 ;
+23 ;Returns: %=3010706.131332, %H=58626,47612, X=3010706
DO NOW^%DTC
+24 SET X=%
SET %XQT1=X
HANG 2
+25 ;Returns: Jul 06, 2001@13:19:20
SET XQSTART=$$HTE^XLFDT($HOROLOG)
+26 ;
+27 ;Kill of those that are 21 days old
SET X1=X
SET X2=-21
DO C^%DTC
FOR %K=0:0
SET %K=$ORDER(^DIC(19,"AT",%K))
if %K'>0!(%K'<X)
QUIT
KILL ^(%K)
+28 SET X=DT+2
FOR
SET X=$ORDER(^DIC(19,"AT",X))
if X'>0
QUIT
SET %K=""
FOR
SET %K=$ORDER(^DIC(19,"AT",X,%K))
if %K=""
QUIT
WRITE !,X
KILL ^(%K)
SET ^DIC(19,"AT",$$NOW^XLFDT(),%K)=""
WRITE " ",$$NOW^XLFDT()
+29 ;Kill off old "AT" nodes
+30 ;
LOOP ;Main loop
+1 ;
+2 ;I $D(^DIC(19,"AXQ","P0","STOP")) G KILL
+3 KILL ^TMP($JOB)
SET X=%XQT
SET %XQX=""
SET N=0
FOR %K=X:0
SET %K=$ORDER(^DIC(19,"AT",%K))
if %K'>0!(%K>%XQT1)
QUIT
SET %XQT=%K
SET %Z=""
FOR %J=0:0
SET %Z=$ORDER(^DIC(19,"AT",%K,%Z))
if %Z=""
QUIT
SET N=N+1
SET ^TMP($JOB,N,%Z)=""
SET ^TMP($JOB,"A",%Z,N)=""
+4 ;$O through "AT" and set up lists in ^TMP, ^TMP($J,"A" is the XREF
+5 ;
+6 IF '$DATA(^TMP($JOB))
SET XQN="P0"
SET X=%XQT
DO H^%DTC
SET %XQT=%H_","_%T
FOR %K=0:0
SET XQN=$ORDER(^XUTL("XQO",XQN))
if $EXTRACT(XQN)'="P"
QUIT
SET ^(XQN,0)=%XQT
+7 IF '$DATA(^TMP($JOB))
GOTO KILL
+8 ;If nothing appears in TMP quit
+9 ;
+10 SET %Z=""
FOR %K=0:0
SET %Z=$ORDER(^TMP($JOB,"A",%Z))
if %Z=""
QUIT
FOR N=0:0
SET N=$ORDER(^TMP($JOB,"A",%Z,N))
if N'>0
QUIT
IF $ORDER(^(N))>0
KILL ^TMP($JOB,N)
+11 ;F N=0:0 S N=$O(^TMP($J,N)) Q:N'>0 S %Z=$O(^(N,"")),%X1=+%Z,%XC=$E(%Z,$L(%X1)+1,99),%X2=$E(%XC,2,99),XJ=$S(%XC="DIFROM":"DNUL",%XC["I":"DINS",%XC["D":"DDEL",%Z=+%Z:"DREG",%XC["S":"DSYN",%XC["P":"DPRI",1:"DNUL") D @XJ
+12 FOR XQXM=0:0
SET XQXM=$ORDER(^TMP($JOB,XQXM))
if XQXM'>0
QUIT
SET XQOP=$ORDER(^(XQXM,""))
SET XQENT=$SELECT(XQOP["S":"SYN",XQOP["I":"INS",XQOP["D":"DEL",XQOP["P":"PRI",1:"REG")
DO @XQENT
+13 ;solve the entry for the type of operation needs to be performed and
+14 ; to that code below.
+15 ;Remove the "AT" nodes that we processed
+16 FOR XQI=0:0
SET XQI=$ORDER(^DIC(19,"AT",XQI))
if (XQI'<%XQT1)!(XQI<1)
QUIT
KILL ^(XQI)
+17 DO NOW^%DTC
SET %XQT=%XQT1
if %=0
SET %=""
SET %XQT1=X
HANG 2
+18 GOTO LOOP
+19 ;
DINS FOR %M=N:0
SET %M=$ORDER(^TMP($JOB,%M))
if %M'>0
QUIT
IF $DATA(^(%M,(%X1_"D"_%X2)))!$DATA(^(%X1))!$DATA(^(%X2))
KILL ^TMP($JOB,N)
QUIT
+1 IF $DATA(^TMP($JOB,N))
FOR %M=N:0
SET %M=$ORDER(^TMP($JOB,%M))
if %M'>0
QUIT
IF $DATA(^(%M,(%X1_"S"_%X2)))
KILL ^TMP($JOB,%M)
+2 QUIT
DDEL FOR %M=N:0
SET %M=$ORDER(^TMP($JOB,%M))
if %M'>0
QUIT
IF $DATA(^(%M,(%X1_"I"_%X2)))
KILL ^TMP($JOB,N)
QUIT
+1 IF $DATA(^TMP($JOB,N))
FOR %M=N:0
SET %M=$ORDER(^TMP($JOB,%M))
if %M'>0
QUIT
IF $DATA(^(%M,(%X1_"S"_%X2)))
KILL ^TMP($JOB,%M)
+2 QUIT
DREG FOR %M=N:0
SET %M=$ORDER(^TMP($JOB,%M))
if %M'>0
QUIT
SET X=$ORDER(^(%M,""))
IF X[("I"_%X2)!(X[("S"_%X2))
KILL ^TMP($JOB,%M)
+1 QUIT
DSYN FOR %M=N:0
SET %M=$ORDER(^TMP($JOB,%M))
if %M'>0
QUIT
SET X=$ORDER(^(%M,""))
IF X=%X2!(X=(%X1_"I"_%X2))
KILL ^TMP($JOB,N)
QUIT
+1 QUIT
DNUL KILL ^TMP($JOB,N)
DPRI QUIT
+1 ;
DEL SET XQC="D"
DO SPLIT
DO ^XQ83D
QUIT
+1 ;
DIFROM SET XQH=%XQT
DO QUE^XQ81
+1 GOTO KILL
+2 ;
INS SET XQC="I"
DO SPLIT
DO ^XQ83A
QUIT
+1 ;
SYN SET XQC="S"
DO SPLIT
DO SYN^XQ83R
QUIT
+1 ;
REG SET XQC=""
DO REG^XQ83R
QUIT
+1 ;
PRI ; Enter a new Primary menu
+1 SET XQC="P"
DO SPLIT
SET (A,XQDIC)="P"_XQOPM
SET XQVE=0
SET XQRB=0
SET XQFG1=1
KILL XQFG
LOCK +^XUTL("XQO",A):0
DO PM1^XQ8
SET ^XUTL("XQO",XQDIC,0)=%XQT1
LOCK -^XUTL("XQO",XQDIC)
+2 QUIT
+3 ;
SPLIT SET XQOPM=+XQOP
SET XQOPI=+$PIECE(XQOP,XQC,2)
SET XQC1=XQOPM_","_XQOPI_","
SET XQC2=","_XQC1
SET XQOPI1=XQOPI_","
SET XQOPI2=","_XQOPI1
QUIT
+1 ;
+2 ;
CHEKV ;First see if the compiled menus live on this system
+1 ;If so fall through to CHEK, else quit (called by XQOO*)
+2 if '$DATA(^XUTL("XQO"))
QUIT
+3 ;
CHEK ;See if microsurgery needs to be run here
+1 ;Called by XUS+25 and XUSG+18
+2 ;Also kicked off by the option XQKICKMICRO
+3 ;
+4 ;Nothing to do
if '$DATA(^DIC(19,"AT"))
QUIT
+5 ;
+6 ;Somebody is rebuilding menus
IF $DATA(^DIC(19,"AXQ","P0"))=1
Begin DoDot:1
+7 ;If we can lock it the flag is bogus ;P593
LOCK +^DIC(19,"AXQ","P0"):DILOCKTM
+8 IF $TEST
LOCK -^DIC(19,"AXQ","P0")
KILL ^DIC(19,"AXQ","P0")
+9 QUIT
End DoDot:1
+10 if $DATA(^DIC(19,"AXQ","P0"))=1
QUIT
+11 ;
+12 IF $DATA(^DIC(19,"AXQ","P0","STOP"))
Begin DoDot:1
+13 NEW X,Y,Z
+14 SET X=$GET(^DIC(19,"AXQ","P0","STOP"))
if X=""
QUIT
+15 SET Y=$HOROLOG
+16 SET Z=$$HDIFF^XLFDT(Y,X,1)
+17 ;Flag left over from yesterday
IF Z>0
KILL ^DIC(19,"AXQ","P0","STOP")
QUIT
+18 SET Z=$$HDIFF^XLFDT(Y,X,2)
+19 ;Flag is over 2 hours old
IF Z>11000
KILL ^DIC(19,"AXQ","P0","STOP")
QUIT
+20 QUIT
End DoDot:1
+21 ;Rebuilding - stop micro surgery
if $DATA(^DIC(19,"AXQ","P0","STOP"))
QUIT
+22 ;
+23 ;If the compiled menus do not exist on "AXQ" rebuild all of them
+24 SET %XQH=$ORDER(^DIC(19,"AXQ","P"))
IF %XQH'["P"
Begin DoDot:1
+25 ;S ^DIC(19,"AXQ","P0")=$H
+26 SET ZTIO=""
SET ZTDTH=$HOROLOG
SET ZTRTN="QUE^XQ81"
SET ZTSAVE("DUZ")=.5
+27 DO SETVOL
+28 DO ^%ZTLOAD
+29 QUIT
End DoDot:1
QUIT
+30 ;
+31 ;P593
if '$DATA(^XUTL("XQO",%XQH,0))
QUIT
LOCK ^XUTL("XQO",%XQH,0):DILOCKTM
IF '$TEST
KILL %XQH
QUIT
+32 ;If the first menu has a 0th node lock it, if it won't lock quit
+33 NEW X
SET %H=$PIECE(^XUTL("XQO",%XQH,0),U,1)
DO YMD^%DTC
if %>.001
SET %=%-.001
if %=0
SET %=""
SET %XQT=X_%
+34 ;Get date off first entry set %XQT (looks like: 3000414.081043)
+35 SET %XQX=""
SET %ZO=""
if '$DATA(XQM)
SET XQM=+$GET(^VA(200,DUZ,201))
IF XQM>0
IF '$DATA(^XUTL("XQO","P"_XQM))
SET %XQX=XQM_"P"
SET ^DIC(19,"AT",%XQT+.0001,%XQX)=""
+36 ;Set Primary menu of this user, if not there flag it in "AT" it looks
+37 ; like this: ^DIC(19,"AT",3000414.081143,9P)
+38 ;I $O(^DIC(19,"AT",%XQT))>0
+39 ;
+40 SET ^DIC(19,"AXQ","P0","MICRO")=$HOROLOG
SET %XQX=1
+41 SET %TIM=$PIECE($HOROLOG,",")-1_","_$PIECE($HOROLOG,",",2)
+42 LOCK -^XUTL("XQO",%XQH,0)
+43 ;
+44 SET ZTDESC="MICRO UPDATING XUTL"
SET ZTRTN="DQ^XQ83"
SET ZTSAVE("%XQT")=""
SET ZTSAVE("DUZ")=.5
SET ZTDTH=%TIM
SET ZTIO=""
if '$DATA(ZTCPU)
DO SETVOL
DO ^%ZTLOAD
+45 ;Unlock the node and task off DQ above and quit
+46 ;
+47 QUIT
SETVOL ;
+1 XECUTE ^%ZOSF("UCI")
SET ZTCPU=$PIECE(Y,",",2)
SET ZTUCI=$PIECE(Y,",")
+2 QUIT
+3 ;
KILL DO REPORT^XQ84("MICRO")
+1 KILL ^DIC(19,"AXQ","P0","MICRO")
+2 ;
+3 KILL %,%H,%J,%K,%M,%X1,%X2,%TIM,%XQT1,%XQH,%I,%T,%XQA,%XQX,%XQT,%XQX1,%XQX2,%XQY,A,B,I,I0,%Z,%ZO
+4 KILL J,K,M,N,P,X1,X2,XQA,XQC,XQC1,XQC2,XQE,XQENT,XQK,XQOP,XQOPI,XQOPI1,XQOPI2
+5 KILL XQI,XQH,XQFG1,XQM,XQN,XQOPM,XQOPS,XQP,XQRB,XQSTART,XQVE,XQXM,Y
+6 IF $DATA(ZTQUEUED)
SET ZTREQ="@"
+7 QUIT