| 1 | OCXOCMPO ;SLC/RJS,CLA - ORDER CHECK CODE COMPILER (Get Compiler Function Subroutines) ;2/02/99  12:58
 | 
|---|
| 2 |  ;;3.0;ORDER ENTRY/RESULTS REPORTING;**32**;Dec 17,1997
 | 
|---|
| 3 |  ;;  ;;ORDER CHECK EXPERT version 1.01 released OCT 29,1998
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 | EN() ;
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 |  N OCXD0,OCXD1,OCXSR,OCXNAME
 | 
|---|
| 8 |  ;
 | 
|---|
| 9 |  S (OCXWARN,OCXD0)=0 F  S OCXD0=$O(^OCXS(860.8,OCXD0)) Q:'OCXD0  D  Q:OCXWARN
 | 
|---|
| 10 |  .;
 | 
|---|
| 11 |  .I '$G(OCXAUTO) W:($X>60) ! W "."
 | 
|---|
| 12 |  .;
 | 
|---|
| 13 |  .K OCXSR M OCXSR=^OCXS(860.8,OCXD0,"CODE")
 | 
|---|
| 14 |  .K OCXSR(0)
 | 
|---|
| 15 |  .S OCXD1=0 F  S OCXD1=$O(OCXSR(OCXD1)) Q:'OCXD1  D
 | 
|---|
| 16 |  ..S OCXMODE=$P(OCXSR(OCXD1,0),";",1)
 | 
|---|
| 17 |  ..S OCXSR(OCXD1,0)=$P(OCXSR(OCXD1,0),";",2,999)
 | 
|---|
| 18 |  ..F  Q:'(OCXSR(OCXD1,0)["%%%%")  S OCXSR(OCXD1,0)=$P(OCXSR(OCXD1,0),"""%%%%""",1)_"||LNTAG||"_$P(OCXSR(OCXD1,0),"""%%%%""",2,999)
 | 
