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 | ;
|
---|