[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