| 1 | HLEVUTI2 ;O-OIFO/LJA - Event Monitor UTILITIES ;02/04/2004 14:42
 | 
|---|
| 2 |  ;;1.6;HEALTH LEVEL SEVEN;**109**;Oct 13, 1995
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; This routine is used to queue M code tasks that automatically
 | 
|---|
| 5 |  ; requeue themselves (within limits.)
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 | INIT ;
 | 
|---|
| 8 |  N A7UOK
 | 
|---|
| 9 |  D HEADER,EX
 | 
|---|
| 10 |  F  Q:(+$Y+3)>IOSL  W !
 | 
|---|
| 11 |  QUIT:$$BTE^HLCSMON("Press RETURN to continue, or '^' to exit... ")  ;->
 | 
|---|
| 12 |  ;
 | 
|---|
| 13 | CTRL ;
 | 
|---|
| 14 |  D HEADER
 | 
|---|
| 15 |  W !
 | 
|---|
| 16 |  D M
 | 
|---|
| 17 |  D ASK I 'A7UOK QUIT  ;->
 | 
|---|
| 18 |  D XEC
 | 
|---|
| 19 |  D BT QUIT:'A7UOK  ;->
 | 
|---|
| 20 |  G CTRL ;->
 | 
|---|
| 21 |  ;
 | 
|---|
| 22 | BT ;
 | 
|---|
| 23 |  W !
 | 
|---|
| 24 |  S A7UOK=0
 | 
|---|
| 25 |  N DIR
 | 
|---|
| 26 |  S DIR(0)="EA",DIR("A")="Press RETURN to continue, or '^' to exit... "
 | 
|---|
| 27 |  D ^DIR
 | 
|---|
| 28 |  QUIT:+Y'=1  ;->
 | 
|---|
| 29 |  S A7UOK=1
 | 
|---|
| 30 |  QUIT
 | 
|---|
| 31 |  ;
 | 
|---|
| 32 | HEADER ;
 | 
|---|
| 33 |  W @IOF,$$CJ^XLFSTR("M Code Requeue Utility",IOM)
 | 
|---|
| 34 |  W !,$$REPEAT^XLFSTR("=",80)
 | 
|---|
| 35 |  QUIT
 | 
|---|
| 36 |  ;
 | 
|---|
| 37 | M KILL A7UMENU F I=1:1 S T=$T(M+I) QUIT:T'[";;"  S T=$P(T,";;",2,99),A7UMENU(I)=$P(T,"~",2,99) W !,$J(I,2),". ",$P(T,"~")
 | 
|---|
| 38 |  ;;Start M code jobs~D START
 | 
|---|
| 39 |  ;;Show M code job runs~D SHOW
 | 
|---|
| 40 |  QUIT
 | 
|---|
| 41 |  ;
 | 
|---|
| 42 | ASK ;
 | 
|---|
| 43 |  W !
 | 
|---|
| 44 |  S A7UOK=0
 | 
|---|
| 45 |  N DIR
 | 
|---|
| 46 |  S DIR(0)="NO^1:"_(+I-1),DIR("A")="Select option"
 | 
|---|
| 47 |  D ^DIR
 | 
|---|
| 48 |  QUIT:'$D(A7UMENU(+Y))  ;->
 | 
|---|
| 49 |  S A7UOPT=+Y
 | 
|---|
| 50 |  S A7UOK=1
 | 
|---|
| 51 |  QUIT
 | 
|---|
| 52 |  ;
 | 
|---|
| 53 | XEC ;
 | 
|---|
| 54 |  S X=A7UMENU(+A7UOPT) X X
 | 
|---|
| 55 |  QUIT
 | 
|---|
| 56 |  ;
 | 
|---|
| 57 |  ;==================================================================
 | 
|---|
| 58 |  ;
 | 
|---|
| 59 | SHOW ; Show M code job "runs"...
 | 
|---|
| 60 |  N C2,C3,C4,C5,X,XTMP,Y
 | 
|---|
| 61 |  ;
 | 
|---|
| 62 |  I $O(^XTMP("HLEVREQ"))'["HLEVREQ" D  QUIT  ;->
 | 
|---|
| 63 |  .  W !!,"No M Code API run data exists..."
 | 
|---|
| 64 |  .  W !
 | 
|---|
| 65 |  ;
 | 
|---|
| 66 |  S C2=14,C3=28,C4=41,C5=59
 | 
|---|
| 67 |  W !,"Task#",?C2,"Start",?C3,"Finish",?C4,"|"
 | 
