1 | OCXOCMP6 ;SLC/RJS,CLA - ORDER CHECK CODE COMPILER (Assemble Order Check Routines) ;1/05/04 14:33
|
---|
2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**32,221**;Dec 17,1997
|
---|
3 | ;; ;;ORDER CHECK EXPERT version 1.01 released OCT 29,1998
|
---|
4 | ;
|
---|
5 | EN() ;
|
---|
6 | ;
|
---|
7 | Q:$G(OCXWARN) 1
|
---|
8 | N OCXD0,OCXD1,OCXRN,OCXSCNT,OCXOFF
|
---|
9 | ;
|
---|
10 | S OCXLCNT=0
|
---|
11 | ;
|
---|
12 | W:'$G(OCXAUTO) !,?5,"Generate Extrinsic Function and Variables documentation..."
|
---|
13 | S OCXD0=0 F S OCXD0=$O(^TMP("OCXCMP",$J,"C CODE",OCXD0)) Q:'OCXD0 D DOC^OCXOCMPT(OCXD0)
|
---|
14 | ;
|
---|
15 | K ^OCXS(860.3,"APGM")
|
---|
16 | S OCXD0=0 F S OCXD0=$O(^OCXS(860.3,OCXD0)) Q:'OCXD0 D
|
---|
17 | .K ^OCXS(860.3,OCXD0,"RTN") I '$G(OCXAUTO) W:($X>60) ! W "."
|
---|
18 | ;
|
---|
19 | K ^TMP("OCXCMP",$J,"D CODE")
|
---|
20 | ;
|
---|
21 | W:'$G(OCXAUTO) !,?5,"Assign Subroutines to Routines..."
|
---|
22 | S OCXRN=1,OCXD0=0
|
---|
23 | D GETHDR(1)
|
---|
24 | F S OCXD0=$O(^TMP("OCXCMP",$J,"C CODE",OCXD0)) Q:'OCXD0 D Q:OCXWARN
|
---|
25 | .N OCXLLAB,OCXSKIP,OCXEXF,OCXSUB,OCXSIZE,OCXFILE,OCXCCODE,OCXDCODE,OCXLAST
|
---|
26 | .I '$G(OCXAUTO) W:($X>60) ! W "."
|
---|
27 | .S OCXLLAB=^TMP("OCXCMP",$J,"LINE",OCXD0)
|
---|
28 | .S OCXSKIP=((OCXLLAB="UPDATE")!(OCXLLAB="LOG"))
|
---|
29 | .S OCXSIZE=$$SIZE^OCXOCMP8(OCXRN,OCXD0)
|
---|
30 | .S OCXLAST='$O(^TMP("OCXCMP",$J,"C CODE",OCXD0))
|
---|
31 | .S OCXFILE=(OCXSIZE>OCXCRS)!(OCXLAST) S:OCXSKIP OCXFILE=0
|
---|
32 | .I OCXFILE D
|
---|
33 | ..K OCXEXF S OCXEXF=""
|
---|
34 | ..I $D(^TMP("OCXCMP",$J,"D CODE",OCXRN,"CALLS")) M OCXEXF=^("CALLS")
|
---|
35 | ..S OCXSUB="" F S OCXSUB=$O(OCXEXF(OCXSUB)) Q:'$L(OCXSUB) I 'OCXEXF(OCXSUB) D
|
---|
36 | ...S OCXEXF(OCXSUB)=1,OCXEXF=OCXSUB
|
---|
37 | ...S OCXSUB="" F S OCXSUB=$O(^TMP("OCXCMP",$J,"INCLUDE",OCXEXF,"CALLS",OCXSUB)) Q:'$L(OCXSUB) D
|
---|
38 | ....S OCXEXF(OCXSUB)=$G(OCXEXF(OCXSUB))
|
---|
39 | ..S OCXSUB="" F S OCXSUB=$O(OCXEXF(OCXSUB)) Q:'$L(OCXSUB) D
|
---|
40 | ...D APPEND^OCXOCMP8(OCXRN,OCXSUB,"F")
|
---|
41 | ..D APPEND^OCXOCMP8(OCXRN,"$")
|
---|
42 | ..S OCXRN=OCXRN+1 D GETHDR(OCXRN)
|
---|
43 | ..;
|
---|
44 | .D APPEND^OCXOCMP8(OCXRN,OCXD0,"C",OCXLLAB)
|
---|
45 | .I ($E(OCXLLAB,1,2)="EL") D
|
---|
46 | ..S ^OCXS(860.3,"APGM",(+$E(OCXLLAB,3,$L(OCXLLAB))),(OCXLLAB_U_$$RNAM(OCXRN)))=""
|
---|
47 | .S $P(^TMP("OCXCMP",$J,"LINE",OCXD0),U,2)=$$RNAM(OCXRN)
|
---|
48 | .Q:'OCXLAST
|
---|
49 | .K OCXEXF S OCXEXF=""
|
---|
50 | .I $D(^TMP("OCXCMP",$J,"D CODE",OCXRN,"CALLS")) M OCXEXF=^("CALLS")
|
---|
51 | .S OCXSUB="" F S OCXSUB=$O(OCXEXF(OCXSUB)) Q:'$L(OCXSUB) I 'OCXEXF(OCXSUB) D
|
---|
52 | ..S OCXEXF(OCXSUB)=1,OCXEXF=OCXSUB
|
---|
53 | ..S OCXSUB="" F S OCXSUB=$O(^TMP("OCXCMP",$J,"INCLUDE",OCXEXF,"CALLS",OCXSUB)) Q:'$L(OCXSUB) D
|
---|
54 | ...S OCXEXF(OCXSUB)=$G(OCXEXF(OCXSUB))
|
---|
55 | .S OCXSUB="" F S OCXSUB=$O(OCXEXF(OCXSUB)) Q:'$L(OCXSUB) D
|
---|
56 | ..D APPEND^OCXOCMP8(OCXRN,OCXSUB,"F")
|
---|
57 | .D APPEND^OCXOCMP8(OCXRN,"$")
|
---|
58 | ;
|
---|
59 | W:'$G(OCXAUTO) !,?5,"Resolve Routine Line Tags..."
|
---|
60 | S OCXD0=0 F S OCXD0=$O(^TMP("OCXCMP",$J,"D CODE",OCXD0)) Q:'OCXD0 D Q:OCXWARN
|
---|
61 | .I '$G(OCXAUTO) W:($X>60) ! W "."
|
---|
62 | .N TEXT,RTN,TEMP,ALT,LABL,OBJ,PIEC
|
---|
63 | .S RTN=$$RNAM(OCXD0)
|
---|
64 | .K TEMP M TEMP=^TMP("OCXCMP",$J,"D CODE",OCXD0)
|
---|
65 | .S OCXD1=0 F OCXOFF=0:1 S OCXD1=$O(TEMP(OCXD1)) Q:'OCXD1 D Q:OCXWARN
|
---|
66 | ..N TEXT,PIEC
|
---|
67 | ..S TEXT=TEMP(OCXD1,0) Q:'(TEXT["||")
|
---|
68 | ..;
|
---|
69 | ..F PIEC=2:2:$L(TEXT,"||") D Q:OCXWARN
|
---|
70 | ...S LABL=$P(TEXT,"||",PIEC)
|
---|
71 | ...I ($E(LABL,1,5)="LINE:") D I 1
|
---|
72 | ....S LABL=$G(^TMP("OCXCMP",$J,"LINE",+$P(LABL,":",2)))
|
---|
73 | ....I '$L(LABL) D WARN^OCXOCMPV("Line Label not found: "_$P(TEXT,"|",2),$P($T(+1)," ",1)) Q
|
---|
74 | ....S:($P(LABL,"^",2)=RTN) LABL=$P(LABL,"^",1)
|
---|
75 | ...;
|
---|
76 | ...E I ($E(LABL,1,5)="LNTAG") D I 1
|
---|
77 | ....N D0,CNT
|
---|
78 | ....S D0=OCXD1 F CNT=1:1 S D0=$O(TEMP(D0),-1) Q:$L($P(TEMP(D0,0)," ",1))
|
---|
79 | ....S LABL=$P(TEMP(D0,0)," ",1) S:(LABL["(") LABL=$P(LABL,"(",1)
|
---|
80 | ....S LABL="(+$P($H,"","",2))_""<"_LABL_"+"_CNT_U_RTN_">"""
|
---|
81 | ...;
|
---|
82 | ...E D WARN^OCXOCMPV("Unknown Compiler directive: "_LABL,$P($T(+1)," ",1)) Q
|
---|
83 | ...;
|
---|
84 | ...S $P(TEXT,"||",PIEC)=LABL
|
---|
85 | ..;
|
---|
86 | ..F Q:'(TEXT["||") S TEXT=$P(TEXT,"||",1)_$P(TEXT,"||",2,999)
|
---|
87 | ..S TEMP(OCXD1,0)=TEXT
|
---|
88 | .;
|
---|
89 | .K ^TMP("OCXCMP",$J,"D CODE",OCXD0)
|
---|
90 | .M ^TMP("OCXCMP",$J,"D CODE",OCXD0)=TEMP
|
---|
91 | ;
|
---|
92 | Q:OCXWARN 1
|
---|
93 | W:'$G(OCXAUTO) !,?5,"Generate Subroutine and Call documentation..."
|
---|
94 | S OCXD0=0 F S OCXD0=$O(^TMP("OCXCMP",$J,"C CODE",OCXD0)) Q:'OCXD0 D CALL^OCXOCMPT(OCXD0)
|
---|
95 | ;
|
---|
96 | W:'$G(OCXAUTO) !!,?5,"Delete Old OCXOZ* Routines..."
|
---|
97 | S OCXRTEST=^%ZOSF("TEST"),OCXSAVE=^%ZOSF("SAVE"),OCXDEL=^%ZOSF("DEL")
|
---|
98 | F OCXRN=1:1:1290 D
|
---|
99 | .I '$G(OCXAUTO) W:($X>60) ! W:'(OCXRN#100) "."
|
---|
100 | .S X=$$RNAM(OCXRN) X OCXRTEST I X OCXDEL W:'$G(OCXAUTO) "!"
|
---|
101 | ;
|
---|
102 | W:'$G(OCXAUTO) !,?5,"File New OCXOZ* routines..."
|
---|
103 | S OCXD0=$O(^TMP("OCXCMP",$J,"D CODE",0)) Q:'OCXD0 1
|
---|
104 | F S OCXD0=$O(^TMP("OCXCMP",$J,"D CODE",OCXD0)) Q:'OCXD0 D Q:OCXWARN
|
---|
105 | .I '$G(OCXAUTO) W:($X>60) ! W "."
|
---|
106 | .D FILE^OCXOCMP8(OCXD0)
|
---|
107 | S OCXD0=$O(^TMP("OCXCMP",$J,"D CODE",0)) Q:'OCXD0 1 D FILE^OCXOCMP8(OCXD0)
|
---|
108 | ;
|
---|
109 | Q OCXWARN
|
---|
110 | ;
|
---|
111 | GETHDR(RNUM) ;
|
---|
112 | ;
|
---|
113 | N OCXREC,D0,EFC,OCXEFF,PIEC,TEXT
|
---|
114 | S OCXREC(1,0)=$$RNAM(RNUM)_" ;SLC/RJS,CLA - Order Check Scan ;"_$$NOW
|
---|
115 | S OCXREC(2,0)=$T(+2)
|
---|
116 | S OCXREC(3,0)=$T(+3)
|
---|
117 | S OCXREC(4,0)=" ;"
|
---|
118 | S OCXREC(5,0)=" ; ***************************************************************"
|
---|
119 | S OCXREC(6,0)=" ; ** Warning: This routine is automatically generated by the **"
|
---|
120 | S OCXREC(7,0)=" ; ** Rule Compiler (^OCXOCMP) and ANY changes to this routine **"
|
---|
121 | S OCXREC(8,0)=" ; ** will be lost the next time the rule compiler executes. **"
|
---|
122 | S OCXREC(9,0)=" ; ***************************************************************"
|
---|
123 | S OCXREC(10,0)=" ;"
|
---|
124 | I (RNUM=1) D
|
---|
125 | .S OCXREC(11,0)=" ; compiled code line length: "_OCXCLL
|
---|
126 | .S OCXREC(12,0)=" ; compiled routine size: "_OCXCRS
|
---|
127 | .S OCXREC(13,0)=" ; triggered rule ignore period: "_OCXTSPI
|
---|
128 | .S OCXREC(14,0)=" ;"
|
---|
129 | .S OCXREC(15,0)=" ; Program Execution Trace Mode: "_$S($G(OCXTRACE):" ON",1:"OFF")
|
---|
130 | .S OCXREC(16,0)=" ;" ; " ; Elapsed time logging: "_$S($G(OCXTLOG):" ON",1:"OFF")
|
---|
131 | .S OCXREC(17,0)=" ; Raw Data Logging: "_$S($G(OCXDLOG):(" ON Keep data for "_OCXDLOG_" day"_$S(OCXDLOG=1:"",1:"s")_" then purge."),1:"OFF")
|
---|
132 | .S OCXREC(18,0)=" ; Compiler mode: "_$S(($G(OCXAUTO)>1):"Queued",$G(OCXAUTO):" ON",1:"OFF")
|
---|
133 | .S OCXREC(19,0)=" ; Compiled by: "_$P($G(^VA(200,+$G(DUZ),0)),U,1)_" (DUZ="_(+$G(DUZ))_")"
|
---|
134 | .S OCXREC(20,0)=" Q"
|
---|
135 | .S OCXREC(21,0)=" ;"
|
---|
136 | ;
|
---|
137 | E D
|
---|
138 | .S OCXREC(11,0)=" Q"
|
---|
139 | .S OCXREC(12,0)=" ;"
|
---|
140 | ;
|
---|
141 | M ^TMP("OCXCMP",$J,"D CODE",RNUM)=OCXREC
|
---|
142 | Q
|
---|
143 | ;
|
---|
144 | RNAM(X) ;
|
---|
145 | N CHAR
|
---|
146 | S CHAR="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
---|
147 | Q "OCXOZ"_$E(CHAR,(X\36+1))_$E(CHAR,(X#36+1))
|
---|
148 | ;
|
---|
149 | TODAY() N X,Y,%DT S X="T",%DT="" D ^%DT X ^DD("DD") Q Y
|
---|
150 | ;
|
---|
151 | NOW() N X,Y,%DT S X="N",%DT="T" D ^%DT X ^DD("DD") S:(Y["@") Y=$P(Y,"@",1)_" at "_$P(Y,"@",2,99) Q Y
|
---|
152 | ;
|
---|