cQVGGLO(home,UCIL,G,S,X,COMP) ;Checksum globals for scheme S ;cQVGGLO; [ 07/02/01 12:16 PM ] ; UCI voor ZZLOG, UCI's, globals, schema, volumegroep met %LOG , switch of de compare automatisch moet opgestart worden (=1) ; T0 ;Checksum van bestanden ; ; T0F ;Checksum des fichiers ; ; T0E ;Checksum van bestanden ; ; I '$L(home)!'$L(UCIL)!'$L(G) G YZ S $ZT="ERR^"_$T(+0) S $ZT="^cA406" S D="\",IU=0 D MASTER^cQ5 S LOG="^|home|ZZLOG(""CHECK"",""G"")" S %LOG="^|"""_X_"""|cLOG(X,""CHECK"",""G"")",%LOGC="^|"""_X_"""|cLOG(X,""CENTRAL"",""G"")" S EX="\^CacheTemp\^ERRORS\^HULP\^ROUTINE\^TEMP\^TMP\^UTILITY\^ZZLOG\^cIPRINT\^cJOB\^cLOG\^cPRINT\^cQSYS\^cTABEL\^mtemp\^mtemp0\^mtemp1\^rOBJ\" ; D UCS^cQVGSG(UCIL) F I=1:1:IU S UCS=UCS(I),NMSPC=$P(UCS,","),SYS=$P(UCS,",",2) I SYS=boot D . S %nspc=$zu(5) ; remember current namespace . ZN NMSPC . S @LOG@(S,0,NMSPC,SYS,"lock")="" . D ^cA105,^cA106 S DT1=DT,TD1=TD,%GT=0,%G="",%I=0 . F S %G=$O(@LOG@(S,%G)) Q:%G="" K ^(%G,NMSPC,SYS) . 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 . ; . K ^%utility($j) S X=$$Fetch^%GD("*",1,0) . I G="*" S %G="" F S %G=$O(^%utility($J,%G)) Q:%G="" D GCHECK(%G) . I G'="*" F %J=1:1:$L(G,D) S K=$P(G,D,%J) I $L(K) D .. I K'["*" S:$E(K)'="^" K="^"_K S %G=K D PROC(%G) Q .. I $E(K,$L(K))="*" S:$E(K)'="^" K=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(^%utility($J,%G)) Q:%G=""!($E(%G,1,$L(K))]$E(K,1,$L(K))) I $E(%G,1,$L(K))=K D GCHECK(%G) .. I $E(K)="*" S %G="" F S %G=$O(^%utility($J,%G)) Q:%G="" I "*"_$E(%G,$L(%G)-$L(K)+2,$L(%G))=K D GCHECK(%G) . ; . D ^cA105,^cA106 S @LOG@(S,0,NMSPC,SYS)=%GT_D_%I_D_DT1_D_TD1_D_DT_D_TD_D . K @LOG@(S,0,NMSPC,SYS,"lock") . ZN %nspc ; switch back to where you came from ; ;I UCS=UCS(1) D ;. F Q:$$LOCK H 15 ;. D CLEAN ;. I $G(COMP),$L($O(@LOG@(S,0))) J ^cQVGCCH(S) ; opstarten controle data ;. D UNLOCK ; YZ Q ; PROC(%GN) ; I '$F(%GN,"(,")&'$F(%GN,",,")&'$F(%GN,"-") D GCHECK(%GN) Q N %GSD,IND,K,i,%GEN,OGN I $E(%GN)'="^" S %GN="^"_%GN S OGN=%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) S (%ST,%S1)=0 F S %GN=$NA(@%GN,IND-1),K=$O(@%GN@(K)) Q:K]]$P($G(%GEN(IND)),"-",2)&$D(%GEN(IND))!'$L(K) D . S %GN=$NA(@%GN@(K)) . S %T=$$CHECK(%GN),%GT=%GT+%T . S %ST=%ST+%T,%S1=%S1+%1 S @LOG@(S,$S($E(OGN)="^":"",1:"^")_OGN,NMSPC,SYS)=$E(%ST_D_%S1_D,1,253),%I=%I+1 Q ; GCHECK(%G) ; Q:$G(EX)[(D_%G_D) S %T=$$CHECK(%G),%GT=%GT+%T,%I=%I+1 S @LOG@(S,$S($E(%G)="^":"",1:"^")_%G,NMSPC,SYS)=$E(%T_D_%1_D,1,253) Q ; CHECK(%GN) ; N %GX,K S (%T,%1)=0 S:$E(%GN)'="^" %GN="^"_%GN S %GX=%GN,%GS=$QL(%GX) I $D(@%GX)#10=1 S %T=%T+$$CRC(%GX),%1=1 F S %GX=$Q(@%GX) Q:%GX="" Q:$NA(@%GX,%GS)'=$NA(@%GN,%GS) D Q:%GX="" . I $G(%GEN) S K=$$TEST(%GX) Q:K=1 I K=2 S %GX="" Q . I $QS(%GX,1)="%1" Q . S %T=%T+$$CRC(%GX),%1=%1+1 Q %T ; 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 ; CRC(%GR) S %GD=@%GR I $E(%GR,2)="[" S %GR="^"_$P(%GR,"]",2,$L(%GR,"]")) I $E(%GR,2)="|" S %GR="^"_$P(%GR,"|",3,$L(%GR,"|")) S %X=$ZCRC(%GR,1)+$ZCRC(%GD,1) Q %X ; LOCK() S IU=$G(IU,0),SW=1 F I=1:1:IU Q:'SW S @LOG@(S,0,$P(UCS(I),","),$P(UCS(I),",",2),"lock")="" I 'SW D UNLOCK LOCKZ Q SW ; UNLOCK S IU=$G(IU,0) F I=1:1:IU K @LOG@(S,0,$P(UCS(I),","),$P(UCS(I),",",2)) UNLOCKZ Q ; CLEAN I master'=slave,boot=master Q N UCI M UCI=UCS ;F I=1:1:IU I $P($G(@LOG@(S,0,$P(UCS(I),","),$P(UCS(I),",",2))),D)'?1.N K UCI(I) S %G=0 F S %G=$O(@LOG@(S,%G)) Q:%G="" D . K A . F I=1:1:IU I $D(UCI(I)) S A(UCI(I))=$P($G(@LOG@(S,%G,$P(UCI(I),","),$P(UCI(I),",",2))),D,1,2) . S SW=1 F II=2:1:IU I $D(UCI(II)),$G(A(UCI(1)))'=$G(A(UCI(II))) S SW=0 . I SW K @LOG@(S,%G) CLEANZ Q ; ERR U 0 W !!,$ZE,!! Q ; ZZ ; 24.08.01 - 9 u 19 * Cache-r3.1.8