|---|
| 68 |  W ?(C4+2),"Next task#",?C5,"Queue time"
 | 
|---|
| 69 |  W !,$$REPEAT^XLFSTR("=",C4),"|",$$REPEAT^XLFSTR("=",IOM-$X)
 | 
|---|
| 70 |  ;
 | 
|---|
| 71 |  S XTMP="HLEVREQ"
 | 
|---|
| 72 |  F  S XTMP=$O(^XTMP(XTMP)) Q:$E(XTMP,1,7)'="HLEVREQ"  D
 | 
|---|
| 73 |  .  D SXTMPT(XTMP)
 | 
|---|
| 74 |  ;
 | 
|---|
| 75 |  ;
 | 
|---|
| 76 |  S C2=14,C3=28,C4=41,C5=59
 | 
|---|
| 77 |  W !!,"Task#",?C2,"Start",?C3,"Finish",?C4,"M API"
 | 
|---|
| 78 |  W !,$$REPEAT^XLFSTR("=",IOM)
 | 
|---|
| 79 |  ;
 | 
|---|
| 80 |  S XTMP="HLEVREQ"
 | 
|---|
| 81 |  F  S XTMP=$O(^XTMP(XTMP)) Q:$E(XTMP,1,7)'="HLEVREQ"  D
 | 
|---|
| 82 |  .  D SXTMPM(XTMP)
 | 
|---|
| 83 |  ;
 | 
|---|
| 84 |  Q
 | 
|---|
| 85 |  ;
 | 
|---|
| 86 | SXTMPM(XTMP) ; Show individual XTMP entry...
 | 
|---|
| 87 |  ; C2 to C5 -- req
 | 
|---|
| 88 |  N I,XTMP0
 | 
|---|
| 89 |  S XTMP0=$G(^XTMP(XTMP,0)) QUIT:XTMP0']""  ;->
 | 
|---|
| 90 |  W !
 | 
|---|
| 91 |  D P(4,C2),P(2,C3),P(7,C4)
 | 
|---|
| 92 |  W $P(XTMP0,U,8,9),"  "
 | 
|---|
| 93 |  S XTMP0=$P(XTMP0,U,8,9) QUIT:XTMP0']""  ;->
 | 
|---|
| 94 |  S XTMP0=$P($T(@XTMP0)," ",2,999) QUIT:XTMP0']""  ;->
 | 
|---|
| 95 |  I $E(XTMP0)=";",$E(XTMP0,1,2)'=";;" S XTMP0=$E(XTMP0,2,999)
 | 
|---|
| 96 |  X "F I=1:1:$L(XTMP0) Q:$E(XTMP0,I)'="" """ S XTMP0=$E(XTMP0,I,999)
 | 
|---|
| 97 |  W $E(XTMP0,1,IOM-$X)
 | 
|---|
| 98 |  Q
 | 
|---|
| 99 |  ;
 | 
|---|
| 100 | SXTMPT(XTMP) ; Show individual XTMP entry...
 | 
|---|
| 101 |  ; C2 to C5 -- req
 | 
|---|
| 102 |  N XTMP0
 | 
|---|
| 103 |  S XTMP0=$G(^XTMP(XTMP,0)) QUIT:XTMP0']""  ;->
 | 
|---|
| 104 |  W !
 | 
|---|
| 105 |  D P(4,C2),P(2,C3),P(7,C4)
 | 
|---|
| 106 |  W "| "
 | 
|---|
| 107 |  D P(5,C5),P(6,IOM)
 | 
|---|
| 108 |  Q
 | 
|---|
| 109 |  ;
 | 
|---|
| 110 | P(PCE,COL) ; Print value and "tab" over to COL...
 | 
|---|
| 111 |  ; XTMP0 -- req
 | 
|---|
| 112 |  N DATA
 | 
|---|
| 113 |  S DATA=$P(XTMP0,U,PCE)
 | 
|---|
| 114 |  I DATA?7N1"."1.N S DATA=$$SDT^HLEVX001(DATA)
 | 
|---|
| 115 |  W DATA,?COL
 | 
|---|
| 116 |  Q
 | 
|---|
| 117 |  ;
 | 
|---|
| 118 |  ;==================================================================
 | 
|---|
| 119 |  ;
 | 
|---|
| 120 | START ;
 | 
|---|
| 121 |  N MREQ,MRTN,MTIME,ZTSK
 | 
|---|
| 122 |  ;
 | 
