| 1 | HLEVSRV0 ;O-OIFO/LJA - Event Monitor SERVER ;02/04/2004 14:42
 | 
|---|
| 2 |  ;;1.6;HEALTH LEVEL SEVEN;**109**;Oct 13, 1995
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | M(TXT) ; Called when M code data requested in...
 | 
|---|
| 5 |  ; MXEC,XTMP -- req
 | 
|---|
| 6 |  N MCODE,NO,MTAG,WHEN
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 |  ; Sets...
 | 
|---|
| 9 |  S WHEN=$P(TXT,U)
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 |  ; Has license been sent?
 | 
|---|
| 12 |  I WHEN="LICENSE" D  QUIT  ;->
 | 
|---|
| 13 |  .  QUIT:$P(MXEC,U,4)]""  ;->
 | 
|---|
| 14 |  .  S MCODE=$P(TXT,U,2)
 | 
|---|
| 15 |  .  I '$$OKCODE^HLEVSRV1(MCODE) S $P(MXEC,U,4)=0 QUIT  ;->
 | 
|---|
| 16 |  .  S $P(MXEC,U,4)=1 ; Force DOWN...
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 |  QUIT:WHEN'="BEFORE"&(WHEN'="AFTER")  ;->
 | 
|---|
| 19 |  S MTAG=$P(TXT,U,2) QUIT:MTAG']""  ;->
 | 
|---|
| 20 |  S MCODE=$P(TXT,U,3,999) Q:MCODE']""  ;->
 | 
|---|
| 21 |  ;
 | 
|---|
| 22 |  ; Is it valid M code?
 | 
|---|
| 23 |  S X=MCODE D ^DIM QUIT:'$D(X)  ;->
 | 
|---|
| 24 |  ;
 | 
|---|
| 25 |  S NO=$O(^XTMP(XTMP,"M",WHEN,MTAG,":"),-1)+1
 | 
|---|
| 26 |  S ^XTMP(XTMP,"M",WHEN,MTAG,+NO)=MCODE
 | 
|---|
| 27 |  ;
 | 
|---|
| 28 |  Q
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 | MPRE ; Run M code before load of data...
 | 
|---|
| 31 |  ; XTMP -- req
 | 
|---|
| 32 |  D MRUN("BEFORE")
 | 
|---|
| 33 |  Q
 | 
|---|
| 34 |  ;
 | 
|---|
| 35 | MPST ; Run M code after load of data...
 | 
|---|
| 36 |  ; XTMP -- req
 | 
|---|
| 37 |  D MRUN("AFTER")
 | 
|---|
| 38 |  Q
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 | MRUN(WHEN) ; Run M code's INIT...
 | 
|---|
| 41 |  ; XTMP -- req
 | 
|---|
| 42 |  N ZZADD,ZZCALL,ZZMCODE,ZZMLNO,ZZMTAG,ZZNEXT,ZZNO,ZZREC
 | 
|---|
| 43 |  ;
 | 
|---|
| 44 |  ; Get starting M code...
 | 
|---|
| 45 |  QUIT:$G(^XTMP(XTMP,"M",WHEN,"INIT",1))']""  ;->
 | 
|---|
| 46 |  ;
 | 
|---|
| 47 |  ; Values set up as a service for the developer sending in M code...
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 |  ; NEXT LINE - Executable code to execute next line in "subroutine"...
 | 
