cQ21 ; Cache modules ;cQ21; Q ; NSPC(v,w) ;Namespaces n i,n s w=+$g(w) i '$zu(90,0) q f i=1:1:$zu(90,0) s n=$zu(90,2,0,i) d . i ";%CACHELIB;%SYS;SAMPLES;"[(";"_n_";") q . i 'w,n=$ZU(5) q . i $l(n) s v(n)="" NSPCZ Q ; DB(V,W) ; V(database)=directory, if W=1 don't add the remote databases N I,K,CONF,SYS K V S W=+$G(W) S I="",SYS="%SYS",CONF=$G(^|SYS|SYS("GREDIR","NSACT")) Q:'$L(CONF) F S I=$O(^|SYS|SYS("GREDIR","DSLOC","master",CONF,I)) Q:I="" D . I W,$L($P(^(I),$C(1),2)) Q . S K=$P(^(I),$C(1)) I K["\",$E(K,$L(K))'="\" S K=K_"\" . S V(I)=K DBZ Q ; NS(V) ; V(namespace,"globals")=database ; V(namespace,"routines")=database N I,J,CONF,SYS K V S I="",SYS="%SYS" I ($P($P($ZV,")",2),"(",1)[" 2010") D . F S I=$O(^|SYS|SYS("CONFIG","CACHE","Namespaces",I)) Q:I="" D .. S V(I,"globals")=$P($P(^(I),$C(1),4),$C(10)) .. S V(I,"routines")=$P($P(^(I),$C(1),6),$C(10)) E D . S I="",SYS="%SYS",CONF=$G(^|SYS|SYS("GREDIR","NSACT")) Q:'$L(CONF) . F S I=$O(^|SYS|SYS("GREDIR","NSCONF",CONF,"name-space",I)) Q:I="" D .. S J=$O(^(I,"master","")) .. S V(I,"globals")=$P(^(J),$C(1)) .. S V(I,"routines")=$P(^(J),$C(1),3) NSZ Q ; ND(V) ; V(namespace,"globals")=directory ; V(namespace,"routines")=directory N A,B,I,J K V D DB(.A) D NS(.B) S I="" F S I=$O(B(I)) Q:I="" D . F J="globals","routines" I $L(B(I,J)) S V(I,J)=A(B(I,J)) NDZ Q ; CBA ; Clean 'Q'BA("%1") n Q,g,i,j,job,k,q i '$d(^cLOG($ZCVT($ZU(110),"U"),"Q"))#10 D Q s q=$g(^cLOG($ZCVT($ZU(110),"U"),"Q")) q:q="" f i=2:1:$l(q,"\") s Q=$p(q,"\",i) q:Q="" D . s g="^"_Q_"BA(""%1"")",j="" . f s j=$o(@g@(j)) q:j="" s job=$p(j,"|",4) d .. s k=0 i job s k=$zu(67,0,job) i k=1 s k=$zu(67,1,job),k=0 .. i k=0 k @g@(j) CBAZ q ; CLOG ;Clean up ^cLOG n a,i,j,k s (i,j,k)="" d NSPC(.a,1) f s i=$o(^cLOG(i)) q:i="" i i'=0,i'=$ZCVT($ZU(110),"U"),'$d(a(i)) k ^(i) f s i=$o(^cLOG($ZCVT($ZU(110),"U"),"Q",i)) q:i="" i '$d(a(i)) k ^(i) f s k=$o(^cLOG(k)) q:k="" d . f s j=$o(^cLOG(k,"CTK0","JOB",j)) q:j="" i '$d(a(j)) k ^(j) . f s j=$o(^cLOG(k,"CTK0","AUTO",j)) q:j="" d .. f s i=$o(^cLOG(k,"CTK0","AUTO",j,i)) q:i="" i '$d(a(i)) k ^(i) CLOGZ q ; CJOB ;Clean up ^cJOB N JOB,i,job D JOBS^cQSYS S i="" F S i=$O(JOB(0,i)) Q:i="" S job(JOB(0,i))=i S JOB="" F S JOB=$O(^cJOB(JOB)) Q:JOB="" I $D(^cJOB(JOB,$ZCVT($ZU(110),"U"))),'$D(job(JOB)) K ^cJOB(JOB,$ZCVT($ZU(110),"U")) CJOBZ Q ; Q ; Set up ^cLOG(boot,"Q") n e,g,k,v k v d GD^cQVGGLO($ZU(5),.v) s (e,g)="" f s g=$o(v(g)) q:g="" i g?1"^"1.3A1"BA",$d(@g@(99,1)) d . s k=$p($p(g,"^",2),"BA",1,$l(g,"BA")-1),e=e_k_"\" s ^cLOG($ZCVT($ZU(110),"U"),"Q")=e QZ q ; SW(%SW,%VAL) ; Set switch N %UU S %SW=$G(%SW) Q:'%SW S %VAL=+$G(%VAL) S %UU=$ZU(5) ZN "%SYS" D INT^SWSET ZN %UU SWZ Q ; SW10S ;Set switch to inhibit database reads and writes for all except this process D SW(10,1) Q ; SW10R ;Reset switch to inhibit database reads and writes for all except this process D SW(10,0) Q ; SW13S ;Set switch to inhibit database writes D SW(13,1) Q ; SW13R ;Reset switch to inhibit database writes D SW(13,0) Q ; CR(X) ;Copy routines to all namespaces N CS,N,R,Y K R S X=$G(X) Q:'$L(X) I X'["*" Q:'$D(^$ROUTINE(X)) S R(X)="" I X?.A1"*" S (Y,R)=$P(X,"*") F S R=$O(^$ROUTINE(R)) Q:$E(R,1,$L(Y))'=Y S R(R)="" D NSPC(.N,0) S N="" F S N=$O(N(N)) Q:N="" I N'?1.A1"1",N'?1"V".N K N(N) S CS=$ZU(5),(N,R)="" F S N=$O(N(N)) Q:N="" F S R=$O(R(R)) Q:R="" X "ZN CS ZL "_R_" ZN N ZS "_R_" ZN CS" CRZ Q ; ZZ ; 17.01.2012 - 15:58 * Cache-r6.4.9