cQCPF ;Manipulate cache.cpf ;cQCPF;
Q
;
date ;date
N %H,%J,%R S %H=1+$H,%J=%H\1461,%R=%H#1461,DJ=%J*4+1841+(%R\365),DD=%R#365,DM=1 I %R=1460 S DD=365,DJ=DJ-1
F %J=31,(%R>1154)+28,31,30,31,30,31,31,30,31,30 Q:%J'
update all mappings
N G,J,K,L,N,RPN,Y
S Z=+$G(Z),X=$G(X) I 'Z,'$L(X) Q
;Do not proceed on TBxxx systems
S K=$E($ZCVT($ZU(110),"U"),1,2) I (K="TB") Q
D TEMPI() S L=0,Y=$S(($P($P($ZV,")",2),"(",1)[" 2010"):"[Map.",1:"[NspMap.") K ^TEMP($J,"new")
F S L=$O(^TEMP($J,"org",L)) Q:L="" S K=^(L) D S(K) D
. I $E(K,1,$L(Y))=Y D
.. S (RPN,N)=$P($P(K,".",2),"]"),G=1
.. I N'?1"V".N D
... S (RPN,G)=""
... F I=1:1:$L(N) Q:$E(N,I)?1N S RPN=RPN_$E(N,I)
... F I=I:1:$L(N) Q:$E(N,I)'?1N S G=G_$E(N,I)
... I $E(N,I)?1A S RPN=RPN_"-" F I=I:1:$L(N) S RPN=RPN_$E(N,I)
.. I (N=X)!Z D
... ;Is this our globalmapping?
... S SW=0,M=$S(($P($P($ZV,")",2),"(",1)[" 2010"):"Global_BA=",1:"GloMap_1=BA,"),K=^($O(^TEMP($J,"org",L))) I $E(K,1,$L(M))=M S SW=1
... ;Skip until line is empty, if 'SW keep these lines else skip them
... F S L=$O(^TEMP($J,"org",L)) Q:L="" S K=^(L) D:'SW S(K) Q:K=""
... ;If this is our globalmapping, update the globalmapping
... I SW D G(RPN,G)
D BUC(),TEMPO()
GMUPZ Q
;
GUM(X,Z) ;Global Mapping Update for Namespace X - Caché 2010
;If Z=1 => update all mappings
N A,E,G,GM,GMC,GMD,GMX,I,J,K,M,N,NS,P,OK,OKN,RPN,Y
S Z=+$G(Z),X=$G(X) I 'Z,'$L(X) Q
I '($P($P($ZV,")",2),"(",1)[" 2010") Q
;Do not proceed on TBxxx systems
S K=$E($ZCVT($ZU(110),"U"),1,2) I (K="TB") Q
D TEMPI(),NSPC^cQ21(.A,1) S N=""
F S N=$O(A(N)) Q:N="" I ((N'?1.A1.N)&(N'?1.A1.N1"S")&(N'?1.A1.N1"M")) K A(N)
F S N=$O(A(N)) Q:N="" I (N=X)!Z D
. D GM^cQCPFR(N)
. S M=N,E="" I (N?1.A1.N1"S")!(N?1.A1.N1"M") S E=$E(N,$L(N)),M=$E(N,1,$L(N)-1)
. I N?1"V".N S M=N,Y=1
. E D
.. F I=1:1:$L(M) Q:$E(M,I)?1N
.. S Y=$E(M,I,$L(M)),M=$E(M,1,I-1)
. D GMX^cQCPFR(M,Y,E) S I=0 K GMC,GMD
. F S I=$O(GM(I)) Q:I="" S SW=1,J=0 D
.. F S J=$O(GMX(J)) Q:J="" I GM(I)=GMX(J) S SW=0 Q
.. I SW S GMD(I)=GM(I)
. F S I=$O(GMX(I)) Q:I="" S SW=1,J=0 D
.. F S J=$O(GM(J)) Q:J="" I GMX(I)=GM(J) S SW=0 Q
.. I SW S GMC(I)=GMX(I)
. S J=0,NS=$ZU(5) ZN "%SYS"
. F S J=$O(GMD(J)) Q:J="" D
.. S G=$P($P(GMD(J),"="),"_",2)
.. S OK=##Class(Config.MapGlobals).Delete(N,G)
. F S J=$O(GMC(J)) Q:J="" D
.. S P("Database")=$P(GMC(J),"=",2),G=$P($P(GMC(J),"="),"_",2)
.. S OK=##Class(Config.MapGlobals).Create(N,G,.P)
.. I 'OK S OKN=##Class(Config.MapGlobals).Modify(N,G,.P)
. ZN NS
GUMZ Q
;
CHECK ;Check CPF settings
I ($P($P($ZV,")",2),"(",1)[" 2010") D
. W !,"Checking cache.cpf",!
. D TEMPI() S ROUT="cQCPF5"
. F J=0:1 S K=$T(2+J^@ROUT) S K=$P(K,";",2,$L(K,";")) Q:K="END" D
.. S A=$P(K,";",2),Y=$P(K,";",1),B=$P(K,";",3),C=$P(B,"=",1)_"=",(L,SW,SW2,SW3)=0
.. ;Find section Y
.. I $L(Y) F S L=$O(^TEMP($J,"org",L)) Q:L="" S K=^(L) I K=Y Q
.. ;Find string A
.. F S L=$O(^TEMP($J,"org",L)) Q:L="" S K=^(L) Q:$L(Y)&(K="") D Q:SW!SW2
... I $L(C),$E($ZCONVERT(K,"U"),1,$L(C))=$ZCONVERT(C,"U") S SW3=1,Z=K
... I $L(B),$E($ZCONVERT(K,"U"),1,$L(B))=$ZCONVERT(B,"U") S SW2=1 Q
... I $L(A),$E($ZCONVERT(K,"U"),1,$L(A))=$ZCONVERT(A,"U") S SW=1 Q
.. I SW3 D
... I SW!'SW2 W !,Y D
.... W !,Z,?50,"Current Value."
.... I SW,'SW2 W !,A,?50,"Original Value."
.... I 'SW,SW2 W !,Z,?50,"Non-Standard Value."
.... W !,B,?50,"Expected Value.",!
CHECKZ Q
;
FR(A,Y,B,R) ;Find string A in module Y (if defined)
;Remove if R=del
;Replace with B is B defined and R is not defined
;Add if A not found but module Y and replacement B are defined
N L,SW,SW2,K
S A=$G(A),Y=$G(Y),B=$G(B),R=$ZCONVERT($G(R),"U")
D TEMPI() K ^TEMP($J,"new") S (L,SW,SW2)=0
;Find section Y
I $L(Y) F S L=$O(^TEMP($J,"org",L)) Q:L="" S K=^(L) D S(K) I K=Y Q
;Find string A
F S L=$O(^TEMP($J,"org",L)) Q:L="" S K=^(L) Q:$L(Y)&(K="") D Q:SW!SW2
. I $L(A),$E($ZCONVERT(K,"U"),1,$L(A))=$ZCONVERT(A,"U") S SW=1 Q:R="DEL" I $L(B),'$L(R) D S(B) Q
. D S(K)
. I $L(B),$E($ZCONVERT(K,"U"),1,$L(B))=$ZCONVERT(B,"U") S SW2=1 Q
I 'SW,'SW2,$L(Y) D:$L(B) S(B) D S("")
I L F S L=$O(^TEMP($J,"org",L)) Q:L="" S K=^(L) D S(K)
I SW D BUC(),TEMPO()
FRZ Q
;
GSKR(N,G,S)
;Save global G from the databases that make up the namespace N
;kill the global and import the global
;If S=1, do it for all Gx databases
S N=$G(N),G=$G(G),S=+$G(S) Q:'$L(N) Q:'$L(G) I $E(G)="^" S G=$E(G,2,$L(G)-1)
D GS(N,G,S)
D GK(N,G,S)
D GR(N,G,S)
GSKRZ Q
;
GS(N,G,S) ;Save global G from the databases that make up the namespace N
;If S=1, do it for all Gx databases
N %ABIE,A,B,CS,DIR,F,H,I,X,boot,bootrvg,client,cs,master,quiet,slave,workst
S N=$G(N),G=$G(G),S=+$G(S) Q:'$L(N) Q:'$L(G) I $E(G)="^" S G=$E(G,2,$L(G))
K B D NS^cQ21(.B) Q:'$D(B(N))
S H(1)=B(N,"globals"),H(0)=$P(H(1),"G",1,$L(H(1),"G")-1)_"G0"
K A,B,F D DB^cQ21(.A) S F(0)=$G(A(H(0))),F(1)=$G(A(H(1))) Q:'$D(F)
I S D
. F I=1:1:99 S H(I)=$P(H(0),"G",1,$L(H(0),"G")-1)_"G"_I D
.. I $D(A(H(I))) S F(I)=A(H(I)) Q
.. K H(I)
K A S DIR=$$INFO^cQ14,DIR=$P(DIR,"\",1,$L(DIR,"\")-1)_"\",CS=$ZU(5),I=""
F S I=$O(F(I)) Q:I="" D
. ZN "^^"_F(I) S X=$ZU(20,N)
. Q:'$D(@("^"_G)) L +@("^"_G):1 E Q
. S %ABIE=1,%ABIE("PORT")="E",%ABIE("TO")="E",%ABIE("GLRO")="G",%ABIE("FILE")=DIR_H(I)_"-"_G
. S %ABIE("COM")="Export "_G_" from "_F(I),A("^"_G)="",%ABIE("SEL")="A"
. S B=$$DEL^cQFILE(%ABIE("FILE")_".GSA") D ^cABIE L -@("^"_G)
. ZN N S X=$ZU(20,N)
ZN CS S X=$ZU(20,CS)
GSZ Q
;
GK(N,G,S) ;Kill the global from the database that make up the namespace N
;If S=1, do it for all Gx databases
N CS,F,H,I,X
S N=$G(N),G=$G(G),S=+$G(S) Q:'$L(N) Q:'$L(G) I $E(G)="^" S G=$E(G,2,$L(G))
K B D NS^cQ21(.B) Q:'$D(B(N))
S H(1)=B(N,"globals"),H(0)=$P(H(1),"G",1,$L(H(1),"G")-1)_"G0"
K A,B,F D DB^cQ21(.A) S F(0)=$G(A(H(0))),F(1)=$G(A(H(1))) Q:'$D(F)
I S D
. F I=1:1:99 S H(I)=$P(H(0),"G",1,$L(H(0),"G")-1)_"G"_I D
.. I $D(A(H(I))) S F(I)=A(H(I)) Q
.. K H(I)
K A S CS=$ZU(5),I=""
F S I=$O(F(I)) Q:I="" D
. ZN "^^"_F(I) S X=$ZU(20,N)
. Q:'$D(@("^"_G)) L +@("^"_G):1 E Q
. K @("^"_G) L -@("^"_G)
. ZN N S X=$ZU(20,N)
ZN CS S X=$ZU(20,CS)
GKZ Q
;
GR(N,G,S) ;Restore global G from the databases that make up the namespace N
;If S=1, do it for all namespaces Nx
N %ABIE,A,B,CS,DIR,H,I,L,X,boot,bootrvg,client,cs,master,quiet,slave,workst
S N=$G(N),G=$G(G),S=+$G(S) Q:'$L(N) Q:'$L(G) I $E(G)="^" S G=$E(G,2,$L(G))
K B D NS^cQ21(.B) Q:'$D(B(N))
S H(1)=B(N,"globals"),H(0)=$P(H(1),"G",1,$L(H(1),"G")-1)_"G0"
K A,L D DB^cQ21(.A) S L(N)=""
I S K L D
. F I=1:1:99 S H(I)=$P(H(0),"G",1,$L(H(0),"G")-1)_"G"_I D
.. I $D(A(H(I))) S L($ZSTRIP(N,">N")_I)="" Q
.. K H(I)
S DIR=$$INFO^cQ14,DIR=$P(DIR,"\",1,$L(DIR,"\")-1)_"\",CS=$ZU(5),I=""
F S I=$O(L(I)) Q:I="" D
. ZN L(I) S X=$ZU(20,N)
. F X=H(0),B(I,"globals") D
.. S %ABIE=1,%ABIE("PORT")="I",%ABIE("TO")="E",%ABIE("GLRO")="G",%ABIE("FILE")=DIR_X_"-"_G
.. S %ABIE("SEL")="A"
.. I '$$TST^cQFILE(%ABIE("FILE")_".GSA") D ^cABIE
. ZN N S X=$ZU(20,N)
ZN CS S X=$ZU(20,CS)
GRZ Q
;
YZ Q
;
ZZ ; 17.01.2012 - 15:58 * Cache-r6.4.9