cwBAD ; Global compare CACHE01-CACHE02 [ 12/20/2003 12:27 PM ] Quit ; TASKMGR If ^vhBAD("P","MAIN")=$ZU(5) Do AllMainGlobals If ^vhBAD("P","REMOTE")=$ZU(5) Do . Do AllRemoteGlobals . If '$D(^vhBAD("NF")),'$D(^vhBAD("NO")) ; Er zijn geen verschillen . Else Do MAIL Quit ; ; Bereken checksum van alle MainGlobals AllMainGlobals New Global Do:+$G(^vhBAD("CS","G",$ZU(5)))'=+$H . Kill ^vhBAD("CS") . Set ^vhBAD("CS","G",$ZU(5))=$H ; om te beletten dat het meerdere keren kan opgstart worden . Set Global="" . For Set Global=$O(^$Global(Global)) Quit:Global="" Do . . Quit:$D(^vhBAD("NC","G",$E(Global,2,99))) ; Deze global moet niet vergeleken worden . . Do OneMainGlobal(Global) . Set $P(^vhBAD("CS","G",$ZU(5)),"^",2)=$H Quit ; ; Bereken checksum van een MainGlobal OneMainGlobal(Global) Do:'$D(^vhBAD("NC","G",$E(Global,2,99))) ; Deze global mag vergeleken worden . Set CheckSum=$$CRC^MSMCOMP(Global) . Set ^vhBAD("CS","G",$ZU(5),$E(Global,2,99))=CheckSum Quit ; ; Bereken checksum van alle remoteglobals AllRemoteGlobals New Global,Main,MainCheckSum,CheckSumOk,Exit Set Main=^vhBAD("P","MAIN") Do:+$G(^vhBAD("CS","G",Main))=+$H . Quit:+$G(^vhBAD("CS","G",$ZU(5)))=+$H . Set ^vhBAD("CS","G",$ZU(5))=$H ; om te beletten dat het meerdere keren kan opgstart worden . Set Global="" . Kill ^vhBAD("NO"),^vhBAD("NF") . For Set Global=$O(^vhBAD("CS","G",Main,Global)) Do Quit:$G(Exit) . . If Global="" Do Quit . . . If '$P(^vhBAD("CS","G",Main),"^",2) Hang 5 Quit . . . Set Exit=$D(Exit) ; Indien afgewerkt aan de main-kant moet de loop nog een keer doorlopen worden . . If $D(^vhBAD("NC","G",Global)) Set $P(^vhBAD("CS","G",Main,Global),"^",2)="NC" Quit ; Deze global moet niet vergeleken worden . . Set CheckSumOk=$P(^vhBAD("CS","G",Main,Global),"^",2) . . Quit:$L(CheckSumOk) . . Do OneRemoteGlobal("^"_Global) . Set $P(^vhBAD("CS","G",$ZU(5)),"^",2)=$H Quit ; ; Bereken checksum van een remoteglobal OneRemoteGlobal(Global) New Main,MainCheckSum,RemoteCheckSum Set Main=^vhBAD("P","MAIN"),MainCheckSum=$G(^vhBAD("CS","G",Main,$E(Global,2,99))) Do:$L(MainCheckSum) . Kill ^vhBAD("NF","G",$ZU(5),$E(Global,2,99)),^vhBAD("NO","G",$ZU(5),$E(Global,2,99)) . If '$D(@Global) Set RemoteCheckSum="0\0\0",^vhBAD("NF","G",$ZU(5),$E(Global,2,99))=MainCheckSum_"^"_RemoteCheckSum . Else Do . . Set RemoteCheckSum=$$CRC^MSMCOMP(Global) . . Quit:MainCheckSum=RemoteCheckSum . . Set ^vhBAD("NO","G",$ZU(5),$E(Global,2,99))=MainCheckSum_"^"_RemoteCheckSum . Set $P(^vhBAD("CS","G",Main,$E(Global,2,99)),"^",2)=MainCheckSum=RemoteCheckSum Quit ; MAIL New Set D="\" Set MainSystem=$ZUTIL(110)_"@VANHOECKE.BE",Main=^vhBAD("P","MAIN") Set ToGroep="ERROR",To=$$REPLACE^vhRtn1($$USERNAME^vhUSER($$USERID^vhUSER(ToGroep),"@"),";",""",""") Xecute "Set To=$LB("""_To_""")" Set Subject="Vergelijken CACHE01("_Main_") <--> "_$ZUTIL(110)_"("_$ZU(5)_")" Set Body="Er werden fouten gevonden bij het vergelijken van CACHE01("_Main_") en " Set Body=Body_$ZUTIL(110)_"("_$ZU(5)_")."_$C(13)_"Gelieve na te zien." For FileTyp="R","G" For Not="NO","NF" Do .Quit:'$D(^vhBAD(Not,FileTyp,$ZU(5))) .Set Body=Body_$C(13)_$C(13)_$C(13)_$S(FileTyp="R":"Routines ",FileTyp="G":"Globals ",1:"")_"in namespace "_Main_" " .Set Body=Body_$S(Not="NO":"niet ok",Not="NF":"niet gevonden",1:"")_" in namespace "_$ZU(5)_$C(13)_$C(13) .Set Ref="",Count=0 .For Set Ref=$O(^vhBAD(Not,FileTyp,$ZU(5),Ref)) Quit:Ref="" Do ..Set Count=Count+1 Set:Count>6 Body=Body_$C(13),Count=1 ..Set Body=Body_Ref_$J("",20-$L(Ref)) Set Status=$$SendMiniMail^vhLib(MainSystem,To,Subject,Body) Quit ;