[641] | 1 | ZIBRNSPC ; IHS/ADC/GTH - NAMESPACE PREVIOUSLY WRITTEN ROUTINES ; [ 10/29/2002 7:42 AM ]
|
---|
| 2 | ;;4.0;XB;;Jul 20, 2009;Build 2
|
---|
| 3 | ; XB*3*9 IHS/SET/GTH XB*3*9 10/29/2002 Cache' mods.
|
---|
| 4 | ;
|
---|
| 5 | INIT ;
|
---|
| 6 | KILL (%)
|
---|
| 7 | D ^XBKVAR
|
---|
| 8 | S DTIME=300
|
---|
| 9 | KILL %,DISYS,%H,X,^UTILITY($J),^TMP("ZIBRNSPC",$J)
|
---|
| 10 | S IOP=$I
|
---|
| 11 | D ^%ZIS
|
---|
| 12 | START ;
|
---|
| 13 | W "Routine Namespace Converter",!
|
---|
| 14 | S ZIBRQUIT=0
|
---|
| 15 | D SETUP
|
---|
| 16 | G:ZIBRQUIT EXIT
|
---|
| 17 | ;S ZIBRRTN="";IHS/SET/GTH XB*3*9 10/29/2002
|
---|
| 18 | S ZIBRRTN=0 ;IHS/SET/GTH XB*3*9 10/29/2002
|
---|
| 19 | F ZIBRQ=0:0 S ZIBRRTN=$O(^UTILITY($J,ZIBRRTN)) Q:ZIBRRTN="" W !!,"-- ",ZIBRRTN," --",!! D RLOAD,RFIX,RSAVE,RNDX
|
---|
| 20 | EXIT ;
|
---|
| 21 | W !!,"Done.",!
|
---|
| 22 | KILL ^UTILITY($J),^TMP("ZIBRNSPC",$J),DUOUT,DTOUT,IOP
|
---|
| 23 | KILL ZIBRANS,ZIBRCAND,ZIBRCH,ZIBRCMDT,ZIBRCPOS,ZIBRDEV,ZIBRFLI,ZIBRI,ZIBRJ,ZIBRL,ZIBRLINE,ZIBROBJ,ZIBROUTP,ZIBRPART,ZIBRPLEV,ZIBRPN,ZIBRPRFX,ZIBRQ,ZIBRQUIT,ZIBRRTN,ZIBRT,ZIBRV,ZIBRW,ZIBRXC
|
---|
| 24 | Q
|
---|
| 25 | ;
|
---|
| 26 | SETUP ; INITIALIZE UTILITY
|
---|
| 27 | F ZIBRT="EXC","PEXC" F ZIBRI=0:1 S ZIBRL=$T(@ZIBRT+ZIBRI),ZIBRL=$P(ZIBRL,";;",2,255) Q:ZIBRL="" F ZIBRJ=1:1 S ZIBRW=$P(ZIBRL,"^",ZIBRJ) Q:ZIBRW="" S ^TMP("ZIBRNSPC",$J,ZIBRT,ZIBRW)=""
|
---|
| 28 | PLOOP ;
|
---|
| 29 | R "Package prefix (1-5 characters): ",ZIBRPRFX:DTIME
|
---|
| 30 | S:'$T ZIBRPRFX="^"
|
---|
| 31 | I "^"'[ZIBRPRFX I $L(ZIBRPRFX)>5!(ZIBRPRFX'?1.5U) W *7," -- Invalid prefix",! G PLOOP
|
---|
| 32 | W !
|
---|
| 33 | I "^"[ZIBRPRFX S ZIBRQUIT=1 Q
|
---|
| 34 | W !,"Enter any variables to be treated as external references --",!,"not to be namespaced -- in the form NAME1,NAME2,...",!
|
---|
| 35 | F ZIBRQ=0:0 R " Externals: ",ZIBRL:DTIME,! S:'$T ZIBRL="^" Q:"^"[ZIBRL D:ZIBRL["?" SHEXT I ZIBRL]"" F ZIBRI=1:1 S ZIBRW=$P(ZIBRL,",",ZIBRI) Q:ZIBRW="" S ^TMP("ZIBRNSPC",$J,"EXC",ZIBRW)="" W " ",ZIBRW,!
|
---|
| 36 | I ZIBRL["^" S ZIBRQUIT=1 Q
|
---|
| 37 | X ^%ZOSF("RSEL")
|
---|
| 38 | I $O(^UTILITY($J,""))="" S ZIBRQUIT=1
|
---|
| 39 | Q
|
---|
| 40 | ;
|
---|
| 41 | SHEXT ;
|
---|
| 42 | W !?2,"Currently defined externals:",!
|
---|
| 43 | S ZIBRW=""
|
---|
| 44 | F ZIBRQ=0:0 S W=$O(^TMP("ZIBRNSPC",$J,"EXC",ZIBRW)) Q:ZIBRW="" W ?3,ZIBRW,!
|
---|
| 45 | W !
|
---|
| 46 | S ZIBRL=""
|
---|
| 47 | Q
|
---|
| 48 | ;
|
---|
| 49 | EXC ;;X^Y^DIE^DIC^DT^U^DUZ^DTIME^ZTSK^ZTDESC^ZTSAVE^ZTLOAD^ZTRTN^ZTIO^ZTDTH
|
---|
| 50 | ;;
|
---|
| 51 | PEXC ;;IO^D^XB^Z
|
---|
| 52 | ;;
|
---|
| 53 | ;
|
---|
| 54 | RLOAD ; LOAD ROUTINE INTO GLOBAL
|
---|
| 55 | W "Beginning routine load ... "
|
---|
| 56 | KILL ^TMP("ZIBRNSPC",$J,"T"),^("K")
|
---|
| 57 | S ZIBRXC=$E($T(RLOADX),10,255)
|
---|
| 58 | X ZIBRXC
|
---|
| 59 | W " completed.",!
|
---|
| 60 | Q
|
---|
| 61 | ;
|
---|
| 62 | RLOADX ;;S ^TMP("ZIBRNSPC",$J,"T",0)=ZIBRRTN ZL @ZIBRRTN F ZIBRI=1:1 S ZIBRL=$T(+ZIBRI) Q:ZIBRL="" S ^(ZIBRI)=ZIBRL
|
---|
| 63 | ;
|
---|
| 64 | RSAVE ; SAVE GLOBAL TEXT AS ROUTINE
|
---|
| 65 | W "Beginning routine save ... "
|
---|
| 66 | S ZIBRXC=$P($T(RSAVEX),"RSAVEX ",2)
|
---|
| 67 | X ZIBRXC
|
---|
| 68 | W " completed.",!
|
---|
| 69 | Q
|
---|
| 70 | ;
|
---|
| 71 | ; S ZIBRRTN=^TMP("ZIBRNSPC",$J,"T",0) X "ZR X ""F ZIBRI=1:1 Q:'$D(^(ZIBRI)) ZI ^(ZIBRI)"" ZS @ZIBRRTN" ; IHS/SET/GTH XB*3*9 10/29/2002
|
---|
| 72 | RSAVEX S ZIBRRTN=^TMP("ZIBRNSPC",$J,"T",0) ZR X "F ZIBRI=1:1 Q:'$D(^(ZIBRI)) ZI ^(ZIBRI)" ZS @ZIBRRTN
|
---|
| 73 | ;
|
---|
| 74 | RNDX ; PRINT INDEX OF ROUTINE CONVERSION
|
---|
| 75 | KILL %ZIS,IOP
|
---|
| 76 | S %ZIS("A")="Enter device for auxiliary listing of variable changes",%ZIS("B")=""
|
---|
| 77 | D ^%ZIS
|
---|
| 78 | S ZIBRDEV=$S($D(DTOUT)!$D(DUOUT):"^",IO=IO(0):0,1:IO)
|
---|
| 79 | Q:ZIBRDEV["^"
|
---|
| 80 | D RNDXP
|
---|
| 81 | I ZIBRDEV U ZIBRDEV D RNDXP D ^%ZISC
|
---|
| 82 | Q
|
---|
| 83 | ;
|
---|
| 84 | RNDXP ;
|
---|
| 85 | S ZIBRV=" "
|
---|
| 86 | F ZIBRI=0:1 S:ZIBRI=4 ZIBRI=0 W:ZIBRI=0 ! S ZIBRV=$O(^TMP("ZIBRNSPC",$J,"V",ZIBRV)) Q:ZIBRV="" W ?(19*ZIBRI),$J(ZIBRV,8),">",^(ZIBRV)
|
---|
| 87 | W !
|
---|
| 88 | Q
|
---|
| 89 | ;
|
---|
| 90 | RFIX ; FIX ROUTINE LINES STORED IN GLOBAL
|
---|
| 91 | F ZIBRFLI=1:1 Q:'$D(^TMP("ZIBRNSPC",$J,"T",ZIBRFLI)) S ZIBRLINE=^(ZIBRFLI) D LSCAN S ^TMP("ZIBRNSPC",$J,"T",ZIBRFLI)=ZIBROUTP
|
---|
| 92 | W "Line modification completed.",!
|
---|
| 93 | Q
|
---|
| 94 | ;
|
---|
| 95 | LSCAN ; SCAN LINE AND REPLACE VARIABLES
|
---|
| 96 | S ZIBRCPOS=$F(ZIBRLINE," ")-1,ZIBRCH=" ",ZIBROUTP=$E(ZIBRLINE,1,ZIBRCPOS-1)
|
---|
| 97 | F ZIBRQ=0:0 Q:ZIBRCH="" D COPY1,CMD
|
---|
| 98 | Q
|
---|
| 99 | ;
|
---|
| 100 | CMD ;
|
---|
| 101 | I ZIBRCH=";" S ZIBROUTP=ZIBROUTP_$E(ZIBRLINE,ZIBRCPOS,255),ZIBRCPOS=$L(ZIBRLINE)+1,ZIBRCH="" Q
|
---|
| 102 | S ZIBRCMDT=ZIBRCH
|
---|
| 103 | F ZIBRQ=0:0 Q:": "[ZIBRCH D COPY1
|
---|
| 104 | D:ZIBRCH=":" EXPR
|
---|
| 105 | Q:ZIBRCH=""
|
---|
| 106 | D COPY1
|
---|
| 107 | I ZIBRCH'=" " D ARGS
|
---|
| 108 | Q
|
---|
| 109 | ;
|
---|
| 110 | COPY1 ;
|
---|
| 111 | S ZIBROUTP=ZIBROUTP_ZIBRCH
|
---|
| 112 | D ADVPOS
|
---|
| 113 | Q
|
---|
| 114 | ;
|
---|
| 115 | ADDOBJ ;
|
---|
| 116 | S ZIBROBJ=ZIBROBJ_ZIBRCH
|
---|
| 117 | D ADVPOS
|
---|
| 118 | Q
|
---|
| 119 | ;
|
---|
| 120 | ADVPOS ;
|
---|
| 121 | S ZIBRCPOS=ZIBRCPOS+1,ZIBRCH=$E(ZIBRLINE,ZIBRCPOS)
|
---|
| 122 | Q
|
---|
| 123 | ;
|
---|
| 124 | EXPR ;
|
---|
| 125 | F ZIBRQ=0:0 Q:" "[ZIBRCH D COPYOBJ
|
---|
| 126 | Q
|
---|
| 127 | ;
|
---|
| 128 | COPYOBJ ; COPY AN OBJECT, CHECKING FOR VARIABLES
|
---|
| 129 | I ZIBRCH="""" D QSTR Q
|
---|
| 130 | I ZIBRCH'?1AN,"%^$"'[ZIBRCH D COPY1 Q
|
---|
| 131 | S ZIBROBJ=""
|
---|
| 132 | F ZIBRQ=0:0 D ADDOBJ Q:ZIBRCH'?1AN
|
---|
| 133 | D:$E(ZIBROBJ)?1A TSTOBJ
|
---|
| 134 | S ZIBROUTP=ZIBROUTP_ZIBROBJ
|
---|
| 135 | Q
|
---|
| 136 | ;
|
---|
| 137 | QSTR ; COPY QUOTED STRING (INCLUDED DOUBLED QUOTES)
|
---|
| 138 | F ZIBRQ=0:0 D COPY1 Q:""""[ZIBRCH
|
---|
| 139 | D COPY1
|
---|
| 140 | G:ZIBRCH="""" QSTR
|
---|
| 141 | Q
|
---|
| 142 | ;
|
---|
| 143 | ARGS ; COPY ARGUMENTS -- 'DO' AND 'GO' SPECIAL CASES
|
---|
| 144 | I "GD"'[ZIBRCMDT D EXPR Q
|
---|
| 145 | F ZIBRQ=0:0 Q:" "[ZIBRCH D DGARG D:ZIBRCH=":" CPYTCOM
|
---|
| 146 | Q
|
---|
| 147 | ;
|
---|
| 148 | DGARG ; PROCESS DO/GO ARGUMENTS
|
---|
| 149 | I ZIBRCH="@" D CPYTCOM Q
|
---|
| 150 | F ZIBRQ=0:0 Q:",: "[ZIBRCH D COPY1
|
---|
| 151 | D:ZIBRCH="," COPY1
|
---|
| 152 | Q
|
---|
| 153 | ;
|
---|
| 154 | CPYTCOM ; COPIES OBJECTS THRU ZERO-LEVEL COMMA
|
---|
| 155 | S ZIBRPLEV=0
|
---|
| 156 | F ZIBRQ=0:0 D CPYTKN Q:" "[ZIBRCH Q:ZIBRCH=","&(ZIBRPLEV=0)
|
---|
| 157 | D:ZIBRCH="," COPY1
|
---|
| 158 | Q
|
---|
| 159 | ;
|
---|
| 160 | CPYTKN ; COPIES A TOKEN, MODIFYING PARENTHESIS LEVEL
|
---|
| 161 | I ZIBRCH="(" S ZIBRPLEV=ZIBRPLEV+1 D COPY1 Q
|
---|
| 162 | I ZIBRCH=")" S ZIBRPLEV=ZIBRPLEV-1 D COPY1 Q
|
---|
| 163 | D COPYOBJ
|
---|
| 164 | Q
|
---|
| 165 | ;
|
---|
| 166 | TSTOBJ ; CONDITIONALLY REPLACES A VARIABLE NAME
|
---|
| 167 | Q:$E(ZIBROBJ,1,$L(ZIBRPRFX))=ZIBRPRFX
|
---|
| 168 | Q:$D(^TMP("ZIBRNSPC",$J,"EXC",ZIBROBJ))
|
---|
| 169 | I $D(^TMP("ZIBRNSPC",$J,"V",ZIBROBJ)) S ZIBROBJ=^(ZIBROBJ) Q
|
---|
| 170 | D CHKPART
|
---|
| 171 | I ZIBRPART D VERPART Q:'ZIBRPART
|
---|
| 172 | S ZIBRCAND=ZIBRPRFX_ZIBROBJ
|
---|
| 173 | D VERCAND
|
---|
| 174 | S:ZIBRCAND="^" ZIBRCAND=ZIBROBJ
|
---|
| 175 | S ^TMP("ZIBRNSPC",$J,"V",ZIBROBJ)=ZIBRCAND
|
---|
| 176 | S ^TMP("ZIBRNSPC",$J,"NV",ZIBRCAND)=ZIBROBJ
|
---|
| 177 | S ZIBROBJ=ZIBRCAND
|
---|
| 178 | Q
|
---|
| 179 | ;
|
---|
| 180 | CHKPART ; VERIFY MATCH WITH EXCLUSION PARTIAL NAME LIST
|
---|
| 181 | S ZIBRPART=0,ZIBRPN=""
|
---|
| 182 | F ZIBRQ=0:0 S ZIBRPN=$O(^TMP("ZIBRNSPC",$J,"PEXC",ZIBRPN)) Q:ZIBRPN="" I $E(ZIBROBJ,1,$L(ZIBRPN))=ZIBRPN S ZIBRPART=1 Q
|
---|
| 183 | Q
|
---|
| 184 | ;
|
---|
| 185 | VERPART ; MANAGE PARTIAL MATCH
|
---|
| 186 | W "'",ZIBROBJ,"' begins with '",ZIBRPN,"'",!
|
---|
| 187 | R "Do you wish to treat it as an external reference? YES// ",ZIBRANS:DTIME,!
|
---|
| 188 | S:'$T ZIBRANS="Y"
|
---|
| 189 | S ZIBRANS=$E(ZIBRANS_"Y")
|
---|
| 190 | I ZIBRANS="?" W " Usage: ",ZIBRLINE,! G VERPART
|
---|
| 191 | S:ZIBRANS?1L ZIBRANS=$C($A(ZIBRANS)-32)
|
---|
| 192 | S:ZIBRANS="Y" ZIBRPART=0,^TMP("ZIBRNSPC",$J,"EXC",ZIBROBJ)=""
|
---|
| 193 | Q
|
---|
| 194 | ;
|
---|
| 195 | VERCAND ; MANAGE AUTO CANDIDATE SELECTION
|
---|
| 196 | I $L(ZIBRCAND)>8 W "'",ZIBRCAND,"' cannot be used for '",ZIBROBJ,"' due to its length.",! D GETALT G VERCAND
|
---|
| 197 | I $D(^TMP("ZIBRNSPC",$J,"NV",ZIBRCAND)),^(ZIBRCAND)'=ZIBROBJ W "'",ZIBRCAND,"' cannot be used for '",ZIBROBJ,"'; used for '",^(ZIBRCAND),"'",! D GETALT G VERCAND
|
---|
| 198 | Q
|
---|
| 199 | ;
|
---|
| 200 | GETALT ; GET ALTERNATE FOR PROPOSED CANDIDATE REPLACEMENT NAME
|
---|
| 201 | R "Please supply an alternative: ",ZIBRCAND:DTIME
|
---|
| 202 | S:'$T ZIBRCAND="^"
|
---|
| 203 | Q:ZIBRCAND="^"
|
---|
| 204 | I ZIBRCAND="?" W " Usage: ",ZIBRLINE,! G GETALT
|
---|
| 205 | I $E(ZIBRCAND,1,$L(ZIBRPRFX))=ZIBRPRFX W ! Q
|
---|
| 206 | W *7," -- does not begin with '",ZIBRPRFX,"'",!
|
---|
| 207 | R "Are you sure you want a non-namespaced variable? N// ",ZIBRANS:DTIME,!
|
---|
| 208 | S:'$T ZIBRANS="N"
|
---|
| 209 | S ZIBRANS=$E(ZIBRANS_"N")
|
---|
| 210 | I ZIBRANS?1L S ZIBRANS=$C($A(ZIBRANS)-32)
|
---|
| 211 | I ZIBRANS="Y" W ! Q
|
---|
| 212 | G GETALT
|
---|
| 213 | ;
|
---|