| 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 | 
|---|