[613] | 1 | %ZOSVKSD ;OAK/KAK - Calculate Disk Capacity ;5/9/07 10:36
|
---|
| 2 | ;;8.0;KERNEL;**121,197,268,456**;Jul 26, 2004
|
---|
| 3 | ;
|
---|
| 4 | ; This routine will help to calculate disk capacity for
|
---|
| 5 | ; either DSM or Cache system platforms by looking up
|
---|
| 6 | ; volume set table information
|
---|
| 7 | ;
|
---|
| 8 | EN(SITENUM,SESSNUM,VOLS,OS) ;-- called by routine SYS+2^KMPSLK
|
---|
| 9 | ;--------------------------------------------------------------------
|
---|
| 10 | ; SITENUM = Station number of site
|
---|
| 11 | ; SESSNUM = SAGG session number
|
---|
| 12 | ; VOLS = Array containing names of monitored volumes
|
---|
| 13 | ; OS = Type of M platform (CVMS, CWINNT)
|
---|
| 14 | ;
|
---|
| 15 | ; Returns ^XTMP("KMPS",SITENUM,SESSNUM,"@VOL",vol_name) = vol_size
|
---|
| 16 | ;--------------------------------------------------------------------
|
---|
| 17 | ;
|
---|
| 18 | Q:'$G(SITENUM)
|
---|
| 19 | Q:$G(SESSNUM)=""
|
---|
| 20 | Q:$G(OS)=""
|
---|
| 21 | ;
|
---|
| 22 | D @OS
|
---|
| 23 | ;
|
---|
| 24 | Q
|
---|
| 25 | ;
|
---|
| 26 | CVMS ;--------------------------------------------------------------------
|
---|
| 27 | ; Version for Cache for OpenVMS platform
|
---|
| 28 | ;--------------------------------------------------------------------
|
---|
| 29 | ;
|
---|
| 30 | ;-- code from routine %FREECNT
|
---|
| 31 | ;
|
---|
| 32 | N DIR
|
---|
| 33 | ;
|
---|
| 34 | S DIR=""
|
---|
| 35 | F S DIR=$O(^|"%SYS"|SYS("UCI",DIR)) Q:DIR="" D
|
---|
| 36 | .;
|
---|
| 37 | .N BLKSIZ,DIRUP,ISBIGDB,MAX,SIZE,VOLTOT,X,Y,ZU
|
---|
| 38 | .;
|
---|
| 39 | .Q:$G(^|"%SYS"|SYS("UCI",DIR))]""
|
---|
| 40 | .S X=DIR
|
---|
| 41 | .X ^%ZOSF("UPPERCASE")
|
---|
| 42 | .;
|
---|
| 43 | .; strip off trailing '\' if needed
|
---|
| 44 | .I $E(Y,$L(Y))="\" S Y=$E(Y,1,$L(Y)-1)
|
---|
| 45 | .S DIRUP=Y
|
---|
| 46 | .;
|
---|
| 47 | .; use $ZU(49) to see if directory is mounted
|
---|
| 48 | .S ZU=$ZU(49,DIR)
|
---|
| 49 | .;
|
---|
| 50 | .; quit if directory does not exist or is dismounted
|
---|
| 51 | .Q:ZU<0
|
---|
| 52 | .;
|
---|
| 53 | .; quit is directory is not mounted
|
---|
| 54 | .Q:+ZU=256
|
---|
| 55 | .;
|
---|
| 56 | .S ISBIGDB=0
|
---|
| 57 | .S BLKSIZ=$P(ZU,",",2)
|
---|
| 58 | .;
|
---|
| 59 | .I BLKSIZ>2048 D
|
---|
| 60 | ..S ISBIGDB=1
|
---|
| 61 | ..S VOLTOT=$P(ZU,",",22)
|
---|
| 62 | .;
|
---|
| 63 | .E D
|
---|
| 64 | ..I $ZBITGET($ZVERSION(0),21) S SIZE=+$P(ZU,",",23),MAX=$P(ZU,",",24)
|
---|
| 65 | ..E S SIZE=+$P(ZU,",",2),MAX=$P(ZU,",",4)
|
---|
| 66 | ..I 'SIZE Q
|
---|
| 67 | ..S VOLTOT=MAX*SIZE
|
---|
| 68 | .;
|
---|
| 69 | .;-- end of code from routine %FREECNT
|
---|
| 70 | .;
|
---|
| 71 | .D SETNODE(SITENUM,SESSNUM,DIRUP,VOLTOT)
|
---|
| 72 | ;
|
---|
| 73 | Q
|
---|
| 74 | ;
|
---|
| 75 | CWINNT ;--------------------------------------------------------------------
|
---|
| 76 | ; Version for Cache for Windows NT platform
|
---|
| 77 | ;--------------------------------------------------------------------
|
---|
| 78 | ;
|
---|
| 79 | ;-- code from routine %FREECNT
|
---|
| 80 | ;
|
---|
| 81 | N DIR,DIRUP,VOLTOT
|
---|
| 82 | N X,Y,ZU
|
---|
| 83 | ;
|
---|
| 84 | S DIR=""
|
---|
| 85 | F S DIR=$O(^|"%SYS"|SYS("UCI",DIR)) Q:DIR="" D
|
---|
| 86 | .Q:$G(^|"%SYS"|SYS("UCI",DIR))]""
|
---|
| 87 | .S X=DIR
|
---|
| 88 | .X ^%ZOSF("UPPERCASE")
|
---|
| 89 | .;
|
---|
| 90 | .; strip off trailing '\' if needed
|
---|
| 91 | .I $E(Y,$L(Y))="\" S Y=$E(Y,1,$L(Y)-1)
|
---|
| 92 | .S DIRUP=Y
|
---|
| 93 | .;
|
---|
| 94 | .; use $ZU(49) to see if directory is mounted
|
---|
| 95 | .S ZU=$ZU(49,DIR)
|
---|
| 96 | .;
|
---|
| 97 | .; quit if directory does not exist or is dismounted
|
---|
| 98 | .Q:ZU<0
|
---|
| 99 | .;
|
---|
| 100 | .; quit is directory is not mounted
|
---|
| 101 | .Q:+ZU=256
|
---|
| 102 | .;
|
---|
| 103 | .; volume size = blocks per map * number of maps
|
---|
| 104 | .S VOLTOT=+$P(ZU,",",2)*$P(ZU,",",4)
|
---|
| 105 | .;
|
---|
| 106 | .;-- end of code from routine %FREECNT
|
---|
| 107 | .;
|
---|
| 108 | .D SETNODE(SITENUM,SESSNUM,DIRUP,VOLTOT)
|
---|
| 109 | ;
|
---|
| 110 | Q
|
---|
| 111 | ;
|
---|
| 112 | SETNODE(SITENUM,SESSNUM,VOLNAM,VOLTOT) ;
|
---|
| 113 | ; Set the @VOL node in the ^XTMP("KMPS" global array
|
---|
| 114 | ;
|
---|
| 115 | ; quit if SAGG is not monitoring this volume set (directory)
|
---|
| 116 | Q:'$D(VOLS(VOLNAM))
|
---|
| 117 | ;
|
---|
| 118 | S ^XTMP("KMPS",SITENUM,SESSNUM,"@VOL",VOLNAM)=VOLTOT
|
---|
| 119 | Q
|
---|
| 120 | ;
|
---|
| 121 | ;
|
---|
| 122 | DCMPST(VERSION) ;-
|
---|
| 123 | ;---------------------------------------------------------------------------
|
---|
| 124 | ;---------------------------------------------------------------------------
|
---|
| 125 | Q:$G(VERSION)="" ""
|
---|
| 126 | I VERSION<5.1 D DecomposeStatus^%DM(RC,.MSGLIST,0,"") Q
|
---|
| 127 | E D DecomposeStatus^%SYS.DATABASE(RC,.MSGLIST,0,"")
|
---|
| 128 | Q
|
---|
| 129 | ;
|
---|
| 130 | GETDIRGL(VERSION) ;-extrinsic function
|
---|
| 131 | ;----------------------------------------------------------------------------
|
---|
| 132 | ; ; set up GLOARRAY array indexed by global name
|
---|
| 133 | ;----------------------------------------------------------------------------
|
---|
| 134 | Q:$G(VERSION)="" ""
|
---|
| 135 | I VERSION<5.1 Q $$GetDirGlobals^%DM(DIRNAM,.GLOARRAY)
|
---|
| 136 | E Q $$GetDirGlobals^%SYS.DATABASE(DIRNAM,.GLOARRAY)
|
---|
| 137 | ;
|
---|
| 138 | GLOINTEG(VERSION) ;- extrinsic function
|
---|
| 139 | ;----------------------------------------------------------------------------
|
---|
| 140 | ; check integrity of a single global
|
---|
| 141 | ; will stop if there are more than 999 errors with this global
|
---|
| 142 | ;----------------------------------------------------------------------------
|
---|
| 143 | Q:$G(VERSION)="" ""
|
---|
| 144 | I VERSION<5.1 Q $$CheckGlobalIntegrity^%DM(DIRNAM,GLO,999,.GLOTOTBLKS,.GLOPNTBLKS,.GLOTOTBYTES,.GLOPNTBYTES,.GLOBIGBLKS,.GLOBIGBYTES,.GLOBIGSTRINGS,.DATASIZE)
|
---|
| 145 | E Q $$CheckGlobalIntegrity^%SYS.DATABASE(DIRNAM,GLO,999,.GLOTOTBLKS,.GLOPNTBLKS,.GLOTOTBYTES,.GLOPNTBYTES,.GLOBIGBLKS,.GLOBIGBYTES,.GLOBIGSTRINGS,.DATASIZE)
|
---|