1 | OCXOCMP5 ;SLC/RJS,CLA - ORDER CHECK CODE COMPILER (Optimize Order Check Sub-Routines) ;2/02/99 13:39
|
---|
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 | Q:$G(OCXWARN) 1
|
---|
8 | N OCXPC,OCXD0,OCXD1,OCXD2,OCXD3
|
---|
9 | ;
|
---|
10 | S OCXD0=0 F S OCXD0=$O(^TMP("OCXCMP",$J,"C CODE",OCXD0)) Q:'OCXD0 D
|
---|
11 | .I '$G(OCXAUTO) W:($X>60) ! W "."
|
---|
12 | .S OCXD1=0 F S OCXD1=$O(^TMP("OCXCMP",$J,"C CODE",OCXD0,OCXD1)) Q:'OCXD1 D
|
---|
13 | ..S OCXLINE=$G(^TMP("OCXCMP",$J,"C CODE",OCXD0,OCXD1,0))
|
---|
14 | ..Q:'$L(OCXLINE) Q:'(OCXLINE["||LINE:")
|
---|
15 | ..F OCXPC=2:1:$L(OCXLINE,"||LINE:") S OCXD2=+$P(OCXLINE,"||LINE:",OCXPC) D
|
---|
16 | ...S:OCXD2 ^TMP("OCXCMP",$J,"CALLREF",OCXD2,OCXD0,OCXD1)=""
|
---|
17 | ;
|
---|
18 | S OCXD0=$G(^TMP("OCXCMP",$J,"LINE","B","SCAN")) I OCXD0 D
|
---|
19 | .S OCXD1=0 F S OCXD1=$O(^TMP("OCXCMP",$J,"C CODE",OCXD0,OCXD1)) Q:'OCXD1 Q:(^(OCXD1,0)["D @OCXPGM")
|
---|
20 | .S OCXD3=199999 F S OCXD3=$O(^TMP("OCXCMP",$J,"LINE",OCXD3)) Q:(OCXD3>299999) D
|
---|
21 | ..S ^TMP("OCXCMP",$J,"CALLREF",OCXD3,OCXD0,OCXD1)=""
|
---|
22 | ..I '$G(OCXAUTO) W:($X>60) ! W "."
|
---|
23 | ;
|
---|
24 | F S OCXFLAG=0 D Q:'OCXFLAG
|
---|
25 | .S OCXD0=0 F S OCXD0=$O(^TMP("OCXCMP",$J,"CALLREF",OCXD0)) Q:'OCXD0 D
|
---|
26 | ..I '$G(OCXAUTO) W:($X>60) ! W "."
|
---|
27 | ..N OCXNSUB,OCXLLAB,OCXCNT,OCXCHG,OCXCOD1,OCXCOD2
|
---|
28 | ..N OCXD1,OCXD2,OCXCALL,OCXOP1,OCXOP2,OCXOP3,OCXREC1,OCXREC2
|
---|
29 | ..S OCXCALL=" D ||LINE:"_OCXD0_"||"
|
---|
30 | ..Q:$D(^TMP("OCXCMP",$J,"C CODE",OCXD0,13000))
|
---|
31 | ..Q:$D(^TMP("OCXCMP",$J,"C CODE",OCXD0,16001))
|
---|
32 | ..S OCXCOD1=$G(^TMP("OCXCMP",$J,"C CODE",OCXD0,16000,0)) Q:'$L(OCXCOD1)
|
---|
33 | ..S OCXOP1=$G(^TMP("OCXCMP",$J,"C CODE",OCXD0,16000,"OPLIST"))
|
---|
34 | ..S (OCXCNT,OCXCHG)=0
|
---|
35 | ..S OCXD1=0 F S OCXD1=$O(^TMP("OCXCMP",$J,"CALLREF",OCXD0,OCXD1)) Q:'OCXD1 D
|
---|
36 | ...S OCXD2=0 F S OCXD2=$O(^TMP("OCXCMP",$J,"CALLREF",OCXD0,OCXD1,OCXD2)) Q:'OCXD2 D
|
---|
37 | ....S OCXCOD2=$G(^TMP("OCXCMP",$J,"C CODE",OCXD1,OCXD2,0)) Q:'(OCXCOD2[OCXCALL)
|
---|
38 | ....S OCXOP2=$G(^TMP("OCXCMP",$J,"C CODE",OCXD1,OCXD2,"OPLIST"))
|
---|
39 | ....S OCXOP3=$E(OCXOP2,1,$L(OCXOP2)-1)
|
---|
40 | ....S OCXCNT=OCXCNT+1
|
---|
41 | ....Q:(($L(OCXCOD1)+$L(OCXCOD2))>OCXCLL)
|
---|
42 | ....Q:(OCXOP2["Y")
|
---|
43 | ....I $L(OCXOP1),$L(OCXOP3),($E(OCXOP1,1)=$E(OCXOP3,$L(OCXOP3))),'($E(OCXOP1,1)="Z") D
|
---|
44 | .....S OCXCOD2=$P(OCXCOD2,OCXCALL,1)_","_$P(OCXCOD1," ",3,999)_$P(OCXCOD2,OCXCALL,2,9999)
|
---|
45 | .....S OCXOP2=OCXOP3_$E(OCXOP1,2,$L(OCXOP1))_$P(OCXOP2,"D",2,999)
|
---|
46 | ....E D
|
---|
47 | .....S OCXCOD2=$P(OCXCOD2,OCXCALL,1)_OCXCOD1_$P(OCXCOD2,OCXCALL,2,9999)
|
---|
48 | .....S OCXOP2=OCXOP3_OCXOP1_$P(OCXOP2,"D",2,999)
|
---|
49 | ....S ^TMP("OCXCMP",$J,"C CODE",OCXD1,OCXD2,0)=OCXCOD2
|
---|
50 | ....S ^TMP("OCXCMP",$J,"C CODE",OCXD1,OCXD2,"OPLIST")=OCXOP2
|
---|
51 | ....K ^TMP("OCXCMP",$J,"CALLREF",OCXD0,OCXD1,OCXD2)
|
---|
52 | ....F OCXPC=2:2:$L(OCXCOD2,"D ||LINE:") S OCXD3=+$P(OCXCOD2,"D ||LINE:",OCXPC) D
|
---|
53 | .....S ^TMP("OCXCMP",$J,"CALLREF",OCXD3,OCXD1,OCXD2)=""
|
---|
54 | ....S OCXCHG=OCXCHG+1,OCXFLAG=1
|
---|
55 | ..I (OCXCNT=OCXCHG) D
|
---|
56 | ...S OCXLLAB=$P(^TMP("OCXCMP",$J,"LINE",OCXD0),U,1)
|
---|
57 | ...Q:'($E(OCXLLAB,1,3)="CHK")
|
---|
58 | ...K ^TMP("OCXCMP",$J,"C CODE",OCXD0)
|
---|
59 | ...K ^TMP("OCXCMP",$J,"CALLREF",OCXD0)
|
---|
60 | ...K ^TMP("OCXCMP",$J,"LINE",OCXD0)
|
---|
61 | ...K ^TMP("OCXCMP",$J,"LINE","B",OCXLLAB)
|
---|
62 | ;
|
---|
63 | Q OCXWARN
|
---|
64 | ;
|
---|