|---|
| 123 |  W !
 | 
|---|
| 124 |  S MRTN=$$FTMRTN QUIT:MRTN']""  ;->
 | 
|---|
| 125 |  W !
 | 
|---|
| 126 |  S MTIME=$$TIME QUIT:'MTIME  ;->
 | 
|---|
| 127 |  W !
 | 
|---|
| 128 |  S MREQ=$$REQNO QUIT:MREQ'>0  ;->
 | 
|---|
| 129 |  ;
 | 
|---|
| 130 |  W !
 | 
|---|
| 131 |  I '$$YN^HLCSRPT4("OK to queue job") D  QUIT  ;->
 | 
|---|
| 132 |  .  W "  job not started..."
 | 
|---|
| 133 |  ;
 | 
|---|
| 134 |  S ZTSK=$$NEWJOB($$NOW^XLFDT)
 | 
|---|
| 135 |  W !!,"Queued to task# ",ZTSK,"..."
 | 
|---|
| 136 |  ;
 | 
|---|
| 137 |  QUIT
 | 
|---|
| 138 |  ;
 | 
|---|
| 139 |  ;
 | 
|---|
| 140 | NEWJOB(TIME) ; Start job...
 | 
|---|
| 141 |  ; MREQ,MRTN,MTIME -- req
 | 
|---|
| 142 |  N ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSK
 | 
|---|
| 143 |  S ZTIO="",ZTDTH=TIME,ZTDESC="HLEVUTI2-Queued Jobs"
 | 
|---|
| 144 |  S ZTRTN="QUEUE^HLEVUTI2"
 | 
|---|
| 145 |  S ZTSAVE("MREQ")="",ZTSAVE("MRTN")="",ZTSAVE("MTIME")=""
 | 
|---|
| 146 |  S ZTSAVE("HLRUNS*")=""
 | 
|---|
| 147 |  D ^%ZTLOAD
 | 
|---|
| 148 |  QUIT ZTSK
 | 
|---|
| 149 |  ;
 | 
|---|
| 150 | QUEUE ; Queue point for the starting of all queued HLEVUTI2 jobs...
 | 
|---|
| 151 |  ; MREQ,MRTN,MTIME -- req
 | 
|---|
| 152 |  N I,NEWJOB,NOW,TASKNO,XTMP
 | 
|---|
| 153 |  ;
 | 
|---|
| 154 |  S ZTREQ="@",NOW=$$NOW^XLFDT,TASKNO=ZTSK
 | 
|---|
| 155 |  ;
 | 
|---|
| 156 |  ; Store run's ZTSK in HLRUNS...
 | 
|---|
| 157 |  S HLRUNS=$G(HLRUNS)+1,HLRUNS(+ZTSK)=NOW
 | 
|---|
| 158 |  I HLRUNS>30 S I=0 F  S I=$O(HLRUNS(I)) KILL HLRUNS(I) ; No STORE errors!
 | 
|---|
| 159 |  ;
 | 
|---|
| 160 |  S XTMP="HLEVREQ-"_ZTSK
 | 
|---|
| 161 |  S ^XTMP(XTMP,0)=$$FMADD^XLFDT(MTIME,1)_U_NOW_U_"Event Monitor HLEVUTI2 Requeue"_U_ZTSK_"^^^^"_MRTN
 | 
|---|
| 162 |  ;
 | 
|---|
| 163 |  ; Piece 1 = Vaporization date/time
 | 
|---|
| 164 |  ; Piece 2 = NOW
 | 
|---|
| 165 |  ; Piece 3 = Description
 | 
|---|
| 166 |  ; Piece 4 = Current task#
 | 
|---|
| 167 |  ; Piece 5 = Next task number or END OF QUEUING
 | 
|---|
| 168 |  ; Piece 6 = Next queue time
 | 
|---|
| 169 |  ; Piece 7 = M code API finish time
 | 
|---|
| 170 |  ; Piece 8 = Tag
 | 
|---|
| 171 |  ; Piece 9 = Routine
 | 
|---|
| 172 |  ;
 | 
|---|
| 173 |  ; Calculate time for next queued job...
 | 
|---|
| 174 |  S NEXTIME=$$FMADD^XLFDT(NOW,"","",MREQ)
 | 
|---|
| 175 |  ;
 | 
|---|
| 176 |  ; If next queue time is not greater, then queue next job...
 | 
|---|
| 177 |  I NEXTIME<MTIME D
 | 
