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

KMPDTP4.m

Go to the documentation of this file.
  1. KMPDTP4 ;OAK/RAK/JML - CP Timing Hourly Time-to-Load ;9/1/2015
  1. ;;3.0;Capacity Management Tools;**3**;Jan 15, 2013;Build 42
  1. ;
  1. EN ;-- entry point
  1. ;
  1. N KMPDATE,KMPDTTL,POP,X,Y,ZTDESC,ZTRTN,ZTRSAVE,ZTSK,%ZIS
  1. N KMPDLBG,KMPDLFG,KMPDDTSS
  1. ;
  1. S KMPDTTL=" Hourly Coversheet Time-to-Load (TTL) Detail Report "
  1. D HDR^KMPDUTL4(KMPDTTL)
  1. W !
  1. W !?7,"This detail report displays the hourly time-to-load values"
  1. W !?7,"for the coversheet at this site. The report breaks the"
  1. W !?7,"time-to-load metrics into ten second groupings."
  1. W !
  1. ;
  1. ; if no data
  1. I '$O(^KMPD(8973.2,0)) D Q
  1. .W !!?7,"*** There is currently no data in file #8973.2 (CP TIMING) ***"
  1. ;
  1. ; select date range - first determine which subscript to use in API due to addition of foreground processing
  1. S KMPDLFG=$O(^KMPD(8973.2,"ASSDTTM","ORWCV-FT","A"),-1)
  1. S KMPDLBG=$O(^KMPD(8973.2,"ASSDTTM","ORWCV","A"),-1)
  1. S KMPDDTSS=$S(KMPDLFG=KMPDLBG:"ORWCV-FT",KMPDLFG>KMPDLBG:"ORWCV-FT",KMPDLFG<KMPDLBG:"ORWCV",1:"UNKNOWN")
  1. D DTTMRNG^KMPDTU10(KMPDDTSS,1,.KMPDATE,8)
  1. Q:$G(KMPDATE(0))=""
  1. Q:$G(KMPDATE(1))=""
  1. ;
  1. ; select output device.
  1. S %ZIS="Q",%ZIS("A")="Device: ",%ZIS("B")="HOME"
  1. W ! D ^%ZIS I POP W !,"No action taken." Q
  1. ; if queued.
  1. I $D(IO("Q")) K IO("Q") D Q
  1. .S ZTDESC=KMPDTTL
  1. .S ZTRTN="EN1^KMPDTP4"
  1. .S ZTSAVE("KMPDATE(")="",ZTSAVE("KMPDTTL")=""
  1. .D ^%ZTLOAD W:$G(ZTSK) !,"Task #",ZTSK
  1. .D EXIT
  1. ;
  1. ; if output to terminal display message.
  1. W:$E(IOST,1,2)="C-" !,"Compiling timing stats..."
  1. D EN1
  1. ;
  1. Q
  1. ;
  1. EN1 ;-- entry point from taskman
  1. Q:'$D(KMPDATE)
  1. N KMPDTOT,KMPDFG,KMPDBG
  1. K ^TMP($J)
  1. D DATA,PRINT,EXIT
  1. K ^TMP($J)
  1. Q
  1. ;
  1. DATA ;-- compile data
  1. ;
  1. Q:'$D(KMPDATE)
  1. ;
  1. N DATA,DATE,DATE1,DELTA,DOT,END,HOUR,HR,I,IEN,PTNP,QUEUED,TOTAL
  1. N KMPDSUB,KMPDBIDX
  1. ;
  1. S DOT=1,QUEUED=$D(ZTQUEUED)
  1. ; set up HOUR() array
  1. F I=1:1:24 S:$P(KMPDATE(1),",",I)'="" HOUR(+$P(KMPDATE(1),",",I))=""
  1. Q:'$D(HOUR)
  1. S DATE=$P(KMPDATE(0),U)-.1,END=$P(KMPDATE(0),U,2)+.9
  1. Q:'DATE!('END)
  1. ; Loop data - combine Foreground and Background timings
  1. F KMPDSUB="ORWCV","ORWCV-FT" D
  1. .S KMPDTOT(KMPDSUB)=0
  1. .S DATE=$P(KMPDATE(0),U)-.1,END=$P(KMPDATE(0),U,2)+.9
  1. .F S DATE=$O(^KMPD(8973.2,"ASSDTTM",KMPDSUB,DATE)) Q:'DATE!(DATE>END) D
  1. ..S HR=+$E($P(DATE,".",2),1,2) S:HR="" HR="0"
  1. ..Q:'$D(HOUR(HR))
  1. ..S (IEN,TOTAL)=0,TOTAL(KMPDSUB)=0
  1. ..F S IEN=$O(^KMPD(8973.2,"ASSDTTM",KMPDSUB,DATE,IEN)) Q:'IEN D
  1. ...S DATA=$G(^KMPD(8973.2,IEN,0))
  1. ...Q:DATA=""
  1. ...S KMPDBIDX=$P(DATA,U)
  1. ...S ^TMP($J,"DATA",DATE,KMPDBIDX,KMPDSUB)=$P(DATA,U,4)
  1. ...S KMPDTOT(KMPDSUB)=KMPDTOT(KMPDSUB)+1
  1. ;
  1. ; Calculate percentages
  1. S DATE=""
  1. F S DATE=$O(^TMP($J,"DATA",DATE)) Q:DATE="" D
  1. .; date without time
  1. .S DATE1=$P(DATE,".")
  1. .; set up HOUR() array
  1. .M:'$D(^TMP($J,"RPT",DATE1)) ^TMP($J,"RPT",DATE1)=HOUR
  1. .; set up TOTAL() array
  1. .M:'$D(TOTAL(DATE1)) TOTAL(DATE1)=HOUR
  1. .S KMPDBIDX=""
  1. .F S KMPDBIDX=$O(^TMP($J,"DATA",DATE,KMPDBIDX)) Q:KMPDBIDX="" D
  1. ..S (DELTA,KMPDSUB)=""
  1. ..F S KMPDSUB=$O(^TMP($J,"DATA",DATE,KMPDBIDX,KMPDSUB)) Q:KMPDSUB="" D
  1. ...S DELTA=DELTA+$G(^TMP($J,"DATA",DATE,KMPDBIDX,KMPDSUB))
  1. ..S DOT=DOT+1 W:'QUEUED&('(DOT#1000)) "."
  1. ..S HR=+$E($P(DATE,".",2),1,2) S:HR="" HR="0"
  1. ..; if delta is null increment by 1 and quit
  1. ..I DELTA="" S $P(^TMP($J,"RPT",DATE1,HR),U,50)=$P(^TMP($J,"RPT",DATE1,HR),U,50)+1 Q
  1. ..; loop - less than I*10 seconds
  1. ..F I=1:1:9 I DELTA<(I*10) S $P(^TMP($J,"RPT",DATE1,HR),U,I)=$P(^TMP($J,"RPT",DATE1,HR),U,I)+1 Q
  1. ..; 90 or greater seconds
  1. ..I DELTA>89 S $P(^TMP($J,"RPT",DATE1,HR),U,10)=$P(^TMP($J,"RPT",DATE1,HR),U,10)+1
  1. ..; total
  1. ..S TOTAL(DATE1,HR)=TOTAL(DATE1,HR)+1
  1. ; determine percentage
  1. S DATE1=0
  1. F S DATE1=$O(TOTAL(DATE1)) Q:'DATE1 S HR="" D
  1. .F S HR=$O(TOTAL(DATE1,HR)) Q:HR="" I TOTAL(DATE1,HR) F I=1:1:10 D
  1. ..S $P(^TMP($J,"RPT",DATE1,HR,1),U,I)=$FN($P(^TMP($J,"RPT",DATE1,HR),U,I)/TOTAL(DATE1,HR)*100,"",1)
  1. Q
  1. ;
  1. PRINT ;-- print data
  1. ;
  1. U IO
  1. D HDR
  1. Q:'$D(^TMP($J))
  1. N CONT,DATE,I,TOTAL,KMPDFGBG,KMPDMESS
  1. S (KMPDFG,KMPDBG)=0
  1. S DATE="",CONT=1
  1. F S DATE=$O(^TMP($J,"RPT",DATE)) Q:'DATE D Q:'CONT
  1. .W !,$$FMTE^XLFDT(DATE,2) S HR=""
  1. .F S HR=$O(^TMP($J,"RPT",DATE,HR)) Q:HR="" D Q:'CONT
  1. ..I $Y>(IOSL-9) D Q:'CONT
  1. ...D CONTINUE^KMPDUTL4("",1,.CONT) Q:'CONT
  1. ...D HDR W !,$$FMTE^XLFDT(DATE,2)
  1. ..W ?12,HR
  1. ..S TOTAL="",DATA=^TMP($J,"RPT",DATE,HR),DATA(1)=$G(^TMP($J,"RPT",DATE,HR,1))
  1. ..; if no data
  1. ..I DATA="" W ?12," <No Data>",! Q
  1. ..; display data
  1. ..F I=1:1:9 D
  1. ...W ?16,I-1*10," to <",I*10
  1. ...W ?32,$J($FN($P(DATA,U,I),",",0),10)
  1. ...; percentages
  1. ...W ?48,$J($FN($P(DATA(1),U,I),"",1),10),"%"
  1. ...W !
  1. ...; totals
  1. ...S $P(TOTAL,U)=$P(TOTAL,U)+$P(DATA,U,I)
  1. ...S $P(TOTAL,U,2)=$P(TOTAL,U,2)+$P(DATA(1),U,I)
  1. ..; greater than 90
  1. ..W ?16,"90 or greater",?32,$J($FN($P(DATA,U,10),",",0),10)
  1. ..W ?48,$J($FN($P(DATA(1),U,10),"",1),10),"%"
  1. ..S $P(TOTAL,U)=$P(TOTAL,U)+$P(DATA,U,10)
  1. ..S $P(TOTAL,U,2)=$P(TOTAL,U,2)+$P(DATA(1),U,10)
  1. ..; totals
  1. ..W !?32,"----------",?48,"----------"
  1. ..W !?32,$J($FN($P(TOTAL,U),",",0),10)
  1. ..W ?48,$J($FN($P(TOTAL,U,2),"",0),10),"%"
  1. ..W !?16,"Incomplete",?32,$J($FN($P(DATA,U,50),",",0),10),!
  1. ..; page feed if another date
  1. ..I $O(^TMP($J,DATE)) D
  1. ...D CONTINUE^KMPDUTL4("",1,.CONT) Q:'CONT
  1. ...D HDR
  1. ..W !
  1. ;
  1. I CONT D
  1. .; legend
  1. .S KMPDFGBG=0
  1. .I $G(KMPDTOT("ORWCV"))>0 S KMPDFGBG=KMPDFGBG+1
  1. .I $G(KMPDTOT("ORWCV-FT"))>0 S KMPDFGBG=KMPDFGBG+2
  1. .W !!?2,"CV = Coversheet",?30,"Coversheet sections run in:"
  1. .W !?2,"TTL = Time-to-Load"
  1. .W ?30,$S(KMPDFGBG=1:"Background Only",KMPDFGBG=2:"Foreground Only",KMPDFGBG=3:"Both Foreground and Background",1:"Unknown")
  1. .; pause if output to terminal
  1. .D CONTINUE^KMPDUTL4("Press RETURN to continue",1)
  1. ;
  1. Q
  1. ;
  1. HDR ;-- print header
  1. W @IOF
  1. S X=$G(KMPDTTL)
  1. W !?(80-$L(X)\2),X
  1. S X=$G(KMPDATE(0)),X=$P(X,U,3)_" - "_$P(X,U,4)
  1. W !?(80-$L(X)\2),X,?61,"Printed: ",$$FMTE^XLFDT(DT,2)
  1. W !
  1. W !,"Date",?12,"Hr",?16,"TTL Seconds",?32,"# CV Loads",?48,"CV Percent"
  1. W !,$$REPEAT^XLFSTR("-",IOM)
  1. ;
  1. Q
  1. ;
  1. EXIT ;-- cleanup on exit
  1. S:$D(ZTQUEUED) ZTREQ="@"
  1. D ^%ZISC
  1. K KMPDATE,KMPDTTL
  1. Q