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

INHOA1.m

Go to the documentation of this file.
  1. INHOA1 ; JMB; 6 Jul 99 15:30; Background Process Monitor cont.
  1. ;;3.01;BHL IHS Interfaces with GIS;;JUL 01, 2001
  1. ;COPYRIGHT 1991-2000 SAIC
  1. Q
  1. ;
  1. ; PART 1: VERIFY STATUS
  1. ;
  1. DISV ;Display Verify Status
  1. N INQ,INK
  1. ;
  1. ;Display Main header, verify status header
  1. D HD,HDV
  1. ;
  1. S INQ="" F S INQ=$O(INDAT(INQ)) Q:'INQ S INK="" F S INK=$O(INDAT(INQ,INK)) Q:'$L(INK) D
  1. .D:$$OVF HDV
  1. .W !
  1. .I '$L(INDAT(INQ,INK,"RUN")) W " Y"
  1. .E W ?1,INDAT(INQ,INK,"RUN")
  1. .W:'INK ?TAB(1),"MAIN"
  1. .W:INK>0 ?TAB(1),"SERVER ",INK
  1. .;Display Last Run Update Stats
  1. .D DISV1(0)
  1. .W:$L($G(INDAT(INQ,INK,"MES"))) !,?TAB(1)+2,$E(INDAT(INQ,INK,"MES"),1,28)
  1. .;Display Last Event Stats
  1. .D:$L($G(INDAT(INQ,INK,1,"ELS"))) DISV1(1)
  1. D MSG
  1. Q
  1. ;
  1. DISV1(DA) ;Display Stats
  1. ;INPUT: DA = 0 - Last Run Update Stats
  1. ; 1 - Last Event Stats
  1. ;
  1. I DA=1,'$L($G(INDAT(INQ,INK,"MES"))) W !
  1. W ?TAB(2),$J($$FT0^INHUTS($G(INDAT(INQ,INK,DA,"LRU"))),10)
  1. W ?TAB(3),$J($$FT1^INHUTS($G(INDAT(INQ,INK,DA,"ELS")),1),7)
  1. W ?TAB(4),$J($$FT1^INHUTS($G(INDAT(INQ,INK,DA,"MIN")),2),6)
  1. W ?TAB(5),$J($$FT1^INHUTS($G(INDAT(INQ,INK,DA,"MAX")),2),6)
  1. W ?TAB(6),$J($$FT1^INHUTS($G(INDAT(INQ,INK,DA,"AET")),2),6)
  1. Q
  1. ;
  1. HDV ;Verify Status Header
  1. W !!,"**RUN STATUS** $JOB: ",$P(^INTHPC(BPC,0),U,4)
  1. D HD1
  1. S SEL=$S(INPAR("DETAIL"):"DET",1:"BRF") D @SEL
  1. W !,"---"
  1. W ?TAB(1),"------------------------------",?TAB(2),"----------"
  1. W ?TAB(3),"-------"
  1. F X=TAB(4),TAB(5),TAB(6) W ?X,"------"
  1. Q
  1. DET ;Verify Status, Detail Report Header
  1. W !,"Run",?TAB(1),"Server/",?TAB(2),"Last Run/"
  1. W ?TAB(3)+6,"(defaults in seconds)"
  1. W !,?TAB(1)+2,"Message",?TAB(2)," Last Msg",?TAB(3),"Elapsed"
  1. W ?TAB(4)," Min",?TAB(5)," Max",?TAB(6)," Avg"
  1. Q
  1. BRF ;Verify Status, Brief Report Header
  1. W !,?TAB(3)+6,"(defaults in seconds)",!
  1. W "Run",?TAB(1),"Server",?TAB(2),"Last Run"
  1. W ?TAB(3),"Elapsed"
  1. W ?TAB(4)," Min",?TAB(5)," Max",?TAB(6)," Avg"
  1. Q
  1. ;
  1. MSG ;Verify Status, special message
  1. ; Diplay legend if at least one process has RUN status equal to "Q".
  1. W:INSIG !!,"NOTE: RUN=Q Stands for ""Background Process Signaled to Quit"""
  1. Q
  1. ;
  1. HD1 ;Verify Status, Display warning message
  1. Q:'INWARN
  1. W !," WARNING: Report being run elsewhere. Results may not be accurate."
  1. Q
  1. ;
  1. ; PART 2: QUEUE SIZE
  1. ;
  1. DISQ ;Display Queue Size
  1. N INQ,IN0,P,T
  1. I $$OVF
  1. D HDQ
  1. ;Work through INDAT array
  1. ; IN0 - Flag
  1. S INQ=0 F S INQ=$O(INDAT(INQ)) Q:'INQ S IN0=0 D
  1. . S P="" F S P=$O(INDAT(INQ,P)) Q:(+P'=P)!('INPAR("DETAIL")) S T="" F S T=$O(INDAT(INQ,P,T)) Q:'$L(T) D DPRI(INQ,P,T,.IN0)
  1. .;Display queues with 0 totals
  1. .;If there is only one priority level for queue INQ, do not
  1. .; display total by priority, since data is repeated
  1. .;Display overall totals
  1. .;Display Brief report
  1. .I ('INDAT(INQ,"COUNT"))&(IN0=0)!(IN0>1)!(INQ>300)!('INPAR("DETAIL")) D DTOT(INQ,IN0)
  1. ;
  1. D FTR
  1. Q
  1. ;
  1. DPRI(INQ,P,T,IN0) ;Display queue size by priority level
  1. W !
  1. S IN0=IN0+1
  1. W ?TAB(2)+5,P W:T="ST" " STAT"
  1. W ?TAB(3)+1,$J(INDAT(INQ,P,T,"COUNT"),6)
  1. W ?TAB(4),$J(INDAT(INQ,P,T,"MIN"),6)
  1. W ?TAB(5),$J(INDAT(INQ,P,T,"MAX"),6)
  1. W ?TAB(6),$J(INDAT(INQ,P,T,"AVG"),6)
  1. D:$$OVF HDQ
  1. Q
  1. ;
  1. DTOT(INQ,IN0) ;Display queue totals
  1. ;
  1. ; New line before displaying "Total" string, "Transactions
  1. ; identified per hour"
  1. W:INQ'=700 !
  1. ; multiple priority totals
  1. W:IN0>1 ?TAB(2)," Total:"
  1. ; One blank line before "Messages created per hour"
  1. W:INQ=700 !!
  1. ; If there is overflow display Messages created per hour and
  1. ; Transactions identified per hour in the same page.
  1. I INQ=700,$$OVF D HDQ W !
  1. W:INQ>200 $J(INDAT(INQ,"NAME"),45)_":"
  1. W ?TAB(3)+1,$J(INDAT(INQ,"COUNT"),6),?TAB(4),$J(INDAT(INQ,"MIN"),6)
  1. W ?TAB(5),$J(INDAT(INQ,"MAX"),6),?TAB(6),$J(INDAT(INQ,"AVG"),6)
  1. Q
  1. ;
  1. HDQ ;Queue Size Header
  1. N T
  1. W !!,"**QUEUE SIZE (#entries)**"
  1. W:INPAR("DETAIL") ?TAB(2)+2,"Priority"
  1. W ?TAB(3)," Curr",?TAB(4)," Min",?TAB(5)," Max",?TAB(6)," Avg"
  1. W !
  1. W:INPAR("DETAIL") ?TAB(2)+2,"--------"
  1. W ?TAB(3)+1,"------"
  1. F T=4:1:6 W ?TAB(T),"------"
  1. Q
  1. ;
  1. ; PART 3: TOP ENTRIES
  1. ;
  1. DIST ;Display TOP Entries
  1. N INQ,IN1,P,T,TAB
  1. S TAB(1)=7,TAB(2)=19,TAB(3)=28,TAB(4)=40,TAB(5)=51
  1. I $$OVF
  1. ;Paint header
  1. D HDT(.TAB)
  1. ;Display data
  1. ;Work through INDAT array
  1. ; IN1 - Flag to display queue name only once
  1. S INQ=0 F S INQ=$O(INDAT(INQ)) Q:'INQ S P="" F S P=$O(INDAT(INQ,P)) Q:+P'=P D
  1. .S T="" F S T=$O(INDAT(INQ,P,T)) Q:'$L(T) D
  1. .. W !,$J(P,3),?TAB(1),$J(INDAT(INQ,P,T),10)
  1. .. W ?TAB(2),$J(INDAT(INQ,P,T,"DIFF"),7)
  1. .. W ?TAB(3),$J($E(INDAT(INQ,P,T,"MSGID"),1,10),10)
  1. .. W ?TAB(4),$J(INDAT(INQ,P,T,"DA"),9)
  1. .. W ?TAB(5),$E(INDAT(INQ,P,T,"TT"),1,29)
  1. I $$OVF D HDT(.TAB)
  1. Q
  1. ;
  1. HDT(TAB) ;TOP entries header
  1. W !!,"**TOP ENTRIES**"
  1. W !,"Prio",?TAB(1),"Scheduled",?TAB(2)," Age",?TAB(3),"Message Id"
  1. W ?TAB(4)," Record",?TAB(5),"Transaction Type"
  1. W !,"-----",?TAB(1),"----------",?TAB(2),"-------",?TAB(3),"----------",?TAB(4),"---------",?TAB(5),"-----------------------------"
  1. Q
  1. ;
  1. ; COMMON SUBROUTINES:
  1. ;
  1. HD ;Display main header
  1. ;
  1. ;Calculate run time = now-start
  1. S INRUN=$$TDIF^INHUTS(INPAR("START"),$H),INRUNASC=$$FORMAT^INHUTS(INRUN)
  1. ;Calculate average run time per iteration
  1. S INRUNAVG=$$FORMAT^INHUTS(INRUN\INITER,2)
  1. W @IOF
  1. W $P(INPAR("PROCESS"),U,2),?55,$$CDATASC^UTDT($$NOW^UTDT,1,1)
  1. W !,?5,"Start Time: ",$$CDATASC^UTDT(INPAR("START"),1,1)
  1. W ?40," Number of Iterations: ",INITER
  1. W !,?5," Run Time: ",INRUNASC,?40,"Avg Time per Iteration: ",INRUNAVG
  1. Q
  1. ;
  1. FTR ;Display footer
  1. I INTASKED W !!!,"End of Report." Q
  1. W !!,"Press any key to exit: "
  1. Q
  1. ;
  1. OVF() ;Handle overflow
  1. Q:$Y<(IOSL-4) 0
  1. W !,"More..." F X=1:1:INPAR("REPAINT") Q:INTASKED R *%:1 Q:$T
  1. D HD
  1. Q 1