HP3000-L Archives

May 2003, Week 2

HP3000-L@RAVEN.UTC.EDU

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
"John R. Wolff" <[log in to unmask]>
Reply To:
John R. Wolff
Date:
Mon, 12 May 2003 05:23:36 -0400
Content-Type:
text/plain
Parts/Attachments:
text/plain (134 lines)
I have had this same need myself.  So I wrote the following command files
to do this using DISCFREE.  To do the large number computation it requires
MPEX, which has that capability.  The main command file is DISCMB which in
turn calls DISCVARS for the MPEX computations.  It converts sectors into
MB.  It also uses a general purpose command file which I find quite useful
called READFILE.  READFILE will turn the contents of a (limited size)
flatfile into an "array" of variables for further processing using MPE
functions, etc..  (Some lines in the listing below are wrapped.  I have
tried to indicate this by placing the characters "/\", which must be
removed, after each wrap that I noticed.)

I hope you find this useful.

John Wolff

USER DEFINED COMMAND FILE:  DISCMB.COMMANDS.SYS

OPTION NOLIST,BREAK,HELP
ERASE DISCUSEC.MANAGER.SYS
ECHO
COMMENT: Collect the Report Data into a File: DISCUSEC
FILE DISCUSEC=DISCUSEC.MANAGER.SYS,OLD;SHR;ACC=INOUT
XEQ DISCFREE.PUB.SYS "C" > *DISCUSEC
RESET DISCUSEC
COMMENT: Extract the 4th Record From the End of the File
FILE DISCUSED=DISCUSED.MANAGER.SYS,OLD;EXC;ACC=OUT
PRINT FILE=DISCUSEC.MANAGER.SYS;OUT=*DISCUSED;START=-4;END=-4;UNN;NONUM
RESET DISCUSED
COMMENT: Read the Record into a Variable: RECORD1
XEQ READFILE.COMMANDS.SYS 80,1,1,0 < DISCUSED.MANAGER.SYS
SETVAR MBTOTAL;WORD(RECORD1,' ',3,,1)
SETVAR MBUSED;WORD(RECORD1,' ',5,,1)
SETVAR MBAVAIL;WORD(RECORD1,' ',9,,1)
COMMENT: Compute Totals with Real Arithmetic
MPEX "XEQ DISCVARS.MANAGER.SYS",1 > $NULL
SETVAR MBTOTAL;LTRIM(MBTOTAL)
SETVAR MBUSED;LTRIM(MBUSED)
SETVAR MBAVAIL;LTRIM(MBAVAIL)
SETVAR PCTUSED;LTRIM(PCTUSED)
ECHO Percent of Total Disc Space Used: !PCTUSED%
ECHO Total MegaBytes of Disc Space:           !MBTOTAL Mb
ECHO Total MegaBytes of Disc Space Used:       !MBUSED Mb
ECHO Total MegaBytes of Disc Space Available:  !MBAVAIL Mb!BELL
DELETEVAR RECORD@,MBTOTAL,MBUSED,MBAVAIL,PCTUSED
ECHO
RETURN

USER DEFINED COMMAND FILE:  DISCVARS.MANAGER.SYS

OPTION NOLIST,BREAK,HELP
COMMENT: This Command File is Intended to be Called from DISCMB.COMMANDS
COMMENT: But, If it is XEQuted Directly, Then it will XEQ DISCMB First.
IF BOUND(MBTOTAL)=TRUE AND BOUND(MBUSED)=TRUE AND BOUND(MBAVAIL)=TRUE THEN
   SETVAR MBTOTAL;REALPARSE(LTRIM(RTRIM(MBTOTAL)))*256//1048576
   SETVAR MBUSED;REALPARSE(LTRIM(RTRIM(MBUSED)))*256//1048576
   SETVAR MBAVAIL;REALPARSE(LTRIM(RTRIM(MBAVAIL)))*256//1048576
   SETVAR PCTUSED;REALPARSE(LTRIM(MBUSED))//REALPARSE(LTRIM(MBTOTAL))*100
ELSE
   XEQ DISCMB.COMMANDS.SYS
ENDIF
RETURN

USER DEFINED COMMAND FILE:  READFILE.COMMANDS.SYS

PARM COUNT=1024,LIMIT=9999,TRUNCATE=0,SKIP=0
OPTION NOLIST,BREAK,HELP
# {XEQ READFILE.COMMANDS.SYS | READFILE} [count][,limit[,{0|1}[,{0|1}]]]
< filename
/\
COMMENT: where, COUNT is the Number of Characters to be Read/Record
COMMENT:        LIMIT is the Number of Records to Read from the File
COMMENT:        TRUNCATE = 1 to Truncate Trailing Blanks from Each Record
COMMENT:        SKIP = 1 to Skip 0 Length Records at the Beginning of the
File
/\
COMMENT:        NOTE: "filename" Must Be An MPE File Name; Not
POSIX "filename"
/\
COMMENT:              Back-Reference a File Equate for MSG Files as:
/\
COMMENT:                   FILE
filename=file.group.account,OLD;EXC;ACC=IN;COPY
/\
COMMENT: The Record Count Read Will Be in the Integer Variable: RECORDS
COMMENT: The File Contents Will Be in String Variables: RECORD1 ...
RECORD###
/\
IF BOUND(RECORDS)=TRUE OR BOUND(RECORD1)=TRUE THEN
   DELETEVAR RECORD@
ENDIF
SETVAR RECORDS;0
IF NUMERIC('!COUNT')=FALSE OR !COUNT<0 OR NUMERIC('!LIMIT')=FALSE OR !
LIMIT<0 OR NUMERIC('!TRUNCATE')=FALSE OR NUMERIC('!SKIP')=FALSE THEN
/\
   ECHO
   ECHO [READFILE] ERROR: Parameter(s) Not Numeric or Out of Range: !BELL
  ECHO            COUNT: !COUNT; LIMIT: !LIMIT; TRUNCATE: !TRUNCATE; SKIP: !
SKIP
/\
   ECHO
   RETURN
ENDIF
IF !COUNT=0 OR !COUNT>1024 THEN
   SETVAR READCNT;1024
ELSE
   SETVAR READCNT;!COUNT
ENDIF
IF "LFT(HPSTDIN,1)"="$" AND "!HPSTDIN"<>"$OLDPASS" THEN
   RETURN
ELSEIF "LFT(HPSTDIN,1)"<>"$" AND (FINFO(HPSTDIN,"EXISTS")=FALSE OR WORD
(FINFO(HPSTDIN,"FMTFOPT")," ,",1,,1)<>"ASCII" OR FINFO(HPSTDIN,"EOF")=0)
THEN
/\
   RETURN
ENDIF
SETVAR EOF;MIN(FINFO(HPSTDIN,"EOF"),!LIMIT)+1
WHILE SETVAR(EOF,EOF-1)>0 DO
   SETVAR RECORDS;RECORDS+1
   IF !TRUNCATE=0 THEN
      SETVAR RECORD!RECORDS;INPUT(,,!READCNT)
   ELSE
      SETVAR RECORD!RECORDS;RTRIM(INPUT(,,!READCNT),' ')
   ENDIF
   IF !RECORDS=1 AND !SKIP=1 AND TYPEOF(RECORD1)=2 AND LEN(RECORD1)=0 THEN
      DELETEVAR RECORD1
      SETVAR RECORDS;0
   ENDIF
ENDWHILE
DELETEVAR EOF,READCNT
RETURN

* To join/leave the list, search archives, change list settings, *
* etc., please visit http://raven.utc.edu/archives/hp3000-l.html *

ATOM RSS1 RSS2