PFLIST
          IDENT  PFLIST1,/COMSPFS/OVLA,PFS,01,00
          TITLE  PFLIST - LIST PF UTILITY SUMMARY FILE. 
          ABS 
          SST 
          SYSCOM B1 
          SPACE  4
*COMMENT  PFLIST - LIST PF UTILITY SUMMARY FILE.
          COMMENT  COPYRIGHT CONTROL SYSTEMS INC.  1996.
          SPACE  4
***       PFLIST - LIST PF UTILITY SUMMARY FILE.
* 
*         G. S. YODER        96/04/24.
          SPACE  4
***       *PFLIST* IS A PERMANENT FILE UTILITY PROGRAM WHICH GENERATES
*         AN OUTPUT LISTING FROM A SUMMARY FILE PRODUCED BY ANOTHER 
*         PERMANENT FILE UTILITY.  *PFLIST* MAY BE CALLED FROM *PFS* OR 
*         DIRECTLY BY A COMMAND.
          SPACE  4
***       DAYFILE MESSAGES. 
* 
*         INFORMATIVE.
* 
*         * PFLIST COMPLETE.* = PROGRAM COMPLETE. 
* 
*         FATAL SYSTEM ERRORS.
* 
*         * PFLIST ABORTED.* = ERROR FLAG DETECTED ON CONTROL POINT.
* 
*         * FORMAT ERROR IN SUMMARY FILE.*
          SPACE  4
*         COMMON DECKS. 
  
  
*CALL     COMCMAC 
*CALL     COMCCMD 
*CALL     COMSMLS 
*CALL     COMSRPV 
*CALL     COMSPFM 
          LIST   X
*CALL     COMSPFS 
          LIST   *
*CALL     COMSPFU 
*CALL     COMSPRD 
*CALL     COMSSFM 
*CALL     COMSVER 
          TITLE  ASSEMBLY CONSTANTS.
*         ASSEMBLY CONSTANTS. 
  
  
 DBUFL    EQU    1000B       SUMMARY FILE DATA BLOCK BUFFER LENGTH
 MSFBL    EQU    10001B      *COMCMSF* SORT FILES BUFFER LENGTH 
 OUTBL    EQU    10001B      OUTPUT FILE BUFFER LENGTH
 PFLBL    EQU    1001B       PROCESSED FILES FILE BUFFER LENGTH 
 SABFL    EQU    1000B       SUMMARY FILE ASSEMBLY BUFFER LENGTH
 SRTBL    EQU    20000B      SORT BUFFER LENGTH 
 SUIBL    EQU    10001B      SUMMARY INPUT FILE BUFFER LENGTH 
 SUMBL    EQU    0           SUMMARY FILE BUFFER LENGTH 
  
  
*         *COMSPFS* EQUIVALENCES. 
  
 CPAR     EQU    /COMSPFS/CPL 
 IDSA     EQU    /COMSPFS/PADR
          TITLE  RESERVED LOCATIONS AND FETS. 
          SPACE  4
          ORG    /COMSPFS/OVLA
          SPACE  4
**        RESERVED LOCATIONS. 
  
  
*         SUMMARY FILE DATA BLOCK STATUS. 
  
 BLCW     CON    0           BLOCK CONTROL WORD 
 BLTY     CON    0           TYPE OF DATA BLOCK IN BUFFER 
          SPACE  4
**        FETS. 
  
  
 SI       BSS    0           SUMMARY INPUT FILE 
 SUMMARY  FILEB  SUIB,SUIBL,FET=10D 
          SPACE  4
**        OPERATOR AND DAYFILE MESSAGES.
  
  
 MSFP     DATA   C* ?????? FILE! PROCESSED.*
 BLNK     DATA   30H
          SPACE  4
**        ERROR MESSAGES. 
  
  
 ERAN     DATA   C* SF EXCEDES NUMBER OF ARCHIVE FILES.*
 ERDS     DATA   C* DEVICE STATUS BLOCK MISSING.* 
 ERFE     DATA   C* FORMAT ERROR IN SUMMARY FILE.*
          TITLE  MAIN ROUTINES. 
 PFS      SPACE  4,10 