|---|
| 178 |  .  S NEWJOB=$$NEWJOB(NEXTIME)
 | 
|---|
| 179 |  .  S $P(^XTMP(XTMP,0),U,5,6)=NEWJOB_U_NEXTIME
 | 
|---|
| 180 |  ;
 | 
|---|
| 181 |  ; Run the M code...
 | 
|---|
| 182 |  D @MRTN
 | 
|---|
| 183 |  ;
 | 
|---|
| 184 |  ; M code finish time...
 | 
|---|
| 185 |  S NOW=$$NOW^XLFDT,$P(^XTMP(XTMP,0),U,7)=NOW,$P(HLRUNS(ZTSK),U,2)=NOW
 | 
|---|
| 186 |  ;
 | 
|---|
| 187 |  ; If next queue time < then end time quit (for new job already que'd)
 | 
|---|
| 188 |  QUIT:NEXTIME<MTIME  ;->
 | 
|---|
| 189 |  ;
 | 
|---|
| 190 |  S $P(^XTMP(XTMP,0),U,5)="END OF QUEUING"
 | 
|---|
| 191 |  D MAIL
 | 
|---|
| 192 |  ;
 | 
|---|
| 193 |  Q
 | 
|---|
| 194 |  ;
 | 
|---|
| 195 | TEST ; Call here to test M code
 | 
|---|
| 196 |  D SAVE("Line of text saved by SAVE(TXT).")
 | 
|---|
| 197 |  Q
 | 
|---|
| 198 |  ;
 | 
|---|
| 199 | EX N I,T F I=1:1 S T=$T(EX+I) QUIT:T'[";;"  W !,$P(T,";;",2,99)
 | 
|---|
| 200 |  ;;This utility runs M code in a background job on a repetitive basis up to the
 | 
|---|
| 201 |  ;;date/time you specify.  To use this utility you must supply the following:
 | 
|---|
| 202 |  ;;
 | 
|---|
| 203 |  ;; * M code API (tag~routine.)
 | 
|---|
| 204 |  ;; * Requeue frequency (in minutes.)
 | 
|---|
| 205 |  ;; * Time to stop all requeues (up to 7 days in future.)
 | 
|---|
| 206 |  ;;
 | 
|---|
| 207 |  ;;As soon as the background job starts, the following actions occur:
 | 
|---|
| 208 |  ;;
 | 
|---|
| 209 |  ;; * The time for the next "run" of the 'M code API' is calculated using the
 | 
|---|
| 210 |  ;;   'requeue frequency.'  
 | 
|---|
| 211 |  ;; * If the new run time is not past the 'time to stop all requeues', a new
 | 
|---|
| 212 |  ;;   future job is queued.
 | 
|---|
| 213 |  ;; * The M code API is called.  (This occurs even when no future jobs are
 | 
|---|
| 214 |  ;;   queued.
 | 
|---|
| 215 |  QUIT
 | 
|---|
| 216 |  ;
 | 
|---|
| 217 | FTMRTN() ;
 | 
|---|
| 218 |  N ANS,DIR,DIRUT,DTOUT,DUOUT,X,Y
 | 
|---|
| 219 |  S DIR(0)="F^3:17",DIR("A")="Enter TAG~ROUTINE"
 | 
|---|
| 220 |  W !,"Enter the M code API to be called by background jobs.  Enter it in the format"
 | 
|---|
| 221 |  W !,"'TAG~ROUTINE'.  (Use the tilde (~) character in place of the up-arrow.)"
 | 
|---|
| 222 |  W !
 | 
|---|
| 223 |  D ^DIR
 | 
|---|
| 224 |  QUIT:$D(DIRUT)!($D(DTOUT))!($D(DUOUT)) "" ;->
 | 
|---|
| 225 |  S ANS=$TR(Y,"~",U)
 | 
|---|
| 226 |  S X="D "_ANS D ^DIM QUIT:'$D(X) "" ;->
 | 
|---|
| 227 |  Q ANS
 | 
|---|
| 228 |  ;
 | 
|---|
| 229 | TIME() ;
 | 
|---|
| 230 |  N ANS,DIR,DIRUT,DTOUT,DUOUT,NOW,X,Y
 | 
|---|
| 231 |  S NOW=$$NOW^XLFDT
 | 
|---|
| 232 |  S DIR(0)="DA^"_NOW_":"_$$FMADD^XLFDT(NOW,7)_":AEFRS"
 | 
|---|
| 233 |  S DIR("A")="Enter STOP TIME: "
 | 
|---|
| 234 |  S DIR("?")="Enter a future date/time up to "_$$FMTE^XLFDT($$FMADD^XLFDT(NOW,7))_"..."
 | 
|---|
| 235 |  S DIR("B")=$$FMTE^XLFDT($$FMADD^XLFDT(NOW,1))
 | 
|---|
| 236 |  W !,"New jobs will be requeued until the date/time you enter now.  You cannot queue"
 | 
|---|
| 237 |  W !,"jobs past seven days in the future."
 | 
|---|
| 238 |  W !
 | 
|---|
| 239 |  D ^DIR
 | 
|---|
| 240 |  QUIT:$D(DIRUT)!($D(DTOUT))!($D(DUOUT)) "" ;->
 | 
|---|
| 241 |  S ANS=Y
 | 
|---|
| 242 |  I ANS'>NOW D  QUIT "" ;->
 | 
|---|
| 243 |  .  W !!,"Date/time you enter must not be in the past..."
 | 
|---|
| 244 |  Q ANS
 | 
|---|
| 245 |  ;
 | 
|---|
| 246 | REQNO() ;
 | 
|---|
| 247 |  N ANS,DIR,DIRUT,DTOUT,DUOUT,NOW,X,Y
 | 
|---|
| 248 |  S DIR(0)="N^10:1440",DIR("A")="Enter REQUEUE FREQUENCY (min)"
 | 
|---|
| 249 |  W !,"New jobs will be requeued for the number of 'requeue frequency' minutes"
 | 
|---|
| 250 |  W !,"in the future you specify now."
 | 
|---|
| 251 |  W !
 | 
|---|
| 252 |  D ^DIR
 | 
|---|
| 253 |  QUIT:$D(DIRUT)!($D(DTOUT))!($D(DUOUT)) "" ;->
 | 
|---|
| 254 |  Q Y
 | 
|---|
| 255 |  ;
 | 
|---|
| 256 | MAIL ; All queues are done.  Mail notification to DUZ...
 | 
|---|
| 257 |  N NO,TEXT,XMDUZ,XMSUB,XMTEXT,XMZ
 | 
|---|
| 258 |  S XMDUZ=.5,XMSUB="M Code Requeue Utility"
 | 
|---|
| 259 |  S XMTEXT="^TMP("_$J_",""HLMAILMSG"","
 | 
|---|
| 260 |  KILL ^TMP($J,"HLMAILMSG")
 | 
|---|
| 261 |  S NO=0
 | 
|---|
| 262 |  D MAILADD("The queuing of jobs to "_$TR($G(MRTN),"~",U)_" has finished.  #"_$G(HLRUNS)_" jobs were queued.")
 | 
|---|
| 263 |  ;
 | 
|---|
| 264 |  I HLRUNS<31 D
 | 
|---|
| 265 |  .  N DATA,LN,TASK,TXT
 | 
|---|
| 266 |  .  S LN=$$REPEAT^XLFSTR(" ",74)
 | 
|---|
| 267 |  .  D MAILADD("")
 | 
|---|
| 268 |  .  D MAILADD("Task#         Start        Finish")
 | 
|---|
| 269 |  .  D MAILADD($$REPEAT^XLFSTR("-",74))
 | 
|---|
| 270 |  .  S TASK=0
 | 
|---|
| 271 |  .  F  S TASK=$O(HLRUNS(TASK)) Q:'TASK  D
 | 
|---|
| 272 |  .  .  S DATA=HLRUNS(TASK)
 | 
|---|
| 273 |  .  .  S TXT=$E(TASK_LN,1,14) ; Task#
 | 
|---|
| 274 |  .  .  S TXT=TXT_$E($$SDT^HLEVX001(+DATA)_LN,1,13) ; Start time
 | 
|---|
| 275 |  .  .  S TXT=TXT_$E($$SDT^HLEVX001($P(DATA,U,2))_LN,1,13) ; End time
 | 
|---|
| 276 |  .  .  I $D(^XTMP("HLEVREQ-"_TASK,"T")) D
 | 
|---|
| 277 |  .  .  .  S TXT=TXT_"Data in ^XTMP(""HLEVREQ-"_TASK_""",""T"")"
 | 
|---|
| 278 |  .  .  D MAILADD(TXT)
 | 
|---|
| 279 |  ;
 | 
|---|
| 280 |  S XMY(DUZ)=""
 | 
|---|
| 281 |  D ^XMD
 | 
|---|
| 282 |  I '$D(ZTQUEUED) W !!,"Mail message #",$G(XMZ),"..."
 | 
|---|
| 283 |  KILL ^TMP($J,"HLMAILMSG")
 | 
|---|
| 284 |  ;
 | 
|---|
| 285 |  Q
 | 
|---|
| 286 |  ;
 | 
|---|
| 287 | MAILADD(T) S NO=$G(NO)+1,^TMP($J,"HLMAILMSG",NO)=T
 | 
|---|
| 288 |  Q
 | 
|---|
| 289 |  ;
 | 
|---|
| 290 |  ;==================================================================
 | 
|---|
| 291 |  ;
 | 
|---|
| 292 | SAVE(TXT) ; Save one line of text into ^XTMP
 | 
|---|
| 293 |  ; XTMP -- req
 | 
|---|
| 294 |  N NO
 | 
|---|
| 295 |  QUIT:$G(XTMP)']""  ;->
 | 
|---|
| 296 |  QUIT:$G(^XTMP(XTMP,0))']""  ;->
 | 
|---|
| 297 |  S NO=$O(^XTMP(XTMP,"T",":"),-1)+1
 | 
|---|
| 298 |  S ^XTMP(XTMP,"T",+NO)=$G(TXT)
 | 
|---|
| 299 |  Q
 | 
|---|
| 300 |  ;
 | 
|---|
| 301 | KILLALL ; Kill **ALL** run data for all jobs!!!!  (BE CARFUL)
 | 
|---|
| 302 |  N DATA,XTMP
 | 
|---|
| 303 |  ;
 | 
|---|
| 304 |  I $O(^XTMP("HLEVREQ-"))'["HLEVREQ-" D  QUIT  ;->
 | 
|---|
| 305 |  .  W !!,"No data exists... "
 | 
|---|
| 306 |  .  W !
 | 
|---|
| 307 |  ;
 | 
|---|
| 308 |  W !!,"Existing M code job run data..."
 | 
|---|
| 309 |  ;
 | 
|---|
| 310 |  W !
 | 
|---|
| 311 |  S XTMP="HLEVREQ-"
 | 
|---|
| 312 |  F  S XTMP=$O(^XTMP(XTMP)) Q:$E(XTMP,1,8)'="HLEVREQ-"  D
 | 
|---|
| 313 |  .  S DATA=$G(^XTMP(XTMP,0)) Q:DATA']""  ;->
 | 
|---|
| 314 |  .  W !,"Started: ",$$SDT^HLEVX001($P(DATA,U,2))
 | 
|---|
| 315 |  .  W $S($P(DATA,U,7)']"":"    Job still running!!",1:"   finished: "_$$SDT^HLEVX001(+$P(DATA,U,7)))
 | 
|---|
| 316 |  .  W "     ",$P(DATA,U,8,9),"..."
 | 
|---|
| 317 |  ;
 | 
|---|
| 318 |  W !
 | 
|---|
| 319 |  I '$$YN^HLCSRPT4("OK to delete ALL M Code requeue data","No") D  QUIT  ;->
 | 
|---|
| 320 |  .  W "  nothing deleted..."
 | 
|---|
| 321 |  ;
 | 
|---|
| 322 |  W !
 | 
|---|
| 323 |  S XTMP="HLEVREQ-"
 | 
|---|
| 324 |  F  S XTMP=$O(^XTMP(XTMP)) Q:$E(XTMP,1,8)'="HLEVREQ-"  D
 | 
|---|
| 325 |  .  W !,"Killing ^XTMP(",XTMP,")..."
 | 
|---|
| 326 |  .  D KILLXTMP(XTMP)
 | 
|---|
| 327 |  ;
 | 
|---|
| 328 |  W !
 | 
|---|
| 329 |  S X=$$BTE^HLCSMON("Press RETURN to exit... ")
 | 
|---|
| 330 |  ;
 | 
|---|
| 331 |  Q
 | 
|---|
| 332 |  ;
 | 
|---|
| 333 | KILLXTMP(XTMP) ; Kill one XTMP entry... (Pass TASK or full reference)
 | 
|---|
| 334 |  I XTMP=+XTMP S XTMP="HLEVREQ-"_XTMP
 | 
|---|
| 335 |  KILL ^XTMP(XTMP)
 | 
|---|
| 336 |  Q
 | 
|---|
| 337 |  ;
 | 
|---|
| 338 | EOR ;HLEVUTI2 - Event Monitor UTILITIES ;5/16/03 14:42
 | 
|---|