Ignore:
Timestamp:
Dec 4, 2009, 12:11:15 AM (15 years ago)
Author:
George Lilly
Message:

revised back to 6/30/08 version

File:
1 edited

Legend:

Unmodified
Added
Removed
  • WorldVistAEHR/trunk/r/ORDER_ENTRY_RESULTS_REPORTING-OR-OCX--ORRC--ORRJ/OCXOCMP.m

    r613 r623  
    1 OCXOCMP ;SLC/RJS,CLA - ORDER CHECK CODE COMPILER (Main Entry point - All Rules) ;3/21/01  08:50
    2         ;;3.0;ORDER ENTRY/RESULTS REPORTING;**32,105,243**;Dec 17,1997;Build 242
    3         ;;  ;;ORDER CHECK EXPERT version 1.01 released OCT 29,1998
    4         ;
    5 EN      ;
    6         ;
    7         N OCXQ
    8         ;
    9         S OCXQ=$$READ("Y","Do you want to queue the compiler to run ","NO") Q:(OCXQ[U)  I OCXQ D  Q
    10         .D QUE^OCXOCMPV(10)
    11         .W !!,"Expert system compiler queued to run in 10 seconds."
    12         .W !,"You will be sent a Mailman bulletin when it has finished.",!!
    13         .H 2
    14         ;
    15 MAN     K ZTSK D MAN^OCXOCMPV Q  ;  Run the compiler (interactive/manual mode)
    16         ;                        ;  Ask for option settings.
    17         ;
    18 AUTO    D AUTO^OCXOCMPV Q  ; Run the compiler (Automatic mode)
    19         ;                  ; Program Execution Trace Mode OFF
    20         ;                  ; Elapsed time logging OFF
    21         ;                  ; Raw Data Logging OFF
    22         ;
    23 QUE     D QUE^OCXOCMPV(10) Q  ; Queue the compiler to run in the background
    24         ;                     ;  Uses option setting from last compile.
    25         ;                     ;   If no last compile then all options are
    26         ;                     ;    turned OFF as in Automatic mode.
    27 RUN     ;
    28         ;
    29         N OCX1,OCX2,OCX3,OCX4
    30         ;
    31         D:($G(OCXAUTO)<2) STATUS^OCXOPOST(1,20)
    32         ;
    33         D MESG("Build list of Active Rules, Elements and Datafields...")
    34         D SETFLAG^OCXOCMPV ; H 1
    35         I $$EN^OCXOCMP9 D ERMESG("Compiler Aborted while building list of Rules, Elements and Datafields...") Q
    36         Q:$G(OCXWARN)
    37         ;
    38         D:($G(OCXAUTO)<2) STATUS^OCXOPOST(2,20)
    39         ;
    40         S OCX1="" F  S OCX1=$O(^TMP("OCXCMP",$J,OCX1)) Q:'$L(OCX1)  D
    41         .S OCX2=0 F OCX3=0:1 S OCX2=$O(^TMP("OCXCMP",$J,OCX1,OCX2)) Q:'OCX2
    42         .D MESG("  "_$J(OCX3,5)_" "_OCX1_$S(OCX3=1:"",1:"S"))
    43         ;
    44         D:($G(OCXAUTO)<2) STATUS^OCXOPOST(3,20)
    45         ;
    46         D MESG("Compile DataField Navigation code...")
    47         D SETFLAG^OCXOCMPV ; H 1
    48         I $$EN^OCXOCMP1 D ERMESG("Compiler Aborted due to Datafield syntax errors...") Q
    49         Q:$G(OCXWARN)
    50         ;
    51         D:($G(OCXAUTO)<2) STATUS^OCXOPOST(4,20)
    52         ;
    53         S (OCX3,OCX1)=0 F  S OCX1=$O(^TMP("OCXCMP",$J,"DATA FIELD",OCX1)) Q:'OCX1  D
    54         .S OCX2=0 F  S OCX2=$O(^TMP("OCXCMP",$J,"DATA FIELD",OCX1,OCX2)) Q:'OCX2  S OCX3=OCX3+1
    55         D MESG("  "_$J(OCX3,5)_" DataField Navigation Code Array"_$S(OCX3=1:"",1:"s"))
    56         ;
    57         D:($G(OCXAUTO)<2) STATUS^OCXOPOST(5,20)
    58         ;
    59         D MESG("Compile Element Evaluation code...")
    60         D SETFLAG^OCXOCMPV ; H 1
    61         I $$EN^OCXOCMP2 D ERMESG("Compiler Aborted due to Rule Element syntax errors...") Q
    62         Q:$G(OCXWARN)
    63         ;
    64         D:($G(OCXAUTO)<2) STATUS^OCXOPOST(6,20)
    65         ;
    66         S (OCX1,OCX2)=0 F  S OCX1=$O(^TMP("OCXCMP",$J,"A CODE",OCX1)) Q:'OCX1  S OCX2=OCX2+1
    67         D MESG("  "_$J(OCX2,5)_" Event Evaluation Code Array"_$S(OCX2=1:"",1:"s"))
    68         ;
    69         D:($G(OCXAUTO)<2) STATUS^OCXOPOST(7,20)
    70         ;
    71         D MESG("Compile Element MetaCode...")
    72         D SETFLAG^OCXOCMPV ; H 1
    73         I $$EN^OCXOCMPM D ERMESG("Compiler Aborted due to Element metacode errors...") Q
    74         Q:$G(OCXWARN)
    75         ;
    76         D:($G(OCXAUTO)<2) STATUS^OCXOPOST(8,20)
    77         ;
    78         S OCX1="",OCX2=0 F  S OCX1=$O(^TMP("OCXCMP",$J,"INCLUDE",OCX1)) Q:'$L(OCX1)  S:($E(OCX1,1,3)="MCE") OCX2=OCX2+1
    79         D MESG("  "_$J(OCX2,5)_" Element Metacode Array"_$S(OCX2=1:"",1:"s"))
    80         ;
    81         D:($G(OCXAUTO)<2) STATUS^OCXOPOST(9,20)
    82         ;
    83         D MESG("Get Compiler Function Code...")
    84         D SETFLAG^OCXOCMPV ; H 1
    85         I $$EN^OCXOCMPO D ERMESG("Compiler Aborted due to Compiler Function code errors...") Q
    86         Q:$G(OCXWARN)
    87         ;
    88         D:($G(OCXAUTO)<2) STATUS^OCXOPOST(10,20)
    89         ;
    90         S OCX1="",OCX2=0 F  S OCX1=$O(^TMP("OCXCMP",$J,"INCLUDE",OCX1)) Q:'$L(OCX1)  S:'($E(OCX1,1,3)="MCE") OCX2=OCX2+1
    91         D MESG("  "_$J(OCX2,5)_" Compiler Include Function"_$S(OCX2=1:"",1:"s"))
    92         ;
    93         D:($G(OCXAUTO)<2) STATUS^OCXOPOST(12,20)
    94         ;
    95         D MESG("Compile Rule Element Relation code...")
    96         D SETFLAG^OCXOCMPV ; H 1
    97         I $$EN^OCXOCMP3 D ERMESG("Compiler Aborted due to Rule syntax errors...") Q
    98         Q:$G(OCXWARN)
    99         ;
    100         D:($G(OCXAUTO)<2) STATUS^OCXOPOST(13,20)
    101         ;
    102         S (OCX1,OCX2)=0 F  S OCX1=$O(^TMP("OCXCMP",$J,"RULE",OCX1)) Q:'OCX1  D
    103         .S OCX3=0 F  S OCX3=$O(^TMP("OCXCMP",$J,"RULE",OCX1,OCX3)) Q:'OCX3  S:$O(^(OCX3,"CODE",0)) OCX2=OCX2+1
    104         D MESG("  "_$J(OCX2,5)_" Rule Element Relation Code Array"_$S(OCX2=1:"",1:"s"))
    105         ;
    106         D:($G(OCXAUTO)<2) STATUS^OCXOPOST(14,20)
    107         ;
    108         D MESG("Construct Decision Tree...")
    109         D SETFLAG^OCXOCMPV ; H 1
    110         I $$EN^OCXOCMP4 D ERMESG("Compiler Aborted due to Compiler errors...") Q
    111         Q:$G(OCXWARN)
    112         ;
    113         D:($G(OCXAUTO)<2) STATUS^OCXOPOST(15,20)
    114         ;
    115         S OCX1=0 F OCX2=0:1 S OCX1=$O(^TMP("OCXCMP",$J,"C CODE",OCX1)) Q:'OCX1
    116         D MESG("  "_$J(OCX2,5)_" Sub-Routine"_$S(OCX2=1:"",1:"s"))
    117         ;
    118         D:($G(OCXAUTO)<2) STATUS^OCXOPOST(16,20)
    119         ;
    120         D MESG("Optimize Sub-Routines...")
    121         D SETFLAG^OCXOCMPV ; H 1
    122         I $$EN^OCXOCMP5 D ERMESG("Compiler Aborted due to Compiler errors...") Q
    123         Q:$G(OCXWARN)
    124         ;
    125         D:($G(OCXAUTO)<2) STATUS^OCXOPOST(17,20)
    126         ;
    127         S OCX1=0 F OCX3=0:1 S OCX1=$O(^TMP("OCXCMP",$J,"C CODE",OCX1)) Q:'OCX1
    128         D MESG("  "_$J(OCX3,5)_" Sub-Routine"_$S(OCX3=1:"",1:"s"))
    129         D MESG("  "_(100-(((OCX3/OCX2)*1000)\1/10))_"% Optimization")
    130         ;
    131         D:($G(OCXAUTO)<2) STATUS^OCXOPOST(18,20)
    132         ;
    133         D MESG("Assemble Routines...")
    134         D SETFLAG^OCXOCMPV ; H 1
    135         I $$EN^OCXOCMP6 D ERMESG("Compiler Aborted due to Compiler errors...") Q
    136         Q:$G(OCXWARN)
    137         ;
    138         D:($G(OCXAUTO)<2) STATUS^OCXOPOST(19,20)
    139         ;
    140         S OCX1=0 F OCX2=0:1 S OCX1=$O(^TMP("OCXCMP",$J,"D CODE",OCX1)) Q:'OCX1
    141         D MESG("  "_$J(OCX2,5)_" OCXOZ* Routine"_$S(OCX2=1:"",1:"s"))
    142         ;
    143         D:($G(OCXAUTO)<2) STATUS^OCXOPOST(20,20)
    144         ;
    145         L -^OCXD(861,1)
    146         ;
    147         Q
    148         ;
    149 MESG(OCXX)      ;
    150         I '$G(OCXAUTO) W !!,OCXX
    151         I ($G(OCXAUTO)=1) D BMES^XPDUTL(.OCXX)
    152         Q
    153         ;
    154 ERMESG(OCXX)    ;
    155         N OCXY S OCXY=OCXX
    156         I '$G(OCXAUTO) W !!,OCXX
    157         I ($G(OCXAUTO)=1) D BMES^XPDUTL(.OCXX)
    158         S OCXERRM=OCXY
    159         Q
    160         ;
    161 READ(OCXZ0,OCXZA,OCXZB,OCXZL)   ;
    162         N OCXLINE,DIR,DTOUT,DUOUT,DIRUT,DIROUT
    163         Q:'$L($G(OCXZ0)) U
    164         S DIR(0)=OCXZ0
    165         S:$L($G(OCXZA)) DIR("A")=OCXZA
    166         S:$L($G(OCXZB)) DIR("B")=OCXZB
    167         F OCXLINE=1:1:($G(OCXZL)-1) W !
    168         D ^DIR
    169         I $D(DTOUT)!$D(DUOUT)!$D(DIRUT)!$D(DIROUT) Q U
    170         Q Y
    171         ;
    172         Q
    173         ;
    174 DT(X,D) N Y,%DT S %DT=D D ^%DT Q Y
    175         Q
    176         ;
    177 CNT(X)  ;
    178         ;
    179         N CNT,D0
    180         S D0=0 F CNT=1:1 S D0=$O(@X@(D0)) Q:'D0
    181         W !!,?10,X,"  ",CNT
    182         Q CNT
    183         ;
    184 DATE()  N X,Y,%DT S X="N",%DT="T" D ^%DT X ^DD("DD") Q Y
    185         ;
    186 CONV(Y) Q:'(Y["@") Y Q $P(Y,"@",1)_" at "_$P(Y,"@",2,99)
    187         ;
    188         ;
    189 VERSION()       Q $P($T(+3),";;",3)
    190         ;
     1OCXOCMP ;SLC/RJS,CLA - ORDER CHECK CODE COMPILER (Main Entry point - All Rules) ;3/21/01  08:50
     2 ;;3.0;ORDER ENTRY/RESULTS REPORTING;**32,105**;Dec 17,1997
     3 ;;  ;;ORDER CHECK EXPERT version 1.01 released OCT 29,1998
     4 ;
     5EN ;
     6 ;
     7 N OCXQ
     8 ;
     9 S OCXQ=$$READ("Y","Do you want to queue the compiler to run ","NO") Q:(OCXQ[U)  I OCXQ D  Q
     10 .D QUE^OCXOCMPV(10)
     11 .W !!,"Expert system compiler queued to run in 10 seconds."
     12 .W !,"You will be sent a Mailman bulletin when it has finished.",!!
     13 .H 2
     14 ;
     15MAN K ZTSK D MAN^OCXOCMPV Q  ;  Run the compiler (interactive/manual mode)
     16 ;                        ;  Ask for option settings.
     17 ;
     18AUTO D AUTO^OCXOCMPV Q  ; Run the compiler (Automatic mode)
     19 ;                  ; Program Execution Trace Mode OFF
     20 ;                  ; Elapsed time logging OFF
     21 ;                  ; Raw Data Logging OFF
     22 ;
     23QUE D QUE^OCXOCMPV(10) Q  ; Queue the compiler to run in the background
     24 ;                     ;  Uses option setting from last compile.
     25 ;                     ;   If no last compile then all options are
     26 ;                     ;    turned OFF as in Automatic mode.
     27RUN ;
     28 ;
     29 N OCX1,OCX2,OCX3,OCX4
     30 ;
     31 D:($G(OCXAUTO)<2) STATUS^OCXOPOST(1,20)
     32 ;
     33 D MESG("Build list of Active Rules, Elements and Datafields...")
     34 D SETFLAG^OCXOCMPV ; H 1
     35 I $$EN^OCXOCMP9 D ERMESG("Compiler Aborted while building list of Rules, Elements and Datafields...") Q
     36 Q:$G(OCXWARN)
     37 ;
     38 D:($G(OCXAUTO)<2) STATUS^OCXOPOST(2,20)
     39 ;
     40 S OCX1="" F  S OCX1=$O(^TMP("OCXCMP",$J,OCX1)) Q:'$L(OCX1)  D
     41 .S OCX2=0 F OCX3=0:1 S OCX2=$O(^TMP("OCXCMP",$J,OCX1,OCX2)) Q:'OCX2
     42 .D MESG("  "_$J(OCX3,5)_" "_OCX1_$S(OCX3=1:"",1:"S"))
     43 ;
     44 D:($G(OCXAUTO)<2) STATUS^OCXOPOST(3,20)
     45 ;
     46 D MESG("Compile DataField Navigation code...")
     47 D SETFLAG^OCXOCMPV ; H 1
     48 I $$EN^OCXOCMP1 D ERMESG("Compiler Aborted due to Datafield syntax errors...") Q
     49 Q:$G(OCXWARN)
     50 ;
     51 D:($G(OCXAUTO)<2) STATUS^OCXOPOST(4,20)
     52 ;
     53 S (OCX3,OCX1)=0 F  S OCX1=$O(^TMP("OCXCMP",$J,"DATA FIELD",OCX1)) Q:'OCX1  D
     54 .S OCX2=0 F  S OCX2=$O(^TMP("OCXCMP",$J,"DATA FIELD",OCX1,OCX2)) Q:'OCX2  S OCX3=OCX3+1
     55 D MESG("  "_$J(OCX3,5)_" DataField Navigation Code Array"_$S(OCX3=1:"",1:"s"))
     56 ;
     57 D:($G(OCXAUTO)<2) STATUS^OCXOPOST(5,20)
     58 ;
     59 D MESG("Compile Element Evaluation code...")
     60 D SETFLAG^OCXOCMPV ; H 1
     61 I $$EN^OCXOCMP2 D ERMESG("Compiler Aborted due to Rule Element syntax errors...") Q
     62 Q:$G(OCXWARN)
     63 ;
     64 D:($G(OCXAUTO)<2) STATUS^OCXOPOST(6,20)
     65 ;
     66 S (OCX1,OCX2)=0 F  S OCX1=$O(^TMP("OCXCMP",$J,"A CODE",OCX1)) Q:'OCX1  S OCX2=OCX2+1
     67 D MESG("  "_$J(OCX2,5)_" Event Evaluation Code Array"_$S(OCX2=1:"",1:"s"))
     68 ;
     69 D:($G(OCXAUTO)<2) STATUS^OCXOPOST(7,20)
     70 ;
     71 D MESG("Compile Element MetaCode...")
     72 D SETFLAG^OCXOCMPV ; H 1
     73 I $$EN^OCXOCMPM D ERMESG("Compiler Aborted due to Element metacode errors...") Q
     74 Q:$G(OCXWARN)
     75 ;
     76 D:($G(OCXAUTO)<2) STATUS^OCXOPOST(8,20)
     77 ;
     78 S OCX1="",OCX2=0 F  S OCX1=$O(^TMP("OCXCMP",$J,"INCLUDE",OCX1)) Q:'$L(OCX1)  S:($E(OCX1,1,3)="MCE") OCX2=OCX2+1
     79 D MESG("  "_$J(OCX2,5)_" Element Metacode Array"_$S(OCX2=1:"",1:"s"))
     80 ;
     81 D:($G(OCXAUTO)<2) STATUS^OCXOPOST(9,20)
     82 ;
     83 D MESG("Get Compiler Function Code...")
     84 D SETFLAG^OCXOCMPV ; H 1
     85 I $$EN^OCXOCMPO D ERMESG("Compiler Aborted due to Compiler Function code errors...") Q
     86 Q:$G(OCXWARN)
     87 ;
     88 D:($G(OCXAUTO)<2) STATUS^OCXOPOST(10,20)
     89 ;
     90 S OCX1="",OCX2=0 F  S OCX1=$O(^TMP("OCXCMP",$J,"INCLUDE",OCX1)) Q:'$L(OCX1)  S:'($E(OCX1,1,3)="MCE") OCX2=OCX2+1
     91 D MESG("  "_$J(OCX2,5)_" Compiler Include Function"_$S(OCX2=1:"",1:"s"))
     92 ;
     93 D:($G(OCXAUTO)<2) STATUS^OCXOPOST(12,20)
     94 ;
     95 D MESG("Compile Rule Element Relation code...")
     96 D SETFLAG^OCXOCMPV ; H 1
     97 I $$EN^OCXOCMP3 D ERMESG("Compiler Aborted due to Rule syntax errors...") Q
     98 Q:$G(OCXWARN)
     99 ;
     100 D:($G(OCXAUTO)<2) STATUS^OCXOPOST(13,20)
     101 ;
     102 S (OCX1,OCX2)=0 F  S OCX1=$O(^TMP("OCXCMP",$J,"RULE",OCX1)) Q:'OCX1  D
     103 .S OCX3=0 F  S OCX3=$O(^TMP("OCXCMP",$J,"RULE",OCX1,OCX3)) Q:'OCX3  S:$O(^(OCX3,"CODE",0)) OCX2=OCX2+1
     104 D MESG("  "_$J(OCX2,5)_" Rule Element Relation Code Array"_$S(OCX2=1:"",1:"s"))
     105 ;
     106 D:($G(OCXAUTO)<2) STATUS^OCXOPOST(14,20)
     107 ;
     108 D MESG("Construct Decision Tree...")
     109 D SETFLAG^OCXOCMPV ; H 1
     110 I $$EN^OCXOCMP4 D ERMESG("Compiler Aborted due to Compiler errors...") Q
     111 Q:$G(OCXWARN)
     112 ;
     113 D:($G(OCXAUTO)<2) STATUS^OCXOPOST(15,20)
     114 ;
     115 S OCX1=0 F OCX2=0:1 S OCX1=$O(^TMP("OCXCMP",$J,"C CODE",OCX1)) Q:'OCX1
     116 D MESG("  "_$J(OCX2,5)_" Sub-Routine"_$S(OCX2=1:"",1:"s"))
     117 ;
     118 D:($G(OCXAUTO)<2) STATUS^OCXOPOST(16,20)
     119 ;
     120 D MESG("Optimize Sub-Routines...")
     121 D SETFLAG^OCXOCMPV ; H 1
     122 I $$EN^OCXOCMP5 D ERMESG("Compiler Aborted due to Compiler errors...") Q
     123 Q:$G(OCXWARN)
     124 ;
     125 D:($G(OCXAUTO)<2) STATUS^OCXOPOST(17,20)
     126 ;
     127 S OCX1=0 F OCX3=0:1 S OCX1=$O(^TMP("OCXCMP",$J,"C CODE",OCX1)) Q:'OCX1
     128 D MESG("  "_$J(OCX3,5)_" Sub-Routine"_$S(OCX3=1:"",1:"s"))
     129 D MESG("  "_(100-(((OCX3/OCX2)*1000)\1/10))_"% Optimization")
     130 ;
     131 D:($G(OCXAUTO)<2) STATUS^OCXOPOST(18,20)
     132 ;
     133 D MESG("Assemble Routines...")
     134 D SETFLAG^OCXOCMPV ; H 1
     135 I $$EN^OCXOCMP6 D ERMESG("Compiler Aborted due to Compiler errors...") Q
     136 Q:$G(OCXWARN)
     137 ;
     138 D:($G(OCXAUTO)<2) STATUS^OCXOPOST(19,20)
     139 ;
     140 S OCX1=0 F OCX2=0:1 S OCX1=$O(^TMP("OCXCMP",$J,"D CODE",OCX1)) Q:'OCX1
     141 D MESG("  "_$J(OCX2,5)_" OCXOZ* Routine"_$S(OCX2=1:"",1:"s"))
     142 D MESG("  "_OCXLCNT_" Lines of code generated.")
     143 ;
     144 D:($G(OCXAUTO)<2) STATUS^OCXOPOST(20,20)
     145 ;
     146 L -^OCXD(861,1)
     147 ;
     148 Q
     149 ;
     150MESG(OCXX) ;
     151 I '$G(OCXAUTO) W !!,OCXX
     152 I ($G(OCXAUTO)=1) D BMES^XPDUTL(.OCXX)
     153 Q
     154 ;
     155ERMESG(OCXX) ;
     156 N OCXY S OCXY=OCXX
     157 I '$G(OCXAUTO) W !!,OCXX
     158 I ($G(OCXAUTO)=1) D BMES^XPDUTL(.OCXX)
     159 S OCXERRM=OCXY
     160 Q
     161 ;
     162READ(OCXZ0,OCXZA,OCXZB,OCXZL) ;
     163 N OCXLINE,DIR,DTOUT,DUOUT,DIRUT,DIROUT
     164 Q:'$L($G(OCXZ0)) U
     165 S DIR(0)=OCXZ0
     166 S:$L($G(OCXZA)) DIR("A")=OCXZA
     167 S:$L($G(OCXZB)) DIR("B")=OCXZB
     168 F OCXLINE=1:1:($G(OCXZL)-1) W !
     169 D ^DIR
     170 I $D(DTOUT)!$D(DUOUT)!$D(DIRUT)!$D(DIROUT) Q U
     171 Q Y
     172 ;
     173 Q
     174 ;
     175DT(X,D) N Y,%DT S %DT=D D ^%DT Q Y
     176 Q
     177 ;
     178CNT(X) ;
     179 ;
     180 N CNT,D0
     181 S D0=0 F CNT=1:1 S D0=$O(@X@(D0)) Q:'D0
     182 W !!,?10,X,"  ",CNT
     183 Q CNT
     184 ;
     185DATE() N X,Y,%DT S X="N",%DT="T" D ^%DT X ^DD("DD") Q Y
     186 ;
     187CONV(Y) Q:'(Y["@") Y Q $P(Y,"@",1)_" at "_$P(Y,"@",2,99)
     188 ;
     189 ;
     190VERSION() Q $P($T(+3),";;",3)
     191 ;
Note: See TracChangeset for help on using the changeset viewer.