| 1 | OCXOCMPV ;SLC/RJS,CLA - ORDER CHECK CODE COMPILER (Main Entry point - All Rules  cont...) ;1/05/04  14:09
 | 
|---|
| 2 |  ;;3.0;ORDER ENTRY/RESULTS REPORTING;**32,105,221**;Dec 17,1997
 | 
|---|
| 3 |  ;;  ;;ORDER CHECK EXPERT version 1.01 released OCT 29,1998
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 | MAN ;
 | 
|---|
| 6 |  I '$D(DUZ) W !!,"DUZ not defined." Q
 | 
|---|
| 7 |  N OCXD0,OCXD1,OCXWARN,OCXNAM,OCXTRACE,OCXOETIM,OCXLCNT,OCXAUTO,OCXERRM,OCXTSPI
 | 
|---|
| 8 |  S OCXWARN=0,OCXOETIM=$H
 | 
|---|
| 9 |  K ^TMP("OCXCMP",$J)
 | 
|---|
| 10 |  S ^TMP("OCXCMP",$J)=($P($H,",",2)+($H*86400)+(2*60*60))_" <- ^TMP ENTRY EXPIRATION DATE FOR ^OCXOPURG"
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 |  ;  Compiler Constants
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 |  S OCXCLL=200      ; compiled code line length
 | 
|---|
| 15 |  S OCXCRS=4000     ; compiled routine size
 | 