**        MAIN PROGRAM. 
* 
*         CALLS  CFP, CSC, ICI, OAL, OCH, OCI, PRS, RDB, SPA. 
* 
*         EXIT   TO *ABT* IF FATAL ERROR. 
  
  
 PFS      BSS    0           ENTRY
          RJ     PRS         PRESET PROGRAM 
  
*         LOCATE ARCHIVE LABEL BLOCK IF SKIP COUNT SPECIFIED. 
  
          SA5    CPAR+/COMSPFS/CPSF 
          ZR     X5,PFS3     IF NO ARCHIVE FILES TO SKIP
 PFS1     SA1    BLTY        GET BLOCK TYPE 
          SX1    X1-/COMSPFS/AFSB 
          NZ     X1,PFS2     IF NOT ARCHIVE LABEL BLOCK 
          ZR     X5,PFS5     IF BLOCK FOUND 
          SX5    X5-1        COUNT BLOCK
 PFS2     RJ     RDB         READ DATA BLOCK
          PL     X6,PFS1     IF NOT EOR 
          SB2    ERAN        * SF EXCEDES NUMBER OF ARCHIVE FILES.* 
          EQ     ABT         ABORT
  
*         READ SUMMARY FILE BLOCK AND CHECK FOR SORTED OUTPUT.
  
 PFS3     RJ     RDB
          ZR     X2,PFS4     IF BLOCK TYPE IS SAME AS PREVIOUS
          RJ     CSO         CHECK FOR SORTED OUTPUT
  
*         EXECUTE BLOCK TYPE PROCESSOR. 
  
 PFS4     NG     X6,END      IF EOR, EOF, OR EOI ENCOUNTERED
          SA1    TSIP+X6     GET PROCESSOR ADDRESS
          SB2    X1 
          JP     B2          ENTER BLOCK TYPE PROCESSOR 
  
*         PROCESS ARCHIVE LABEL BLOCK.
  
 PFS5     SA1    CPAR+/COMSPFS/CPNB 
          SA2    PFSA 
          IX1    X2-X1
          ZR     X1,END      IF ARCHIVE FILE COUNT REACHED
          SX6    X2+B1
          SA6    PFSA        COUNT ARCHIVE FILE PROCESSED 
          MOVE   3,DBUF,AFIB SET ARCHIVE FILE LABEL INFORMATION 
          RJ     OAL         OUTPUT ARCHIVE FILE LABEL INFORMATION
          EQ     PFS3        READ NEXT BLOCK
  
*         PROCESS CATALOG IMAGE RECORD BLOCK. 
  
 PFS6     ZR     X2,PFS7     IF LAST BLOCK WAS CIR BLOCK
          RJ     ICI         INITIALIZE FOR CIR PROCESSING
 PFS7     SA1    BLCW 
          SX6    DBUF        SET CIR BUFFER POINTER 
          SX7    X1          SET WORD COUNT 
          RJ     OCI         OUTPUT CATALOG IMAGE BLOCK 
          EQ     PFS3        READ NEXT BLOCK
  
*         PROCESS CATALOG ENTRIES BLOCK.
  
 PFS8     SA0    DBUF-NWCE-1 INITIALIZE ENTRY ADDRESS 
          ZR     X2,PFS9     IF LAST BLOCK WAS CATALOG ENTRIES
          RJ     IFL         INITIALIZE FOR FILE PROCESSING 
 PFS9     SA2    BLCW 
          SA0    A0+NWCE+1   ADVANCE ENTRY ADDRESS
          SB2    X2+DBUF
          SB2    A0-B2
          PL     B2,PFS3     IF BLOCK ALL PROCESSED 
          SB4    A0          SET CATALOG ADDRESS
          RJ     CSC         CHECK SELECTION CRITERIA 
          ZR     X6,PFS9     IF NOT TO PROCESS FILE 
          SA1    B4+NWCE
          BX7    X1 
          SA7    FLST        SET FILE STATUS
          RJ     CFP         COUNT FILE PROCESSED 
          EQ     PFS9        PROCESS NEXT ENTRY 
  
  
 PFSA     CON    0           ARCHIVE FILES PROCESSED COUNT
 TSIP     SPACE  4,10 
