HP3000-L Archives

September 1997, Week 4

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:
Neil Harvey <[log in to unmask]>
Reply To:
Neil Harvey <[log in to unmask]>
Date:
Wed, 24 Sep 1997 06:46:00 +0200
Content-Type:
text/plain
Parts/Attachments:
text/plain (156 lines)
______ Yes I rely on this undocumented "feature" of LISTF

But, if it exists in another format, I'm happy. Also I can use MPEX's
%listf,access or my modified %listf,acc which gives percentage read and
ETA. (see below)

Neil Harvey

acc.listf.vesoft

VAR NUMOPENERS: SHORTINT;
VAR OPENERPINS: ARRAY [256] OF SHORTINT;
VAR OPENERFNUMS: ARRAY [256] OF SHORTINT;
VAR I: INTEGER;
VAR RFILEUSER: TFILEUSER;
VAR ROPENFILE: TOPENFILE;
VAR LOCKSTATE: INTEGER;
VAR F: STRING[8];
VAR JOBTYPE: STRING[1];
VAR JOBNUM: INTEGER;
VAR MAXOPENPIN: INTEGER;

SUBROUTINE CLEARF;
VAR FF: STRING[8];
BEGIN
FF:=F;
F:='';
SCOPY(FF)
END;

SUBROUTINE GETFMTACCESSMODE; RFILEUSER.FMTACCESSMODE;

SUBROUTINE GETCURRENTRECORD; RFILEUSER.CURRENTRECORD(RFILE);

SUBROUTINE GETFMTJOBNUM;
BEGIN
IF JOBNUM=0 THEN 7*' '
            ELSE STRWRITE('#',JOBTYPE:1,JOBNUM:5:'LEFT')
END;

SUBROUTINE GETFMTLOGON;
BEGIN
TRY
  STRWRITE(VEJOBINFO(JOBTYPE,JOBNUM).FMTLOGON:'DOWNSHIFT') +
   (IF JOBTYPE='S' THEN ' (ldev '+VEJOBINFO(JOBTYPE,JOBNUM).LDEVIN+')'
                   ELSE '')
RECOVER
  SEG (STRWRITE('(original opener inaccesssible)'))
END;

SUBROUTINE DOLOADED;
VAR WROTELOADED: BOOLEAN;
VAR LOADINFO: TLOADINFO;
BEGIN
IFVERSION5 THEN
 IF LOADED THEN
  SEG (BEGIN
  WROTELOADED:=TRUE;
  LOADINFO.TYPE:=255;
  WHILE ISBOOLEAN (CALL LSTD'NEXT (@LOADINFO)) DO
    IF (LOADINFO.UFID)[0]=(ISDOUBLEPTR(UFID))[0] THEN
      IF LOADINFO.ISPROGRAM AND LOADINFO.PROGALLOCATED THEN
        WRITELN (CLEARF:10,
               IF LOADINFO.PROGAUTOALLOCATED THEN "AUTOALLOCATED"
                                             ELSE "ALLOCATED")
      ELSE IF LOADINFO.ISPROCESS THEN
        BEGIN
        JOBTYPE:=PINJOBTYPE(LOADINFO.PROCESSPIN);
        JOBNUM:=PINJOBNUMBER(LOADINFO.PROCESSPIN);
        WRITELN (CLEARF:10, "LOADED":10, GETFMTJOBNUM,
                 LOADINFO.PROCESSPIN:4:'LEFT',
                 IF JOBNUM=0 OR JOBTYPE='' THEN ''
                                           ELSE GETFMTLOGON);
        END
      ELSE IF LOADINFO.ISSL THEN
        WRITELN (CLEARF:10, "SL LOADED");
  IF F<>'' THEN
    WRITELN (CLEARF:10, "LOADED":10,"SYSTEM");
  END);
END;

MPEXHEADER1:="Filename ---Type--- Jobnum Pin ---------Program----"+
             "----- Where?  Record     Eof";
MPEXHEADER2:="";
MAXOPENPIN:=1024;

FOR RFILE IN MPEXFILESETTOTAL
  SELECT SEG (OPENED OR STORED OR RESTORED OR LOADED OR READING)
  DO
    BEGIN
    F:=FILE;
    IFVERSION5 THEN
      DOLOADED;
    IF RESTORED THEN
      WRITELN (CLEARF:10, "BEING RESTORED")
    ELSE IF STORED THEN
      WRITELN (CLEARF:10, "BEING STORED");

    NUMOPENERS:=0;
    IF OPENED THEN
      BEGIN
      ROPENFILEREAD (RFILE, UFID, ROPENFILE);
      CALL FOPENERS (@RFILE, (@RFILEUSER.GUFDPTR-@RFILEUSER)/2,
                     CALLDPARM(0), CALLDPARM(0),
                     @NUMOPENERS, @OPENERPINS, @OPENERFNUMS);
      IF NUMOPENERS=0 THEN
          SEG (WRITELN (CLEARF:10, "OPENED":10,
                                   "accessor information
unavailable)"));
      FOR I IN RANGE(0,MIN(NUMOPENERS,MAXOPENPIN)-1,1) DO
        BEGIN
        RFILEUSERREAD (OPENERPINS[I], OPENERFNUMS[I], RFILEUSER);
        IF OPENERPINS[I]=0 THEN
          SEG (WRITELN (CLEARF:10,
                   "OPENED":10, "":7, "":4, "GLOBALLY":26,
                   GETFMTACCESSMODE:8,
                   GETCURRENTRECORD:6))
        ELSE
          BEGIN
          IFVERSIONXL THEN
            LOCKSTATE:=-1
          ELSE
            LOCKSTATE:=SIGNEXTEND (CALL RIN'PIN'STATUS (ROPENFILE.RIN,
                                                      OPENERPINS[I]));
          JOBTYPE:=PINJOBTYPE(OPENERPINS[I]);
          JOBNUM:=PINJOBNUMBER(OPENERPINS[I]);
          IF EOF <> 0 AND GETCURRENTRECORD <> 0 THEN
             WRITELN (CLEARF:10, "OPENED":10, GETFMTJOBNUM,
                   OPENERPINS[I]:4:"LEFT",
                   PINPROGNAME(OPENERPINS[I]):25,
                   GETCURRENTRECORD//EOF*100:6,
                   "%",
                   GETCURRENTRECORD:8,
                   EOF:8)
          ELSE
             WRITELN (CLEARF:10, "OPENED":10, GETFMTJOBNUM,
                   OPENERPINS[I]:4:"LEFT",
                   PINPROGNAME(OPENERPINS[I]):25,
                   "       ",
                   GETCURRENTRECORD:8,
                   EOF:8);
    IF JOBNUM<>0 AND JOBTYPE<>'' AND EOF <> 0 AND GETCURRENTRECORD <> 0
THEN
            WRITELN ("":04, GETFMTLOGON, " ETA : ", CLOCK+
             INTEGER(((CLOCK-(VEJOBINFO(JOBTYPE,JOBNUM).INTROTIME))//
             (GETCURRENTRECORD//EOF)*(1-(GETCURRENTRECORD//EOF))/1)))
          ELSE
            WRITELN ("":04, GETFMTLOGON, " ETA : N/A");

          END;
        END;
      END
    ELSE IF READING AND VALIDCOLDLOADID THEN
      WRITELN (CLEARF:10, "SYSTEM PROTECTED");
    END;

ATOM RSS1 RSS2