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

INHOV1.m

Go to the documentation of this file.
  1. INHOV1 ;JMB; 24 Aug 95 14:23; Verify Background Processes
  1. ;;3.01;BHL IHS Interfaces with GIS;;JUL 01, 2001
  1. ;COPYRIGHT 1991-2000 SAIC
  1. ;
  1. Q
  1. EN ;Called from INHOP
  1. ;New Statements
  1. N DB,BPC,DC,INDEST,DTOUT,GL,S,TAB,X
  1. N INDAT,INEXIT,IN0,INH,INI,INL,INRUN,INITER,INK,INQ,INWARN,INSIG,INT
  1. ;
  1. ;Initialize report variables
  1. S INITER=0,INEXIT=0,INPAR("START")=$H
  1. ;Initialize TABs
  1. S TAB(1)=5,TAB(2)=37,TAB(3)=49,TAB(4)=58,TAB(5)=66,TAB(6)=74
  1. ;Load array (INDEST) of queues to check
  1. D DES0^INHUTS1
  1. ;Report start time
  1. S INDAT("ST")=$$CDATASC^UTDT(INPAR("START"),1,1)
  1. ;
  1. ENRPT ;Repeat entry point
  1. ;
  1. ;Init scan variables
  1. S INITER=INITER+1,INPAR("QSTART")=$H
  1. ;Initialize flags
  1. S INWARN=0,INSIG=0
  1. ;
  1. ;Set warning flag INWARN to 1 if another user is running this report.
  1. L +^INTHPC("AVERIFY"):1 E S INWARN=1
  1. S BPC=0
  1. F S BPC=$O(INDEST(BPC)) Q:'BPC D VERIFY(BPC)
  1. L:'INWARN -^INTHPC("AVERIFY")
  1. ;
  1. ;Repeat display for terminals, one time for printers
  1. I 'INTASKED D DIS^INHOV2 S INEXIT=$$QUIT^INHUTS G:INEXIT EXIT
  1. ;Check for end of tasked report
  1. I INTASKED,INITER'<INPAR("ITER") D DIS^INHOV2 G EXIT
  1. ;
  1. ;hang until next recalculation
  1. F X=1:1:INPAR("REPAINT") S:'INTASKED INEXIT=$$QUIT^INHUTS Q:INEXIT H 1
  1. G:INEXIT EXIT
  1. G ENRPT
  1. ;
  1. EXIT ;End of program
  1. ;Close device
  1. D ^%ZISC
  1. Q
  1. ;
  1. VERIFY(INI) ;Verify if all active processes are running
  1. ;This is the program main loop. It loops through all active
  1. ; background processes.
  1. ;Where:
  1. ; INI - Process Id
  1. ;
  1. N IN0
  1. S IN0=$G(^INRHB("RUN",INI))
  1. D STAT(INI,0,IN0)
  1. D:INPAR("DETAIL") VFY2(INI)
  1. D IN2^INHOV2(INI)
  1. Q
  1. ;
  1. STAT(INQ,INK,IN0) ;Build Statistics
  1. ; INQ - Background process Id
  1. ; INK - Server Id (INK=0 if process is not a server)
  1. ; IN0 - Data string from ^INRHB
  1. ;OUTPUT:
  1. ; Updated INDAT(sub1,sub2,sub3,sub4) array with latest information:
  1. ; Where:
  1. ; sub1 - Process Id number (ex. 1 for the Output Controller)
  1. ; - "CT": Current Time formatted (no sub2,sub3,sub4)
  1. ; - "RT": Run Time (no sub2,sub3,sub4)
  1. ; - "AR": Avg Run Time per Iteration (no sub2,sub3,sub4)
  1. ; sub2 - 0: Not a server; >0: Server Id number
  1. ; sub3 - 0: Last Run Time Stats (there is sub4)
  1. ; - 1: Last Event Time Stats (there is sub4)
  1. ; - "RUN","ITR","MES" (no sub4)
  1. ; sub4 - "ETS","ETF","LRU","MIN","MAX" or "AET" (i.e. Stats)
  1. ;
  1. ; MIN - Minimum elapsed time in sec
  1. ; MAX - Maximum elapsed time in sec
  1. ; AET - Average elapsed time in sec
  1. ; LRU - Last Run Time/Last Event Time in sec
  1. ; ITR - Current Background Process iteration
  1. ; RUN - Running status
  1. ; MES - Message
  1. ; ETS - Elapsed time in sec
  1. ;
  1. N S,INH,INL,INRUN
  1. ;
  1. ;Current time formatted
  1. S INDAT("CT")=$$CDATASC^UTDT($$NOW^UTDT,1,1)
  1. ;Calculate run time = now-start
  1. S INRUN=$$TDIF^INHUTS(INPAR("START"),$H)
  1. S INDAT("RT")=$$FORMAT^INHUTS(INRUN)
  1. ;Calculate average run time per iteration
  1. S INDAT("AR")=$$FORMAT^INHUTS(INRUN\INITER,2)
  1. ;
  1. ;Is background process running?
  1. S:'INK S=$$VER("^INRHB(""RUN"")",INQ)
  1. S:INK S=$$VER("^INRHB(""RUN"",""SRVR"",INQ)",INK)
  1. S INDAT(INQ,INK,"RUN")=$S(S=1:"",'S:"N",S=2:"N",S=3:"Q")
  1. ;Set flag to display message to user on the meaning of "Q"
  1. S:INDAT(INQ,INK,"RUN")="Q" INSIG=1
  1. ;
  1. ;Message
  1. S:INPAR("DETAIL") INDAT(INQ,INK,"MES")=$P(IN0,U,2)
  1. ;
  1. ;Number of iterations for each process:
  1. ;If the process is deactivated while running this report the count
  1. ;will not increase. The count will resume if the process is reactivated.
  1. S:INDAT(INQ,INK,"RUN")="" INDAT(INQ,INK,"ITR")=$G(INDAT(INQ,INK,"ITR"))+1
  1. ;
  1. S INH=$H
  1. ;Last Run Stats
  1. S INL=$P(IN0,U) D:INL STA1(0,INH,INL)
  1. ;Last Event Stats
  1. S INL=$P(IN0,U,3) D:INL&INPAR("DETAIL") STA1(1,INH,INL)
  1. Q
  1. ;
  1. STA1(DA,DB,DC) ;Caculates Stats
  1. ;INPUT:
  1. ; DA - 0 : Last Run Update Stats
  1. ; 1 : Last Event Stats
  1. ; DB - Current Time in $H format
  1. ; DC - Last Update in $H format
  1. ;OUTPUT:
  1. ; Updated INDAT array
  1. ;
  1. ;Elapsed Time
  1. S INDAT(INQ,INK,DA,"ELS")=$$TDIF^INHUTS(DC,DB) ;in sec
  1. ;
  1. ;Total Elapsed
  1. S:INDAT(INQ,INK,"RUN")="" INDAT(INQ,INK,DA,"ELT")=$G(INDAT(INQ,INK,DA,"ELT"))+INDAT(INQ,INK,DA,"ELS")
  1. ;
  1. ;Last Run Update/Last Message
  1. S INDAT(INQ,INK,DA,"LRU")=DC
  1. ;
  1. ;Do not compute Stats if process is not running
  1. I INDAT(INQ,INK,"RUN")'="" Q
  1. ;
  1. ;Average Elapsed Time:
  1. S INDAT(INQ,INK,DA,"AET")=INDAT(INQ,INK,DA,"ELT")/INDAT(INQ,INK,"ITR")
  1. ;
  1. ;Minimum Elapsed Time
  1. S:INDAT(INQ,INK,DA,"ELS")<$G(INDAT(INQ,INK,DA,"MIN"))!($G(INDAT(INQ,INK,DA,"MIN"))="") INDAT(INQ,INK,DA,"MIN")=INDAT(INQ,INK,DA,"ELS")
  1. ;
  1. ;Maximum Elapsed Time
  1. S:INDAT(INQ,INK,DA,"ELS")>$G(INDAT(INQ,INK,DA,"MAX"))!($G(INDAT(INQ,INK,DA,"MAX"))="") INDAT(INQ,INK,DA,"MAX")=INDAT(INQ,INK,DA,"ELS")
  1. Q
  1. ;
  1. VER(GL,DA) ;Verify if Background Process (or Server) DA is running
  1. ;Possible Outputs:
  1. ; Acquired Lock D/T Present Value return Meaning
  1. ; Y Y 2 Not running
  1. ; Y N 0 Not running
  1. ; N Y 1 Running
  1. ; N N 3 Signaled to quit
  1. L +@GL@(DA):0 I L -@GL@(DA) Q:$D(@GL@(DA)) 2 Q 0
  1. Q:'$D(@GL@(DA)) 3
  1. Q 1
  1. ;
  1. VFY2(INI) ;Verify running servers for Background Process INI
  1. ;Called from tag VERIFY, which contains the main loop.
  1. ; INI - Background process Id
  1. ;OUTPUT:
  1. ; INDAT - Array with server information
  1. ;
  1. N INK
  1. ;Initialize servers of process INI
  1. D IN1^INHOV2(INI)
  1. S INK="" F S INK=$O(^INRHB("RUN","SRVR",INI,INK)) Q:'INK D
  1. .S IN0=$G(^INRHB("RUN","SRVR",INI,INK))
  1. .D STAT(INI,INK,IN0)
  1. Q