*         TABLE OF SUMMARY INPUT FILE BLOCK PROCESSORS. 
  
 TSIP     IVFD               START OF TABLE 
          IVFD   /COMSPFS/SYSB,(60/SER)    SYSTEM 
          IVFD   /COMSPFS/DSSB,(60/PFS3)   DEVICE STATUS
          IVFD   /COMSPFS/AFSB,(60/PFS5)   ARCHIVE FILE 
          IVFD   /COMSPFS/CISB,(60/PFS6)   CIR
          IVFD   /COMSPFS/CESB,(60/PFS8)   CATALOG ENTRIES
          IVFD   /COMSPFS/MXSB,(60/PFS3)   UNIDENTIFIED 
          IVFD   /COMSPFS/MXSB+1
 CSO      SPACE  4,15 
**        CSO - CHECK FOR SORTED OUTPUT.
* 
*         ENTRY  (X3) = PREVIOUS BLOCK TYPE.
*                (X6) = CURRENT BLOCK TYPE. 
* 
*         EXIT   (X6) = CURRENT BLOCK TYPE. 
*                (X2) .NE. 0 (NON-MATCHING BLOCK TYPE). 
* 
*         USES   X - 1, 2, 6. 
*                A - 1. 
* 
*         CALLS  PSF, PSI.
  
  
 CSO      SUBR               ENTRY/EXIT 
          SX1    X3-/COMSPFS/CISB 
          NZ     X1,CSO1     IF PREVIOUS BLOCK NOT CIR ENTRIES
          RJ     PSI         PROCESS SORTED CIR ENTRIES 
          EQ     CSO2        RESET BLOCK STATUS 
  
 CSO1     SX1    X3-/COMSPFS/CESB 
          NZ     X1,CSOX     IF PREVIOUS BLOCK NOT CATALOG ENTRIES
          RJ     PSF         PROCESS SORTED CATALOG ENTRIES 
 CSO2     SA1    BLTY 
          SX2    B1          INDICATE NON-MATCHING BLOCK TYPE 
          SX6    X1          RESET BLOCK TYPE 
          EQ     CSOX        RETURN 
          TITLE  SUBROUTINES. 
 APR      SPACE  4,10 
**        APR - ABORT PROCESSOR.
  
  
 APR      SUBR               ENTRY/EXIT 
          EQ     APRX        RETURN 
 IFM      SPACE  4,10 
**        IFM - ISSUE FILE COUNT MESSAGES.
* 
*         EXIT   FILE COUNT MESSAGES ISSUED TO DAYFILE. 
* 
*         USES   X - 1, 5, 6. 
*                A - 1, 5.
* 
*         CALLS  IFC. 
  
  
 IFM      SUBR               ENTRY/EXIT 
          SA5    IFMA 
          RJ     IFC         ISSUE FILE COUNT MESSAGES
          EQ     IFMX        RETURN 
  
  
 IFMA     BSS    0           *PFLIST* MESSAGE TABLE 
          VFD    1/1,1/1,22/0,18/MSFP,18/PRFC 
          CON    0           END OF TABLE 
 RDB      SPACE  4,20 
