| 1 | OCXOCMPQ ;SLC/RJS,CLA - ORDER CHECK CODE COMPILER (Sort Code Segments cont...) ;3/21/01  10:17
 | 
|---|
| 2 |  ;;3.0;ORDER ENTRY/RESULTS REPORTING;**32,105**;Dec 17,1997
 | 
|---|
| 3 |  ;;  ;;ORDER CHECK EXPERT version 1.01 released OCT 29,1998
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 | TIME(T,OCXD0,OCXD1) ;
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 |  N TIME
 | 
|---|
| 9 |  S TIME=""
 | 
|---|
| 10 |  I (T["|") D
 | 
|---|
| 11 |  .N DAY,OPER,OFFS
 | 
|---|
| 12 |  .I ($E(T,1)="|") S DAY=$P(T,"|",2) I $L(DAY) S DAY=$$DFLKUP(DAY) I DAY S DAY="|"_$P(T,"|",2)_"|"
 | 
|---|
| 13 |  .E  Q
 | 
|---|
| 14 |  .S OPER=$P($P(T,"|",3)," ",2) I '(OPER="+"),'(OPER="-") Q
 | 
|---|
| 15 |  .S OFFS=$P($P(T,"|",3)," ",3) I '(OFFS?1.N1"H"),'(OFFS?1.N1"D"),'(OFFS?1.N1"W"),'(OFFS?1.N1"M") Q
 | 
|---|
| 16 |  .S TIME=$$XLATE(DAY,OCXD0,OCXD1)_","""_OPER_""","""_OFFS_""""
 | 
|---|
| 17 |  I '(T["|") D
 | 
|---|
| 18 |  .N DAY,OPER,OFFS
 | 
|---|
| 19 |  .S DAY=$P(T," ",1) I '(DAY="TODAY"),'(DAY="NOW") Q
 | 
|---|
| 20 |  .S OPER=$P(T," ",2) I '(OPER="+"),'(OPER="-") Q
 | 
|---|
| 21 |  .S OFFS=$P(T," ",3) I '(OFFS?1.N1"H"),'(OFFS?1.N1"D"),'(OFFS?1.N1"W"),'(OFFS?1.N1"M") Q
 | 
|---|
| 22 |  .S TIME=""""_$E(DAY,1)_""","""_OPER_""","""_OFFS_""""
 | 
|---|
| 23 |  Q TIME
 | 
|---|
| 24 |  ;
 | 
|---|
| 25 | DFLKUP(X) ;
 | 
|---|
| 26 |  N XL,Y
 | 
|---|
| 27 |  S Y=0 F XL=$L(X):-1:1 Q:Y  S Y=0 F  S Y=$O(^OCXS(860.4,"B",$E(X,1,XL),Y)) Q:'Y  Q:($P($G(^OCXS(860.4,Y,0)),U,1)=X)
 | 
|---|
| 28 |  Q Y
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 | XLATE(MSG,D0,D1,OCXDTCD) ;
 | 
|---|
| 31 |  ;
 | 
|---|
| 32 |  N PIEC,ERROR S ERROR=0
 | 
|---|
| 33 |  S OCXDTCD=+$G(OCXDTCD)
 | 
|---|
| 34 |  I (MSG["|") S:('$L(MSG,"|")#2) MSG=MSG_"|" F PIEC=2:2:$L(MSG,"|") D  Q:ERROR
 | 
|---|
| 35 |  .N FLD,ELIST,LABEL,D2,DFLD,TEMP
 | 
|---|
| 36 |  .S FLD=$P(MSG,"|",PIEC),(DFLD,ELIST)=0,GETDATA=""
 | 
|---|
| 37 |  .I (FLD[".") D  I 1
 | 
|---|
| 38 |  ..S LABEL=$P(FLD,".",1),DFLD=$P(FLD,".",2),D2=0
 | 
|---|
| 39 |  ..I $L(LABEL) S D2=$O(^OCXS(860.2,D0,"C","B",LABEL,0)) S:'D2 D2=$O(^OCXS(860.2,D0,"C","C",LABEL,0))
 | 
|---|
| 40 |  ..S:D2 ELIST=+$P($G(^OCXS(860.2,D0,"C",D2,0)),U,2)
 | 
|---|
| 41 |  ..S:$L(DFLD) DFLD=$$GETDF(DFLD)
 | 
|---|
| 42 |  .E  D
 | 
|---|
| 43 |  ..S ELIST="" S:$L(FLD) DFLD=$$GETDF(FLD) Q:'DFLD
 | 
|---|
| 44 |  ..S D2=0 F  S D2=$O(^TMP("OCXCMP",$J,"RULE",D0,D1,D2)) Q:'D2  S:$L(ELIST) ELIST=ELIST_U S ELIST=ELIST_D2
 | 
|---|
| 45 |  .;
 | 
|---|
| 46 |  .S ERROR=0,GETDATA="" I $L(ELIST) D
 | 
|---|
| 47 |  ..N NDX
 | 
|---|
| 48 |  ..S:'(ELIST[U) ELIST=ELIST_U
 | 
|---|
| 49 |  ..;
 | 
|---|
| 50 |  ..I $L(ELIST),DFLD,($$GETDTYP(+DFLD)="DATE/TIME") S GETDATA="$$INT2DT($$GETDATA(DFN,"""_ELIST_""","_DFLD_"),0)"
 | 
|---|
| 51 |  ..E  I $L(ELIST),DFLD,($$GETDTYP(+DFLD)="BOOLEAN") S GETDATA="$S($$GETDATA(DFN,"""_ELIST_""","_DFLD_"):""TRUE"",1:""FALSE"")"
 | 
|---|
| 52 |  ..E  I $L(ELIST),DFLD S GETDATA="$$GETDATA(DFN,"""_ELIST_""","_DFLD_")"
 | 
|---|
| 53 |  .I '$L(GETDATA) S ERROR=1 Q
 | 
|---|
| 54 |  .S MSG=$P(MSG,"|",1,PIEC-1)_"|"_GETDATA_"|"_$P(MSG,"|",PIEC+1,99)
 | 
|---|
| 55 |  ;
 | 
|---|
| 56 |  I 'OCXDTCD D
 | 
|---|
| 57 |  .S:'($E(MSG,1)="|") MSG=""""_MSG
 | 
|---|
| 58 |  .S:($E(MSG,1)="|") MSG=$E(MSG,2,$L(MSG))
 | 
|---|
| 59 |  .S:'($E(MSG,$L(MSG))="|") MSG=MSG_""""
 | 
|---|
| 60 |  .S:($E(MSG,$L(MSG))="|") MSG=$E(MSG,1,$L(MSG)-1)
 | 
|---|
| 61 |  .F  Q:'(MSG["||")  S MSG=$P(MSG,"||",1)_"_"_$P(MSG,"||",2,999)
 | 
|---|
| 62 |  .F  Q:'(MSG["|")  D
 | 
|---|
| 63 |  ..N MSG1,MSG2 S MSG1=$P(MSG,"|",1),MSG2=$P(MSG,"|",2)
 | 
|---|
| 64 |  ..I ($E(MSG1,$L(MSG1))=")") S MSG=MSG1_"_"""_$P(MSG,"|",2,999)
 | 
|---|
| 65 |  ..I ($E(MSG2,1)="$") S MSG=$P(MSG,"|",1)_"""_"_$P(MSG,"|",2,999)
 | 
|---|
| 66 |  ;
 | 
|---|
| 67 |  I OCXDTCD S MSG=$TR(MSG,"|","")
 | 
|---|
| 68 |  ;
 | 
|---|
| 69 |  Q MSG
 | 
|---|
| 70 |  K D0,D1
 | 
|---|
| 71 |  ;
 | 
|---|
| 72 | GETDTYP(OCXDF) ;
 | 
|---|
| 73 |  ;
 | 
|---|
| 74 |  N OCXLINK,OCXATT,OCXCON,OCXDTYP
 | 
|---|
| 75 |  Q:'$G(OCXDF) ""
 | 
|---|
| 76 |  S OCXDTYP="",OCXCON=0 F  S OCXCON=$O(^OCXS(860.4,+OCXDF,"LINK",OCXCON)) Q:'OCXCON  D  Q:$L(OCXDTYP)
 | 
|---|
| 77 |  .S OCXLINK=$G(^OCXS(860.4,+OCXDF,"LINK",OCXCON,"DATAPATH")) Q:'$L(OCXLINK) ""
 | 
|---|
| 78 |  .S OCXLINK=$O(^OCXS(863.3,"B",OCXLINK,0)) Q:'OCXLINK ""
 | 
|---|
| 79 |  .S OCXATT=$P($G(^OCXS(863.3,OCXLINK,0)),U,5) Q:'OCXATT ""
 | 
|---|
| 80 |  .S OCXDTYP=$$GETPARM(34,OCXATT,"DATA TYPE")
 | 
|---|
| 81 |  Q OCXDTYP
 | 
|---|
| 82 |  ;
 | 
|---|
| 83 | GETPARM(FILE,INST,PARM) ;
 | 
|---|
| 84 |  Q:'$L(FILE) "" Q:'$L(INST) "" Q:'$L(PARM) ""
 | 
|---|
| 85 |  N OCXP,OCXP1,OCXI,OCXGL
 | 
|---|
| 86 |  S OCXGL="^OCXS" S:(FILE=1) OCXGL="^OCXD" S:(FILE=7) OCXGL="^OCXD" S:(FILE=10) OCXGL="^OCXD" S FILE=FILE/10+860
 | 
|---|
| 87 |  Q:'$D(@OCXGL@(+FILE,0)) ""
 | 
|---|
| 88 |  I (PARM=+PARM),$D(^OCXS(863.8,PARM,0)) S OCXP=PARM
 | 
|---|
| 89 |  E  S OCXP=$O(^OCXS(863.8,"B",PARM,0))
 | 
|---|
| 90 |  Q:'OCXP ""
 | 
|---|
| 91 |  I (INST=+INST),$D(@OCXGL@(FILE,INST,0)) S OCXI=INST
 | 
|---|
| 92 |  E  S OCXI=$O(@OCXGL@(FILE,"B",INST,0))
 | 
|---|
| 93 |  Q:'OCXI "" S OCXP1=$O(@OCXGL@(FILE,OCXI,"PAR","B",OCXP,0)) Q:'OCXP1 ""
 | 
|---|
| 94 |  Q $G(@OCXGL@(FILE,OCXI,"PAR",OCXP1,"VAL"))
 | 
|---|
| 95 |  ;
 | 
|---|
| 96 | GETDF(FNAM) ;
 | 
|---|
| 97 |  ;
 | 
|---|
| 98 |  S FNUM=$O(^OCXS(860.4,"C",FNAM,0))
 | 
|---|
| 99 |  I 'FNUM S FNUM=0 F  S FNUM=$O(^OCXS(860.4,"B",$E(FNAM,1,30),0)) Q:'FNUM  Q:($P($G(^OCXS(860.4,FNUM,0)),U,1)=FNAM)
 | 
|---|
| 100 |  Q +FNUM
 | 
|---|