| 1 | KMPDUTL7 ;OAK/RAK - CM Tools Utility ;2/17/04  10:52
 | 
|---|
| 2 |  ;;2.0;CAPACITY MANAGEMENT TOOLS;**2,5**;Mar 22, 2002
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | RSTART(KMPDIEN) ;-- start routine statistics
 | 
|---|
| 5 |  ;-----------------------------------------------------------------------
 | 
|---|
| 6 |  ; KMPDIEN.... Ien for file #8972.1 (CM CODE EVALUATOR).
 | 
|---|
| 7 |  ;-----------------------------------------------------------------------
 | 
|---|
| 8 |  Q:'$G(KMPDIEN)
 | 
|---|
| 9 |  Q:'$D(^KMPD(8972.1,+KMPDIEN,0))#5
 | 
|---|
| 10 |  ; quit if not 'active'
 | 
|---|
| 11 |  Q:'$P($G(^KMPD(8972.1,+KMPDIEN,0)),U,11)
 | 
|---|
| 12 |  K KMPDU(KMPDIEN)
 | 
|---|
| 13 |  S KMPDU(KMPDIEN,"START")=$$STATS^%ZOSVKR
 | 
|---|
| 14 |  Q
 | 
|---|
| 15 |  ;
 | 
|---|
| 16 | RSTOP(KMPDIEN) ;-- stop routine statistics
 | 
|---|
| 17 |  ;-----------------------------------------------------------------------
 | 
|---|
| 18 |  ; KMPDIEN.... Ien for file #8972.1 (CM CODE EVALUATOR).
 | 
|---|
| 19 |  ;-----------------------------------------------------------------------
 | 
|---|
| 20 |  Q:'$G(KMPDIEN)
 | 
|---|
| 21 |  Q:'$D(^KMPD(8972.1,+KMPDIEN,0))#5
 | 
|---|
| 22 |  ; quit if no 'start' subscript
 | 
|---|
| 23 |  Q:'$D(KMPDU(KMPDIEN,"START"))
 | 
|---|
| 24 |  ; quit if not 'active'
 | 
|---|
| 25 |  Q:'$P($G(^KMPD(8972.1,+KMPDIEN,0)),U,11)
 | 
|---|
| 26 |  ;
 | 
|---|
| 27 |  N ARRAY,I,OVERHEAD,ZIEN
 | 
|---|
| 28 |  ;
 | 
|---|
| 29 |  S KMPDU(KMPDIEN,"STOP")=$$STATS^%ZOSVKR
 | 
|---|
| 30 |  F I=1:1:6 D 
 | 
|---|
| 31 |  .; check for negative numbers
 | 
|---|
| 32 |  .S $P(KMPDU(KMPDIEN,"START"),U,I)=$$NUMBER($P(KMPDU(KMPDIEN,"START"),U,I))
 | 
|---|
| 33 |  .S $P(KMPDU(KMPDIEN,"STOP"),U,I)=$$NUMBER($P(KMPDU(KMPDIEN,"STOP"),U,I))
 | 
|---|
| 34 |  .; calculate difference
 | 
|---|
| 35 |  .S $P(KMPDU(KMPDIEN,"DIFF"),U,I)=$P(KMPDU(KMPDIEN,"STOP"),U,I)-$P(KMPDU(KMPDIEN,"START"),U,I)
 | 
|---|
| 36 |  .; check 'difference' for negative number
 | 
|---|
| 37 |  .S $P(KMPDU(KMPDIEN,"DIFF"),U,I)=$$NUMBER($P(KMPDU(KMPDIEN,"DIFF"),U,I))
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 |  ; get overhead data.
 | 
|---|
| 40 |  S OVERHEAD=$$GETROVHD
 | 
|---|
| 41 |  ; subtract overhead data from "DIFF".
 | 
|---|
| 42 |  F I=1:1:6 D 
 | 
|---|
| 43 |  .S $P(KMPDU(KMPDIEN,"DIFF"),U,I)=$P(KMPDU(KMPDIEN,"DIFF"),U,I)-$P(OVERHEAD,U,I)
 | 