**        RDB - READ DATA BLOCK FROM SUMMARY FILE.
* 
*         EXIT   (X6) = BLOCK TYPE IF BLOCK READ. 
*                (X6) = -1 IF EOR, EOF, OR EOI ENCOUNTERED ON READ OF 
*                       BLOCK CONTROL WORD. 
*                (X2) = 0 IF BLOCK TYPE SAME A PREVIOUS BLOCK TYPE. 
*                (X2) .NE. 0 IF BLOCK TYPE NOT SAME AS PREVIOUS.
*                (X3) = PREVIOUS BLOCK TYPE.
*                (BLCW) = BLOCK CONTROL WORD IF BLOCK READ. 
*                (BLTY) = BLOCK TYPE IF BLOCK READ. 
*                (BLTY) = -1 IF EOR, EOF, OR EOI ENCOUNTERED ON READ OF 
*                         BLOCK CONTROL WORD. 
*                DATA BLOCK READ TO *DBUF* IF NO ERROR. 
*                TO *SER* IF ERROR IN SUMMARY FILE BLOCK. 
* 
*         USES   X - 1, 2, 3, 6.
*                A - 1, 2, 3, 6.
* 
*         MACROS READW. 
  
  
 RDB      SUBR               ENTRY/EXIT 
  
*         READ BLOCK CONTROL WORD AND DATA. 
  
          READW  SI,BLCW,1   READ BLOCK CONTROL WORD
          SA3    BLCW 
          SX6    -1          SET EOR, EOF, EOI STATUS 
          NZ     X1,RDB2     IF EOR, EOF, OR EOI ENCOUNTERED
          SX1    X3-DBUFL-1 
          SX6    X3 
          BX1    -X1+X6 
          NG     X1,SER      IF BAD BLOCK LENGTH
          READW  X2,DBUF,X3  READ DATA BLOCK
          NZ     X1,SER      IF INCOMPLETE READ 
  
*         IDENTIFY BLOCK TYPE.
  
          SA1    BLCW 
          SA2    TSBI-1 
          MX6    42 
          BX1    X6*X1       BLOCK IDENTIFIER 
 RDB1     SA2    A2+B1       GET NEXT ENTRY 
          SX6    A2-TSBI     SET BLOCK TYPE 
          BX3    X2-X1
          ZR     X2,RDB2     IF END OF ENTRIES
          NZ     X3,RDB1     IF NO MATCH
 RDB2     SA3    BLTY 
          SA6    A3          SET NEW BLOCK TYPE 
          IX2    X6-X3       SET NEW BLOCK TYPE STATUS
          EQ     RDBX        RETURN 
 RIP      SPACE  4,10 
**        RIP - REPRIEVE INTERRUPT PROCESSOR. 
* 
*         EXIT   BUSY FETS SET COMPLETE TO ALLOW TERMINATION
*                  PROCESSING.
* 
*         MACROS COMPFET. 
  
  
 RIP      SUBR               ENTRY/EXIT 
          COMPFET  (O,SU) 
          EQ     RIPX        RETURN 
 SER      SPACE  4,10 
**        SER - PROCESS SUMMARY FILE ERROR. 
* 
*         EXIT   TO *ABT*.
* 
*         USES   B - 2. 
  
  
 SER      BSS    0           ENTRY
          SB2    ERFE        * FORMAT ERROR IN SUMMARY FILE.* 
          EQ     ABT         ABORT
          SPACE  4
**        COMMON DECKS. 
  
  
*CALL     COMCCDD 
*CALL     COMCCIO 
*CALL     COMCCOD 
*CALL     COMCCPM 
*CALL     COMCDXB 
*CALL     COMCEDT 
 FCE$     EQU    0
*CALL     COMCFCE 
 CHDR1    EQU    /COMCFCE/CHDR1 
 GMS$     EQU    1           USE SORT KEY MASK
 MWK$     EQU    1           ALLOW MULTIPLE WORD SORT KEYS
*CALL     COMCGMS 
*CALL     COMCJCR 
*CALL     COMCLFM 
*CALL     COMCMSF 
*CALL     COMCMVE 
          LIST   X
*CALL     COMCPFS 
          LIST   *
*CALL     COMCPFU 
*CALL     COMCRDW 
*CALL     COMCSCB 
*CALL     COMCSFN 
*CALL     COMCSNM 
*CALL     COMCSYS 
*CALL     COMCVDT 
*CALL     COMCWTC 
*CALL     COMCWTH 
*CALL     COMCWTO 
*CALL     COMCWTW 
*CALL     COMCZTB 
          TITLE  BUFFERS. 
          USE    LITERALS 
          SPACE  4