|---|
| 16 |  S OCXTSPI=300     ; Duplicate triggered Rule message "ignore period" in seconds
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 |  S OCXTRACE=0,OCXTLOG=0,OCXDLOG=0,OCXAUTO=0,OCXERRM=""
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 |  S OCXTRACE=$$READ("Y","Want to enable Compiled Routine Execution Display ","NO") Q:(OCXTRACE[U)
 | 
|---|
| 21 |  S OCXDLOG=$$READ("Y","Want to enable Logging of incoming raw data ","NO") Q:(OCXDLOG[U)
 | 
|---|
| 22 |  I OCXDLOG S OCXDLOG=$$READ("N^1:20","Number of days to keep raw data ","3") Q:(OCXDLOG[U)
 | 
|---|
| 23 |  I OCXDLOG W !!,"*** Note: The raw data log will only hold 200,000 entries. *****",!
 | 
|---|
| 24 |  I 0 I OCXDLOG S OCXTLOG=$$READ("Y","Want to enable Elapsed Time Logging ","YES") Q:(OCXTLOG[U)
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 |  Q:'$$READ("Y","Are you sure you want to recompile the Expert System routines ","NO")
 | 
|---|
| 27 |  ;
 | 
|---|
| 28 |  D SETFLAG
 | 
|---|
| 29 |  L +^OCXD(861,1):5 E  D ERMESG("Run aborted. Another compiler run has ^OCXD(861,1) locked.") Q
 | 
|---|
| 30 |  D RUN^OCXOCMP,BULL(DUZ),KILLFLAG
 | 
|---|
| 31 |  L -^OCXD(861,1)
 | 
|---|
| 32 |  ;
 | 
|---|
| 33 |  ;K ^TMP("OCXCMP",$J)
 | 
|---|
| 34 |  ;
 | 
|---|
| 35 |  Q
 | 
|---|
| 36 |  ;
 | 
|---|
| 37 | MESG(OCXX) ;
 | 
|---|
| 38 |  I '$G(OCXAUTO) W !!,OCXX
 | 
|---|
| 39 |  I ($G(OCXAUTO)=1) D BMES^XPDUTL(.OCXX)
 | 
|---|
| 40 |  Q
 | 
|---|
| 41 |  ;
 | 
|---|
| 42 | ERMESG(OCXX) ;
 | 
|---|
| 43 |  N OCXY S OCXY=OCXX
 | 
|---|
| 44 |  I '$G(OCXAUTO) W !!,OCXX
 | 
|---|
| 45 |  I ($G(OCXAUTO)=1) D BMES^XPDUTL(.OCXX)
 | 
|---|
| 46 |  S OCXERRM=OCXY
 | 
|---|
| 47 |  Q
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 | WARN(X,FILE,D0,RLINE) ;
 | 
|---|
| 50 |  ;
 | 
|---|
| 51 |  Q:$G(OCXWARN)
 | 
|---|
| 52 |  ;
 | 
|---|
| 53 |  S OCXWARN=1
 | 
|---|
| 54 |  ;
 | 
|---|
| 55 |  I $G(OCXAUTO) D  Q
 | 
|---|
| 56 |  .D MESG(" Error... "_X)
 | 
|---|
| 57 |  .D MESG(" Error...  File:"_(+$G(FILE)))
 | 
|---|
| 58 |  .D MESG(" Error... Index:"_(+$G(D0)))
 | 
|---|
| 59 |  .D MESG(" Error... Order Check Routine Compile Aborted.")
 | 
|---|
| 60 |  ;
 | 
|---|
| 61 |  S OCXWARN=$G(OCXWARN)+1
 | 
|---|
| 62 |  N OCXSP,OCXST,OCXTXT,OCXLEN,OCXZZZ,OCXCNT
 | 
|---|
| 63 |  S OCXLEN=60,OCXTXT="Compiler Warning # "_OCXWARN
 | 
|---|
| 64 |  I ($D(X)>2) S OCXCNT=0 F  S OCXCNT=$O(X(OCXCNT)) Q:'OCXCNT  D
 | 
|---|
| 65 |  .I ($L(X(OCXCNT))>OCXLEN),($L(X(OCXCNT))<80) S OCXLEN=$L(X(OCXCNT))
 | 
|---|
| 66 |  S (OCXSP,OCXST)="",$P(OCXST,"*",150)="*",$P(OCXSP," ",150)=" "
 | 
|---|
| 67 |  W !!
 | 
|---|
| 68 |  W !,$E(OCXST,1,OCXLEN+6)
 | 
|---|
| 69 |  W !,"**",$E(OCXSP,1,OCXLEN+2),"**"
 | 
|---|
| 70 |  W !,"** ",OCXTXT,$E(OCXSP,$L(OCXTXT),OCXLEN-1)," **"
 | 
|---|
| 71 |  W:$L($G(RLINE)) !,"** ",RLINE,$E(OCXSP,$L(RLINE),OCXLEN-1)," **"
 | 
|---|
| 72 |  W !,"**",$E(OCXSP,1,OCXLEN+2),"**"
 | 
|---|
| 73 |  S OCXGL="^OCXS" S:(FILE=1) OCXGL="^OCXD" S:(FILE=7) OCXGL="^OCXD" S:(FILE=10) OCXGL="^OCXD" S FILE=FILE/10+860
 | 
|---|
| 74 |  I $G(FILE),$G(D0),$D(@OCXGL@(FILE,D0,0)) D
 | 
|---|
| 75 |  .S OCXTXT=$P(@OCXGL@(FILE,0),U,1)
 | 
|---|
| 76 |  .W !,"** ",OCXTXT,$E(OCXSP,$L(OCXTXT),OCXLEN-1)," **"
 | 
|---|
| 77 |  .S OCXTXT="   "_$P(@OCXGL@(FILE,D0,0),U,1)
 | 
|---|
| 78 |  .W !,"** ",OCXTXT,$E(OCXSP,$L(OCXTXT),OCXLEN-1)," **"
 | 
|---|
| 79 |  W !,"**",$E(OCXSP,1,OCXLEN+2),"**"
 | 
|---|
| 80 |  I ($D(X)#2) D
 | 
|---|
| 81 |  .W !,"** " F OCXCNT=1:1:$L(X," ") D
 | 
|---|
| 82 |  ..I (($X+$L($P(X," ",OCXCNT)))>OCXLEN) W $E(OCXSP,$X,OCXLEN+2)," **",!,"** "
 | 
|---|
| 83 |  ..W $P(X," ",OCXCNT)," "
 | 
|---|
| 84 |  .W $E(OCXSP,$X,OCXLEN+2)," **"
 | 
|---|
| 85 |  I ($D(X)>2) S OCXCNT=0 F  S OCXCNT=$O(X(OCXCNT)) Q:'OCXCNT  D
 | 
|---|
| 86 |  .W !,"** ",X(OCXCNT),$E(OCXSP,$X,OCXLEN+2)," **"
 | 
|---|
| 87 |  W !,$E(OCXST,1,OCXLEN+6)
 | 
|---|
| 88 |  W !!!,"Press <Return> to continue... " R OCXZZZ:DTIME
 | 
|---|
| 89 |  Q
 | 
|---|
| 90 |  K D0
 | 
|---|
| 91 |  ;
 | 
|---|
| 92 | READ(OCXZ0,OCXZA,OCXZB,OCXZL) ;
 | 
|---|
| 93 |  N OCXLINE,DIR,DTOUT,DUOUT,DIRUT,DIROUT
 | 
|---|
| 94 |  Q:'$L($G(OCXZ0)) U
 | 
|---|
| 95 |  S DIR(0)=OCXZ0
 | 
|---|
| 96 |  S:$L($G(OCXZA)) DIR("A")=OCXZA
 | 
|---|
| 97 |  S:$L($G(OCXZB)) DIR("B")=OCXZB
 | 
|---|
| 98 |  F OCXLINE=1:1:($G(OCXZL)-1) W !
 | 
|---|
| 99 |  D ^DIR
 | 
|---|
| 100 |  I $D(DTOUT)!$D(DUOUT)!$D(DIRUT)!$D(DIROUT) Q U
 | 
|---|
| 101 |  Q Y
 | 
|---|
| 102 |  ;
 | 
|---|
| 103 |  Q
 | 
|---|
| 104 |  ;
 | 
|---|
| 105 | DT(X,D) N Y,%DT S %DT=D D ^%DT Q Y
 | 
|---|
| 106 |  Q
 | 
|---|
| 107 |  ;
 | 
|---|
| 108 | CNT(X) ;
 | 
|---|
| 109 |  ;
 | 
|---|
| 110 |  N CNT,D0
 | 
|---|
| 111 |  S D0=0 F CNT=1:1 S D0=$O(@X@(D0)) Q:'D0
 | 
|---|
| 112 |  W !!,?10,X,"  ",CNT
 | 
|---|
| 113 |  Q CNT
 | 
|---|
| 114 |  ;
 | 
|---|
| 115 | AUTO ;
 | 
|---|
| 116 |  N OCXD0,OCXD1,OCXWARN,OCXNAM,OCXTRACE,OCXAUTO,OCXOETIM,OCXLCNT,OCXTSPI
 | 
|---|
| 117 |  S OCXWARN=0,OCXOETIM=$H
 | 
|---|
| 118 |  K ^TMP("OCXCMP",$J)
 | 
|---|
| 119 |  S ^TMP("OCXCMP",$J)=($P($H,",",2)+($H*86400)+(2*60*60))_" <- ^TMP ENTRY EXPIRATION DATE FOR ^OCXOPURG"
 | 
|---|
| 120 |  ;
 | 
|---|
| 121 |  ;  Compiler Constants
 | 
|---|
| 122 |  ;
 | 
|---|
| 123 |  S OCXCLL=200      ; compiled code line length
 | 
|---|
| 124 |  S OCXCRS=8000     ; compiled routine size
 | 
|---|
| 125 |  S OCXTSPI=300     ; Duplicate triggered Rule message "ignore period" in seconds
 | 
|---|
| 126 |  ;
 | 
|---|
| 127 |  S OCXTRACE=0      ; Program Execution Trace Mode (OFF)
 | 
|---|
| 128 |  S OCXTLOG=0       ; Elapsed time logging (OFF)
 | 
|---|
| 129 |  S OCXDLOG=0       ; Raw Data Logging (OFF)
 | 
|---|
| 130 |  S OCXAUTO=1       ; Compile in the Background Mode (ON)
 | 
|---|
| 131 |  ;
 | 
|---|
| 132 |  D SETFLAG
 | 
|---|
| 133 |  L +^OCXD(861,1):5 E  D ERMESG("Run aborted. Another compiler run has ^OCXD(861,1) locked."),BULL(DUZ),KILLFLAG Q
 | 
|---|
| 134 |  D RUN^OCXOCMP,BULL(DUZ),KILLFLAG
 | 
|---|
| 135 |  L -^OCXD(861,1)
 | 
|---|
| 136 |  ;
 | 
|---|
| 137 |  K ^TMP("OCXCMP",$J)
 | 
|---|
| 138 |  ;
 | 
|---|
| 139 |  Q
 | 
|---|
| 140 |  ;
 | 
|---|
| 141 | BULL(OCXDUZ) ;
 | 
|---|
| 142 |  I $L($T(^XMB)) D
 | 
|---|
| 143 |  .;
 | 
|---|
| 144 |  .N XMB,XMDUZ,XMY,OCXTIME
 | 
|---|
| 145 |  .S OCXTIME=$H-OCXOETIM*86400
 | 
|---|
| 146 |  .S OCXTIME=OCXTIME+($P($H,",",2)-$P(OCXOETIM,",",2))
 | 
|---|
| 147 |  .S XMB="OCX COMPILER RUN"
 | 
|---|
| 148 |  .S XMB(1)=$P($T(+3),";;",3)
 | 
|---|
| 149 |  .S XMB(2)=$$CONV($$DATE)
 | 
|---|
| 150 |  .S XMB(3)=""
 | 
|---|
| 151 |  .S:$G(OCXDUZ) XMB(3)="["_OCXDUZ_"]  "_$P($G(^VA(200,OCXDUZ,0)),U,1)
 | 
|---|
| 152 |  .S XMB(4)=(OCXTIME\60)_" minutes "_(OCXTIME#60)_" seconds "
 | 
|---|
| 153 |  .S XMB(5)=$S(($G(OCXAUTO)>1):"Queued",$G(OCXAUTO):"Automatic Mode",1:"Interactive Mode")
 | 
|---|
| 154 |  .S XMB(6)=$S($G(OCXTRACE):" ON",1:"OFF")
 | 
|---|
| 155 |  .S XMB(7)=" " ; $S($G(OCXTLOG):" ON",1:"OFF")
 | 
|---|
| 156 |  .S XMB(8)=$S($G(OCXDLOG):(" ON  Keep data for "_OCXDLOG_" day"_$S(OCXDLOG=1:"",1:"s")_" then purge."),1:"OFF")
 | 
|---|
| 157 |  .S XMB(9)=$S($G(OCXLCNT):OCXLCNT,1:"Zero")
 | 
|---|
| 158 |  .S XMB(10)=$G(OCXERRM)
 | 
|---|
| 159 |  .S XMB(11)=$S($L($G(OCXERRM)):"ABORTED",1:"has completed normally")
 | 
|---|
| 160 |  .S XMY("G.OCX DEVELOPERS@ISC-SLC.VA.GOV")=""
 | 
|---|
| 161 |  .S XMY("G.OCX DEVELOPERS")=""
 | 
|---|
| 162 |  .S XMY(OCXDUZ)=""
 | 
|---|
| 163 |  .S XMDUZ=.5
 | 
|---|
| 164 |  .S XMDT="N"
 | 
|---|
| 165 |  .D ^XMB
 | 
|---|
| 166 |  ;
 | 
|---|
| 167 |  Q
 | 
|---|
| 168 |  ;
 | 
|---|
| 169 | DATE() N X,Y,%DT S X="N",%DT="T" D ^%DT X ^DD("DD") Q Y
 | 
|---|
| 170 |  ;
 | 
|---|
| 171 | CONV(Y) Q:'(Y["@") Y Q $P(Y,"@",1)_" at "_$P(Y,"@",2,99)
 | 
|---|
| 172 |  ;
 | 
|---|
| 173 | SETFLAG ;
 | 
|---|
| 174 |  I '($P($G(^OCXD(861,1,0)),U,1)="SITE PREFERENCES") K ^OCXD(861,1) S ^OCXD(861,1,0)="SITE PREFERENCES"
 | 
|---|
| 175 |  S $P(^OCXD(861,1,0),U,3)=$H
 | 
|---|
| 176 |  Q
 | 
|---|
| 177 |  ;
 | 
|---|
| 178 | KILLFLAG ;
 | 
|---|
| 179 |  ;
 | 
|---|
| 180 |  I '($P($G(^OCXD(861,1,0)),U,1)="SITE PREFERENCES") K ^OCXD(861,1) S ^OCXD(861,1,0)="SITE PREFERENCES"
 | 
|---|
| 181 |  S $P(^OCXD(861,1,0),U,3)=""
 | 
|---|
| 182 |  Q
 | 
|---|
| 183 |  ;
 | 
|---|
| 184 | QUE(OCXADD) ;
 | 
|---|
| 185 |  ;
 | 
|---|
| 186 |  N ZTCPU,ZTDESC,ZTDTH,ZTIO,ZTPAR,ZTPRE,ZTPRI,ZTRTN,ZTSAVE,ZTSK,ZTUCI
 | 
|---|
| 187 |  N OCXDUZ
 | 
|---|
| 188 |  ;
 | 
|---|
| 189 |  S ZTDTH=$P($H,",",2)+OCXADD,OCXADD=0
 | 
|---|
| 190 |  I (ZTDTH>86400) S ZTDTH=(86400-ZTDTH),OCXADD=1
 | 
|---|
| 191 |  S ZTDTH=($H+OCXADD)_","_ZTDTH
 | 
|---|
| 192 |  S OCXDUZ=$G(DUZ)
 | 
|---|
| 193 |  S ZTIO="",ZTRTN="TASK^OCXOCMPV",ZTDESC="Queued Compiler: "_$P($T(+3),";;",2)
 | 
|---|
| 194 |  K ZTSAVE,ZTCPU,ZTUCI,ZTPRI,ZTPAR,ZTPRE
 | 
|---|
| 195 |  S ZTSAVE("OCXDUZ")=""
 | 
|---|
| 196 |  ;
 | 
|---|
| 197 |  D ^%ZTLOAD
 | 
|---|
| 198 |  ;
 | 
|---|
| 199 |  Q
 | 
|---|
| 200 |  ;
 | 
|---|
| 201 | TASK ;
 | 
|---|
| 202 |  ;
 | 
|---|
| 203 |  N OCXD0,OCXD1,OCXWARN,OCXNAM,OCXTRACE,OCXAUTO,OCXOETIM,OCXLCNT,OCXTSPI
 | 
|---|
| 204 |  S OCXWARN=0,OCXOETIM=$H
 | 
|---|
| 205 |  K ^TMP("OCXCMP",$J)
 | 
|---|
| 206 |  S ^TMP("OCXCMP",$J)=($P($H,",",2)+($H*86400)+(2*60*60))_" <- ^TMP ENTRY EXPIRATION DATE FOR ^OCXOPURG"
 | 
|---|
| 207 |  ;
 | 
|---|
| 208 |  ;  Compiler Constants
 | 
|---|
| 209 |  ;
 | 
|---|
| 210 |  S OCXCLL=200      ; compiled code line length
 | 
|---|
| 211 |  S OCXCRS=8000     ; compiled routine size
 | 
|---|
| 212 |  S OCXTSPI=300     ; Duplicate triggered Rule message "ignore period" in seconds
 | 
|---|
| 213 |  ;
 | 
|---|
| 214 |  S OCXDATA="0^0^0"
 | 
|---|
| 215 |  I $L($T(CDATA^OCXOZ01)) S OCXDATA=$$CDATA^OCXOZ01
 | 
|---|
| 216 |  ;
 | 
|---|
| 217 |  S OCXTRACE=$P(OCXDATA,U,1),OCXTLOG=$P(OCXDATA,U,2),OCXDLOG=$P(OCXDATA,U,3)
 | 
|---|
| 218 |  ;
 | 
|---|
| 219 |  S OCXAUTO=2       ; Compile in the Background Mode (ON QUEUED)
 | 
|---|
| 220 |  ;
 | 
|---|
| 221 |  D SETFLAG
 | 
|---|
| 222 |  L +^OCXD(861,1):5 E  D QUE^OCXOCMPV(300),ERMESG("Run rescheduled. Another compiler run has ^OCXD(861,1) locked."),BULL(OCXDUZ),KILLFLAG Q
 | 
|---|
| 223 |  D RUN^OCXOCMP,BULL(OCXDUZ),KILLFLAG
 | 
|---|
| 224 |  L -^OCXD(861,1)
 | 
|---|
| 225 |  ;
 | 
|---|
| 226 |  K ^TMP("OCXCMP",$J)
 | 
|---|
| 227 |  ;
 | 
|---|
| 228 |  I $G(ZTSK) D KILL^%ZTLOAD
 | 
|---|
| 229 |  ;
 | 
|---|
| 230 |  Q
 | 
|---|
| 231 |  ;
 | 
|---|