|---|
| 44 |  ;
 | 
|---|
| 45 |  ; file results
 | 
|---|
| 46 |  ; elements.
 | 
|---|
| 47 |  F I=1:1:6 S ARRAY((I+3)*.01)=$P(KMPDU(KMPDIEN,"DIFF"),U,I)
 | 
|---|
| 48 |  ; file data
 | 
|---|
| 49 |  D EDIT^KMPDUTL8(KMPDIEN,"ARRAY")
 | 
|---|
| 50 |  ;
 | 
|---|
| 51 |  K KMPDU(KMPDIEN)
 | 
|---|
| 52 |  ;
 | 
|---|
| 53 |  Q
 | 
|---|
| 54 |  ;
 | 
|---|
| 55 | CONVERT(KMPDTEXT) ;-- extrinsic function - convert disallowed character(s)
 | 
|---|
| 56 |  ;-----------------------------------------------------------------------
 | 
|---|
| 57 |  ; KMPDTEXT.. Text to convert.
 | 
|---|
| 58 |  ;             '^' will be converted to '~'
 | 
|---|
| 59 |  ;-----------------------------------------------------------------------
 | 
|---|
| 60 |  ;
 | 
|---|
| 61 |  S KMPDTEXT=$TR(KMPDTEXT,"^","~")
 | 
|---|
| 62 |  Q $E(KMPDTEXT,1,30)
 | 
|---|
| 63 |  ;
 | 
|---|
| 64 | GETROVHD() ;-- extrinsic - get routine overhead stats.
 | 
|---|
| 65 |  ;-----------------------------------------------------------------------
 | 
|---|
| 66 |  ; Return: overhead data in 9 up-arrow (^) pieces:
 | 
|---|
| 67 |  ;         piece 1 - CPU Time
 | 
|---|
| 68 |  ;         piece 2 - DIO References
 | 
|---|
| 69 |  ;         piece 3 - BIO References
 | 
|---|
| 70 |  ;         piece 4 - Page Faults
 | 
|---|
| 71 |  ;         piece 5 - M Commands
 | 
|---|
| 72 |  ;         piece 6 - GLO References
 | 
|---|
| 73 |  ;         piece 7 - $H Day
 | 
|---|
| 74 |  ;         piece 8 - $H Seconds
 | 
|---|
| 75 |  ;         piece 9 - ASCII Date/Time
 | 
|---|
| 76 |  ;-----------------------------------------------------------------------
 | 
|---|
| 77 |  ;
 | 
|---|
| 78 |  D:$G(^XTMP("KMPD","ROVHD"))="" ROVHD
 | 
|---|
| 79 |  Q $G(^XTMP("KMPD","ROVHD"))
 | 
|---|
| 80 |  ;
 | 
|---|
| 81 | ROVHD ;-- calculate overhead for routine stats.
 | 
|---|
| 82 |  ;
 | 
|---|
| 83 |  ; This sub-routine determines the overhead for elements when running
 | 
|---|
| 84 |  ; RSTART^KMPDUTL1 and RSTOP^KMPDUTL1.  The overhead numbers are stored
 | 
|---|
| 85 |  ; in ^XTMP("KMPD","ROHD"), and are subtracted from the final numbers
 | 
|---|
| 86 |  ; to get as true a picture as possible of the actual elements for the
 | 
|---|
| 87 |  ; calling routine.
 | 
|---|
| 88 |  ;
 | 
|---|
| 89 |  N DIFF,I,START,STOP
 | 
|---|
| 90 |  S DIFF=""
 | 
|---|
| 91 |  S START=$$STATS^%ZOSVKR
 | 
|---|
| 92 |  S STOP=$$STATS^%ZOSVKR
 | 
|---|
| 93 |  F I=1:1:6 D 
 | 
|---|
| 94 |  .S $P(DIFF,U,I)=$P(STOP,U,I)-$P(START,U,I)
 | 
|---|
| 95 |  ; m commands.
 | 