|---|
| 19 |  ..I (OCXMODE["T+"),'OCXTRACE K OCXSR(OCXD1)
 | 
|---|
| 20 |  ..I (OCXMODE["T-"),OCXTRACE K OCXSR(OCXD1)
 | 
|---|
| 21 |  ..I (OCXMODE["L+"),'OCXTLOG K OCXSR(OCXD1)
 | 
|---|
| 22 |  .D REINDEX(.OCXSR,0)
 | 
|---|
| 23 |  .Q:'$D(OCXSR(1,0))
 | 
|---|
| 24 |  .I (OCXSR(1,0)[";"),'$L($P(OCXSR(1,0),";",2)) S OCXSR(1,0)=OCXSR(1,0)_"  Compiler Function: "_$P($G(^OCXS(860.8,OCXD0,0)),U,1)
 | 
|---|
| 25 |  .S OCXNAME=$P(OCXSR(1,0),";",1)
 | 
|---|
| 26 |  .S:(OCXNAME["(") OCXNAME=$P(OCXNAME,"(",1)
 | 
|---|
| 27 |  .I '$L(OCXNAME) D WARN^OCXOCMPV("Subroutine Name Not found",8,OCXD0,"EN+20^OCXOCMPO") Q
 | 
|---|
| 28 |  .;
 | 
|---|
| 29 |  .I OCXTRACE D
 | 
|---|
| 30 |  ..F OCXD1=1:1,0 I OCXD1 Q:'$D(OCXSR(OCXD1,0))  Q:'($E($P(OCXSR(OCXD1,0)," ",2),1)=";")
 | 
|---|
| 31 |  ..I OCXD1 S:(OCXD1>1) OCXD1=OCXD1-1 D
 | 
|---|
| 32 |  ...N OCXPC,OCXARG,OCXARGL
 | 
|---|
| 33 |  ...S OCXSR(OCXD1+.0001,0)=" W:$G(OCXTRACE) !,||LNTAG||,?27,""Compiler Function "_$P(OCXSR(1,0),";",1)_" Execution trace. """
 | 
|---|
| 34 |  ...S OCXARGL=$P(OCXSR(1,0),";",1) Q:'(OCXARGL["(")
 | 
|---|
| 35 |  ...S OCXARGL=$P($P(OCXARGL,"(",2),")",1)
 | 
|---|
| 36 |  ...F OCXPC=1:1:$L(OCXARGL,",")  S OCXARG=$P(OCXARGL,",",OCXPC) D
 | 
|---|
| 37 |  ....S OCXSR(OCXD1+(OCXPC/100),0)=" W:$G(OCXTRACE) !,?35,"" "_$E("         ",1,(9-$L(OCXARG)))_OCXARG_": "",$G("_OCXARG_")"
 | 
|---|
| 38 |  ...S OCXSR(OCXD1+(OCXPC+1/100),0)=" W:$G(OCXTRACE) !"
 | 
|---|
| 39 |  ..D REINDEX(.OCXSR,0)
 | 
|---|
| 40 |  .;
 | 
|---|
| 41 |  .M ^TMP("OCXCMP",$J,"INCLUDE",OCXNAME)=OCXSR
 | 
|---|
| 42 |  .;
 | 
|---|
| 43 |  Q:OCXWARN 1
 | 
|---|
| 44 |  ;
 | 
|---|
| 45 |  ;  Build local term lookup function
 | 
|---|
| 46 |  ;
 | 
|---|
| 47 |  D TERMLKUP^OCXOCMPU
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 |  S OCXNAME="" F  S OCXNAME=$O(^TMP("OCXCMP",$J,"INCLUDE",OCXNAME)) Q:'$L(OCXNAME)  D
 | 
|---|
| 50 |  .N LAST,SIZE,CALL,PC,SUBR
 | 
|---|
| 51 |  .K OCXSR M OCXSR=^TMP("OCXCMP",$J,"INCLUDE",OCXNAME)
 | 
|---|
| 52 |  .S LAST=$O(OCXSR(" "),-1)
 | 
|---|
| 53 |  .S:'($G(OCXSR(LAST,0))=" ;") OCXSR(LAST+1,0)=" ;"
 | 
|---|
| 54 |  .S OCXD1=0 F  S OCXD1=$O(OCXSR(OCXD1)) Q:'OCXD1  D
 | 
|---|
| 55 |  ..S SIZE=$G(SIZE)+$L(OCXSR(OCXD1,0))
 | 
|---|
| 56 |  ..F PC=2:1:$L(OCXSR(OCXD1,0),"$$") D
 | 
|---|
| 57 |  ...S SUBR=$P($P(OCXSR(OCXD1,0),"$$",PC),"(",1)
 | 
|---|
| 58 |  ...I $D(^TMP("OCXCMP",$J,"INCLUDE",SUBR)) S OCXSR("CALLS",SUBR)=""
 | 
|---|
| 59 |  .S OCXSR("SIZE")=SIZE
 | 
|---|
| 60 |  .K ^TMP("OCXCMP",$J,"INCLUDE",OCXNAME)
 | 
|---|
| 61 |  .M ^TMP("OCXCMP",$J,"INCLUDE",OCXNAME)=OCXSR
 | 
|---|
| 62 |  ;
 | 
|---|
| 63 |  Q 0
 | 
|---|
| 64 |  ;
 | 
|---|
| 65 | REINDEX(ARRAY,NDX2) ;
 | 
|---|
| 66 |  ;
 | 
|---|
| 67 |  N TEMP,NDX1 M TEMP=ARRAY K ARRAY
 | 
|---|
| 68 |  S NDX1="" F  S NDX1=$O(TEMP(NDX1)) Q:'$L(NDX1)  D
 | 
|---|
| 69 |  .I $L(TEMP(NDX1,0)) S NDX2=NDX2+1 M ARRAY(NDX2)=TEMP(NDX1)
 | 
|---|
| 70 |  Q
 | 
|---|
| 71 |  ;
 | 
|---|