Some of you replied with some compile errors
when attempting to use my MPEX "wide" version
of the LISTF,ACCESS source code.

At first I thought it was a priviledge problem
but now I'm thinking it is because some lines
may have been truncated due either due to
my cut and paste, or you may have been a victim
of your own e-mail program's word wrap.

Here goes again, at 72 columns or less, please
check for truncated lines, or if you don't trust
your e-mail client cut-and-paste, I've also
added it as an attachment for upload.  Hopefully
this list won't remove it:

VAR NUMOPENERS: SHORTINT;
VAR OPENERPINS: ARRAY [1024] OF SHORTINT;
VAR OPENERFNUMS: ARRAY [1024] 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----"+
             "----- ACCESS  RECORD -LOCK-"+
             "----- SESSION NAME -----";
MPEXHEADER2:="";
MPEXHEADER3:="";
MAXOPENPIN:=1024;

FOR RFILE IN MPEXFILESETGENERAL (1, TRUE)
  SELECT SEG (OPENED OR STORED OR RESTORED OR LOADED OR READING
                     OR STORESTAT<>0)
  DO
    BEGIN
    F:=SCOPYFILE;
    IFVERSION5 THEN
      DOLOADED;
    IF RESTORED OR RESTORING THEN
      WRITELN (CLEARF:10, "BEING RESTORED")
    ELSE IF STORED OR STORING THEN
      WRITELN (CLEARF:10, "BEING STORED")
    ELSE IF CBU THEN
      WRITELN (CLEARF:10, "OPEN BY CONCURRENT-BACKUP");

    NUMOPENERS:=0;
    IF OPENED THEN
      BEGIN
      IFVERSION5 THEN
        ROPENFILEREAD (RFILE, UFID, ROPENFILE);
      TRY
        CALL FOPENERS (@RFILE, (@RFILEUSER.GUFDPTR-@RFILEUSER)/2,
                       CALLDPARM(0), CALLDPARM(0),
                       @NUMOPENERS, @OPENERPINS, @OPENERFNUMS);
      RECOVER;
      IF NUMOPENERS=0 THEN
        SEG (WRITELN (CLEARF:10, "OPENED":10,
                      "(accessor information unavailable)"));
      (* Kludge:  Would be better as a FOR loop, but then WRITELNs
         within it wouldn't do the outer FOR loop's PAGEHEADs.
         Too bad.  EV 92/12/26. *)
      I:=0;
      WHILE I<MIN(NUMOPENERS,MAXOPENPIN) 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]);
          WRITELN (CLEARF:10, "OPENED":10, GETFMTJOBNUM,
                   OPENERPINS[I]:4:"LEFT",
                   " ",
                   PINPROGNAME(OPENERPINS[I]):26,
                   GETFMTACCESSMODE:8,
                   GETCURRENTRECORD:6, " ",
                   IF LOCKSTATE=-1 THEN "       "
                   ELSE IF LOCKSTATE=0 THEN "LOCKER "
                   ELSE STRWRITE ("WAIT:", LOCKSTATE),
                   GETFMTLOGON);
          END;
        I:=I+1;
        END;
      END
    ELSE IF READING AND VALIDCOLDLOADID THEN
      WRITELN (CLEARF:10, "SYSTEM PROTECTED");
    IF NUMOPENERS > MAXOPENPIN THEN
      SEG( WRITELN ( CLEARF:10,
                     "(Output truncated: Can't recover more than ",
                     MAXOPENPIN," accessors)"));
    END;

Tracy M. Johnson
TRW Automotive Electronics
Sensors & Components