|---|
| 96 |  S $P(DIFF,U,5)=$P(DIFF,U,5)+8
 | 
|---|
| 97 |  ; glo references.
 | 
|---|
| 98 |  S $P(DIFF,U,6)=$P(DIFF,U,6)+2
 | 
|---|
| 99 |  S ^XTMP("KMPD",0)=$$FMADD^XLFDT($$DT^XLFDT,300)
 | 
|---|
| 100 |  S ^XTMP("KMPD","ROVHD")=DIFF
 | 
|---|
| 101 |  ;
 | 
|---|
| 102 |  Q
 | 
|---|
| 103 |  ;
 | 
|---|
| 104 | NUMBER(KMPDNUM) ;-- extrinsic function - check for negative numbers
 | 
|---|
| 105 |  ;-----------------------------------------------------------------------
 | 
|---|
| 106 |  ; KMPDNUM... Number to be checked
 | 
|---|
| 107 |  ;
 | 
|---|
| 108 |  ; Return: non-negative number
 | 
|---|
| 109 |  ;
 | 
|---|
| 110 |  ; Because certain data elements (such as m commands and global 
 | 
|---|
| 111 |  ; references) can grow to such large numbers, these numbers must be
 | 
|---|
| 112 |  ; checked.  If they have become negative (the register flips) they
 | 
|---|
| 113 |  ; can be turned into positive numbers with
 | 
|---|
| 114 |  ;-----------------------------------------------------------------------
 | 
|---|
| 115 |  ;
 | 
|---|
| 116 |  S KMPDNUM=$G(KMPDNUM)
 | 
|---|
| 117 |  Q:KMPDNUM="" KMPDNUM
 | 
|---|
| 118 |  Q:KMPDNUM'<0 KMPDNUM
 | 
|---|
| 119 |  Q KMPDNUM+(2**32)
 | 
|---|
| 120 |  ;
 | 
|---|
| 121 | TRANSTO(KMPDIEN,KMPDAPP,KMPDRES) ;-- return 'transmit to' for data transmission
 | 
|---|
| 122 |  ;-----------------------------------------------------------------------
 | 
|---|
| 123 |  ; KMPDIEN.... Ien for file #8973 (CP PARAMETERS)
 | 
|---|
| 124 |  ; KMPDAPP.... Application:
 | 
|---|
| 125 |  ;              1 = sagg
 | 
|---|
| 126 |  ;              2 = rum
 | 
|---|
| 127 |  ;              3 = hl7
 | 
|---|
| 128 |  ;              4 = timing
 | 
|---|
| 129 |  ;              5 = vista monitor
 | 
|---|
| 130 |  ; KMPDRES().. Results array in format:
 | 
|---|
| 131 |  ;              KMPDRES(ExternalFormat)=IEN
 | 
|---|
| 132 |  ;              KMPDRES(...           )=IEN
 | 
|---|
| 133 |  ;-----------------------------------------------------------------------
 | 
|---|
| 134 |  ;
 | 
|---|
| 135 |  K KMPDRES
 | 
|---|
| 136 |  Q:'$G(KMPDIEN)
 | 
|---|
| 137 |  Q:'$D(^KMPD(8973,KMPDIEN,0))
 | 
|---|
| 138 |  Q:'$G(KMPDAPP)
 | 
|---|
| 139 |  Q:KMPDAPP<1!(KMPDAPP>5)
 | 
|---|
| 140 |  ;
 | 
|---|
| 141 |  N DATA,I,NODE
 | 
|---|
| 142 |  ;
 | 
|---|
| 143 |  S NODE=21+(KMPDAPP*.1),I=0
 | 
|---|
| 144 |  F  S I=$O(^KMPD(8973,KMPDIEN,NODE,I)) Q:'I  D 
 | 
|---|
| 145 |  .Q:'$D(^KMPD(8973,KMPDIEN,NODE,I,0))  S DATA=^(0)
 | 
|---|
| 146 |  .S KMPDRES(DATA)=I
 | 
|---|
| 147 |  ;
 | 
|---|
| 148 |  Q
 | 
|---|