**        BUFFERS.
  
  
*         BUFFERS USED BY PRESET. 
  
 DBUF     BSSZ   DBUFL       SUMMARY FILE DATA BLOCK BUFFER 
 SUIB     BSSZ   SUIBL       SUMMARY INPUT FILE BUFFER
 OUTB     BSSZ   OUTBL       OUTPUT FILE
  
*         BUFFERS OVERLAYING PRESET.
  
 SUMB     EQU    OUTB+OUTBL  SUMMARY FILE (NOT USED)
 PFLB     EQU    SUMB+SUMBL  PROCESSED FILES FILE 
 MS1B     EQU    PFLB+PFLBL  SORT FILE 1
 MS2B     EQU    MS1B+MSFBL  SORT FILE 2
 MS3B     EQU    MS2B+MSFBL  SORT FILE 3
 MS4B     EQU    MS3B+MSFBL  SORT FILE 4
 SRTB     EQU    MS3B        SORT BUFFER (OVERLAYS *MS3B* AND *MS4B*) 
          ERRNG  MSFBL*2-SRTBL  SORT BUFFER OVERFLOW
 EBUF     EQU    MS4B+MSFBL+5  END OF BUFFERS 
          TITLE  PFLIST PRESET. 
 PRS      SPACE  4,15 
**        PRS - PRESET PROGRAM. 
* 
*         EXIT   FILES INITIALIZED. 
*                MESSAGES INITIALIZED.
*                SUMMARY FILE SYSTEM BLOCK PROCESSED. 
*                SUMMARY FILE DEVICE STATUS BLOCK PROCESSED IF PRESENT. 
* 
*         USES   A - 1, 2, 6, 7.
*                X - 0, 1, 2, 3, 5, 6, 7. 
*                B - 2, 3, 5, 7.
* 
*         CALLS  IOF, ODV, RPS, RDB, SCB, SNM, ZTB. 
* 
*         MACROS MEMORY, MOVE, REPRIEVE, READ, READW. 
  
  
 PRS      SUBR               ENTRY/EXIT 
          SB1    1
          MEMORY CM,,R,EBUF  REQUEST REQUIRED MEMORY
          REPRIEVE  RPVB,SET,277B  SET EXTENDED REPRIEVE PROCESSING 
  
*         READ USER AND FILE NAME SELECTIONS. 
  
          SX0    EBUF        SET SELECTION BUFFER ADDRESS 
          RJ     RPS         READ PERMANENT FILE SELECTIONS 
  
*         INITIALIZE SUMMARY INPUT FILE FET AND READ PREFIX TABLE.
  
          SA1    SI          SET FILE NAME IN FET 
          SA2    CPAR+/COMSPFS/CPSI 
          MX6    -18
          BX6    -X6*X1 
          BX6    X2+X6
          SA6    A1 
          READ   SI 
          READW  SI,DBUF,15  READ PREFIX TABLE
          NZ     X1,SER      IF INCOMPLETE READ 
          SA1    DBUF 
          SA2    PRSA 
          BX1    X1-X2
          NZ     X1,SER      IF NOT PREFIX TABLE
  
