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