[Info-vax] SHOW DEVICE/SEMI_FULL
Phillip Helbig---undress to reply
helbig at astro.multiCLOTHESvax.de
Sun Aug 1 13:07:26 EDT 2010
Thanks for all the suggestions. I am now using, for a full overview,
$ CHD == "PIPE FREE DS DK ; @ DISK:[DIR]CHECK_DS.COM"
$ FREE == "@ PROC_DIR:FREE.COM" ! see below
$ WSO == "WRITE SYS$OUTPUT"
There is some overlap; modify to taste.
$! CHECK_DS.COM
$ SHOW DEVICE DS
$ PIPE SHOW DEVICE DK/MOUNT | SEARCH SYS$PIPE ":"
$ WSO ""
$ WSO ""
$ READ/PROMPT="Members: " SYS$COMMAND DUMMY
$! ALPHA-only!
$ PIPE SHOW SHADOW | SEARCH SYS$PIPE Volume,Device | -
CONVERT SYS$INPUT: SYS$OUTPUT
$ WSO ""
$ READ/PROMPT="Members: " SYS$COMMAND DUMMY
$ PIPE SHOW DEVICE DS | SEARCH/MATCH=NAND SYS$PIPE ":"
$LOOP:
$ D = F$DEVICE("_DSA*","DISK")
$ IF D .EQS. "" THEN EXIT
$ PIPE SHOW DEVICE 'D' | SEARCH SYS$PIPE ":"
$GOTO LOOP
$ EXIT
---------8<-------------------------------------------------------------------
$! collected from comp.os.vms a few hundred megafortnights ago
$ ON ERROR THEN GOTO DONE
$ IF P1 .EQS. "" THEN READ/PROMPT="_disks: " SYS$COMMAND P1
$ FREETMP := SYS$SCRATCH:FREE.TMP
$ NOTYET := TRUE
$ HEADER_1 = "Device Volume Free " + -
" Megabyte Gigabyte Percent Error"
$ HEADER_2 = " Name Label Blocks" + -
" Free Free Free Count"
$ SPACE := ""
$ LEN = 12
$ CREATE 'FREETMP'
$ I = 0
$PLOOP:
$ I = I + 1
$ IF P'I' .EQS. "" THEN GOTO END_PLOOP
$ SHOW DEV/OUT='FREETMP''I' &P'I'
$ APPEND 'FREETMP''I' 'FREETMP'
$GOTO PLOOP
$END_PLOOP:
$ CLOSE/NOLOG FREETMP
$ OPEN/READ FREETMP 'FREETMP'
$LOOP:
$ READ/END=DONE FREETMP LINE
$ IF F$LOCATE(":",LINE) .EQ. F$LENGTH(LINE) THEN GOTO LOOP
$ DISK = F$ELEMENT(0," ",LINE)
$ LABEL = F$GETDVI(DISK,"LOGVOLNAM") - "DISK$"
$ FREE = F$STRING(F$GETDVI(DISK,"FREEBLOCKS"))
$ MEGS = F$STRING(F$INTEGER(FREE/2000))
$ GIGS = F$STRING(F$INTEGER(MEGS/1000))
$ MAX = F$STRING(F$GETDVI(DISK,"MAXBLOCK"))
$ FRAC = F$STRING(100*FREE/MAX)
$ FREELEN = LEN - F$LENGTH(FREE)
$ FREE = F$FAO("!#(#AS)",1,FREELEN,SPACE) + FREE
$ MEGSLEN = LEN - F$LENGTH(MEGS)
$ MEGS = F$FAO("!#(#AS)",1,MEGSLEN,SPACE) + MEGS
$ GIGSLEN = LEN - F$LENGTH(GIGS)
$ GIGS = F$FAO("!#(#AS)",1,GIGSLEN,SPACE) + GIGS
$ FRACLEN = LEN - F$LENGTH(FRAC)
$ FRAC = F$FAO("!#(#AS)",1,FRACLEN,SPACE) + FRAC
$ ERRCNT = F$STRING(F$GETDVI(DISK,"ERRCNT"))
$ ERRCNTLEN = 8 - F$LENGTH(ERRCNT)
$ ERRCNT = F$FAO("!#(#AS)",1,ERRCNTLEN,SPACE) + ERRCNT
$ IF F$LENGTH(LABEL) .NE. 0
$ THEN
$ IF NOTYET
$ THEN
$ NOTYET := FALSE
$ WSO ""
$ WSO HEADER_1
$ WSO HEADER_2
$ ENDIF
$ WSO F$FAO("!#(#AS)",6,LEN,DISK,LABEL,FREE,MEGS,GIGS,FRAC) + ERRCNT
$ ENDIF
$GOTO LOOP
$DONE:
$ CLOSE/NOLOG FREETMP
$ DELETE/NOLOG 'FREETMP'*;*
$ EXIT
More information about the Info-vax
mailing list