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

INHRTZ.m

Go to the documentation of this file.
  1. INHRTZ ;DP; 5 Jan 96 08:54;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. ;
  1. Q
  1. EN ;Main entry point
  1. N DES,N,I,X,INLOAD,DET,INBEG,INEND,INENDX
  1. W @IOF Q:'$$PARM
  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^INHRTZ"
  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)
  1. ; INDES flag for destination list
  1. ; 1 List
  1. ; 0 All destinations
  1. S INDES=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 PAG=1,X1=0,DV=1
  1. D COMP,DEV,OUTPUT
  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. ; C = holder of creation totals
  1. ; T = holder of transmission totals
  1. ;
  1. S LOOP=$O(^INTHU("B",INBEG,"")),C="CC",T="TT"
  1. ; get the last internal number for the ending date
  1. S INENDX=$O(^INTHU("B",INEND,""))-1
  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>INEND
  1. . ; message creation date
  1. . S MSGDTTM=+$E($P(ZE,U),1,10)
  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<INBEG Q:$P(ZE,U,14)<INBEG 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 ^UTILITY($J,MSGDTTM,C)=$G(^UTILITY($J,MSGDTTM,C))+1 S:^(C)>DV DV=^(C)
  1. . ;stor details only if detail flag DET is on.
  1. . I DET S ^UTILITY($J,MSGDTTM,DES,STAT,C)=$G(^UTILITY($J,MSGDTTM,DES,STAT,C))+1 S:^(C)>DV DV=^(C)
  1. . D MULT
  1. Q
  1. MULT ; Look for activity on the multiple level
  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>INEND
  1. .S DTTM=+$E(DTTM,1,10)
  1. .S ^UTILITY($J,DTTM,T)=$G(^UTILITY($J,DTTM,T))+1 S:^(T)>DV DV=^(T)
  1. . ;stor details only if detail flag DET is on.
  1. .Q:'DET
  1. .S ^UTILITY($J,DTTM,DES,STAT,T)=$G(^UTILITY($J,DTTM,DES,STAT,T))+1 S:^(T)>DV DV=^(T)
  1. Q
  1. ;
  1. OUTPUT ;Output data
  1. S (DT1,DTTM)=0,ASTRX="",$P(ASTRX,"*",80)=""
  1. F S DTTM=$O(^UTILITY($J,DTTM)) Q:DTTM="" D
  1. .D DT S FLG=1 F I=C,T D @I
  1. .; quit here if this is not a detailed report
  1. .Q:'DET W !
  1. .S FLG=0,DES=""
  1. .F S DES=$O(^UTILITY($J,DTTM,DES)) Q:DES="" D W:$X>20 !
  1. ..; display destination
  1. ..Q:DES'?.N I $Y>(IOSL-2) D HDR,DT
  1. ..W:$X>50 ! W ?15,$E($P(^INRHD(DES,0),U),1,30)
  1. ..; display status
  1. ..S ST="" F S ST=$O(^UTILITY($J,DTTM,DES,ST)) Q:ST="" D
  1. ...Q:ST'?1A W:$X>50 !
  1. ...I $Y>(IOSL-2) S DT1="" D HDR,DT
  1. ...W ?46,ST
  1. ...F I=C,T S X=$G(^UTILITY($J,DTTM,DES,ST,I)) D @I
  1. .I $Y>IOSL D HDR,DT
  1. Q
  1. ;
  1. CC ;Dsplay details for creation rate
  1. I $Y>IOSL S DT1="" D HDR,DT
  1. I FLG S X=$G(^UTILITY($J,DTTM,I))
  1. Q:X="" S P=54 S:'DET P=22 W ?(P-$L(X)),X
  1. ; display the astrics line
  1. S X=$E(ASTRX,1,$J(X/DV,0,0)) S:'$L(X) X="*"
  1. S:$L(X)>SE X=$E(X,1,(SE-2))_">>" W ?(P+2),X
  1. Q
  1. TT ;Display details for transmission rate
  1. N X0 I FLG S X=$G(^UTILITY($J,DTTM,I))
  1. Q:X="" S X0=X,X=$E(ASTRX,1,$J(X/DV,0,0))
  1. S:'$L(X) 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
  1. S DT2=$$CDATASC^%ZTFDT(DTTM,2,1)
  1. I DT1'=$P(DTTM,".") S DT1=$P(DTTM,".") W !,$P(DT2,"@")
  1. W:'DET!($X>55) ! W ?9,$P(DT2,"@",2)
  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),X(0)=X_" Page "
  1. S X(1)="Throughput analyzer report" I DET S X(1)=X(1)_" - Detailed"
  1. S X="From: "_$$CDATASC^%ZTFDT($E(INBEG,1,10),3,1)
  1. S X(2)=X_" To: "_$$CDATASC^%ZTFDT($E(INEND,1,10),3,1)
  1. D ST1 S X(3)="Status: "_X3
  1. S X(5)="Divisor: "_DV
  1. ;get the site name
  1. S X(6)=$S($D(^DIC(4,^DD("SITE",1),0)):^(0),1:^DD("SITE"))
  1. S X(6)=$S($P(X(6),U,4)]"":$P(X(6),U,4),1:$P(X(6),U,1))
  1. S LN="",$P(LN,"-",IOM)=""
  1. ;
  1. HDR ;Print header
  1. W @IOF,!,X(6)
  1. S X=X(0)_PAG,PAG=PAG+1,DT1=""
  1. W ?IOM-$L(X)-2,X,!!
  1. F I=1:1:4 I $G(X(I))'="" W !?IOM-$L(X(I))\2,X(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 !!,X(5),!!,LN
  1. W !," Date Time" W:DET ?15,"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 !,LN
  1. Q
  1. ;
  1. PARM() ;Get parameters
  1. ;
  1. S DIC=4005,DIC(0)="AEMNQZ"
  1. D DES Q:'Y
  1. S (INBEG,INEND)=0
  1. Q:'$$GETRNG(.INBEG,.INEND) 0
  1. S POP=0 D STU Q:POP 0
  1. I ST="" S ST=X1 W "ALL"
  1. D DET Q:POP 0
  1. Q 1
  1. ;
  1. DES ;Get multiple destinations
  1. K X,X1,X2 S X2="" F I=1:1 D W:Y=-1&(X2="") "ALL" Q:Y=-1
  1. .D ^DIC Q:+Y<1
  1. .S X(+Y)=$P(^INRHD(+Y,0),U)
  1. .S X1(X(+Y))="",X2=X2_(+Y)_","
  1. Q
  1. GETRNG(START,STOP) ;get start & stop dates
  1. ;
  1. S START=1,STOP=999999999
  1. W ! Q:'$$IEN(.START,"Starting Date: ") 0
  1. ; search starts on the previous day at midnight.
  1. S INBEG=$O(^INTHU("B",($P(Y,".")-2)_".999999"))
  1. W ! Q:'$$IEN(.STOP," Ending Date: ") 0
  1. ;Ending date
  1. S INEND=$O(^INTHU("B",($P(IEN2,".")_".999999")),-1)
  1. S:INEND<INBEG INEND=INBEG
  1. Q 1
  1. ;
  1. IEN(IEN,ASK) ;read date
  1. ;
  1. S %DT="TAEX",%DT("A")=$G(ASK) D ^%DT Q:Y<1 0
  1. S IEN=$Q(^INTHU("B",Y,0))
  1. I $QS(IEN,1)'="B" S IEN="^INTHU(""B"",3000101,9999999999999)"
  1. S (IEN,IEN2)=$QS(IEN,2)
  1. Q 1
  1. ;
  1. Q
  1. DET ;Detail yes/no
  1. W ! S X=$$YN^UTSRD("Detailed: ;N")
  1. I X[U S POP=1 Q
  1. W @IOF,!,"Destination: " I $L(X2)=0 W "All "
  1. E F I=1:1:$L(X2,",")-1 W ?13,$P(^INRHD($P(X2,",",I),0),U),!
  1. W !,"Status(s): " F I=1:1:$L(ST) W ?13,$P($P(X3,";",I),":",2),!
  1. W !,"From: ",$$CDATASC^%ZTFDT($E(INBEG,1,10),3,1)
  1. W !," To: ",$$CDATASC^%ZTFDT($E(INEND,1,10),3,1),!
  1. W !,"Detail: ",$S(X=1:"Yes",1:"No"),!!
  1. S Z=$$YN^UTSRD("O.K To continue? ")
  1. I Z[U!(Z=0) S POP=1 Q
  1. ; taskman variables
  1. ; ST = status string
  1. ; X = detail 1 yes 0 no
  1. ; X2 = destination list (IEN,...)
  1. ; INBEG = beginning date@time
  1. ; INEND = ending date@time
  1. ;
  1. S INLOAD=ST_U_X_U_X2_U_INBEG_U_INEND
  1. W ! Q
  1. ;
  1. STU ;Build status string
  1. N I,C S (X1,ST)=""
  1. S X3=$P(^DD(4001,.03,0),U,3,99)
  1. F I=1:1:$L(X3,":")-1 S X1=X1_$P($P(X3,";",I),":")
  1. W ! F I=1:1 D ST Q:C=""!(POP)
  1. Q
  1. ST ;Display status list
  1. W ! D ^UTSRD("Status: ") Q:POP
  1. S C=X Q:C=""
  1. I C=U S POP=1 Q
  1. I C="ALL" S ST=X1,C="" Q
  1. ; enter a "-" to remove an item
  1. I C["-",$L(ST)>0 S C=$E(C,2) D Q
  1. .S ST=$E(ST,1,($F(ST,C)-2))_$E(ST,($F(ST,C)),99)
  1. I X1[(C) W " ",$P($P(X3,";",($F(X1,C)-1)),":",2) S ST=ST_C Q
  1. N I W !,"Please select from:"
  1. F I=1:1:$L(X1) W !," ",$P($P(X3,";",I),":")," ",$P($P(X3,";",I),":",2)
  1. W !," ALL"
  1. S:$$CR^UTSRD POP=1
  1. Q
  1. ST1 ;get the status string to be printed as part of the header.
  1. N I
  1. S X=$P(^DD(4001,.03,0),U,3,99),(X3,X4)=""
  1. F I=1:1:$L(ST) S X3=X3_$P($P(X,";",I),":",2) S:I<$L(ST) X3=X3_", "
  1. I $L(X3)>(IOM-8) S X4=X3 D
  1. .F I=$L(X4,","):-1 S X3=$P(X4,",",1,I) I $L(X3)<(IOM-8) S X4=$P(X4,",",(I+1),99) Q
  1. S X(3)=X3,X(4)=X4
  1. Q