| 1 | KMPDU3 ;OAK/RAK - CM Tools Utilities ;7/22/04  09:10 | 
|---|
| 2 | ;;2.0;CAPACITY MANAGEMENT TOOLS;**2**;Mar 22, 2002 | 
|---|
| 3 | ; | 
|---|
| 4 | ERRDATA(KMPDY,KMPDIEN,KMPDGBL) ;-- error log data. | 
|---|
| 5 | ;----------------------------------------------------------------------- | 
|---|
| 6 | ; KMPDIEN. Ien in format 'multiple,ien'. | 
|---|
| 7 | ; KMPDGBL... Global where data is stored. | 
|---|
| 8 | ;----------------------------------------------------------------------- | 
|---|
| 9 | ; | 
|---|
| 10 | K KMPDY | 
|---|
| 11 | ; | 
|---|
| 12 | I $G(KMPDIEN)="" S @KMPDGBL@(0)="[IEN not defined]" Q | 
|---|
| 13 | ; | 
|---|
| 14 | I KMPDGBL="" S @KMPDGBL@(0)="[Global for storage is not defined]" Q | 
|---|
| 15 | ; | 
|---|
| 16 | N DATA,DATA1,I,IEN,IEN1,LN | 
|---|
| 17 | ; | 
|---|
| 18 | ; kill global with check for ^tmp or ^utility. | 
|---|
| 19 | D KILL^KMPDU(.DATA,KMPDGBL) | 
|---|
| 20 | ; if error. | 
|---|
| 21 | I $E(DATA)="[" S @KMPDGBL@(0)=DATA Q | 
|---|
| 22 | ; | 
|---|
| 23 | S IEN1=$P(KMPDIEN,",") | 
|---|
| 24 | I 'IEN1 S @KMPDGBL@(0)="[IEN1 not defined]" Q | 
|---|
| 25 | S IEN=$P(KMPDIEN,",",2) | 
|---|
| 26 | I 'IEN S @KMPDGBL@(0)="[IEN not defined]" Q | 
|---|
| 27 | ; | 
|---|
| 28 | S DATA=$G(^%ZTER(1,IEN,0)) | 
|---|
| 29 | I DATA="" S @KMPDGBL@(0)="[No data for "_KMPDIEN_"]" Q | 
|---|
| 30 | ; | 
|---|
| 31 | ; $h date in external format. | 
|---|
| 32 | S @KMPDGBL@(0)=$$HTE^XLFDT(+DATA) | 
|---|
| 33 | ; error text. | 
|---|
| 34 | S @KMPDGBL@(1)=$G(^%ZTER(1,IEN,1,IEN1,"ZE")) | 
|---|
| 35 | S @KMPDGBL@(2)="",LN=3 | 
|---|
| 36 | ; last global reference. | 
|---|
| 37 | I $G(^%ZTER(1,IEN,1,IEN1,"GR"))'="" D | 
|---|
| 38 | .S @KMPDGBL@(LN)="Last Global Reference: "_^("GR"),LN=LN+1 | 
|---|
| 39 | ; $h. | 
|---|
| 40 | I $G(^%ZTER(1,IEN,1,IEN1,"H"))'="" D | 
|---|
| 41 | .S @KMPDGBL@(LN)="$H: "_^("H"),LN=LN+1 | 
|---|
| 42 | S DATA=$G(^%ZTER(1,IEN,1,IEN1,"ECODE")) | 
|---|
| 43 | ; $ecode | 
|---|
| 44 | S @KMPDGBL@(LN)="$ECODE = "_$P(DATA,U),LN=LN+1 | 
|---|
| 45 | ; $stack | 
|---|
| 46 | S @KMPDGBL@(LN)="$STACK = "_$P(DATA,U,2),LN=LN+1 | 
|---|
| 47 | ; $estack | 
|---|
| 48 | S @KMPDGBL@(LN)="$ESTACK = "_$P(DATA,U,3),LN=LN+1 | 
|---|
| 49 | ; $quit | 
|---|
| 50 | S @KMPDGBL@(LN)="$QUIT = "_$P(DATA,U,4),LN=LN+1 | 
|---|
| 51 | ; $stack multiple. | 
|---|
| 52 | F I=0:0 S I=$O(^%ZTER(1,IEN,1,IEN1,"STACK",I)) Q:'I  D | 
|---|
| 53 | .Q:'$D(^%ZTER(1,IEN,1,IEN1,"STACK",I,0))  S DATA=^(0) | 
|---|
| 54 | .S @KMPDGBL@(LN)=$P(DATA,U)_" = "_$P(DATA,U,2) | 
|---|
| 55 | .S LN=LN+1 | 
|---|
| 56 | ; variables and data multiple #10. | 
|---|
| 57 | F I=0:0 S I=$O(^%ZTER(1,IEN,1,IEN1,"ZV",I)) Q:'I  D | 
|---|
| 58 | .Q:'$D(^%ZTER(1,IEN,1,IEN1,"ZV",I,0))  S DATA=^(0),DATA1=$G(^("D")) | 
|---|
| 59 | .Q:DATA="" | 
|---|
| 60 | .S @KMPDGBL@(LN)=DATA_" = "_$E(DATA1,1,225) | 
|---|
| 61 | .S LN=LN+1 | 
|---|
| 62 | ; | 
|---|
| 63 | S KMPDY=$NA(@KMPDGBL) | 
|---|
| 64 | S:'$D(@KMPDGBL) KMPDY="<No Data To Report>" | 
|---|
| 65 | ; | 
|---|
| 66 | Q | 
|---|
| 67 | ; | 
|---|
| 68 | ERRDATE(KMPDY,KMPDATE) ;-- get error log date or list all dates | 
|---|
| 69 | ;----------------------------------------------------------------------- | 
|---|
| 70 | ; KMPDATE... Date in internal fileman format, or "*" for a list of all | 
|---|
| 71 | ;            available dates. | 
|---|
| 72 | ; | 
|---|
| 73 | ;          if one date | 
|---|
| 74 | ; KMPDY(0)=ExternalDate^Ien^NumberOfErrors | 
|---|
| 75 | ; | 
|---|
| 76 | ;          or a list of all available dates | 
|---|
| 77 | ; KMPDY(0)=ExternalDate^Ien^NumberOfErrors | 
|---|
| 78 | ; KMPDY(1)=ExternalDate^Ien^NumberOfErrors | 
|---|
| 79 | ; KMPDY(2)=ExternalDate^Ien^NumberOfErrors | 
|---|
| 80 | ; KMPDY(...)=... | 
|---|
| 81 | ;----------------------------------------------------------------------- | 
|---|
| 82 | ; | 
|---|
| 83 | I $G(KMPDATE)="" S KMPDY(0)="[Date entry not defined]" Q | 
|---|
| 84 | ; | 
|---|
| 85 | I KMPDATE'="*" D  Q | 
|---|
| 86 | .; external date | 
|---|
| 87 | .S $P(KMPDY(0),U)=$$FMTE^XLFDT(KMPDATE) | 
|---|
| 88 | .; set to date portion of $h format | 
|---|
| 89 | .S KMPDATE=+$$FMTH^XLFDT(KMPDATE) | 
|---|
| 90 | .; ien | 
|---|
| 91 | .S $P(KMPDY(0),U,2)=$O(^%ZTER(1,"B",KMPDATE,0)) | 
|---|
| 92 | .; number of errors | 
|---|
| 93 | .S $P(KMPDY(0),U,3)=$P($G(^%ZTER(1,+$P(KMPDY(0),U,2),1,0)),U,3) | 
|---|
| 94 | ; | 
|---|
| 95 | ; if all entries requested | 
|---|
| 96 | I KMPDATE="*" D  Q | 
|---|
| 97 | .N DATE,I,LN S (I,LN)=0 | 
|---|
| 98 | .F  S I=$O(^%ZTER(1,"B",I)) Q:'I  I $D(^%ZTER(1,I,0)) D | 
|---|
| 99 | ..; external date | 
|---|
| 100 | ..S $P(KMPDY(LN),U)=$$HTE^XLFDT(I) | 
|---|
| 101 | ..; ien | 
|---|
| 102 | ..S $P(KMPDY(LN),U,2)=I | 
|---|
| 103 | ..; number of errors | 
|---|
| 104 | ..S $P(KMPDY(LN),U,3)=$P($G(^%ZTER(1,I,1,0)),U,3) | 
|---|
| 105 | ..S LN=LN+1 | 
|---|
| 106 | ; | 
|---|
| 107 | Q | 
|---|
| 108 | ; | 
|---|
| 109 | ROUSAVE(KMPDRES,KMPDRNM,KMPDRCD) ;-- routine save | 
|---|
| 110 | ;----------------------------------------------------------------------- | 
|---|
| 111 | ; KMPDRNM... Routine name. | 
|---|
| 112 | ; KMPDRCD... Array contianing routine code (or text). | 
|---|
| 113 | ;----------------------------------------------------------------------- | 
|---|
| 114 | ; | 
|---|
| 115 | K KMPDRES | 
|---|
| 116 | I $G(KMPDRNM)="" S KMPDRES(0)="[Routine Name not defined]" Q | 
|---|
| 117 | I $L(KMPDRNM)>8 D  Q | 
|---|
| 118 | .S KMPDRES(0)="[Routine Name must not be greater than 8 characters]" | 
|---|
| 119 | I '$D(KMPDRCD) D  Q | 
|---|
| 120 | .S KMPDRES(0)="[There is no Routine code (text) to save]" | 
|---|
| 121 | ; | 
|---|
| 122 | N DIE,GLOBAL,I,X,XCN | 
|---|
| 123 | S GLOBAL=$NA(^TMP("KMPDU3-1",$J)) | 
|---|
| 124 | K @GLOBAL | 
|---|
| 125 | S I=0 | 
|---|
| 126 | F  S I=$O(KMPDRCD(I)) Q:'I  S @GLOBAL@(I,0)=KMPDRCD(I) | 
|---|
| 127 | S X=KMPDRNM,DIE="^TMP("_"""KMPDU3-1"""_","_$J_",",XCN=0 | 
|---|
| 128 | X ^%ZOSF("SAVE") | 
|---|
| 129 | ; | 
|---|
| 130 | S KMPDRES(0)="<Routine Saved>" | 
|---|
| 131 | ; | 
|---|
| 132 | Q | 
|---|
| 133 | ; | 
|---|
| 134 | ROUSTATS(KMPDRES,KMPDIENS) ;-- routine stats | 
|---|
| 135 | ;----------------------------------------------------------------------- | 
|---|
| 136 | ; KMPDIENS... Ien(s) for file #8972.1 (CAPMAN ROUTINE STATS).  If more | 
|---|
| 137 | ;             than one Ien then each will be seperated by a comma. | 
|---|
| 138 | ;             Example: KMPDIENS="12,98,38,123" | 
|---|
| 139 | ; | 
|---|
| 140 | ; KMPDRES()   Results up-arrow (^) delimited in format: | 
|---|
| 141 | ;             Piece 1  - Name..................(field .01) | 
|---|
| 142 | ;             Piece 4  - CPU Time..............(field #.04) | 
|---|
| 143 | ;             Piece 5  - DIO References........(field #.05) | 
|---|
| 144 | ;             Piece 6  - BIO References........(field #.06) | 
|---|
| 145 | ;             Piece 7  - Page Faults...........(field #.07) | 
|---|
| 146 | ;             Piece 8  - M commands/Lines......(field #.08) | 
|---|
| 147 | ;             Piece 9  - Global References.....(field #.09) | 
|---|
| 148 | ;             Piece 10 - Count.................(field #.1) | 
|---|
| 149 | ;             Piece 14 - Ave CPU Time..........(field #99.04 - computed) | 
|---|
| 150 | ;             Piece 15 - Ave DIO References....(field #99.05 - computed) | 
|---|
| 151 | ;             Piece 16 - Ave BIO References....(field #99.06 - computed) | 
|---|
| 152 | ;             Piece 17 - Ave Page Faults.......(field #99.07 - computed) | 
|---|
| 153 | ;             Piece 18 - Ave M Commands/Lines..(field #99.08 - computed) | 
|---|
| 154 | ;             Piece 19 - Ave Global References.(field #99.09 - computed) | 
|---|
| 155 | ;----------------------------------------------------------------------- | 
|---|
| 156 | ; | 
|---|
| 157 | K KMPDRES | 
|---|
| 158 | I $G(KMPDIENS)="" S KMPDRES(0)="[IEN data not defined]" Q | 
|---|
| 159 | ; | 
|---|
| 160 | N DATA,I,IEN,J,LN | 
|---|
| 161 | ; | 
|---|
| 162 | S IEN="",(I,LN)=0 | 
|---|
| 163 | F I=1:1 S IEN=$P(KMPDIENS,",",I) Q:'IEN  D | 
|---|
| 164 | .Q:'$D(^KMPD(8972.1,IEN,0))  S DATA=^(0) | 
|---|
| 165 | .; put second piece (date/time entered) in external format | 
|---|
| 166 | .S $P(DATA,U,2)=$$FMTE^XLFDT($P(DATA,U,2)) | 
|---|
| 167 | .S KMPDRES(LN)=DATA | 
|---|
| 168 | .; computed fields | 
|---|
| 169 | .F J=4:1:9 S $P(KMPDRES(LN),U,(J+10))=$$GET1^DIQ(8972.1,IEN,(99+(.01*J))) | 
|---|
| 170 | .S LN=LN+1 | 
|---|
| 171 | ; | 
|---|
| 172 | S:'$D(KMPDRES) KMPDRES(0)="<No Data to Report>" | 
|---|
| 173 | ; | 
|---|
| 174 | Q | 
|---|