| 1 | OCXOCMP8 ;SLC/RJS,CLA - ORDER CHECK CODE COMPILER (Assemble Order Check Routines utilities) ;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 | FILE(RNUM) ; | 
|---|
| 7 | ; | 
|---|
| 8 | W:'$G(OCXAUTO) !,$$RNAM(RNUM) | 
|---|
| 9 | N DIE,XCN,X | 
|---|
| 10 | S DIE="^TMP(""OCXCMP"",$J,""D CODE"","_RNUM_",",XCN=0,X=$$RNAM(RNUM) | 
|---|
| 11 | X ^%ZOSF("SAVE") | 
|---|
| 12 | W:'$G(OCXAUTO) "  ...",XCM," lines filed." | 
|---|
| 13 | S OCXLCNT=$G(OCXLCNT)+XCM | 
|---|
| 14 | Q | 
|---|
| 15 | ; | 
|---|
| 16 | APPEND(DSUB,CSUB,SRC,LABEL) ; | 
|---|
| 17 | ; | 
|---|
| 18 | N OCXSRC,OCXNDX,OCXNEXT,GLD,GLC | 
|---|
| 19 | S GLD="^TMP(""OCXCMP"",$J,""D CODE"","_(+DSUB)_")" | 
|---|
| 20 | I (CSUB="$") D  Q | 
|---|
| 21 | .S OCXNEXT=$O(@GLD@(" "),-1)+1 | 
|---|
| 22 | .S @GLD@(OCXNEXT,0)="$" | 
|---|
| 23 | .S OCXNEXT=$O(@GLD@(" "),-1)+1 | 
|---|
| 24 | .S @GLD@(OCXNEXT,0)="" | 
|---|
| 25 | ; | 
|---|
| 26 | I (SRC="C") M GLC=^TMP("OCXCMP",$J,"C CODE",+CSUB) S ^TMP("OCXCMP",$J,"D CODE","LINE",LABEL)=DSUB_","_($O(@GLD@(" "),-1)+1) | 
|---|
| 27 | I (SRC="F") M GLC=^TMP("OCXCMP",$J,"INCLUDE",CSUB) | 
|---|
| 28 | S OCXNDX=0 F  S OCXNDX=$O(GLC(OCXNDX)) Q:'OCXNDX  D | 
|---|
| 29 | .S OCXNEXT=$O(@GLD@(" "),-1)+1 | 
|---|
| 30 | .S @GLD@(OCXNEXT,0)=GLC(OCXNDX,0) | 
|---|
| 31 | M @GLD@("CALLS")=GLC("CALLS") | 
|---|
| 32 | S @GLD@("SIZE")=$G(@GLD@("SIZE"))+$G(GLC("SIZE")) | 
|---|
| 33 | Q | 
|---|
| 34 | ; | 
|---|
| 35 | SIZE(DSUB,CSUB) ; | 
|---|
| 36 | ; | 
|---|
| 37 | N D0,EFC,OCXEFC,OCXEFD,OCXEFF,OCXREC | 
|---|
| 38 | N OCXTEMP,PIEC,SIZEC,SIZED,SIZEF,TEXT | 
|---|
| 39 | ; | 
|---|
| 40 | S (SIZEC,SIZED,SIZEF)=0 | 
|---|
| 41 | K OCXEFF,OCXEFC,OCXEFD | 
|---|
| 42 | S (OCXEFF,OCXEFC,OCXEFD)="" | 
|---|
| 43 | ; | 
|---|
| 44 | I $G(CSUB),$D(^TMP("OCXCMP",$J,"C CODE",+CSUB)) D | 
|---|
| 45 | .I $D(^TMP("OCXCMP",$J,"C CODE",+CSUB,"SIZE")) D  Q | 
|---|
| 46 | ..S SIZEC=^TMP("OCXCMP",$J,"C CODE",+CSUB,"SIZE") | 
|---|
| 47 | ..I $D(^TMP("OCXCMP",$J,"C CODE",+CSUB,"CALLS")) D | 
|---|
| 48 | ...K OCXEFC M OCXEFC=^TMP("OCXCMP",$J,"C CODE",+CSUB,"CALLS") | 
|---|
| 49 | .K OCXREC M OCXREC=^TMP("OCXCMP",$J,"C CODE",+CSUB) | 
|---|
| 50 | .S D0=0 F  S D0=$O(OCXREC(D0)) Q:'D0  D | 
|---|
| 51 | ..S TEXT=OCXREC(D0,0),SIZEC=SIZEC+$L(TEXT) | 
|---|
| 52 | ..Q:'(TEXT["$$") | 
|---|
| 53 | ..F PIEC=2:1:$L(TEXT,"$$") D | 
|---|
| 54 | ...S EFC=$P($P(TEXT,"$$",PIEC),"(",1) | 
|---|
| 55 | ...S:(EFC[" ") EFC=$P(EFC," ",1) Q:(EFC["^")  Q:'$L(EFC) | 
|---|
| 56 | ...I '$D(^TMP("OCXCMP",$J,"INCLUDE",EFC)) D  Q | 
|---|
| 57 | ....D WARN^OCXOCMPV("Unknown Local Extrinsic Function: "_EFC,$P($T(+1)," ",1)) Q | 
|---|
| 58 | ...S OCXEFC(EFC)="" | 
|---|
| 59 | .S SIZEC=SIZEC+100 ; ADJUST FOR SUBROUTINE DOCUMENTATION | 
|---|
| 60 | .S ^TMP("OCXCMP",$J,"C CODE",+CSUB,"SIZE")=SIZEC | 
|---|
| 61 | .M ^TMP("OCXCMP",$J,"C CODE",+CSUB,"CALLS")=OCXEFC | 
|---|
| 62 | ; | 
|---|
| 63 | I $G(DSUB),$D(^TMP("OCXCMP",$J,"D CODE",+DSUB)) D | 
|---|
| 64 | .I $G(^TMP("OCXCMP",$J,"D CODE",+DSUB,"SIZE")) D  Q | 
|---|
| 65 | ..S SIZED=^TMP("OCXCMP",$J,"D CODE",+DSUB,"SIZE") | 
|---|
| 66 | ..I $D(^TMP("OCXCMP",$J,"D CODE",+DSUB,"CALLS")) D | 
|---|
| 67 | ...K OCXEFD M OCXEFD=^TMP("OCXCMP",$J,"D CODE",+DSUB,"CALLS") | 
|---|
| 68 | ; | 
|---|
| 69 | K OCXEFF M OCXEFF=OCXEFC,OCXEFF=OCXEFD | 
|---|
| 70 | ; | 
|---|
| 71 | I $D(OCXEFF) S EFC="" F  S EFC=$O(OCXEFF(EFC)) Q:'$L(EFC)  I 'OCXEFF(EFC) D | 
|---|
| 72 | .K OCXTEMP | 
|---|
| 73 | .I $D(^TMP("OCXCMP",$J,"INCLUDE",EFC,"SIZE")) M OCXTEMP("SIZE")=^TMP("OCXCMP",$J,"INCLUDE",EFC,"SIZE") | 
|---|
| 74 | .I $D(^TMP("OCXCMP",$J,"INCLUDE",EFC,"CALLS")) M OCXTEMP("CALLS")=^TMP("OCXCMP",$J,"INCLUDE",EFC,"CALLS") | 
|---|
| 75 | .S OCXEFF(EFC)=OCXTEMP("SIZE") | 
|---|
| 76 | .Q:'$D(OCXTEMP("CALLS")) | 
|---|
| 77 | .S EFC="" F  S EFC=$O(OCXTEMP("CALLS",EFC)) Q:'$L(EFC)  S OCXEFF(EFC)=+$G(OCXEFF(EFC)) | 
|---|
| 78 | ; | 
|---|
| 79 | I $D(OCXEFF) S EFC="" F  S EFC=$O(OCXEFF(EFC)) Q:'$L(EFC)  S SIZEF=SIZEF+OCXEFF(EFC) | 
|---|
| 80 | ; | 
|---|
| 81 | Q $G(SIZEC)+$G(SIZED)+$G(SIZEF) | 
|---|
| 82 | ; | 
|---|
| 83 | RNAM(X) ; | 
|---|
| 84 | N CHAR | 
|---|
| 85 | S CHAR="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" | 
|---|
| 86 | Q "OCXOZ"_$E(CHAR,(X\36+1))_$E(CHAR,(X#36+1)) | 
|---|
| 87 | ; | 
|---|
| 88 | TODAY() N X,Y,%DT S X="T",%DT="" D ^%DT X ^DD("DD") Q Y | 
|---|
| 89 | ; | 
|---|
| 90 | 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 | 
|---|
| 91 | ; | 
|---|