cVHMCG ;Copieren van MSM naar Cache (Globals) [ 03/19/2003 3:59 PM ] ; ; Global save (MSM) ; Global = "" (alle ooit gecopieerde globals copieren) ; Global+ (alle globals vanaf global) ; Global (Bepaalde global) ; "?" (Global opvragen via ^%GSEL) GS(Global,BackGrnd,Stop) New Utility Do:$ZV["MSM" .Set BackGrnd=$G(BackGrnd),Stop=$G(Stop,1) .Do INITPAR .If $ZOS(10,Dir_Ready01)=-2 Write:'BackGrnd !,$P(System,"\",2)," global restore niet gestart!" Quit .Set Global=$G(Global) .If Global=""!($E(Global,$L(Global))="+") Do ; Copieren van alle globals (eventueel bepaalde en volgende) ..New MTUci ..Set Global=$E(Global,1,$L(Global)-1),MTUci=$S($P($ZU(5),",")="MGR":"M",1:"T") ..If BackGrnd Set R="J" ..Else Do ...Write !!!!!!!!!!!!!!!!!!!!!!! ...If $L(Global),'$D(^vhVHMC(MTUci,"C","G",Global)) Do Quit ....Write "Node ",$ZR," onbekend" ...Write "Wenst u alle ooit gecopieerde globals " ...Write:$L(Global) "vanaf ",Global," " ...Write !,"van "_$ZU(5)_" naar "_$P(System,"\",2)_" te copieren ? " ...Read R ..Set R=$$UPCASE^vhRtn1(R) ..If R'="J" Write !,"Geen globals gecopieerd!" Quit ..Set:$L(Global) Global=$O(^vhVHMC(MTUci,"C","G",Global),-1) ..For Set Global=$O(^vhVHMC(MTUci,"C","G",Global)) Quit:Global="" Do ...Do GS(Global,BackGrnd,$O(^vhVHMC(MTUci,"C","G",Global))="") .Else If Global="?" Do ; Copieren van bepaalde geselekteerde globals ..Do ^%GSEL ..If '$D(^UTILITY($J)) Write !,"Geen globals geselekteerd!" Quit ..Merge Utility=^UTILITY($J) ..Set Global="" ..For Set Global=$O(Utility(Global)) Quit:Global="" Do GS(Global,BackGrnd,$O(Utility(Global))="") ..Kill ^UTILITY($J) .Else Do ; Copieren van één global ..For Do Quit:"\Receiving\Saving\"'[("\"_R_"\") ...Set Dev=$$OPEN^vhDEV(Dir,Ready01,"R","M") ...Use Dev ...Read R ...Close Dev ...Hang:"\Receiving\Saving\"[("\"_R_"\") 1 ..If R'=($P(System,"\",2)_" GR Ready") Write:'BackGrnd !,$P(System,"\",2)," global restore niet gestart!" Quit ..Set Dev=$$OPEN^vhDEV(Dir,Ready01,"W","M") ..Use Dev ..Write $P(System,"\")_" GS Ready"_$C(13) ..Close Dev ..New (Global,BackGrnd,Stop) ..Set %P=$V(20,$J,2) ..Do ...New %P ...Do LOW^%HL ..Do INITPAR ..Set FromUci=$S($P($ZU(5),",")="MGR":"M",1:"L"),ToUci=$S($E(Global)="%":"M",1:"L") ..Do:ToUci'=FromUci @(ToUci_"^vhSW") ..If $D(@("^"_Global)) Do ...If $D(^vhVHMC($S($E(Global)="%":"M",1:"T"),"S","G",Global)) Do Quit ....Write:'BackGrnd !,"Global ",Global," mag niet gecopieerd worden!!!" ....Kill ^vhVHMC($S($E(Global)="%":"M",1:"T"),"C","G",Global) ...Write:'BackGrnd !,"Global: ",Global ...Do ....Set R=Global ....New (R) ....Set Global=R ....If '$D(^vhVHMC($S($E(Global)="%":"M",1:"T"),"GS",Global)) Do .....Do INITPAR .....Do BLIND^cABIELVH($S($E(Global)="%":"M",1:"T"),"G",Dir_$P(File01,"."),"^"_Global) ....Else Do .....Do INITPAR .....Set Dev=$$OPEN^vhDEV(Dir,File01,"W","M") .....If 'Dev Write:'BackGrnd """",Dir,File01,""" niet beschikbaar!" Quit .....Kill ^UTILITY($J) .....Set ^UTILITY($J,Global)="" .....Set $ZT="ERR^%GS",(%TAP,%TAPV)=0 .....Xecute "Set %SIZE=1024*1024*#100000" .....Set vhDEVTYPE="HFS",%GTEMP="^UTILITY($J)",%QUIT=0 .....Set %CMT="Blind: ^"_Global_" from "_"???"_" to "_File01 .....Do START^%GS ...Set:Global'="vhVHMCGT" ^vhVHMC($S($E(Global)="%":"M",1:"T"),"C","G",Global)="" ...For Set Dev=$$OPEN^vhDEV(Dir,Check01,"W","M") If Dev Use Dev Write Global Close Dev Quit ...For Set Dev=$$OPEN^vhDEV(Dir,Ready01,"R","M") Do Quit:R="Save Ok" ....Set R="" ....If Dev Use Dev Read R Close Dev ....Quit:R="Save Ok" ....Hang 1 ...Set Dev=$$OPEN^vhDEV(Dir,Ready02,"R","M") ; Indien Cache02 GR opgestart, dan copie naar Cache02 ...Do:Dev ....Use Dev ....Read R ....Close Dev ....Quit:R'=($P(System,"\",3)_" GR Ready") ....Set R=$ZOS(3,Dir_File01,Dir_File02) ....Set R=$ZOS(3,Dir_Check01,Dir_Check02) ....Set Dev=$$OPEN^vhDEV(Dir,Ready02,"W","M") ....Quit:'Dev ....Use Dev ....Write $P(System,"\")_" GS Ready"_$C(13) ....Close Dev ....For Set Dev=$$OPEN^vhDEV(Dir,Ready01,"R","M") Do Quit:R="Save Ok" .....Set R="" .....If Dev Use Dev Read R Close Dev .....Quit:R="Save Ok" .....Hang 1 ....Set R=$ZOS(2,Dir_File02) ....Set R=$ZOS(2,Dir_Check02) ....Set R=$ZOS(2,Dir_Ready02) ...Set R=$ZOS(2,Dir_File01) ...Set R=$ZOS(2,Dir_Check01) ...Set R=$ZOS(2,Dir_Ready01) ...Write:'BackGrnd ?18,"--Copied" ..Else Write:'BackGrnd !,"Global ",Global," onbekend" ..Do:FromUci'=ToUci @(FromUci_"^vhSW") ..Do SET^%HL ..For Set Dev=$$OPEN^vhDEV(Dir,Ready01,"W","M") Do Quit:Dev ...Quit:'Dev ...Use Dev ...Write $P(System,"\")_" GS "_$S(Stop:"Stop",1:"Ready")_$C(13) ...Close Dev ..Quit:Stop ..For Set Dev=$$OPEN^vhDEV(Dir,Ready01,"R","M") Do Quit:R=($P(System,"\",2)_" GR Ready") ...Quit:'Dev ...Use Dev ...Read R ...Close Dev Quit ; GT Do:$ZV["MSM" .Do SELECT^%GSEL("URP1S") .Do:$D(@%GTEMP) ..Kill ^vhVHMCGT ..Set I1=$O(%UTILITY("")) ..Do:$D(%UTILITY(I1,1)) ...Set Global=I1_"(" ...For I3=1:1 Quit:'$D(%UTILITY(I1,1,I3)) Set Global=Global_""""_%UTILITY(I1,1,I3,2)_"""," ...Set Global="^"_$E(Global,1,$L(Global)-1)_")" ..Set ^vhVHMCGT=Global,vhVHMCGT=Global,$P(vhVHMCGT,"(")="^vhVHMCGT" ..Merge @vhVHMCGT=@Global ..Do GS("vhVHMCGT") ..Kill ^vhVHMCGT Do:$ZV["Cache" .New I1,Global .Set Global=^vhVHMCGT .Kill @Global .Set Global=$P(Global,"("),I1="" .For Set I1=$O(^vhVHMCGT(I1)) Quit:I1="" Merge @(Global_"("""_I1_""")")=^vhVHMCGT(I1) .Kill ^vhVHMCGT Quit ; ; Global restore (Cache) GR(BackGrnd) New (BackGrnd) Do:$ZV["Cache" .Set $ZT="ERRDEV^%GI",$ZE="" ;no variables escape! .Do INITPAR .Open Dir_Ready:"NW":0 .Use Dir_Ready .Write "Saving"_$C(13) .Close Dir_Ready .Set TRFIL=Dir_File,ASN="A" .Set IO=TRFIL,OIBS="*8",OIF="#",OIM=132,IOPAR="(""R"")",IOSL=66,IOST="RMS",IOT="RMS",MSYS="M/WNT" .Open IO:"R":0 .Set OK=$T .If 'OK Write:'BackGrnd !,"Could not open file",! Quit .If IO=$I Write:'BackGrnd !,"(cannot load from THIS device)" Quit .For Use TRFIL Read R If $E(R)="^" Set Global=$P(R,"(") Quit .Use 0 .Write:'BackGrnd !,"Restore global ",Global .Use TRFIL .Kill @Global .Do A^%GI .Do:Global="^RES" CONVRES .Do:Global="^vhVHMCGT" GT .Open Dir_Ready:"NW":0 .Use Dir_Ready .Write "Save Ok"_$C(13) .Close Dir_Ready Quit ; ; Opstarten global restore (Cache) CGRSTART(BackGrnd) New R,Dir,File,Check,Ready,Global,Wait Do:$ZV["Cache" .Set BackGrnd=$g(BackGrnd) .If $G(^vhVHMC("RUN","G")) Write:'BackGrnd !,"Global restore is reeds gestart!!!" Quit .Set ^vhVHMC("RUN","G")=1 .Do INITPAR .Xecute "Set R=$ZUTIL(140,5,Dir_File)" .Xecute "Set R=$ZUTIL(140,5,Dir_Check)" .Xecute "Set R=$ZUTIL(140,5,Dir_Ready)" .For Quit:'$G(^vhVHMC("RUN","G")) Do ..Xecute "Set R=$ZUTIL(140,1,Dir_Ready)" ..If R=-2 Do Quit ; Cache ready ...Open Dir_Ready:"NW":0 ...If '$T Kill ^vhVHMC("RUN","G") Quit ...Use Dir_Ready ...Write $P(System,"\")_" GR Ready"_$C(13) ...Close Dir_Ready ..If 'R Hang 1 Quit ..Set Wait=^vhVHMC("P","WAIT","GLOB") ..For Do Quit:R=($P(System,"\",2)_" GS Ready") Quit:'$G(^vhVHMC("RUN","G")) ; MSM ready of timeout verstreken ...Open Dir_Ready:"R":0 ...Quit:'$T ...Use Dir_Ready ...Read R ...Close Dir_Ready ...Quit:R=($P(System,"\",2)_" GS Ready") ...Set Wait=Wait-1 ...If Wait=0 Kill ^vhVHMC("RUN","G") Quit ...Hang 1 ..Quit:'$G(^vhVHMC("RUN","G")) ..Open Dir_Ready:"NW":0 ; Ontvangen van de data ..Use Dir_Ready ..Write "Receiving"_$C(13) ..Close Dir_Ready ..For Xecute "Set R=$ZUTIL(140,1,Dir_File)" Quit:R>51 Hang 1 ..Open Dir_File ..Use Dir_File ..For Read R If $E(R,1,6)="Blind:" Set Global=$P(R," ",2) Quit ; ontvangen van de global ..For Xecute "Set R=$ZUTIL(140,1,Dir_Check)" Quit:R'<$L($E(Global,2,99)) Hang 1 ; wachten op bevestiging GS complete ..Open Dir_Check ..Use Dir_Check ..Read R ..Close Dir_File,Dir_Check ..If R='$E(Global,2,99) Do Quit ; Foutieve data ...Write:'BackGrnd !,"Global ",Global," foutief!!!" ...Read R ..Do GR(BackGrnd) ; Wegschrijven van de global ..For Xecute "Set R=$ZUTIL(140,1,Dir_Ready)" Quit:R=-2 ..Set R="" ..For Do Quit:$L(R) ...Open Dir_Ready:"R":0 ...Quit:'$T ...Use Dir_Ready ...Read R ...Close Dir_Ready ..If R=($P(System,"\",2)_" GS Stop") Kill ^vhVHMC("RUN","G") ..Else Do ...Xecute "Set R=$ZUTIL(140,5,Dir_Ready)" ...Xecute "Set R=$ZUTIL(140,5,Dir_Check)" ...Xecute "Set R=$ZUTIL(140,5,Dir_Ready)" .Xecute "Set R=$ZUTIL(140,5,Dir_File)" .Xecute "Set R=$ZUTIL(140,5,Dir_Check)" .Xecute "Set R=$ZUTIL(140,5,Dir_Ready)" Quit ; ; Stoppen global restore (Cache) CGRSTOP If $ZV["Cache" Kill ^vhVHMC("RUN","G") Quit ; ; Routine directory op printer (MSM) ; Copie = "" (alle routines) ; "C" (alle gecopieerde routines) ; "N" (alle niet gecopieerde routines) ; "S" (alle niet te copieeren routines) ; Global directory op printer (MSM) ; Copie = "" (alle globals) ; "C" (alle gecopieerde globals) ; "GS" (alle gecopieerde globals via ^%GS (geen vertaling nodig, sneller)) ; "ABIE" (alle gecopieerde globals via ^cABIE (met vertaling, trager)) ; "N" (alle niet gecopieerde globals) ; "S" (alle niet te copieeren globals) GD(Copie) Set Copie=$G(Copie) Do:$ZV["MSM" .If "\\C\N\S\GS\ABIE\"'[("\"_Copie_"\") Write "???" Quit .Do INIT^vhPRINTER() .Do:$D(Print) ..Write !!?30,"MSM -> Caché ",$$EXTDATE^vhDTyp(,"DL") ..Write !?30 ..If "\C\GS\ABIE\"[("\"_Copie_"\") Write "Gekopieërde" ..Write:Copie="N" "Niet gekopieërde" ..Write:Copie="S" "Niet te kopieëren" ..Write:Copie="" "Alle" ..Write " globals" ..If "\GS\ABIE\"[("\"_Copie_"\") Write " via ",Copie ..Write !! ..Set Count=0,Global="^" ..For Set Global=$O(@Global) Quit:Global="" Quit:$E(Global)="a" Do Set Global="^"_Global ...If "S"'[Copie,$D(^vhVHMC($S($E($ZU(5),1,3)="MGR":"M",1:"T"),"S","G",Global)) Quit ...If Copie="S",'$D(^vhVHMC($S($E($ZU(5),1,3)="MGR":"M",1:"T"),"S","G",Global)) Quit ...If Copie="C",'$D(^vhVHMC($S($E($ZU(5),1,3)="MGR":"M",1:"T"),"C","G",Global)) Quit ...If Copie="N",$D(^vhVHMC($S($E($ZU(5),1,3)="MGR":"M",1:"T"),"C","G",Global)) Quit ...If Copie="N",$D(^vhVHMC($S($E($ZU(5),1,3)="MGR":"M",1:"T"),"S","G",Global)) Quit ...If "\G\A\"[("\"_$E(Copie)_"\"),'$D(^vhVHMC($S($E($ZU(5),1,3)="MGR":"M",1:"T"),"C","G",Global)) Quit ...If Copie="GS",'$D(^vhVHMC($S($E($ZU(5),1,3)="MGR":"M",1:"T"),"GS",Global)) Quit ...If Copie="ABIE",$D(^vhVHMC($S($E($ZU(5),1,3)="MGR":"M",1:"T"),"GS",Global)) Quit ...Set Count=Count+1 ...If Copie="" Write:$D(^vhVHMC($S($E($ZU(5),1,3)="MGR":"M",1:"T"),"C","G",Global)) @FMTB ...Write "^",Global,$J("",9-$L(Global)) ...If Copie="" Write:$D(^vhVHMC($S($E($ZU(5),1,3)="MGR":"M",1:"T"),"C","G",Global)) @FMTb ...Write:'(Count#8) ! ..Write # ..Do CLOSE^vhPRINTER Quit ; ; Conversie van de global ^RES CONVRES New I,%Nodes,%Node,vhNode Do:$ZV["Cache" .Set %Nodes="PRINTER\RES\WACHTW" .For I=1:1:$L(%Nodes,"\") Do ..Set %Node=$P(%Nodes,"\",I) ..Quit:%Node="" ..Set vhNode="vh"_%Node,%Node="%"_%Node ..Kill ^RES(vhNode) ..Merge ^RES(vhNode)=^RES(%Node) ..Kill ^RES(%Node) Quit ; INITPAR Do:$ZV["MSM" .Set Dir=^vhVHMC("P","DIR") .Set File01=^vhVHMC("P","DIR","GLOB","CACHE01","FILE") .Set File02=^vhVHMC("P","DIR","GLOB","CACHE02","FILE") .Set Check01=^vhVHMC("P","DIR","GLOB","CACHE01","CHECK") .Set Check02=^vhVHMC("P","DIR","GLOB","CACHE02","CHECK") .Set Ready01=^vhVHMC("P","DIR","GLOB","CACHE01","READY") .Set Ready02=^vhVHMC("P","DIR","GLOB","CACHE02","READY") .Set System=^vhVHMC("P","SYSTEM") Do:$ZV["Cache" .Set Dir=^vhVHMC("P","DIR") .Set File=^vhVHMC("P","DIR","GLOB","FILE") .Set Check=^vhVHMC("P","DIR","GLOB","CHECK") .Set Ready=^vhVHMC("P","DIR","GLOB","READY") .Set System=^vhVHMC("P","SYSTEM") Quit ;