Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: ZTM2

ZTM2.m

Go to the documentation of this file.
  1. %ZTM2 ;SEA/RDS-TaskMan: Manager, Part 4 (Link Handling 1) ;22 May 2003 10:17 am
  1. ;;8.0;KERNEL;**23,118,275**;JUL 10, 1995
  1. ;
  1. S ZTJOBIT=0
  1. S ZTI=$O(^%ZIS(14.5,"B",ZTDVOL,""))
  1. S ZTS=^%ZIS(14.5,ZTI,0)
  1. I $P(ZTS,U,4)="Y" G DOWN
  1. S ZTM=$P(ZTS,U,6)
  1. S ZTN=$P(ZTS,U,7) I ZTN S ZTN=$P(^%ZIS(14.5,ZTN,0),U)
  1. I ZTN="" S ZTN=ZTDVOL
  1. I ZTN=%ZTVOL S ZTJOBIT=1 Q
  1. I $D(^%ZTSCH("LINK",ZTDVOL)) G DOWN
  1. I ZTYPE="C" S ZTJOBIT=1 Q
  1. ;
  1. OCPU ;XLINK--send task to manager on another volume set
  1. ;First check how many jumps to other volume sets we have done.
  1. I $P(^%ZTSK(ZTSK,.02),"^",3)>2 D REJCT^%ZTM1("Too many hops") Q
  1. S $P(^%ZTSK(ZTSK,.02),"^",3)=$P($G(^%ZTSK(ZTSK,.02)),"^",3)+1
  1. S X="EROCPU^%ZTM2",@^%ZOSF("TRAP")
  1. I '$D(^[ZTM,ZTN]%ZTSCH("RUN")) S ZTT=$H G O1
  1. S ZTT=^[ZTM,ZTN]%ZTSCH("RUN")
  1. ;
  1. O1 L +^[ZTM,ZTN]%ZTSK(-1):5
  1. S ZTS=^[ZTM,ZTN]%ZTSK(-1)+1
  1. F ZT=0:0 Q:'$D(^[ZTM,ZTN]%ZTSK(ZTS)) S ZTS=ZTS+1
  1. S ^[ZTM,ZTN]%ZTSK(-1)=ZTS
  1. ;
  1. L -^[ZTM,ZTN]%ZTSK(-1),+^[ZTM,ZTN]%ZTSK(ZTS)
  1. D TSKSTAT^%ZTM1(1,"Ready to Move") ;S $P(^%ZTSK(ZTSK,.1),U,1,3)=1_U_ZTT_U
  1. S %X="^%ZTSK(ZTSK,",%Y="^[ZTM,ZTN]%ZTSK(ZTS," D %XY^%RCR
  1. ;Now schedule task.
  1. S $P(^[ZTM,ZTN]%ZTSK(ZTS,0),U,6)=ZTT,^[ZTM,ZTN]%ZTSCH($$H3^%ZTM(ZTT),ZTS)=""
  1. L -^[ZTM,ZTN]%ZTSK(ZTS)
  1. ;
  1. S X="",@^%ZOSF("TRAP")
  1. K ^%ZTSK(ZTSK,.3)
  1. D TSKSTAT^%ZTM1(6,"^Moved to "_ZTM_","_ZTN_" as task number "_ZTS)
  1. K ZT,ZT1,ZTD,ZTI,ZTM,ZTN,ZTR,ZTS,ZTT,ZTREP Q
  1. ;
  1. EROCPU ;OCPU--trap dropped link and reroute task
  1. S X="",@^%ZOSF("TRAP")
  1. I $D(^%ZTSCH("LINK"))[0 S ^("LINK")=$H
  1. S ^%ZTSCH("LINK",ZTDVOL)=1
  1. ;
  1. DOWN ;XLINK/EROCPU--reroute XCPU task whose link is down
  1. D REQRD I $D(ZTREQUIR) G ORIGNL
  1. I ZTIO]"",$D(IOCPU)#2,IOCPU]"" G LIST
  1. S ZTREP(ZTDVOL)=""
  1. S ZTREP=$P(^%ZIS(14.5,ZTI,0),U,8)
  1. I ZTREP S ZTREP=$P(^%ZIS(14.5,ZTREP,0),U)
  1. I ZTREP="" G ORIGNL
  1. I $D(ZTREP(ZTREP))#2 G ORIGNL
  1. D1 ;
  1. I $D(^%ZTSK(ZTSK,.01))[0 S ^%ZTSK(ZTSK,.01)=ZTUCI_U_ZTDVOL
  1. S Y=$O(^%ZIS(14.6,"AT",ZTUCI,ZTDVOL,ZTREP,""))
  1. I Y="" S Y=ZTUCI
  1. S ZTUCI=Y,ZTDVOL=ZTREP
  1. I ZTDVOL=%ZTVOL S X=ZTUCI_","_ZTDVOL X ^%ZOSF("UCICHECK") S:0'[Y ZTUCI=Y I 0[Y S %ZTREJCT=1
  1. S $P(^%ZTSK(ZTSK,.02),U)=ZTUCI
  1. I ZTDVOL'=%ZTVOL S $P(^%ZTSK(ZTSK,.02),U,2)=ZTDVOL
  1. E S $P(^%ZTSK(ZTSK,.02),U,2)=""
  1. I %ZTREJCT D TSKSTAT^%ZTM1("B","BAD DESTINATION UCI") Q
  1. I ZTDVOL=%ZTVOL G SEND^%ZTM
  1. G XLINK
  1. ;
  1. REQRD ;DOWN--is dropped link required?
  1. S ZTI=$O(^%ZIS(14.5,"B",ZTDVOL,""))
  1. I ZTI="" Q
  1. I $D(^%ZIS(14.5,ZTI,0))#2 S ZTS=^(0)
  1. E Q
  1. I $P(ZTS,U,5)="Y" S ZTREQUIR=ZTDVOL
  1. Q
  1. ;
  1. ORIGNL ;DOWN--give up trying to reroute; make it wait for original destination
  1. I $D(^%ZTSK(ZTSK,.01))[0 G LIST
  1. S ZTORIGNL=^%ZTSK(ZTSK,.01)
  1. S ZTUCI=$P(ZTORIGNL,U)
  1. S ZTDVOL=$P(ZTORIGNL,U,2)
  1. S $P(^%ZTSK(ZTSK,.02),U)=ZTUCI
  1. I ZTDVOL'=%ZTVOL S $P(^%ZTSK(ZTSK,.02),U,2)=ZTDVOL
  1. E S $P(^%ZTSK(ZTSK,.02),U,2)=""
  1. ;
  1. LIST ;DOWN/ORIGNL--place task on waiting list for down volume
  1. I $D(^%ZTSCH("LINK"))[0 S ^("LINK")=$H
  1. I ZTYPE'="C" S ^%ZTSCH("LINK",ZTDVOL,ZTDTH,ZTSK)=""
  1. E D
  1. .S ^%ZTSCH("LINK",ZTDVOL)=1
  1. .L +^%ZTSCH("C",ZTDVOL):5
  1. .S ^%ZTSCH("C",ZTDVOL,ZTDTH,ZTSK)=""
  1. .L -^%ZTSCH("C",ZTDVOL)
  1. .Q
  1. D TSKSTAT^%ZTM1("G","Link Wait")
  1. L K ZT,ZT1,ZTD,ZTI,ZTM,ZTN,ZTORIGNL,ZTR,ZTS,ZTT,ZTREP Q
  1. ;
  1. ERCL ;I2^%ZTM - error in C list
  1. Q:$$OOS^%ZTM(ZTVOL) N %
  1. S %=$O(^%ZIS(14.7,"B",ZTVOL,0))
  1. I %>0 S $P(^%ZIS(14.7,%,0),U,11)=1
  1. Q
  1. LKUP(VS) ;Lookup a VS and place in ZTVS
  1. N %,%1
  1. S %=$O(^%ZIS(14.5,"B",VS,0)),%1=$G(^%ZIS(14.5,+%,0))
  1. S %ZTVS(VS)=%1,%ZTVS(VS,"IFN")=% Q