*         PROCESS SYSTEM BLOCK. 
  
          RJ     RDB         READ SYSTEM BLOCK
          SA1    BLCW 
          SX6    X6-/COMSPFS/SYSB 
          NZ     X6,SER      IF NOT SYSTEM BLOCK
          SX1    X1-13B 
          NZ     X1,SER      IF NOT CORRECT WORD COUNT FOR SYSTEM BLOCK 
          MOVE   2,PRSB,PGSC SET SUMMARY FILE CREATION TEXT IN PAGE TITL
          SA1    DBUF+1 
          RJ     ZTB         ENSURE BLANK FILL
          SA6    PGSC+2      SET SUMMARY FILE CREATION DATE 
          SA1    DBUF+2 
          RJ     ZTB         ENSURE BLANK FILL
          SA6    PGSC+3 
          SA1    DBUF        GET UTILITY NAME 
          MX6    42 
          BX1    X6*X1
          SA2    TUTA 
 PRS1     SA2    A2+B1
          ZR     X2,SER      IF END OF UTILITY NAMES
          BX3    X6*X2       UTILITY NAME 
          BX3    X1-X3
          NZ     X3,PRS1     IF NO MATCH ON UTILITY NAME
          LX2    59-0 
          SX6    A2-TUTA
          SA6    OFUC        SET UTILITY CODE 
          PL     X2,PRS3     IF UTILITY DOES NOT SUPPORT DEVICE BLOCK 
  
*         PROCESS DEVICE STATUS BLOCK.
  
          RJ     RDB         READ BLOCK 
          SB2    ERDS        * DEVICE STATUS BLOCK MISSING.*
          SX6    X6-/COMSPFS/DSSB 
          NZ     X6,ABT      IF NOT DEVICE STATUS BLOCK 
          SA1    DBUF+2 
          SA2    DBUF 
          MX6    -6 
          MX7    42 
          BX1    -X6*X1      EXTRACT DEVICE NUMBER OF FIRST DEVICE
          BX7    X7*X2
          SX3    OFFN        SELECT FAMILY NAME 
          NZ     X1,PRS2     IF FAMILY DEVICE 
          SX3    OFPN        SELECT PACK NAME 
 PRS2     SA7    X3          SET FAMILY OR PACK NAME
          SA1    DBUF+1 
          BX6    X1 
          SA6    OFUN        SET USER NAME IF AUXILIARY DEVICE
          RJ     IOF         INITIALIZE OUTPUT FILES
          SA1    BLCW 
          SX6    0           SET END OF DEVICE ENTRIES
          SA6    DBUF+X1
          SX6    DBUF+2      SET DEVICE STATUS ADDRESS
          RJ     ODV         OUTPUT DEVICE STATUS 
          EQ     PRS4        CHECK ARCHIVE FILE COUNT 
  
*         INITIALIZE OUTPUT FILES.
  
 PRS3     RJ     IOF         INITIALIZE OUTPUT FILES
 PRS4     SA1    CPAR+/COMSPFS/CPNB 
          NZ     X1,PRSX     IF ARCHIVE FILE COUNT SPECIFIED
          SX6    B1 
          SA6    A1          SET ARCHIVE FILE COUNT = 1 
          EQ     PRSX        RETURN 
  
  
 PRSA     VFD    12/7700B,12/16B,36/0 
 PRSB     DATA   20HSUMMARY FILE CREATED
 TUTA     SPACE  4,10 
**        TUTA - TABLE OF UTILITY ATTRIBUTES. 
  
  
 TUTA     IVFD               TABLE OF UTILITY NAMES 
          IVFD   /COMSPFS/LDUT,(42/0LPFLOAD,18/1) 
          IVFD   /COMSPFS/DUUT,(42/0LPFDUMP,18/1) 
          IVFD   /COMSPFS/CAUT,(42/0LPFCAT,18/1)
          IVFD   /COMSPFS/ATUT,(42/0LPFATC,18/0)
          IVFD   /COMSPFS/COUT,(42/0LPFCOPY,18/0) 
          IVFD   /COMSPFS/RLUT,(42/0LPFREL,18/1)
          IVFD   /COMSPFS/LIUT,(42/0LPFLIST,18/0) 
          IVFD   /COMSPFS/RSUT,(42/0LPFRES,18/0)
          IVFD   /COMSPFS/MXUT,(60/0) 
          IVFD   /COMSPFS/MXUT+1
  
          SPACE  4
**        PRESET COMMON DECKS.
  
  
          LIST   X
*CALL     COMCPFP 
          LIST   *
  
  
          ERRPL  *-EBUF-1    PRESET OVERFLOWS INTO BUFFERS
          SPACE  4
          END 
