cICMPGLO(home,UCIL,G,S,X) ;Compare globals for scheme S ;%ICMPGLO; [ 06/29/98 7:32 AM ] ;UCI voor zzlog , UCI's, globals, schema, volumegroep met %LOG ; T0 ;Compare van bestanden ; ; T0F ;Compare des fichiers ; ; I '$L(home)!'$L(UCIL)!'$L(G)!'$L(S),'$L(X) G YZ S $ZT="^cA406",D="\",IU=0 K UCS S LOG="^|home|ZZLOG(""COMPARE"",""G"")" S %LOG="^|""MGR,"_X_"""|%LOG(X,""COMPARE"",""G"")" S %LOGC="^|""MGR,"_X_"""|%LOG(X,""CENTRAL"",""G"")" S EX="\%QUERY\HULPSTA\UTILITY\ZUT\ZZLOG\SQL\SQLCHG\SQLCK\SQLCUR\SQLEMP\SQLEMPN\SQLEX\SQLIC\SQLIN\SQLIX\SQLJ\SQLP\SQLPROJ\SQLRD\SQLS\SQLSQ\SQLXP\SQLXQ\SQLXR\SQLXT\SQLXX\" ; F I=1:1:$L(UCIL,D) S K=$P(UCIL,D,I) I $L(K) S IU=IU+1,UCS(IU)=K S UCS=$ZU(5) L +@LOG@(S,0,UCS):5 E G YZ K @LOG@(S,UCS) S STA=$G(@LOG@(S,0,UCS,"start",0))+1,@LOG@(S,0,UCS,"start",0)=STA D DTD S @LOG@(S,0,UCS,"start",STA)=$H_"\"_DT_"\"_TD_"\"_$J ; D MASTER^cQ5 S $ZT="ERR^"_$T(+0) I $P(G,D)="special" S I=0,G="" D . F S I=$O(@%LOG@(S,"GLOBALS",I)) Q:I="" S G=G_^(I)_D I $P(G,D)="central" S I=0,K="" D . S K=$G(@%LOGC@($P(G,D,2),"GLOBALS")) . I $P(K,D)="special" S I=0,K="" D .. F S I=$O(@%LOGC@($P(G,D,2),"GLOBALS",I)) Q:I="" S K=K_^(I)_D . S G=K ; I G="*" S %G="%" F S %G=$O(@("^|UCS(1)|"_%G)) Q:%G="" D GCMP(%G) I G'="*" F %J=1:1:$L(G,D) S K=$P(G,D,%J) I $L(K) D . I K'["*" S %G=K D PROC(%G) Q . I $E(K,$L(K))="*" D .. S K=$E(K,1,$L(K)-1),%G=$E(K,1,$L(K)-1)_$C($A(K,$L(K))-1) .. F S %G=$O(@("^"_%G)) Q:%G=""!($E(%G,1,$L(K))]$E(K,1,$L(K))) I $E(%G,1,$L(K))=K D GCMP(%G) . I $E(K)="*" S %G="%" F S %G=$O(@("^"_%G)) Q:%G="" I "*"_$E(%G,$L(%G)-$L(K)+2,$L(%G))=K D GCMP(%G) ; D CUR("done"),STOP ; 3 L -@LOG@(S,UCS):1 ; YZ Q ; PROC(%GN) ; I '$F(%GN,"(,")&'$F(%GN,",,")&'$F(%GN,"-") D GCMP(%GN) Q N %GSD,IND,K,i,%GEN I $E(%GN)'="^" S %GN="^"_%GN S %GSD=$TR($P($P(%GN,"(",2,99),")"),"""","") S %GN=$P(%GN,"("),IND=1 F i=1:1:$L(%GSD,",") D . S K=$TR($P(%GSD,",",i),"""","") . I K["-" S %GEN(i)=K,%GEN=i Q . I $L(K) S %GEN(i)=K_"-"_K,%GEN=i I $E(%GN,$L(%GN)) . I $L(K),i=1!($L($P($P(%GN,"(",2),",",i-1))&$L($P(%GSD,",",i-1))&($P(%GSD,",",i-1)'["-")) S %GN=%GN_$S(i=1:"(",1:",")_""""_K_"""",IND=IND+1 I %GN["(" S %GN=%GN_")" S K="" I $L($P($G(%GEN(IND)),"-")) S K=$O(@%GN@($P($G(%GEN(IND)),"-")),-1) F S %GN=$NA(@%GN,IND-1),K=$O(@%GN@(K)) Q:K]]$P($G(%GEN(IND)),"-",2)&$D(%GEN(IND))!'$L(K) S %GN=$NA(@%GN@(K)) D GCMP(%GN) B Q ; GCMP(%GN) ; Q:$G(EX)[(D_%GN_D) I $E(%GN)="^" S %GN=$E(%GN,2,$L(%GN)) K DATA N K S %GS=0 I %GN["(" S %GS=$L(%GN,",") S N(UCS)=%GN,DATA(UCS)="Checking",SW=0 D CUR(%GN) I '$D(@("^|UCS|"_N(UCS))) Q ; indien ^best(,0-z of ^best(,0,0... , check of ^best(x) wel bestaat I $G(%GEN),$D(@("^|UCS|"_N(UCS)))>1 D . F I=1:1:IU I UCS(I)'=UCS,'$D(@("^|UCS(I)|"_N(UCS))) S DATA(UCS(I))="" . I $O(DATA(""))'=$O(DATA(""),-1) D LOG I $D(@("^|UCS|"_N(UCS)))#10 S DATA(UCS)=@$ZR D . F I=1:1:IU I UCS(I)'=UCS K DATA(UCS(I)) D .. I '($D(@("^|UCS(I)|"_N(UCS)))#10) S DATA(UCS(I))="" Q .. I UCS=UCS(1) S DATA(UCS(I))=@$ZR I DATA(UCS)=DATA(UCS(I)) K DATA(UCS(I)) . I $O(DATA(""))'=$O(DATA(""),-1) D LOG F S N(UCS)=$Q(@("^|UCS|"_N(UCS))) Q:N(UCS)="" Q:$NA(@N(UCS),%GS)'=$NA(@("^|UCS|"_%GN),%GS) D I N(UCS)="" Q . S DATA(UCS)=@N(UCS),N(UCS)=$$GNODE(N(UCS)) . I $G(%GEN) S K=$$TEST(N(UCS)) Q:K=1 I K=2 S N(UCS)="" Q . F I=1:1:IU I UCS(I)'=UCS K DATA(UCS(I)) D .. I '$D(@("^|UCS(I)|"_N(UCS))) S DATA(UCS(I))="" Q .. I UCS=UCS(1) S DATA(UCS(I))=@$ZR I DATA(UCS)=DATA(UCS(I)) K DATA(UCS(I)) . I $O(DATA(""))'=$O(DATA(""),-1) D LOG GCMPZ Q ; oCMP(%GN) ; Q:$G(EX)[(D_%GN_D) I $E(%GN)="^" S %GN=$E(%GN,2,$L(%GN)) K DATA N K S %GS=0 I %GN["(" S %GS=$L(%GN,",") S N(UCS)=%GN,DATA(UCS)="Checking",SW=0 D CUR(%GN) I $D(@("^|UCS|"_N(UCS)))'=1 F I=1:1:IU I UCS(I)'=UCS K DATA(UCS(I)) D . I '$D(@("^|UCS(I)|"_N(UCS))) S DATA(UCS(I))="" D LOG I '$D(@("^|UCS|"_N(UCS))) Q I $D(@("^|UCS|"_N(UCS)))#10 S DATA(UCS)=@$ZR D . F I=1:1:IU I UCS(I)'=UCS K DATA(UCS(I)) D .. I '($D(@("^|UCS(I)|"_N(UCS)))#10) S DATA(UCS(I))="" D LOG .. I UCS=UCS(1) S DATA(UCS(I))=@$ZR I DATA(UCS)'=DATA(UCS(I)) D LOG F S N(UCS)=$Q(@("^|UCS|"_N(UCS))) Q:N(UCS)="" Q:$NA(@N(UCS),%GS)'=$NA(@("^|UCS|"_%GN),%GS) D I N(UCS)="" Q . S DATA(UCS)=@N(UCS),N(UCS)=$$GNODE(N(UCS)) . I $G(%GEN) S K=$$TEST(N(UCS)) Q:K=1 I K=2 S N(UCS)="" Q . F I=1:1:IU I UCS(I)'=UCS K DATA(UCS(I)) D .. I '$D(@("^|UCS(I)|"_N(UCS))) S DATA(UCS(I))="" D LOG .. I UCS=UCS(1) S DATA(UCS(I))=@$ZR I DATA(UCS)'=DATA(UCS(I)) D LOG oCMPZ Q ; TEST(%GN) ; N OK,K S OK=0 F i=$G(%GEN):-1:1 S K=$TR($P($P(%GN,"(",2),",",i),"()""","") I $D(%GEN(i)),K'=$P(%GEN(i),"-"),K']]$P(%GEN(i),"-") S OK=1 Q I 'OK F i=$G(%GEN):-1:1 S K=$TR($P($P(%GN,"(",2),",",i),"()""","") I $D(%GEN(i)),K]]$P(%GEN(i),"-",2) S OK=2 Q Q OK ; CUR(G) D DTD S @LOG@(S,0,UCS,"current")=G,@LOG@(S,0,UCS,"current","at")=DT_"\"_TD Q ; LOG N K,J,VNR S J=N(UCS) S:$E(J)'="^" J="^"_N(UCS) S:J["(" J=$P(J,"(") S VNR=$G(@LOG@(S,UCS,J,0))+1,@LOG@(S,UCS,J,0)=VNR,K="" F S K=$O(DATA(K)) Q:K="" D . I $D(N(K)) S @LOG@(S,UCS,J,VNR," node",K)="^"_N(K) . I $D(DATA(K)) S @LOG@(S,UCS,J,VNR,K)=DATA(K) Q ; GNODE(X) N Y S X=$P(X,"^",2,$L(X,"^")),Y=$TR($P(X,"("),"[]","||") I Y["|" S X=$P(Y,"|",3)_"("_$P(X,"(",2,$L(X,"(")) Q X ; STOP D DTD S @LOG@(S,0,UCS,"stop",$G(STA,1))=$H_"\"_DT_"\"_TD_"\"_$J Q ; DTD D ^cA105,^cA106 Q ; ERR S %=$ZE D STOP,^cA400 S @LOG@(S,0,UCS,"error",$G(STA,1))=%_"\"_DT_"\"_TD Q ; ZZ ; 30.07.98 - 20 u 02 * V6.7