cVHMCR ;Copieren van MSM naar Cache (Routines) [ 03/20/2003 11:14 AM ] ; ; Routine save (MSM) ; Routine = "" (alle ooit gecopieerde routines copieren) ; Routine+ (alle routines vanaf routine) ; Routine (Bepaalde routine) ; "?" (Routine opvragen via ^cRSEL) RS(Routine,BackGrnd,Stop) Do:$ZV["MSM" .Set BackGrnd=$G(BackGrnd),Stop=$G(Stop,1) .Set Routine=$G(Routine) .If Routine=""!($E(Routine,$L(Routine))="+") Do ..New R,MTUci ..Set Routine=$E(Routine,1,$L(Routine)-1),MTUci=$S($P($ZU(5),",")="MGR":"M",1:"T") ..Write !!!!!!!!!!!!!!!!!!!!!!! ..If $L(Routine),'$D(^vhVHMC(MTUci,"C","R",Routine)) Do Quit ...Write "Node ",$ZR," onbekend" ..Write "Wenst u alle ooit gecopieerde routines " ..Write:$L(Routine) "vanaf ",Routine," " ..Write !,"van "_$ZU(5)_" naar Cache te copieren ? " ..Read R ..Set R=$$UPCASE^vhRtn1(R) ..If R'="J" Write !,"Geen routines gecopieerd!" Quit ..Set:$L(Routine) Routine=$O(^vhVHMC(MTUci,"C","R",Routine),-1) ..Write !! ..For Set Routine=$O(^vhVHMC(MTUci,"C","R",Routine)) Quit:Routine="" Do ...Do RS(Routine,BackGrnd,$O(^vhVHMC(MTUci,"C","R",Routine))="") .Else If Routine="?" Do ..New Utility ..Do ^cRSEL ..If '$D(^UTILITY($J)) Write !,"Geen routines geselekteerd!" Quit ..Merge Utility=^UTILITY($J) ..Write !! ..Set Routine="" ..For Set Routine=$O(Utility(Routine)) Quit:Routine="" Do RS(Routine,BackGrnd,$O(Utility(Routine))="") ..Kill ^UTILITY($J) .Else Do ..New (Routine,BackGrnd,Stop) ..Set %P=$V(20,$J,2) ..Do ...New %P ...Do LOW^%HL ..Set Dir=^vhVHMC("P","DIR") ..Set File=^vhVHMC("P","DIR","ROUT","CACHE01","FILE") ..Set Check=^vhVHMC("P","DIR","ROUT","CACHE01","CHECK") ..Set FromUci=$S($P($ZU(5),",")="MGR":"M",1:"L"),ToUci=$S($E(Routine)="%":"M",1:"L") ..Do:ToUci'=FromUci @(ToUci_"^vhSW") ..If $D(^$ROUTINE(Routine)) Do ...If $D(^vhVHMC($S($E(Routine)="%":"M",1:"T"),"S","R",Routine)) Do Quit ....Write !,"Routine ",Routine," mag niet gecopieerd worden!!!" ....Kill ^vhVHMC($S($E(Routine)="%":"M",1:"T"),"C","R",Routine) ...Set CFiles=0 ...For Do Quit:CFiles Hang 1 ....Set CFiles=$ZOS(10,Dir_File)=-2 ....Set:CFiles CFiles=$ZOS(10,Dir_Check)=-2 ...Do ....Set R=Routine ....New (R) ....Set Routine=R ....Set Dir=^vhVHMC("P","DIR") ....Set File=^vhVHMC("P","DIR","ROUT","CACHE01","FILE") ....Set Check=^vhVHMC("P","DIR","ROUT","CACHE01","CHECK") ....Do BLIND^cABIELVH($S($E(Routine)="%":"M",1:"T"),"R",Dir_$P(File,"."),Routine) ...Set:$E(Routine,1,5)'="vhVHMC" ^vhVHMC($S($E(Routine)="%":"M",1:"T"),"C","R",Routine)="" ...For Set Dev=$$OPEN^vhDEV(Dir,Check,"W","M") If Dev Use Dev Write Routine Close Dev Quit ...Set CFiles=0 ...For Do Quit:CFiles Hang 1 ....Set CFiles=$ZOS(10,Dir_File)=-2 ....Set:CFiles CFiles=$ZOS(10,Dir_Check)=-2 ...Write !,"Routine: ",Routine,?18,"--Copied" ..Else Write !,"Routine ",Routine," onbekend" ..Do:FromUci'=ToUci @(FromUci_"^vhSW") ..Do SET^%HL ..Write:Stop !!?10,"** DONE **" Quit ; ; Routine restore (Cache) RR New Do:$ZV["Cache" .Set Dir=^vhVHMC("P","DIR") .Set File=^vhVHMC("P","DIR","ROUT","FILE") .Do BLIND^cABIELVH("R",Dir_$P(File,".")) .Set Dir=^vhVHMC("P","DIR") .Set File=^vhVHMC("P","DIR","ROUT","FILE") .Set Check=^vhVHMC("P","DIR","ROUT","CHECK") .Open Dir_Check .Use Dir_Check Read Routine .Close Dir_Check .If Routine="RCM2C" Do ..Xecute "Set R=$ZUTIL(140,5,Dir_Check)" ..Do RC(Routine) ..Xecute "Set R=$ZUTIL(140,5,Dir_File)" .Else Do ..Write !,"Routine:",?9,Routine,?18,"--Received" ..Xecute "Set R=$ZUTIL(140,5,Dir_File)" ..Xecute "Set R=$ZUTIL(140,5,Dir_Check)" Quit ; ; Routine compare (MSM) ; Routine = "" (alle ooit gecopieerde routines vergelijken) ; Routine+ (alle routines vanaf routine) ; Routine (Bepaalde routine) ; "?" (Routine opvragen via ^cRSEL) RC(Routine) Do:$ZV["MSM" .If '$G(AllRout),'$G(SomeRout) New NotFound,NotOk,Compared .Set Routine=$G(Routine) .If Routine=""!($E(Routine,$L(Routine))="+") Do ..New R,NotFound,NotOk,Compared,AllRout,MTUci ..Set Routine=$E(Routine,1,$L(Routine)-1),MTUci=$S($P($ZU(5),",")="MGR":"M",1:"T") ..Write !!!!!!!!!!!!!!!!!!!!!!! ..If $L(Routine),'$D(^vhVHMC(MTUci,"C","R",Routine)) Do Quit ...Write "Node ",$ZR," onbekend" ..Write "Wenst u alle routines " ..Write:$L(Routine) "vanaf ",Routine," " ..Write "van "_$ZU(5)_" met Cache te vergelijken ? " ..Read R ..Set R=$$UPCASE^vhRtn1(R) ..If R'="J" Write !,"Geen routines vergeleken!" Quit ..Set:$L(Routine) Routine=$O(^vhVHMC(MTUci,"C","R",Routine),-1),AllRout=1 ..Write !! ..For Set Routine=$O(^vhVHMC(MTUci,"C","R",Routine)) Quit:Routine="" Do ...Do RC(Routine) ..Do RCEND(Compared,.NotFound,.NotOk) .Else If Routine="?" Do ..New Utility,NotFound,NotOk,Compared,SomeRout ..Do ^cRSEL ..If '$D(^UTILITY($J)) Write !,"Geen routines geselekteerd!" Quit ..Write !! ..Merge Utility=^UTILITY($J) ..Set Routine="",SomeRout=1 ..For Set Routine=$O(Utility(Routine)) Quit:Routine="" Do RC(Routine) ..Kill ^UTILITY($J) ..Do RCEND(Compared,.NotFound,.NotOk) .Else Do ..New (Routine,NotFound,NotOk,Compared,AllRout,SomeRout) ..Set %P=$V(20,$J,2) ..Do ...New %P ...Do LOW^%HL ..Set Dir=^vhVHMC("P","DIR") ..Set File=^vhVHMC("P","DIR","ROUT","CACHE01","FILE") ..Set Check=^vhVHMC("P","DIR","ROUT","CACHE01","CHECK") ..Set FromUci=$S($P($ZU(5),",")="MGR":"M",1:"L"),ToUci=$S($E(Routine)="%":"M",1:"L") ..Do:ToUci'=FromUci @(ToUci_"^vhSW") ..If $D(^$ROUTINE(Routine)) Do ...Set CFiles=0 ...For Do Quit:CFiles Hang 1 ....Set CFiles=$ZOS(10,Dir_File)=-2 ....Set:CFiles CFiles=$ZOS(10,Dir_Check)=-2 ...Do ....Xecute "ZL @Routine ZI "" ^""_Routine:+0 ZI ""RCM2C ;""_Routine:+0 ZS RCM2C" ....Set R=Routine ....New (R) ....Set Routine=R ....Set Dir=^vhVHMC("P","DIR") ....Set File=^vhVHMC("P","DIR","ROUT","CACHE01","FILE") ....Set Check=^vhVHMC("P","DIR","ROUT","CACHE01","CHECK") ....Do BLIND^cABIELVH($S($E(Routine)="%":"M",1:"T"),"R",Dir_$P(File,"."),"RCM2C") ....Xecute "ZR ZS RCM2C" ...For Set Dev=$$OPEN^vhDEV(Dir,Check,"W","M") If Dev Use Dev Write "RCM2C" Close Dev Quit ...Set CFiles=0 ...For Do Quit:CFiles Hang 1 ....Set CFiles=$ZOS(10,Dir_File)=-2 ...For Set Dev=$$OPEN^vhDEV(Dir,Check,"R","M") If Dev Use Dev Read CFiles If $P(CFiles,";")=Routine Close Dev Quit ...Write !,"Routine: ",Routine,?18,"--Verified --",$P("not found\not ok\ok","\",$P(CFiles,";",2)+1) ...Set R=$ZOS(2,Dir_Check) ...Set Compared=$G(Compared)+1 ...Set:'$P(CFiles,";",2) NotFound(Routine)="" ...Set:$P(CFiles,";",2)=1 NotOk(Routine)="" ..Else Write !,"Routine ",Routine," onbekend" ..Do:FromUci'=ToUci @(FromUci_"^vhSW") ..Do SET^%HL ..If '$G(AllRout),'$G(SomeRout) Do RCEND(Compared,.NotFound,.NotOk) Do:$ZV["Cache" .New (Routine) .Xecute "ZL @Routine Set R=$T(+1),MRoutine=$P(R,"";"",2),R=$T(+2),Routine=$P(R,"" ^"",2) For I=3:1 Set R=$T(+I) Quit:R="""" Set New(I-2)=R" .Xecute "ZR ZS RCM2C Set Exist=$D(^$ROUTINE(Routine))" .Do:Exist ..Xecute "ZL @Routine For I=1:1 Set R=$T(+I) Quit:R="""" Set Old(I)=R" ..Set Ok=$O(Old(""),-1)=$O(New(""),-1) ..Quit:'Ok ..For I=2:1 Quit:'$D(Old(I)) Set Ok=Old(I)=New(I) Quit:'Ok .Set Dir=^vhVHMC("P","DIR") .Set Check=^vhVHMC("P","DIR","ROUT","CHECK") .Open Dir_Check:"WN" .Use Dir_Check Write MRoutine_";"_(Exist+$G(Ok)) .Close Dir_Check Quit ; ; Resultaat van de vergelijking tonen RCEND(Compared,NotFound,NotOk) New Routine,Dev Set Routine="",NotFound=0 For Set Routine=$O(NotFound(Routine)) Quit:Routine="" Set NotFound=NotFound+1 Set Routine="",NotOk=0 For Set Routine=$O(NotOk(Routine)) Quit:Routine="" Set NotOk=NotOk+1 Write !!,"Compared",?10,": ",Compared Write !,"Ok",?10,": ",Compared-NotOk-NotFound Write !,"Not ok",?10,": ",NotOk Write !,"Not found",?10,": ",NotFound If NotOk!NotFound Do RC1 .Write !,"List incorrect routines : ",*27,7 .Write !," = no = yes",?26,*27,"[A",*27,7 .For Write *27,8,*27,"[0K" Read R Set R=$$UPCASE^vhRtn1(R) Quit:"NY"[$E(R)&$L(R) .Write *27,8,$S($E(R)="Y":"YES",1:"NO") .If $E(R)'="Y" Write ! Quit .Write !,"Enter output device <0>: ",*27,7 .Read Dev .Goto RC1:Dev="^" .Write *27,8,Dev,*27,"[0K",! .If Dev Open Dev Use Dev .If NotFound Do ..Write !,"Not found in Cachè",!! ..Set Routine="",Count=0 ..For Set Routine=$O(NotFound(Routine)) Quit:Routine="" Do ...Set Count=Count+1 ...Write Routine,$J("",10-$L(Routine)) Write:'(Count#8) ! ..Write:NotOk # .If NotOk Do ..Write !,"Not ok in Cachè",!! ..Set Routine="",Count=0 ..For Set Routine=$O(NotOk(Routine)) Quit:Routine="" Do ...Set Count=Count+1 ...Write Routine,$J("",10-$L(Routine)) Write:'(Count#8) ! If $G(Dev) Write # Close Dev Write !!?10,"** DONE **" Quit ; ; Opstarten routine restore (Cache) CRRSTART(BackGrnd) New R,Dir,File,Check,Routine Do:$ZV["Cache" .Set BackGrnd=$G(BackGrnd) .If $G(^vhVHMC("RUN","R")) Write !,"Routine restore is reeds gestart!!!" .Else Do ..Set ^vhVHMC("RUN","R")=1 ..Set Dir=^vhVHMC("P","DIR") ..Set File=^vhVHMC("P","DIR","ROUT","FILE") ..Set Check=^vhVHMC("P","DIR","ROUT","CHECK") ..For Quit:'$G(^vhVHMC("RUN","R")) Do ...Xecute "Set R=$ZUTIL(140,1,Dir_File)" ...If R'>36 Hang 1 Quit ...Open Dir_File ...Use Dir_File ...For Read R If $E(R,1,6)="Blind:" Set Routine=$P(R," ",2) Quit ...For Xecute "Set R=$ZUTIL(140,1,Dir_Check)" Quit:R'<$L(Routine) Hang 1 ...Open Dir_Check ...Use Dir_Check ...Read R ...Close Dir_File,Dir_Check ...If R'=Routine Do Quit ....Write !,"Routine ",Routine," foutief!!!" ....Read R ...Do RR Quit ; ; Stoppen routine restore (Cache) CRRSTOP If $ZV["Cache" Set ^vhVHMC("RUN","R")=0 Quit ; ; Routine directory op printer (MSM) ; Copie = "" (alle routines) ; "C" (alle gecopieerde routines) ; "N" (alle niet gecopieerde routines) ; "S" (alle niet te copieeren routines) RD(Copie) New Print,Routine,Count Set Copie=$G(Copie) Do:$ZV["MSM" .If "\\C\N\S\"'[("\"_Copie_"\") Write "???" Quit .Do INIT^vhPRINTER() .Do:$D(Print) ..Write !!?30,"MSM -> Caché ",$$EXTDATE^vhDTyp(,"DL") ..Write !?30,$S(Copie="C":"Gekopieërde",Copie="N":"Niet gekopieërde",Copie="S":"Niet te kopieëren",1:"Alle")," routines",!! ..Set (Count,Routine)="" ..For Set Routine=$O(^$ROUTINE(Routine)) Quit:Routine="" Quit:$E(Routine)="a" Do ...If "S"'[Copie,$D(^vhVHMC($S($E($ZU(5),1,3)="MGR":"M",1:"T"),"S","R",Routine)) Quit ...If Copie="S",'$D(^vhVHMC($S($E($ZU(5),1,3)="MGR":"M",1:"T"),"S","R",Routine)) Quit ...If Copie="C",'$D(^vhVHMC($S($E($ZU(5),1,3)="MGR":"M",1:"T"),"C","R",Routine)) Quit ...If Copie="N",$D(^vhVHMC($S($E($ZU(5),1,3)="MGR":"M",1:"T"),"C","R",Routine)) Quit ...If Copie="N",$D(^vhVHMC($S($E($ZU(5),1,3)="MGR":"M",1:"T"),"S","R",Routine)) Quit ...Set Count=Count+1 ...If Copie="" Write:$D(^vhVHMC($S($E($ZU(5),1,3)="MGR":"M",1:"T"),"C","R",Routine)) @FMTB ...Write Routine,$J("",10-$L(Routine)) ...If Copie="" Write:$D(^vhVHMC($S($E($ZU(5),1,3)="MGR":"M",1:"T"),"C","R",Routine)) @FMTb ...Write:'(Count#8) ! ..Write # ..Do CLOSE^vhPRINTER Quit ;