cQVGCOM ;Controle gelijkheid globals ;cQVGCOM; ; Compiled November 7, 2007 16:00:21 Q ; ST2(S) ;Compare, 2 (s&c) ;Clean up Global Compare & send alert S S=$G(S) Q:'$L(S) S D="\",QT=$G(QT),Q=$G(Q,"SYS"),Q1=$G(Q1) I ($ZU(110)'=$G(^cLOG($ZU(5),"SYSTEM","SLAVE"),$G(^cLOG($ZU(5),"SYSTEM","MASTER"),$ZU(110))))&($ZU(110)'=$G(^cLOG($ZU(5),"SYSTEM","CROSSOVER"),"")) Q S LOG="^|home|ZZLOG(""CHECK"",""G"",S)",%LOG="^cLOG("""_$ZU(5)_""",""CHECK"",""G"")" I '$D(@%LOG) G YZ S home=$G(@%LOG@(S,"HOME")),G=$G(@%LOG@(S,"GLOBALS"),"*") S NMSPC=$G(@%LOG@(S,"NAMESPACE")) S S1=$P(NMSPC,"\"),S2=$P(NMSPC,"\",2) D CLEAN K UCS S (K,L)=$NA(@LOG),TAB=$C(9) K A,R F S K=$Q(@K) Q:K="" Q:$NA(@K,$QL(L))'=L D Q:E . S R=$G(R)+1,R(R)=$QS(K,5)_TAB_$QS(K,4)_TAB_$QS(K,6)_TAB_"= "_@K . I $QS(K,4)'=0 S A($QS(K,5),$QS(K,4))=1 S CH=0 ST2Z Q ; ST22(T,X) ;Check globals I +$G(CH)=1 Q I '$L($G(S1))!'$L($G(S2)) Q S T=$G(T,0),X=$G(X,1) F S L=$O(A($ZU(5),L)) Q:L="" D . S H=X D C($S(H=1:S1,1:S2),$S(H=1:S2,1:S1),L,$S(+T:$S(H=1:2,1:1),1:0)) ST22Z Q ; C(X,Y,G,O) ;compare global G between X & Y, correct if O > 0 ; O = 1 -> X is the reference, if non-existant or different on Y set @G2=@G1 ; O = 2 -> Y is the reference, if non-existant on Y kill on X, if different on X set @G1=@G2 N G1,G2 K R S R=0,MAXR=5000,$ZT="ERRC" S X=$G(X),Y=$G(Y),G=$G(G),O=+$G(O) I '$L(X)!'$L(Y)!'$L(G) Q S G1="^["""_X_"""]"_$S($E(G)="^":$E(G,2,$L(G)),1:G),GX=G1 F S G1=$Q(@G1) Q:G1="" Q:$NA(@G1,$QL(GX))'=GX D I R>MAXR,'$D(R(.2)) S R(.1)="",R(.2)=" !!! partial listing !!! " . S G2="^["""_Y_"""]"_$P(G1,"]",2,$L(G1,"]")) . I '$D(@G2) D Q .. I R set "_G2_"="_G1_" performed." .. I O=2,'$D(@G2) K @G1 I R kill "_G1_" performed." .. I R set "_G2_"="_G1_" performed." .. I O=2,$D(@G2) S @G1=@G2 I R set "_G1_"="_G2_" performed." .. I R" D Q . S R=R+1,R(R)="Node "_G1,R=R+1,R(R)="Node "_G2,R=R+1,R(R)="" . S R=R+1,R(R)="One of them generated "_$ZE,R=R+1,R(R)="" . S R=R+1,R(R)="Please correct this global manually!",R=R+1,R(R)="" . S R(.1)="",VAR("B1")=L_" in namespaces "_$S(H=1:S1,1:S2)_" & "_$S(H=1:S2,1:S1),R(.2)="Compare of "_VAR("B1") . I 'T S R(.5)="",R(.6)="Report only !!" D ^cA400 Q ; ST222(S,T,X) ;Compare, 2 (s&c) ;Clean up Global Compare & send alert & repair if T >0 S S=$G(S) Q:'$L(S) S T=$G(T,0),X=$G(X,1) D ST2(S),ST22(T,X) ST222Z Q ; YZ Q ; CLEAN N A,I,N,T,%G S %G=0 F S %G=$O(@LOG@(%G)) Q:%G="" K A S (N,T)="",A=0,SW=1 D . F S N=$O(@LOG@(%G,N)) Q:N="" F S T=$O(@LOG@(%G,N,T)) Q:T="" S A=A+1,A(A)=$P(@LOG@(%G,N,T),D,1,2) . I A=1 S SW=0 . E F I=2:1:A I $G(A(I))'=A(1) S SW=0 . I SW K @LOG@(%G) CLEANZ Q ; ZZ ; 06.11.2007 - 16:00 * Cache-r5.4.4