From: Andrew Robert [arobert@townisp.com] Sent: Wednesday, April 11, 2001 8:59 PM To: Info-VAX@Mvb.Saic.Com Subject: Re: free disk space on a bound disks LOL. Actually, it is easier to grab the freeware DFU utility. This easily generates fragmentatio, disk utilization, and space free reports among other options. No muss. No fuss. The freeware can be found on the Compaq VMS site http://www.openvms.compaq.com/portal Regards, Andrew Robert Principal Systems Analyst TS&S Infrastructure Support - OpenVMS Massachusetts Financial Services Brad wrote: > Wow and you guys complain UNIX is Cryptic !!! > > > Here's some DCL I use to display disk volumes, their total size, their > > space in use, space free and percent free. Note that it was written to > > handle shadow-sets and volume-sets. > > > > USER$ROOT:[EXE]FREEDISK.COM;14 > > > > $ IF P1 .EQS. "" THEN P1 := * > > $ SAY := WRITE SYS$OUTPUT > > $ TMB = 0 > > $ FMB = 0 > > $ CNTR = 0 > > $ PCNT = 0 > > $P_LOOP: > > $ ELEM = F$ELEM( PCNT, ",", P1 ) > > $ PCNT = PCNT + 1 > > $ IF ELEM .EQS. "" THEN GOTO P_LOOP > > $ IF ELEM .EQS. "," THEN GOTO EXIT_P_LOOP > > $ LNMTRN = F$TRNLNM( ELEM ) > > $ IF LNMTRN .NES. "" THEN - > > $ ELEM = F$PARSE( ELEM,,, "DEVICE", "NO_CONCEAL" ) > > $! ELEM = LNMTRN > > $ GOSUB GET_DATA > > $ GOTO P_LOOP > > $EXIT_P_LOOP: > > $ PCNT = 0 > > $ GOSUB P_SHIFT > > $ IF P1 .NES. "" THEN GOTO P_LOOP > > $ IF TMB .NE. 0 > > $ THEN > > $ FPCT = ((( FMB * 1000) / TMB ) + 5 ) / 10 > > $ SAY "" > > $ MSG = F$FAO( "!UL Volume!%S Mounted, Aggregate: (MB, rounded)", CNTR ) > > $ SAY F$FAO( "!45AS !8UL !8UL !8UL !3UL", MSG, TMB, TMB - FMB, FMB, FPCT > > ) > > $ ENDIF > > $ EXIT > > $! > > $P_SHIFT: > > $ P1 = P2 > > $ P2 = P3 > > $ P3 = P4 > > $ P4 = P5 > > $ P5 = P6 > > $ P6 = P7 > > $ P7 = P8 > > $ P8 = "" > > $ RETURN > > $! > > $GET_DATA: > > $ PREV_DISK := > > $ ELEM = ELEM - "_" - "_" - ":" - ":" - ":" > > $ ELEM = "_''ELEM':" > > $DISKLOOP: > > $ DISK = F$DEVICE("''ELEM'","DISK") > > $ IF DISK .EQS. PREV_DISK THEN GOTO TAPE > > $ IF DISK .EQS. "" THEN GOTO TAPE > > $ PREV_DISK = DISK > > $ MNT = F$GETDVI( DISK, "MNT" ) > > $ IF .NOT. MNT THEN GOTO DISKLOOP > > $ SMSTR = F$GETDVI( DISK, "SHDW_MASTER" ) > > $ SMBR = F$GETDVI( DISK, "SHDW_MEMBER" ) > > $ IF SMBR THEN GOTO DISKLOOP > > $! IF SMSTR .NES. "" THEN GOTO DISKLOOP > > $ IF F$GETDVI( DISK, "VOLSETMEM" ) > > $ THEN > > $ GOSUB PROC_VSET > > $ ELSE > > $ GOSUB VOL_STATS > > $ ENDIF > > $ GOTO DISKLOOP > > $TAPE: > > $ RETURN > > $PROC_VSET: > > $ DISK = F$GETDVI( DISK, "ROOTDEVNAM" ) - "_" > > $PV_LOOP: > > $ GOSUB VOL_STATS > > $ DISK = F$GETDVI( DISK, "NEXTDEVNAM" ) - "_" > > $ IF DISK .NES. "" THEN GOTO PV_LOOP > > $ RETURN > > $! > > $VOL_STATS: > > $ MNAME = F$GETDVI(DISK,"MEDIA_NAME") > > $ ERCNT = F$GETDVI(DISK,"ERRCNT") > > $ VOLNM = F$GETDVI(DISK,"VOLNAM") > > $ MBLKS = F$GETDVI(DISK,"MAXBLOCK") > > $ FBLKS = F$GETDVI(DISK,"FREEBLOCKS") > > $ UBLKS = MBLKS - FBLKS > > $ IF (FBLKS * 100) .LT. 0 > > $ THEN FPCT = (FBLKS * 10) / (MBLKS / 10) > > $ ELSE FPCT = (FBLKS * 100) / MBLKS > > $ ENDIF > > $ IF CNTR .EQ. 0 > > $ THEN > > $ SAY "" > > $ SAY " Media Err Volume Total > > Blocks Free > > Pct" > > $ SAY "Device Name Name Cnt Label Blocks in use > > Blocks > > Free" > > $ ENDIF > > $ CNTR = CNTR + 1 > > $ lvn = f$getdvi( disk, "logvolnam" ) > > $ lv := > > $ if f$length( lvn ) .eq. 2 then lv =f$fao( "(!AS)", lvn ) > > $ SAY F$FAO( "!16AS !10AS !3UL !13AS !8UL !8UL !8UL !3UL", - > > DISK + lv, MNAME, ERCNT, VOLNM, MBLKS, UBLKS, FBLKS, FPCT ) > > $ TMB = TMB + ((( MBLKS * 10 ) / 2048 ) + 5 ) / 10 > > $ FMB = FMB + ((( FBLKS * 10 ) / 2048 ) + 5 ) / 10 > > $ RETURN > > > > -- > > David J. Dachtera > > dba DJE Systems > > http://www.djesys.com/ > > > > Unofficial Affordable OpenVMS Home Page and Message Board: > > http://www.djesys.com/vms/soho/ > > > > This *IS* an OpenVMS-related newsgroup. So, a certain bias in postings > > is to be expected. > > > > Feel free to exercise your rights of free speech and expression. > > > > However, attacks against individual posters, or groups of posters, are > > strongly discouraged.