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