1 | OCXOCMPI ;SLC/RJS,CLA - ORDER CHECK CODE COMPILER (Build LIST Function Code) ;10/29/98 12:37
|
---|
2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**32**;Dec 17,1997
|
---|
3 | ;; ;;ORDER CHECK EXPERT version 1.01 released OCT 29,1998
|
---|
4 | ;
|
---|
5 | Q
|
---|
6 | ;
|
---|
7 | GETCODE(OCXD0,OCXLIST) ;
|
---|
8 | ;
|
---|
9 | Q:$G(OCXWARN) 1
|
---|
10 | ;
|
---|
11 | N OCXNDX
|
---|
12 | ;
|
---|
13 | S OCXNDX=0 F S OCXNDX=$O(OCXLIST(OCXNDX)) Q:'OCXNDX D Q:OCXWARN
|
---|
14 | .I OCXLIST(OCXNDX) D Q:OCXWARN
|
---|
15 | ..N OCXPAR,OCXELE,OCXPC,OCXCODE,OCXVAR
|
---|
16 | ..S OCXPAR=$P(OCXLIST(OCXNDX)," ",3,999),OCXELE=+OCXLIST(OCXNDX)
|
---|
17 | ..;
|
---|
18 | ..F OCXPC=2:2:$L(OCXPAR,"|") D Q:OCXWARN
|
---|
19 | ...N OCXDF S OCXDF=+$$DATAFLD($P($P(OCXPAR,"|",OCXPC),"|",1),OCXELE)
|
---|
20 | ...I 'OCXDF D WARN^OCXOCMPV("1 Data Field '"_$P($P(OCXPAR,"|",OCXPC),"|",1)_"' not defined for '("_OCXCON_") "_$P($G(^OCXS(860.6,OCXCON,0)),U,1)_"' data context.",2,OCXD0,$P($T(+1)," ",1)) Q
|
---|
21 | ...S $P(OCXPAR,"|",OCXPC)=OCXDF
|
---|
22 | ..;
|
---|
23 | ..S OCXVAR="OCXLX"_(+OCXNDX)
|
---|
24 | ..S OCXLIST(OCXNDX,"CODE",1)="I $$MCE"_(+OCXELE)_" D @@@@"
|
---|
25 | .;
|
---|
26 | .I 'OCXLIST(OCXNDX) D
|
---|
27 | ..;
|
---|
28 | ..N OCXEXP,OCXDTYP,OCXCD
|
---|
29 | ..S OCXEXP=OCXLIST(OCXNDX),OCXDTYP=""
|
---|
30 | ..;
|
---|
31 | ..F OCXPC=2:2:$L(OCXEXP,"|") D Q:OCXWARN
|
---|
32 | ...N OCXELE,OCXDF,OCXDFN,OCXSTR,OCXENDX,OCXNVAL,OCXCON
|
---|
33 | ...S OCXSTR=$P($P(OCXEXP,"|",OCXPC),"|",1),OCXELE=$P(OCXSTR,".",1)
|
---|
34 | ...S OCXDF=$P(OCXSTR,".",2),OCXENDX=+$G(OCXLIST("B",OCXELE))
|
---|
35 | ...S:$L(OCXELE) OCXELE=+$G(OCXLIST(OCXENDX))
|
---|
36 | ...S OCXCON=+$P($G(^OCXS(860.3,+OCXELE,0)),U,2)
|
---|
37 | ...I 'OCXELE D WARN^OCXOCMPV("Label '"_$P(OCXSTR,".",1)_"' not defined.",2,OCXD0,$P($T(+1)," ",1)) Q
|
---|
38 | ...S OCXDFN=+$$DATAFLD(OCXDF,OCXELE)
|
---|
39 | ...I 'OCXDFN D WARN^OCXOCMPV("2 Data Field '"_OCXSTR_"' not defined for '"_$P($G(^OCXS(860.6,+OCXCON,0)),U,1)_"' data context.",2,OCXD0,$P($T(+1)," ",1)) Q
|
---|
40 | ...S OCXNVAL="$G(^TMP(""""OCXCHK"""",$J,DFN,"_(+OCXELE)_","_(+OCXDFN)_"))"
|
---|
41 | ...S $P(OCXEXP,"|",OCXPC)=OCXNVAL
|
---|
42 | ...I $L(OCXDTYP),'(OCXDTYP=$$GETDTYP(+OCXDFN,+OCXCON)) D Q
|
---|
43 | ....D WARN^OCXOCMPV("Invalid Expression, Cannot compare '"_OCXDTYP_"' data with '"_$$GETDTYP(+OCXDFN,+OCXCON)_"' data. ",2,OCXD0,$P($T(+1)," ",1)) Q
|
---|
44 | ...I '$L(OCXDTYP) S OCXDTYP=$$GETDTYP(+OCXDFN,OCXCON)
|
---|
45 | ..I '$L(OCXDTYP) D WARN^OCXOCMPV("Data Type for '"_OCXLIST(OCXNDX,"LABEL")_"' not defined. ",2,OCXD0,$P($T(+1)," ",1)) Q
|
---|
46 | ..;
|
---|
47 | ..; GET EXPRESSION CONDITIONAL EVALUATION CODE
|
---|
48 | ..;
|
---|
49 | ..S OCXCD="",OCXWARN=$$GETC^OCXOCMPL(OCXD0,OCXEXP,OCXDTYP,.OCXCD)
|
---|
50 | ..S OCXLIST(OCXNDX,"CODE",1)=OCXCD
|
---|
51 | .;
|
---|
52 | .S OCXWARN='$D(OCXLIST(OCXNDX,"CODE"))
|
---|
53 | ;
|
---|
54 | Q OCXWARN
|
---|
55 | ;
|
---|
56 | DATAFLD(OCXFNAM,OCXEL) ;
|
---|
57 | ;
|
---|
58 | N OCXDFN,OCXCON,OCXLINK
|
---|
59 | S OCXCON=+$P($G(^OCXS(860.3,+OCXEL,0)),U,2),OCXDFN=$O(^OCXS(860.4,"B",OCXFNAM,0))
|
---|
60 | Q:'$L($G(OCXFNAM)) 0 Q:'OCXCON 0
|
---|
61 | S OCXLINK=0 F S OCXLINK=$O(^OCXS(860.4,OCXDFN,"LINK",OCXLINK)) Q:'OCXLINK Q:(OCXLINK=OCXCON)
|
---|
62 | Q:OCXLINK +OCXDFN Q 0
|
---|
63 | ;
|
---|
64 | GETDTYP(OCXDF,OCXCON) ;
|
---|
65 | ;
|
---|
66 | N OCXLINK,OCXATT
|
---|
67 | S OCXDF=+$G(OCXDF),OCXCON=+$G(OCXCON)
|
---|
68 | Q:'OCXDF "" Q:'OCXCON ""
|
---|
69 | S OCXLINK=$G(^OCXS(860.4,+OCXDF,"LINK",OCXCON,"DATAPATH"))
|
---|
70 | Q:'$L(OCXLINK) ""
|
---|
71 | S OCXLINK=$O(^OCXS(863.3,"B",OCXLINK,0)) Q:'OCXLINK ""
|
---|
72 | S OCXATT=$P($G(^OCXS(863.3,OCXLINK,0)),U,5) Q:'OCXATT ""
|
---|
73 | Q $$GETPARM(34,OCXATT,"DATA TYPE")
|
---|
74 | ;
|
---|
75 | GETPARM(FILE,INST,PARM) ;
|
---|
76 | Q:'$L(FILE) "" Q:'$L(INST) "" Q:'$L(PARM) ""
|
---|
77 | N OCXP,OCXP1,OCXI,OCXGL
|
---|
78 | S OCXGL="^OCXS" S:(FILE=1) OCXGL="^OCXD" S:(FILE=7) OCXGL="^OCXD" S:(FILE=10) OCXGL="^OCXD" S FILE=FILE/10+860
|
---|
79 | Q:'$D(@OCXGL@(+FILE,0)) ""
|
---|
80 | I (PARM=+PARM),$D(^OCXS(863.8,PARM,0)) S OCXP=PARM
|
---|
81 | E S OCXP=$O(^OCXS(863.8,"B",PARM,0))
|
---|
82 | Q:'OCXP ""
|
---|
83 | I (INST=+INST),$D(@OCXGL@(FILE,INST,0)) S OCXI=INST
|
---|
84 | E S OCXI=$O(@OCXGL@(FILE,"B",INST,0))
|
---|
85 | Q:'OCXI "" S OCXP1=$O(@OCXGL@(FILE,OCXI,"PAR","B",OCXP,0)) Q:'OCXP1 ""
|
---|
86 | Q $G(@OCXGL@(FILE,OCXI,"PAR",OCXP1,"VAL"))
|
---|
87 | ;
|
---|
88 | LAST(ROOT,ELEM,INDEX,PARAM,CD) Q $$LAST^OCXOCMPJ(ROOT,ELEM,INDEX,PARAM,.CD)
|
---|
89 | FIRST(ROOT,ELEM,INDEX,PARAM,CD) Q $$FIRST^OCXOCMPJ(ROOT,ELEM,INDEX,PARAM,.CD)
|
---|
90 | RANGE(ROOT,ELEM,INDEX,PARAM,CD) Q $$RANGE^OCXOCMPK(ROOT,ELEM,INDEX,PARAM,.CD)
|
---|
91 | ANY(ROOT,ELEM,INDEX,PARAM,CD) Q $$ANY^OCXOCMPK(ROOT,ELEM,INDEX,PARAM,.CD)
|
---|
92 | ;
|
---|