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

INHRTH.m

Go to the documentation of this file.
  1. INHRTH ;DP; 9 May 96 15:41;27 Dec 95 10:39;Throughput analyzer report
  1. ;;3.01;BHL IHS Interfaces with GIS;;JUL 01, 2001
  1. ;COPYRIGHT 1991-2000 SAIC
  1. Q
  1. EN ;Main entry point
  1. N DES,N,I,X,INLOAD,DET,INBEG,INEND,INENDX,INTM,INC,INT,INLN,MS
  1. N INABEG,INAEND,DAY,FLG,IN,IN1,INLST,INSITE,INTIM1,LOOP,MSGDAT,MSGDT,MSGTM,P,PAG,PAGES,POP,SE,ST,TM,INDESM,%DT,ASTRX,CNT,DIC,DIRCP,DIRI,DIRMAX,DT1,DT2,DT3,I,IEN2,II,INDES,INTMI,STAT,X,X1,X2,X3,X4,Z,ZE
  1. W @IOF Q:'$$PARM^INHRTH1
  1. Q:POP
  1. ;Device handling & Tasking logic
  1. K IOP S %ZIS("A")="QUEUE ON DEVICE: ",%ZIS("B")="",%ZIS="NQ"
  1. D ^%ZIS G:POP QUIT
  1. S IOP=ION_";"_IOST_";"_IOM_";"_IOSL
  1. I IO=IO(0) S %ZIS="" D ^%ZIS I POP W *7,!,"Sorry, unable to find device..." G QUIT
  1. I IO'=IO(0) D G QUIT
  1. .S ZTDESC="Throughput analyzer report",ZTIO=IOP,ZTRTN="ENQUE^INHRTH"
  1. .S ZTSAVE("INLOAD")=INLOAD
  1. .D ^%ZTLOAD
  1. ENQUE ;Taskman entry point
  1. K ^UTILITY($J)
  1. S ST=$P(INLOAD,U),DET=$P(INLOAD,U,2),DES=$P(INLOAD,U,3)
  1. S INBEG=$P(INLOAD,U,4),INEND=$P(INLOAD,U,5),INTM=$P(INLOAD,U,6)
  1. S INABEG=$P(INLOAD,U,7),INAEND=$P(INLOAD,U,8)
  1. ;
  1. ; INDES flag for destination list
  1. ; 1 List
  1. ; 0 All destinations
  1. ; INDESM=1 if more than 1 destination is included in report
  1. ;
  1. S (INDES,INDESM)=0 I $L(DES)>1 S INDES=1 D
  1. .F I=1:1:$L(DES,",")-1 S X=$P(DES,",",I),DES(X)=$P(^INRHD(X,0),U)
  1. .S:I>1 INDESM=1
  1. ;build array for ALL destinations
  1. I 'INDES S X=0,INDESM=1 F S X=$O(^INRHD(X)) Q:'X S DES(X)=$P(^INRHD(X,0),U)
  1. S PAG=1,X1=0,DV=1 S:INTM["H" INTM=INTM*60
  1. D COMP,SUM,DEV,OUTPUT
  1. I 'POP D
  1. .F I=$Y:1:(IOSL-1) W !
  1. .S X="*** End of Report ***" W ?IOM-$L(X)\2,X
  1. K ^UTILITY($J)
  1. ;
  1. QUIT ;Exit point
  1. D ^%ZISC
  1. Q
  1. ;
  1. COMP ;Compile statistics
  1. ;
  1. ; INC = holder of creation totals
  1. ; INT = holder of transmission totals
  1. ;
  1. S LOOP=$O(^INTHU("B",INBEG,"")),INC="CC",INT="TT"
  1. ; get the last internal number for the ending date
  1. S INENDX=$O(^INTHU("B",INEND,""),-1) D INTER
  1. I $P(IOST,"-")["C",IO=IO(0) W !,"Compiling data "
  1. F CNT=1:1 S LOOP=$O(^INTHU(LOOP)) Q:'LOOP!(LOOP>INENDX) D
  1. . I IO=$P W:'(CNT#1000) "."
  1. . S ZE=$G(^INTHU(LOOP,0))
  1. . ; quit if date is out of range
  1. . Q:+ZE>INAEND
  1. . ;
  1. . ; message creation date and time
  1. . ; MSGDT = date
  1. . ; MSGTM = time HHMM
  1. . S MSGDT=+$P($P(ZE,U),"."),MSGTM=$E($P(ZE,U),9,20)
  1. . S MSGDAT=$E($P(ZE,U),1,12)
  1. . ; get destination
  1. . S DES=$P(ZE,U,2) Q:DES=""
  1. . ;quit if destination is not on the selected array.
  1. . I INDES Q:'$D(DES(DES))
  1. . ;for message that was created befor the begining date make
  1. . ;sure to quit if no work was done later.
  1. . I +ZE<INABEG Q:$P(ZE,U,14)<INABEG D MULT Q
  1. . ;
  1. . ;Quit if status is not part of the selection string
  1. . Q:$F(ST,$P(ZE,U,3))<2
  1. . S STAT=$P(ZE,U,3)
  1. . S MS=+MSGDAT S:'$D(^UTILITY($J,MS)) MS=$O(^UTILITY($J,MS),-1)
  1. . ;following variable does not seem to be used. Verify for 4.6
  1. . S MSGTM=$E(MSGTM,1,2)*60+$E(MSGTM,3,4)
  1. . ;store details. SUM tag summarizes details
  1. . S ^UTILITY($J,MS,DES,STAT,INC)=$G(^UTILITY($J,MS,DES,STAT,INC))+1
  1. . D MULT
  1. Q
  1. MULT ; Look for activity on the multiple level
  1. N ACT,ACTLOOP,ACTZE,DTTM,DTDT,DAY
  1. S ACT=0
  1. F ACTLOOP=0:1 S ACT=$O(^INTHU(LOOP,1,ACT)) Q:'ACT&ACTLOOP D
  1. .S ACTZE=""
  1. .S:ACT ACTZE=$G(^INTHU(LOOP,1,ACT,0))
  1. .; Get status
  1. .Q:$F(ST,$P(ACTZE,U,2))<2 S STAT=$P(ACTZE,U,2)
  1. .; Quit if messages has no date/time.
  1. .Q:+ACTZE=0 S DTTM=$P(ACTZE,U)
  1. .Q:DTTM>INAEND
  1. .S DTDT=$P(DTTM,"."),DTTM=$E(DTTM,1,12)
  1. .S DAY=+DTTM S:'$D(^UTILITY($J,DTTM)) DAY=$O(^UTILITY($J,DAY),-1)
  1. .Q:DAY="" S DTTM=$E(DTTM,1,2)*60+$E(DTTM,3,4)
  1. .S ^UTILITY($J,DAY,DES,STAT,INT)=$G(^UTILITY($J,DAY,DES,STAT,INT))+1
  1. Q
  1. INTER ;Initalize intervals for all date/time
  1. N I,IA,II,III,D,ZZ,OLDTM
  1. S ZZ=$P(INLOAD,U,3),IA=0
  1. ;last time bracket
  1. S INLST=$E($$ADDT^%ZTFDT(INAEND,0,0,-INTM),1,12),OLDTM=0
  1. F S X=$E($$ADDT^%ZTFDT(INABEG,0,0,(INTM*IA)),1,12),IA=IA+1 Q:OLDTM'<INLST D
  1. .S OLDTM=X
  1. .S DES=0 F S DES=$O(DES(DES)) Q:'DES D
  1. ..F III=1:1:$L(ST) F IN=INC,INT S ^UTILITY($J,X,DES,$E(ST,III),IN)=0
  1. Q
  1. ;
  1. OUTPUT ;Output data
  1. W ! S (DT1,DAY)=0,ASTRX="",$P(ASTRX,"*",80)="",POP=0
  1. F S DAY=$O(^UTILITY($J,DAY)) Q:DAY=""!(DAY="B")!POP S TM="" D
  1. .D DT Q:POP
  1. .S FLG=1 F I=INC,INT S X=$G(^UTILITY($J,DAY,I)) D @I
  1. .;quit here if this is not a detailed report AND only 1 dest is selected
  1. .W ! I 'INDESM,'DET Q
  1. .S FLG=0,DES=""
  1. .F S DES=$O(^UTILITY($J,DAY,DES)) Q:DES=""!POP D
  1. ..; display destination
  1. ..I DES'?.N W ! Q
  1. ..I $Y>(IOSL-2) D HDR Q:POP D DT
  1. ..W !?19,$E($P(^INRHD(DES,0),U),1,30)
  1. ..F I=INC,INT S X=$G(^UTILITY($J,"B",DAY,DES,I)) Q:X=""!POP D @I
  1. ..;Quit if not a detailed report
  1. ..Q:'DET
  1. ..; display status
  1. ..W ! S ST="" F S ST=$O(^UTILITY($J,DAY,DES,ST)) Q:ST=""!POP D
  1. ...I ST'?1A W ! Q
  1. ...I $Y>(IOSL-2) S DT1="" D HDR Q:POP D DT
  1. ...W ?46,ST
  1. ...F I=INC,INT S X=$G(^UTILITY($J,DAY,DES,ST,I)) D @I
  1. ...W ! I $Y>(IOSL-2) D HDR D:'POP DT
  1. Q
  1. ;
  1. CC ;Dsplay details for creation rate
  1. I $Y>IOSL S DT1="" D HDR Q:POP D DT
  1. I X="" W ! Q
  1. S P=$S(FLG:24,1:54) W ?(P-$L(X)),X
  1. ; display the astrics line
  1. S X1=$E(ASTRX,1,$J(X/DV,0,0)) S:'$L(X1) X1="*"
  1. S:X=0 X1=""
  1. S:$L(X1)>SE X1=$E(X1,1,(SE-2))_">>" W ?(P+2),X1
  1. Q
  1. TT ;Display details for transmission rate
  1. N X0
  1. I X="" W ! Q
  1. S X0=X,X=$E(ASTRX,1,$J(X/DV,0,0))
  1. S:'$L(X) X="*" S:X0=0 X="" S:$L(X)>SE X="<<"_$E(X,1,(SE-2))
  1. S X=X_$J(X0,7) W ?IOM-1-$L(X),X
  1. Q
  1. DT ;Print date time
  1. I $Y>(IOSL-3) S DT1="" D HDR Q:POP
  1. S DT2=$$CDATASC^%ZTFDT(DAY,2,1)
  1. W $P(DT2,"@")," ",$P(DT2,"@",2),"-"
  1. S DT3=$O(^UTILITY($J,DAY)) I 'DT3 W $P($$CDATASC^%ZTFDT(INAEND,2,1),"@",2) Q
  1. S X=$$ADDT^%ZTFDT(DT3,0,0,-1)
  1. W $P($$CDATASC^%ZTFDT(X,2,1),"@",2)
  1. Q
  1. SUM ;Calculate totals for date/time
  1. N DAY,DDE,SST,X
  1. S DAY="",DV=1
  1. F S DAY=$O(^UTILITY($J,DAY)) Q:DAY=""&(DAY'?.N1".".N) S DDE="" D
  1. .Q:DAY="B" F S DDE=$O(^UTILITY($J,DAY,DDE)) Q:DDE="" S SST="" D
  1. ..F S SST=$O(^UTILITY($J,DAY,DDE,SST)) Q:SST="" D
  1. ...F I=INC,INT D
  1. ....S X=^UTILITY($J,DAY,DDE,SST,I)
  1. ....; total for date & time
  1. ....S ^UTILITY($J,DAY,I)=$G(^UTILITY($J,DAY,I))+X
  1. ....S:^UTILITY($J,DAY,I)>DV DV=^(I)
  1. ....; total for date/time & destination
  1. ....S ^UTILITY($J,"B",DAY,DDE,I)=$G(^UTILITY($J,"B",DAY,DDE,I))+X
  1. Q
  1. ;
  1. DEV ;Calculate the devisor
  1. S SE=16 I 'DET S DV=DV/2,SE=31
  1. S DV=$S(DV>9000:1000,DV>4500:500,DV>1900:250,DV>900:100,1:25)
  1. ;
  1. ; Set header
  1. S X=$$CDATASC^%ZTFDT($H,1,1),INLN(0)=X_" Page "
  1. S INLN(1)="Throughput analyzer report"
  1. I DET S INLN(1)=INLN(1)_" - Detailed"
  1. S X="From: "_$$CDATASC^%ZTFDT($E(INABEG,1,12),3,1)
  1. S INLN(2)=X_" To: "_$$CDATASC^%ZTFDT($E(INAEND,1,12),3,1)
  1. D ST1^INHRTH1 S INLN(3)="Status: "_INLN(3)
  1. S INLN(5)="Divisor: (*) "_DV
  1. S X=INTM S:INTM>60 X=(INTM\60)_"Hr"
  1. S INTMI="Time interval: "_X S:INTM<60 INTMI=INTMI_"Minutes"
  1. ;get the site name
  1. S INSITE=$S($D(^DIC(4,^DD("SITE",1),0)):^(0),1:^DD("SITE"))
  1. S INSITE=$S($P(INSITE,U,4)]"":$P(INSITE,U,4),1:$P(INSITE,U,1))
  1. S INLN="",$P(INLN,"-",IOM)=""
  1. ;
  1. HDR ;Print header
  1. I $P(IOST,"-")["C",IO=IO(0),$Y>15 S X=$$CR^UTSRD I X S POP=1 Q
  1. I PAG>1!($P(IOST,"-")["C") W @IOF
  1. W !,INSITE
  1. S X=INLN(0)_PAG,PAG=PAG+1,DT1=""
  1. W ?IOM-$L(X)-2,X,!
  1. F I=1:1:4 I $G(INLN(I))'="" W !?IOM-$L(INLN(I))\2,INLN(I)
  1. W !,"Destination:" D
  1. .I 'INDES W " All",! Q
  1. .S II="" F S II=$O(DES(II)) Q:II="" W !?14,DES(II)
  1. W !!,INLN(5),!,INTMI,!!,INLN
  1. W !," Date Time" W:DET ?19,"Destination"
  1. W:DET ?42,"Status"
  1. S P=15 S:DET P=40 W !?P,"Creation Rates "
  1. S X="Transmission Rates" W ?IOM-$L(X)-2,X
  1. W !,INLN,!
  1. Q
  1. ;