|---|
| 50 |  S ZZNEXT="S ZZMLNO=ZZMLNO+1,ZZMCODE=$G(^XTMP(XTMP,""M"",WHEN,ZZMTAG,ZZMLNO)) QUIT:ZZMCODE']""""  X ZZMCODE,ZZREC"
 | 
|---|
| 51 |  S ZZREC="S ZZCALL=$G(ZZCALL)+1,^XTMP(XTMP,""M"",""REC"",WHEN,ZZCALL)=ZZMLNO_U_ZZMTAG"
 | 
|---|
| 52 |  S ZZADD="D ADDMTXT^HLEVSRV0($G(ZZTXT))"
 | 
|---|
| 53 |  ;
 | 
|---|
| 54 |  ; Set up every "subroutine" in an executable call "tag"
 | 
|---|
| 55 |  S ZZMCODE=""
 | 
|---|
| 56 |  F  S ZZMCODE=$O(^XTMP(XTMP,"M",WHEN,ZZMCODE)) Q:ZZMCODE']""  D
 | 
|---|
| 57 |  .  S @ZZMCODE="S ZZMTAG="""_ZZMCODE_""",ZZMLNO=0 X ZZNEXT"
 | 
|---|
| 58 |  ;
 | 
|---|
| 59 |  S ZZCALL=0
 | 
|---|
| 60 |  ;
 | 
|---|
| 61 |  ; Start...
 | 
|---|
| 62 |  X INIT
 | 
|---|
| 63 |  ;
 | 
|---|
| 64 |  Q
 | 
|---|
| 65 |  ;
 | 
|---|
| 66 | MCOND ; Condense M call data...
 | 
|---|
| 67 |  N DATA,TAG,TAGL,TAGN,TXT,WHEN,ZZCALL
 | 
|---|
| 68 |  ;
 | 
|---|
| 69 |  QUIT:'$D(^XTMP(XTMP,"M","REC"))  ;->
 | 
|---|
| 70 |  ;
 | 
|---|
| 71 |  KILL ^TMP($J,"HLMCOND")
 | 
|---|
| 72 |  ;
 | 
|---|
| 73 |  F WHEN="BEFORE","AFTER" D
 | 
|---|
| 74 |  .  S ZZCALL=0,TXT=WHEN_": ",POSX=$L(TXT),TAGL="",TAGN=0
 | 
|---|
| 75 |  .  F  S ZZCALL=$O(^XTMP(XTMP,"M","REC",WHEN,ZZCALL)) Q:ZZCALL'>0  D
 | 
|---|
| 76 |  .  .  S DATA=^XTMP(XTMP,"M","REC",WHEN,ZZCALL),TAG=$P(DATA,U,2) QUIT:TAG']""  ;->
 | 
|---|
| 77 |  .  .  I $L(TXT)>55 D
 | 
|---|
| 78 |  .  .  .  D ADD(TXT)
 | 
|---|
| 79 |  .  .  .  S TXT=$$REPEAT^XLFSTR(" ",POSX)
 | 
|---|
| 80 |  .  .  I TAGL'=TAG D
 | 
|---|
| 81 |  .  .  .  I TAGL]"",TAGN>0 S TXT=TXT_"(#"_TAGN_")",TAGN=0
 | 
|---|
| 82 |  .  .  .  S TXT=TXT_$S($L(TXT)>POSX:"-",1:"")_TAG,TAGN=1
 | 
|---|
| 83 |  .  .  I TAGL=TAG S TAGN=TAGN+1
 | 
|---|
| 84 |  .  .  S TAGL=TAG
 | 
|---|
| 85 |  .  I TAGN>0,$L(TXT)>POSX S TXT=TXT_"(#"_TAGN_")",TAGN=0
 | 
|---|
| 86 |  .  I $L(TXT)>POSX D ADD(TXT)
 | 
|---|
| 87 |  ;
 | 
|---|
| 88 |  QUIT:'$D(^TMP($J,"HLMCOND"))  ;->
 | 
|---|
| 89 |  ;
 | 
|---|
| 90 |  KILL ^XTMP(XTMP,"M","REC")
 | 
|---|
| 91 |  MERGE ^XTMP(XTMP,"M","REC")=^TMP($J,"HLMCOND")
 | 
|---|
| 92 |  ;
 | 
|---|
| 93 |  Q
 | 
|---|
| 94 |  ;
 | 
|---|
| 95 | MCALLREC ; Store MCOND data in mail message..
 | 
|---|
| 96 |  N NO
 | 
|---|
| 97 |  ;
 | 
|---|
| 98 |  QUIT:'$D(^XTMP(XTMP,"M","REC"))  ;->
 | 
|---|
| 99 |  ;
 | 
|---|
| 100 |  D ADDMAIL^HLEVSRV(""),ADDMAIL^HLEVSRV("M Call Record")
 | 
|---|
| 101 |  D ADDMAIL^HLEVSRV($$REPEAT^XLFSTR("-",74))
 | 
|---|
| 102 |  ;
 | 
|---|
| 103 |  S NO=0
 | 
|---|
| 104 |  F  S NO=$O(^XTMP(XTMP,"M","REC",NO)) Q:NO'>0  D
 | 
|---|
| 105 |  .  D ADDMAIL^HLEVSRV(^XTMP(XTMP,"M","REC",NO))
 | 
|---|
| 106 |  ;
 | 
|---|
| 107 |  Q
 | 
|---|
| 108 |  ;
 | 
|---|
| 109 | ADDMTXT(TXT) ;
 | 
|---|
| 110 |  N NO
 | 
|---|
| 111 |  S NO=$O(^XTMP(XTMP,"MTEXT",":"),-1)+1
 | 
|---|
| 112 |  S ^XTMP(XTMP,"MTEXT",+NO)=TXT
 | 
|---|
| 113 |  Q
 | 
|---|
| 114 |  ;
 | 
|---|
| 115 | MTEXT ; Add text to Mailman message created by M code...
 | 
|---|
| 116 |  N NO
 | 
|---|
| 117 |  ;
 | 
|---|
| 118 |  I $G(^XTMP(XTMP,"MTEXT")) D
 | 
|---|
| 119 |  .  D ADDMAIL("")
 | 
|---|
| 120 |  .  D ADDMAIL($$CJ^XLFSTR(" M-Created Text ",74,"-"))
 | 
|---|
| 121 |  ;
 | 
|---|
| 122 |  S NO=0
 | 
|---|
| 123 |  F  S NO=$O(^XTMP(XTMP,"MTEXT",NO)) Q:NO'>0  D
 | 
|---|
| 124 |  .  D ADDMAIL(^XTMP(XTMP,"MTEXT",NO))
 | 
|---|
| 125 |  ;
 | 
|---|
| 126 |  Q
 | 
|---|
| 127 |  ;
 | 
|---|
| 128 | ADD(TXT) ;
 | 
|---|
| 129 |  N NO
 | 
|---|
| 130 |  S NO=$O(^TMP($J,"HLMCOND",":"),-1)+1
 | 
|---|
| 131 |  S ^TMP($J,"HLMCOND",+NO)=TXT
 | 
|---|
| 132 |  Q
 | 
|---|
| 133 |  ;
 | 
|---|
| 134 | MTEST ; Test M code embedded in a Mailman message...
 | 
|---|
| 135 |  N IOINHI,IOINORM,MIEN,X,XTMP
 | 
|---|
| 136 |  ;
 | 
|---|
| 137 |  S X="IOINHI;IOINORM" D ENDR^%ZISS
 | 
|---|
| 138 |  ;
 | 
|---|
| 139 |  W @IOF,$$CJ^XLFSTR("M Code Test",IOM)
 | 
|---|
| 140 |  W !,$$REPEAT^XLFSTR("=",IOM)
 | 
|---|
| 141 |  W !!,"This utility will execute the code in the BEFORE and AFTER sections of the"
 | 
|---|
| 142 |  W !,"M code embedded in a Mailman message.  The message must be in the format"
 | 
|---|
| 143 |  W !,"used by the [HLEV-INFORMATION-SERVER] menu option."
 | 
|---|
| 144 |  ;
 | 
|---|
| 145 | MT1 W !
 | 
|---|
| 146 |  F  R !,"Message IEN: ",MIEN:60 Q:MIEN'>0  D  QUIT:$G(^XMB(3.9,+MIEN,0))]""
 | 
|---|
| 147 |  .  I $G(^XMB(3.9,+MIEN,0))']"" D  QUIT  ;->
 | 
|---|
| 148 |  .  .  W "   no message found..."
 | 
|---|
| 149 |  .  W "   ",$P(^XMB(3.9,+MIEN,0),U),"..."
 | 
|---|
| 150 |  ;
 | 
|---|
| 151 |  QUIT:$G(^XMB(3.9,+MIEN,0))']""  ;->
 | 
|---|
| 152 |  ;
 | 
|---|
| 153 |  S XTMP="HLEV SERVER 9999999",NOW=$$NOW^XLFDT
 | 
|---|
| 154 |  KILL ^XTMP(XTMP)
 | 
|---|
| 155 |  S ^XTMP(XTMP,0)=$$FMADD^XLFDT(NOW,0,1)_U_NOW_U_"TEST"
 | 
|---|
| 156 |  ;
 | 
|---|
| 157 |  W !!,"Loading M code..."
 | 
|---|
| 158 |  S LNO=0
 | 
|---|
| 159 |  F  S LNO=$O(^XMB(3.9,+MIEN,2,LNO)) Q:LNO'>0  D
 | 
|---|
| 160 |  .  S TXT=$G(^XMB(3.9,+MIEN,2,+LNO,0)) QUIT:$E(TXT,1,2)'="M^"  ;->
 | 
|---|
| 161 |  .  S TXT=$P(TXT,U,2,999) QUIT:TXT']""  ;->
 | 
|---|
| 162 |  .  W "."
 | 
|---|
| 163 |  .  D M(TXT)
 | 
|---|
| 164 |  ;
 | 
|---|
| 165 |  I '$D(^XTMP(XTMP,"M")) D  G MT1 ;->
 | 
|---|
| 166 |  .  W !!,"No M code embedded in this Mailman message..."
 | 
|---|
| 167 |  ;
 | 
|---|
| 168 |  W !
 | 
|---|
| 169 |  S LP=$NA(^XTMP(XTMP,"M")),ST="^XTMP("""_XTMP_""",""M"","
 | 
|---|
| 170 |  F  S LP=$Q(@LP) Q:LP'[ST  D
 | 
|---|
| 171 |  .  W !,IOINHI,"...",$P(LP,",""M"",",2,99),IOINORM," = "
 | 
|---|
| 172 |  .  S POSX=$X,DATA=@LP
 | 
|---|
| 173 |  .  F  QUIT:DATA']""  D
 | 
|---|
| 174 |  .  .  W $E(DATA,1,IOM-POSX)
 | 
|---|
| 175 |  .  .  S DATA=$E(DATA,IOM-POSX+1,999)
 | 
|---|
| 176 |  ;
 | 
|---|
| 177 |  W !!,"You can execute the BEFORE load M code, or the AFTER load M code.  The BEFORE"
 | 
|---|
| 178 |  W !,"load M code requires a BEFORE^INIT... node(s).  The AFTER load M code"
 | 
|---|
| 179 |  W !,"requires an AFTER^INIT... node(s)."
 | 
|---|
| 180 |  ;
 | 
|---|
| 181 |  I '$D(^XTMP(XTMP,"M","BEFORE"))&('$D(^XTMP(XTMP,"M","AFTER"))) D  G MT1 ;->
 | 
|---|
| 182 |  .  W !!,"You must add a BEFORE and/or AFTER section to the M code embedded in the"
 | 
|---|
| 183 |  .  W !,"Mailman message before you can use this utility to test."
 | 
|---|
| 184 |  ;
 | 
|---|
| 185 |  D MEX("BEFORE")
 | 
|---|
| 186 |  D MEX("AFTER")
 | 
|---|
| 187 |  ;
 | 
|---|
| 188 |  KILL ^XTMP(XTMP)
 | 
|---|
| 189 |  ;
 | 
|---|
| 190 |  W !!,"Done..."
 | 
|---|
| 191 |  ;
 | 
|---|
| 192 |  Q
 | 
|---|
| 193 |  ;
 | 
|---|
| 194 | MEX(WHEN) ; Called by MTEST to execute ^XTMP(XTMP,"M") code...
 | 
|---|
| 195 |  N X
 | 
|---|
| 196 |  QUIT:'$D(^XTMP(XTMP,"M",WHEN))  ;->
 | 
|---|
| 197 |  W !!,"Press RETURN to execute the ",IOINHI,WHEN,IOINORM
 | 
|---|
| 198 |  W " code, or '^' to skip... "
 | 
|---|
| 199 |  R X:60 I '$T!(X[U) W "  no action taken..." QUIT  ;->
 | 
|---|
| 200 |  W !,"Executing the ",WHEN," code..."
 | 
|---|
| 201 |  I WHEN="BEFORE" D MPRE
 | 
|---|
| 202 |  I WHEN="AFTER" D MPST
 | 
|---|
| 203 |  W "  M code finished..."
 | 
|---|
| 204 |  Q
 | 
|---|
| 205 |  ;
 | 
|---|
| 206 | UNIT(TXT) ; Load IEN list found by MSG ID... (TXT=MsgID)
 | 
|---|
| 207 |  ; XTMP -- req
 | 
|---|
| 208 |  ;
 | 
|---|
| 209 |  ; Data request line must equal UNIT^#^TYPE  (#^TYPE passed in here)
 | 
|---|
| 210 |  ;
 | 
|---|
| 211 |  ; TYPE = "IEN772", "IEN773", or "MSGID"
 | 
|---|
| 212 |  ;    # = IEN772, IEN773 or MSGID
 | 
|---|
| 213 |  ;
 | 
|---|
| 214 |  ; The # used to find any IEN772 in the unit.
 | 
|---|
| 215 |  ; All messages in unit found using $$LOAD772S^HLUCM009, and
 | 
|---|
| 216 |  ; formatted by LOADUNIT and returned in email to user.
 | 
|---|
| 217 |  ;
 | 
|---|
| 218 |  N CT,HL772,HLID,HLTYPE,IEN772,IEN773,IEN773,NO772S
 | 
|---|
| 219 |  ;
 | 
|---|
| 220 |  ; Initial sets...
 | 
|---|
| 221 |  S HLID=$P($G(TXT),U) QUIT:HLID']""  ;->
 | 
|---|
| 222 |  S HLTYPE=$P(TXT,U,2) ; IEN772, IEN773, or MSGID
 | 
|---|
| 223 |  S IEN772=""
 | 
|---|
| 224 |  ;
 | 
|---|
| 225 |  ; Try to get IEN772 from MSGID...
 | 
|---|
| 226 |  I HLTYPE="MSGID" D  QUIT:'IEN772  ;->
 | 
|---|
| 227 |  .  S IEN772=$O(^HL(772,"C",HLID,":"),-1)
 | 
|---|
| 228 |  .  I IEN772 D  QUIT:IEN772'>0  ;->
 | 
|---|
| 229 |  .  .  S IEN773=$O(^HLMA("C",HLID,0)) QUIT:IEN773'>0  ;->
 | 
|---|
| 230 |  .  .  S IEN772=+$G(^HLMA(+IEN773,0))
 | 
|---|
| 231 |  .  S IEN773=$O(^HLMA("C",HLID,":"),-1) QUIT:'IEN773  ;->
 | 
|---|
| 232 |  .  S IEN772=+$G(^HLMA(+IEN773,0))
 | 
|---|
| 233 |  ;
 | 
|---|
| 234 |  ; If passed IEN772...
 | 
|---|
| 235 |  I HLTYPE="IEN772" D  QUIT:IEN772'>0  ;->
 | 
|---|
| 236 |  .  QUIT:$G(^HL(772,+HLID,0))']""  ;->
 | 
|---|
| 237 |  .  S IEN772=+HLID
 | 
|---|
| 238 |  ;
 | 
|---|
| 239 |  ; If passed IEN773...
 | 
|---|
| 240 |  I HLTYPE="IEN773" D  QUIT:IEN772'>0  ;->
 | 
|---|
| 241 |  .  S IEN772=+$G(^HLMA(+HLID,0))
 | 
|---|
| 242 |  .  QUIT:$G(^HL(772,+IEN772,0))]""  ;-> It's OK
 | 
|---|
| 243 |  .  S IEN772=""
 | 
|---|
| 244 |  ;
 | 
|---|
| 245 |  QUIT:$G(^HL(772,+$G(IEN772),0))']""  ;->
 | 
|---|
| 246 |  ;
 | 
|---|
| 247 |  ; Load associated entries...
 | 
|---|
| 248 |  S NO772S=$$LOAD772S^HLUCM009(+IEN772,.HL772) QUIT:NO772S'>0  ;->
 | 
|---|
| 249 |  ;
 | 
|---|
| 250 |  ; Load data...
 | 
|---|
| 251 |  S IEN772=0
 | 
|---|
| 252 |  F  S IEN772=$O(HL772("HLPARENT",IEN772)) Q:IEN772'>0  D
 | 
|---|
| 253 |  .  S IEN772C=0
 | 
|---|
| 254 |  .  F  S IEN772C=$O(HL772("HLPARENT",IEN772,IEN772C)) Q:IEN772C'>0  D
 | 
|---|
| 255 |  .  .  S ^XTMP(XTMP,"HLUNIT",IEN772,IEN772C)=""
 | 
|---|
| 256 |  ;
 | 
|---|
| 257 |  Q
 | 
|---|
| 258 |  ;
 | 
|---|
| 259 | LOADUNIT ; Load data found by UNIT above...
 | 
|---|
| 260 |  N IEN772C,IEN772P,POSX,TXT
 | 
|---|
| 261 |  ;
 | 
|---|
| 262 |  QUIT:'$D(^XTMP(XTMP,"HLUNIT"))  ;->
 | 
|---|
| 263 |  ;
 | 
|---|
| 264 |  D ADDMAIL(""),ADDMAIL($$CJ^XLFSTR(" Msg ID-requested Message Units ",74,"-"))
 | 
|---|
| 265 |  ;
 | 
|---|
| 266 |  S IEN772P=0
 | 
|---|
| 267 |  F  S IEN772P=$O(^XTMP(XTMP,"HLUNIT",IEN772P)) Q:IEN772P'>0  D
 | 
|---|
| 268 |  .  S TXT=IEN772P_": ",POSX=$L(TXT)
 | 
|---|
| 269 |  .  S IEN772C=0
 | 
|---|
| 270 |  .  F  S IEN772C=$O(^XTMP(XTMP,"HLUNIT",IEN772P,IEN772C)) Q:IEN772C'>0  D
 | 
|---|
| 271 |  .  .  I ($L(TXT)+$L(IEN772C)+2)>74 D
 | 
|---|
| 272 |  .  .  .  D ADDMAIL(TXT)
 | 
|---|
| 273 |  .  .  .  S TXT=$$REPEAT^XLFSTR(" ",POSX)
 | 
|---|
| 274 |  .  .  S TXT=TXT_$S($L(TXT)>POSX:",",1:"")_IEN772C
 | 
|---|
| 275 |  .  I TXT]"" D ADDMAIL(TXT) S TXT=""
 | 
|---|
| 276 |  ;
 | 
|---|
| 277 |  Q
 | 
|---|
| 278 |  ;
 | 
|---|
| 279 | ADDMAIL(TXT) D ADDMAIL^HLEVSRV(TXT)
 | 
|---|
| 280 |  Q
 | 
|---|
| 281 |  ;
 | 
|---|
| 282 | QUITQ(LPVAL,STOP,NOLINE,CT) ; Should looping stop?
 | 
|---|
| 283 |  QUIT:LPVAL']"" 1 ;->
 | 
|---|
| 284 |  QUIT:LPVAL'[STOP 1 ;->
 | 
|---|
| 285 |  QUIT:(CT+1)>NOLINE 1 ;->
 | 
|---|
| 286 |  Q ""
 | 
|---|
| 287 |  ;
 | 
|---|
| 288 | QUITS(LPVAL,SCREEN) ; Should this be included?
 | 
|---|
| 289 |  N DATA,DIV,MAXNO,OK,PCE,VAL,X
 | 
|---|
| 290 |  S DIV=""
 | 
|---|
| 291 |  S MAXNO=$L(LPVAL,",") I $L(SCREEN,",")'=MAXNO QUIT 1 ;->
 | 
|---|
| 292 |  F PCE=1:1:MAXNO D  QUIT:'OK
 | 
|---|
| 293 |  .  S OK=0
 | 
|---|
| 294 |  .  S X=$P(SCREEN,"#",PCE),DIV=$S(DIV]"":",",1:$E(X,$L(X)))
 | 
|---|
| 295 |  .  S DATA(1)=$P(LPVAL,DIV,+PCE) QUIT:DATA(1)']""  ;->
 | 
|---|
| 296 |  .  S DATA(2)=$P(SCREEN,DIV,+PCE) QUIT:DATA(2)']""  ;->
 | 
|---|
| 297 |  .  I DATA(2)="#" QUIT:DATA(1)'?1.N  ;->
 | 
|---|
| 298 |  .  I DATA(2)'="#" QUIT:DATA(1)'=DATA(2)  ;->
 | 
|---|
| 299 |  .  S OK=1
 | 
|---|
| 300 |  S OK='OK ; Because this is a QUIT IF extrinsic function
 | 
|---|
| 301 |  Q OK
 | 
|---|
| 302 |  ;
 | 
|---|
| 303 | ADDLINE(TXT) D ADDLINE^HLEVSRV(TXT)
 | 
|---|
| 304 |  Q
 | 
|---|
| 305 |  ;
 | 
|---|
| 306 | EOR ;HLEVSRV0 - Event Monitor SERVER ;5/16/03 14:42
 | 
|---|