PFDM
          IDENT  PFDM1,/COMSPFS/OVLA,PFD,01,00
          TITLE  PFDM - PERMANENT FILE DISK MANAGEMENT UTILITIES. 
          ABS 
          SST 
          SYSCOM B1 
          SPACE  4,10 
*COMMENT  PFDM - PERM FILE DISK MANAGEMENT UTILITIES. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4,10 
***       PFDM - PERMANENT FILE DISK MANAGEMENT UTILITIES.
* 
*         G. S. YODER        86/09/01.
          SPACE  4,10 
***       *PFDM* CONTAINS UTILITIES FOR MANAGING DISK RESIDENT PERMANENT
*         FILES AND PERMANENT FILE CATALOGS.  THESE UTILITIES MAY BE
*         CALLED THROUGH THE *PFS* COMMAND OR DIRECTLY BY UTILITY NAME. 
* 
*         THE FOLLOWING UTILITIES RESIDE IN *PFDM* -
* 
*         PFCAT - CATALOG PERMANENT FILE DEVICE.
*         PFREL - RELEASE DISK SPACE OF FILES RESIDING ON ALTERNATE 
*                 STORAGE MEDIA.
          SPACE  4,30 
***       MESSAGE LEGEND. 
* 
*         THE FOLLOWING LEGEND DEFINES PARAMETERS THAT ARE USED IN MANY 
*         OF THE UTILITY ERROR MESSAGES.  THE DESCRIPTIVE CHARACTER 
*         STRINGS DEFINED HERE ARE REPLACED BY THEIR ACTUAL VALUE WHEN
*         A PARTICULAR MESSAGE IS ISSUED.  THE _ CHARACTER DOES NOT 
*         APPEAR IN ACTUAL MESSAGES BUT IS USED IN THE DOCUMENTATION AS 
*         A DELIMITER TO AVOID AMBIGUITIES. 
* 
*         DD       = DEVICE NUMBER. 
*         EEE      = EST ORDINAL. 
*         MMMMM    = NUMBER OF FILES. 
*         NNNNNNN  = PERMANENT FILE NAME. 
*         UUUUUU   = USER INDEX.
          SPACE  4,40 
***       INFORMATIVE DAYFILE MESSAGES. 
* 
*         * ERROR FLAG TERMINATION.*
*                AN EXTERNAL ERROR FLAG WAS DETECTED. 
* 
*         * MMMMMM FILES CATALOGED.*
*                THE NUMBER OF FILES CATALOGED BY *PFCAT*.
* 
*         * MMMMMM FILES RELEASED.* 
*                THE NUMBER OF FILES RELEASED BY *PFREL*. 
* 
*         * MMMMMM FILES SELECTED FOR RELEASE.* 
*                THE NUMBER OF FILES SELECTED FOR RELEASE BY *PFREL*. 
* 
*         * PFCAT COMPLETE.*
*                *PFCAT* TERMINATED.
* 
*         * PFREL COMPLETE.*
*                *PFREL* TERMINATED.
          SPACE  4,20 
***       INFORMATIVE OPERATOR MESSAGES.
* 
*         * WAIT FOR CATALOG INTERLOCK.*
*                THE UTILITY IS WAITING FOR *PFU* TO SET A CATALOG
*                TRACK INTERLOCK BEFORE PROCESSING FILES CATALOGED ON 
*                THAT TRACK.
* 
*         * CLEARING PF ACTIVITY COUNT.*
*                THE UTILITY IS WAITING FOR *PFU* TO DECREMENT THE
*                PERMANENT FILE ACTIVITY COUNT WHEN PROCESSING HAS BEEN 
*                COMPLETED. 
* 
*         * SETTING PF ACTIVITY COUNT.* 
*                THE UTILITY IS WAITING FOR FOR *PFU* TO INCREMENT THE
*                PERMANENT FILE ACTIVITY COUNT BEFORE PROCESSING A
*                DEVICE.
          SPACE  4,15 
***       SYSTEM ERROR MESSAGES THAT ARE FATAL. 
* 
*         THESE ERRORS RESULT IN THE UTILITY ABORTING.
* 
*         * SELECTED MASTER OR TRUE DEVICE NOT FOUND.*
*                THE DEVICE SPECIFIED WITH THE *DN* OR *TD* PARAMETER 
*                WAS NOT FOUND. 
* 
*         * NO FILES SELECTED.* 
*                THE FILE SELECTION PARAMETERS SPECIFIED FOR PROCESSING 
*                WERE SUCH THAT NO DEVICES IN THE SYSTEM COULD CONTAIN
*                THE SPECIFIED FILES.  THIS MAY BE CAUSED BY
*                CONFLICTING SELECTION PARAMETERS.
          SPACE  4,40 
***       SYSTEM ERROR MESSAGES WHICH ARE NON FATAL.
* 
*         SEE *MESSAGE LEGEND* ABOVE FOR A DESCRIPTION OF PARAMETERS
*         APPEARING IN THESE MESSAGES.
* 
*         * CATALOG READ ERROR, UI=UUUUUU.
*                A MASS STORAGE ERROR OCCURRED WHILE READING THE
*                PERMANENT FILE CATALOG TRACK FOR THE INDICATED USER
*                INDEX.  ANY REMAINING FILES CATALOGED ON THE AFFECTED
*                TRACK WILL NOT BE DUMPED.
* 
*         * DEVICE NOT FOUND, FN=NNNNNNN, UI=UUUUUU, DN=DD.*
*                THE SPECIFIED DIRECT ACCESS FILE, RESIDENT ON DEVICE 
*                *DD*, WAS TO BE PROCESSED BUT DEVICE *DD* COULD NOT BE 
*                FOUND IN THE SYSTEM. 
          SPACE  4,10 
*         COMMON DECKS
  
  
*CALL     COMCMAC 
*CALL     COMCCMD 
*CALL     COMSLFD 
*CALL     COMSMLS 
*CALL     COMSMMF 
*CALL     COMSMST 
*CALL     COMSPFM 
          LIST   X
*CALL     COMSPFS 
          LIST   *
*CALL     COMSPFU 
*CALL     COMSPRD 
*CALL     COMSRPV 
*CALL     COMSSFM 
*CALL     COMSVER 
          TITLE  PROGRAM CONSTANT SECTION.
          SPACE  4,10 
*         MISCELLANEOUS CONSTANTS.
  
 NWCP     EQU    102B        LENGTH OF PRU WITH *CIO* CONTROL WORDS 
  
*         BUFFER LENGTHS. 
  
 CATBL    EQU    10*NWCP+1   CATALOG BUFFER LENGTH
 DBUFL    EQU    101B        GET DEVICE INFORMATION BUFFER
 MSFBL    EQU    10001B      *COMCMSF* SORT FILES BUFFER LENGTH 
 OUTBL    EQU    1001B       OUTPUT FILE BUFFER LENGTH
 PFRBL    EQU    101B        *PFM* REQUEST FILE BUFFER LENGTH 
 SABFL    EQU    1000B       SUMMARY FILE ASSEMBLY BUFFER LENGTH
 SRTBL    EQU    20000B      SORT BUFFER LENGTH 
 PFLBL    EQU    1001B       PROCESSED FILES FILE BUFFER LENGTH 
 SUMBL    EQU    1001B       SUMMARY FILE BUFFER LENGTH 
  
*         *SETPFP* OPTION CONSTANTS.
  
 FMPR     EQU    10B         FAMILY NAME PARAMETER FLAG 
 PKPR     EQU    4           PACKNAME PARAMETER FLAG
 UNPR     EQU    2           USER NAME PARAMETER FLAG 
 UIPR     EQU    1           USER INDEX PARAMETER FLAG
  
*         *COMSPFS* EQUIVALENCES. 
  
 CPAR     EQU    /COMSPFS/CPL  CONVERTED PARAMETER LIST 
 IDSA     EQU    /COMSPFS/PADR
          TITLE  MAIN ROUTINES. 
 PFD      SPACE  4,10 
**        MAIN PROGRAM. 
* 
*         EXIT   TO *END*.
* 
*         CALLS  OCF, PCF, PCT, PFR, PRS, SNC, SND. 
* 
*         MACROS RETURN, SETPFP.
  
  
          ORG    /COMSPFS/OVLA
  
  
 PFD      BSS    0           ENTRY
          RJ     PRS         PRESET PROGRAM 
  
*         PROCESS NEXT DEVICE.
  
 PFD1     RETURN CATS        RETURN OLD CATALOG FILE
          RJ     SND         SET NEXT DEVICE
          ZR     X1,PFD4     IF NO MORE DEVICES 
          RJ     OCF         OPEN CATALOG FILE
  
*         PROCESS CATALOG TRACK.
  
 PFD2     RJ     SNC         SET NEXT CATALOG TRACK 
          RJ     PCF         POSITION CATALOG FILE
          NG     X5,PFD1     IF END OF CATALOG TRACKS 
          RJ     PCT         PROCESS CATALOG TRACK
          EQ     PFD2        SET NEXT CATALOG TRACK 
  
*         PERFORM TERMINATION PROCESSING. 
  
 PFD4     RJ     PSF         PROCESS SORTED FILE OUTPUT 
          SA1    /COMSPFS/UTLC
          SX1    X1-/COMSPFS/CAUT 
          ZR     X1,PFD5     IF *PFCAT* 
          RJ     PFR         PROCESS *PFM* REQUESTS 
 PFD5     SETPFP GPAR        RESTORE PERMANENT FILE PARAMETERS
          EQ     END         TERMINATE
 PCT      SPACE  4,20 
**        PCT - PROCESS CATALOG TRACK.
* 
*         EXIT   ALL FILES ON CATALOG TRACK PROCESSED.
* 
*         USES   X - 0, 1, 2, 4, 5, 6, 7. 
*                A - 0, 1, 2, 3, 4, 5, 6, 7.
*                B - 4. 
* 
*         CALLS  CCH, CFP, CRC, CSC, RCS, SCA, SFL. 
* 
*         MACROS READCW.
  
  
 PCT      SUBR               ENTRY/EXIT 
  
*         INITIALIZE CATALOG FILE FET AND INITIATE READ.
  
          SA1    CATS+FTFT
          SX6    X1 
          SA6    A1+B1       SET IN = FIRST 
          SA6    A6+B1       SET OUT = FIRST
          READCW CATS,17B    INITIATE CATALOG READ
  
*         READ SECTOR OF CATALOG ENTRIES. 
  
 PCT1     SA0    CSBF        INITIALIZE CATALOG ADDRESS 
          SX2    CATS        SET FET ADDRESS
          RJ     RCS         READ CATALOG SECTOR
          ZR     X1,PCT2     IF READ COMPLETE 
          PL     X1,PCTX     IF END OF CATALOG TRACK OR FATAL ERROR 
          EQ     PCT1        READ NEXT SECTOR 
  
*         CHECK CATALOG ENTRY.
  
 PCT2     SA1    A0+FCUI
          SA3    CPAR+/COMSPFS/CPTD 
          SA4    FLSF 
          SX6    B0 
          MX7    -6 
          SA6    FLCF        INITIALIZE FILE LENGTH CORRECT FLAG
          MX0    -18
          BX1    -X0*X1      USER INDEX 
          ZR     X1,PCT7     IF CATALOG HOLE
          ZR     X3,PCT4     IF NO TRUE DEVICE SELECTION
          SA2    A0+FCDN
          SA1    CPAR+/COMSPFS/CPDN 
          LX2    -36
          BX2    -X7*X2      RESIDENCY DEVICE 
          BX1    X1-X3
          BX2    X2-X3
          ZR     X1,PCT4     IF MASTER DEVICE IS TRUE DEVICE
          NZ     X2,PCT7     IF FILE DOES NOT RESIDE ON TRUE DEVICE 
 PCT4     ZR     X4,PCT5     IF FILE LENGTH NOT REQUIRED FOR SELECTION
          RJ     SFL         SET FILE LENGTH IN ENTRY 
          ZR     X6,PCT7     IF DEVICE NOT FOUND ERROR
 PCT5     SB4    A0          SET CATALOG ADDRESS
          RJ     CSC         CHECK SELECTION CRITERIA 
          ZR     X6,PCT7     IF FILE NOT SELECTED 
          SA1    /COMSPFS/UTLC
          SX1    X1-/COMSPFS/CAUT 
          ZR     X1,PCT6     IF *PFCAT* 
  
*         DETERMINE IF FILE CAN BE RELEASED.
  
          RJ     SCA         SET CATALOG DISK ADDRESS 
          RJ     CRC         CHECK RELEASE CRITERIA 
          ZR     X6,PCT7     IF FILE NOT TO BE RELEASED 
  
*         OUTPUT CATALOG DATA.
  
 PCT6     RJ     SFL         INSURE FILE LENGTH CORRECT FOR OUTPUT
          RJ     CFP         OUTPUT CATALOG DATA AND UPDATE FILE COUNTS 
  
*         ADVANCE CATALOG ADDRESS.
  
 PCT7     SA1    CSLW 
          SA0    A0+NWCE     ADVANCE CATALOG ADDRESS
          SX2    A0 
          IX1    X2-X1
          NG     X1,PCT2     IF MORE ENTRIES IN SECTOR
          EQ     PCT1        READ NEXT CATALOG SECTOR 
          TITLE  PFREL ROUTINES.
 CRC      SPACE  4,20 
**        CRC - CHECK RELEASE CRITERIA. 
* 
*         ENTRY  (A0) = ADDRESS OF CATALOG ENTRY. 
* 
*         EXIT   (X6) .NE. 0 IF DISK SPACE TO BE RELEASED.
*                (X6) = 0 IF DISK SPACE NOT TO BE RELEASED. 
*                *DROPDS* ENTRY MADE IN *PFMREQ* FILE IF DISK SPACE TO
*                  BE RELEASED. 
* 
*         USES   X - 0, 1, 2, 3, 5, 6, 7. 
*                A - 1, 2, 3, 5, 6. 
*                B - 3. 
* 
*         CALLS  CBR, CDS, WPR. 
* 
*         MACROS GETDI. 
  
  
 CRC5     SX6    B0+         SET FILE NOT SELECTED
  
 CRC      SUBR               ENTRY/EXIT 
          SA1    A0+FCRS     CHECK PREFERRED RESIDENCE
          SA5    A0+FCBT     CHECK ACTUAL RESIDENCE 
          MX0    -3 
          MX6    -12
          LX1    3
          LX5    -12
          BX1    -X0*X1 
          BX6    -X6*X5 
          SX1    X1-RSLK
          ZR     X6,CRCX     IF FILE NOT DISK RESIDENT
          ZR     X1,CRC5     IF LOCKED TO DISK PREFERRED RESIDENCE
          RJ     CBR         CHECK BACKUP REQUIREMENT 
          ZR     B2,CRC5     IF NO ALTERNATE STORAGE COPIES OF FILE 
          NZ     X7,CRC2     IF FILE BACKED UP ON ALTERNATE STORAGE 
          SA1    MAEQ        EST ORDINAL OF MASTER DEVICE FOR THIS FILE 
          SA2    CRCA        EST ORDINAL FROM PREVIOUS *CRC* CALL 
          SA3    CRCB 
          BX6    X1-X2
          ZR     X6,CRC1     IF INHIBIT DATE PRESENT FOR CURRENT DEVICE 
          BX6    X1          SAVE EST ORDINAL 
          SA6    CRCA 
          GETDI  DEVI,X1     GET INHIBIT DATE FOR CURRENT DEVICE
          SA3    DBUF+MDIT   SAVE INHIBIT DATE
          BX6    X3 
          SA6    CRCB 
 CRC1     SA1    A0+FCUD     GET UTILITY CONTROL DATE AND TIME
          MX6    -36
          BX3    -X6*X3 
          BX1    -X6*X1 
          IX1    X1-X3
          PL     X1,CRC5     IF FILE MODIFIED SINCE LAST DUMP 
          PL     X5,CRC2     IF INDIRECT ACCESS FILE
          SA1    A0+FCDN     GET RESIDENCY DEVICE 
          MX6    -6 
          LX1    -36
          BX1    -X6*X1 
          ZR     X1,CRC2     IF FILE RESIDES ON MASTER DEVICE 
          RJ     CDS         CHECK DEVICE STATUS
          ZR     X6,CRCX     IF DEVICE NOT FOUND
 CRC2     SA1    CPAR+/COMSPFS/CPIP 
          NZ     X1,CRC4     IF PROCESSING INHIBITED
          SX7    B0          SET SPECIAL REQUEST BLOCK WORD 1 
          RJ     WPR         WRITE *PFM* REQUEST
 CRC4     SX6    B1          SET FILE SELECTED FOR RELEASE
          EQ     CRCX        RETURN 
  
  
 CRCA     CON    0           RELEASE INHIBIT DATE EST ORDINAL 
 CRCB     CON    0           DEVICE RELEASE INHIBIT DATE AND TIME 
          TITLE  GENERAL SUBROUTINES. 
 APR      SPACE  4,10 
**        APR - ABORT PROCESSOR.
* 
*         EXIT   CATALOG AND *PFM* REQUEST FILES RETURNED.
*                PERMANENT FILE ACTIVITY COUNT DECREMENTED. 
*                PERMANENT FILE PARAMETERS RESTORED.
* 
*         CALLS  CAC. 
* 
*         MACROS RETURN, SETPFP.
  
  
 APR      SUBR               ENTRY/EXIT 
          RETURN CATS        RETURN CATALOG FILE
          RETURN PFMREQ 
          RJ     CAC         CLEAR PERMANENT FILE ACTIVITY COUNT
          SETPFP GPAR        RESTORE PERMANENT FILE PARAMETERS
          EQ     APRX        RETURN 
 IFM      SPACE  4,10 
**        IFM - ISSUE FILE COUNT MESSAGES.
* 
*         EXIT   FILE COUNT MESSAGES ISSUED TO DAYFILE. 
* 
*         USES   X - 1, 2, 5, 6.
*                A - 1, 2, 5, 6.
* 
*         CALLS  IFC. 
  
  
 IFM      SUBR               ENTRY/EXIT 
          SA1    /COMSPFS/UTLC
          SA5    IFMA 
          SX1    X1-/COMSPFS/CAUT 
          ZR     X1,IFM1     IF *PFCAT* 
          SA5    IFMB 
          RJ     IFC         ISSUE *PFREL* FILES SELECTED MESSAGES
          SA1    CPAR+/COMSPFS/CPIP 
          NZ     X1,IFMX     IF PROCESSING INHIBITED
          SA1    PRFC 
          SA2    PPFC 
          IX6    X1-X2
          SA6    NPFC        SET FILES NOT POST PROCESSED 
          SA5    IFMC 
 IFM1     RJ     IFC         ISSUE FILE COUNT MESSAGES
          EQ     IFMX        RETURN 
  
  
 IFMA     BSS    0           *PFCAT* MESSAGE TABLE
          VFD    1/1,22/0,1/0,18/MSFC,18/PRFC 
          CON    0           END OF TABLE 
  
 IFMB     BSS    0           *PFREL* FILES SELECTED MESSAGE TABLE 
          VFD    1/1,22/0,1/0,18/MSSR,18/PRFC 
          CON    0           END OF TABLE 
  
 IFMC     BSS    0           *PFREL* FILES RELEASED MESSAGE TABLE 
          VFD    1/1,22/0,1/0,18/MSRL,18/PPFC 
          VFD    1/0,22/0,1/0,18/MSNR,18/NPFC 
          CON    0           END OF TABLE 
 RIP      SPACE  4,10 
**        RIP - REPRIEVE INTERRUPT PROCESSOR. 
* 
*         EXIT   BUSY FETS SET COMPLETE TO ALLOW TERMINATION
*                  PROCESSING.
* 
*         MACROS COMPFET. 
  
  
 RIP      SUBR               ENTRY/EXIT 
          COMPFET  (CATS,O,SU)
          EQ     RIPX        RETURN 
          TITLE  COMMON DECKS.
          SPACE  4,10 
*         COMMON DECKS. 
  
  
*CALL     COMCCDD 
 ERP1$    SET    0           SELECT *COMCCIO* ERROR PROCESSING OPTION 
*CALL     COMCCIO 
*CALL     COMCCOD 
*CALL     COMCCPM 
*CALL     COMCDXB 
*CALL     COMCEDT 
 FCE$     SET    0           SELECT *COMCFCE* UTILITY FORMAT OPTION 
*CALL     COMCFCE 
 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 
*CALL     COMCPFM 
 PFD$     EQU    1           ASSEMBLE DEVICE ACCESS ROUTINES
 DVA$     EQU    1           ASSEMBLE DEVICE ACCESS ROUTINES
 PFC$     EQU    1           ASSEMBLE *PFCAT* ROUTINES
          LIST   X
*CALL     COMCPFS 
          LIST   *
*CALL     COMCPFU 
*CALL     COMCRDO 
*CALL     COMCRDW 
*CALL     COMCSCB 
*CALL     COMCSFM 
*CALL     COMCSFN 
*CALL     COMCSNM 
*CALL     COMCSYS 
*CALL     COMCVLC 
*CALL     COMCWTC 
*CALL     COMCWTH 
*CALL     COMCWTW 
*CALL     COMCZTB 
          TITLE  GLOBAL DATA AREA.
          SPACE  4,10 
          USE    LITERALS 
          SPACE  4,10 
**        STATUS MESSAGES.
  
  
 MSRE     DATA   10HRELEASING 
          SPACE  4,10 
**        FILE COUNT MESSAGES.
  
  
 MSFC     DATA   C* ?????? FILE! CATALOGED.*
 MSSR     DATA   C* ?????? FILE! SELECTED FOR RELEASE.* 
 MSRL     DATA   C* ?????? FILE! RELEASED.* 
 MSNR     DATA   C* ?????? SELECTED FILE! NOT RELEASED.*
          SPACE  4,10 
**        RESERVED LOCATIONS. 
  
  
 FLSF     BSSZ   1           FILE LENGTH REQUIRED FOR SELECTION FLAG
 NCAT     BSSZ   1           NUMBER OF CATALOG TRACKS ON DEVICE 
  
          SPACE  4,10 
*         FETS. 
  
  
 CATS     BSS    0           CATALOG TRACKS 
 ZZZZZG1  FILEB  CATB,CATBL,EPR,FET=10
  
 PFMREQ   BSS    0           POST-PROCESSING *PFM* REQUESTS 
 ZZZZZG4  FILEB  PFRB,PFRBL,FET=10
  
 DEVI     BSS    0           *GETDI* CALL FET 
          FILEB  DBUF,DBUFL,FET=10
  
 STAT     FILEB  0,0,FET=7   FILE STATUS
  
 FWAB     EQU    *           FWA OF BUFFERS 
          TITLE  PRESET.
 PRS      SPACE  4,30 
**        PRS - PRESET PROGRAM. 
* 
*         ENTRY  (CPAR) = CRACKED PARAMETER ARRAY.
*                FILES *ZZZZZG0* THROUGH *ZZZZZG8* RETURNED BY *PFS*. 
*                FILE *ZZZZZG9* RETURNED BY *PFS* IF NO FILE
*                  SELECTIONS.
*                FILE *ZZZZZG9* CONTAINS FILE SELECTIONS IF PRESENT.
* 
*         EXIT   (B1) = 1.
*                (MPFM) = FAMILY NAME PARAMETER.
*                (MPPN) = PACK NAME PARAMETER.
*                (FMPN) = FAMILY NAME OR PACK NAME. 
*                (PFRI) = *PFM* PROCESSING PARAMETERS.
*                EXECUTION FIELD LENGTH SET.
*                DEVICE VALIDATION AND SELECTION PERFORMED. 
*                ACCES LEVEL RANGE VALIDATED IF SECURE SYSTEM.
* 
*         USES   X - 0, 1, 2, 5, 6, 7.
*                A - 0, 1, 2, 5, 6, 7.
*                B - 1. 
* 
*         CALLS  BMT, CAL, DSS, IFL, IOF, ODV, OSP, SBS, SFP, SSP.
* 
*         MACROS MEMORY, MOVE, REPRIEVE.
  
  
 PRS      SUBR
          SB1    1
          MEMORY CM,,R,EBUF  REQUEST REQUIRED MEMORY
          REPRIEVE  RPVB,SET,277B  SET EXTENDED REPRIEVE PROCESSING 
  
*         INITIALIZE DEVICE ENVIRONMENT.  NOTE THAT *PRESET* BUFFERS
*         ARE NOT AVAILABLE AFTER THE CALL TO *RPS*.
  
          RJ     DSS         DETERMINE SECURITY STATUS
          RJ     BMT         BUILD MASS STORAGE TABLE 
          RJ     CAL         CHECK ACCESS LEVELS
          SX0    EMBUF       SET SELECTIONS BUFFER ADDRESS
          RJ     RPS         READ FILE SELECTIONS 
          RJ     SMK         SET FILE SELECTION MASK
          RJ     SFP         SET PERMANENT FILE PARAMETERS
  
*         DETERMINE IF FILE LENGTH REQUIRED FOR SELECTION.
  
          SA1    CPAR+/COMSPFS/CPLS 
          SA2    CPAR+/COMSPFS/CPUS 
          MX6    1
          BX6    -X6
          BX2    X6-X2
          NZ     X1,PRS4     IF LOWER FILE SIZE LIMIT .NE. 0
          ZR     X2,PRS5     IF UNLIMITED UPPER FILE SIZE LIMIT 
 PRS4     SA6    FLSF        SET FILE LENGTH REQUIRED FOR SELECTION 
  
*         INITIALIZE OUTPUT FILE AND SUMMARY FILE.
  
 PRS5     RJ     IOF         INITIALIZE OUTPUT FILES
          RJ     OSP         OUTPUT SELECTION PARAMETERS
          SX6    DSTBUF      SET DEVICE STATUS BUFFER ADDRESS 
          RJ     ODV         OUTPUT DEVICE STATUS 
          RJ     IFL         INITIALIZE FOR FILE PROCESSING 
          SA1    /COMSPFS/UTLC
          SX1    X1-/COMSPFS/CAUT 
          ZR     X1,PRS6     IF *PFCAT* 
  
*         INITIALIZE *PFM* REQUEST FILE.
  
          SA1    PRSA        SET *PFM* PROCESSOR FOR *PFREL*
          BX6    X1 
          SA6    PFRI 
  
*         REDUCE MEMORY, IF FILE SELECTION BUFFER NOT ALLOCATED.
  
 PRS6     SA5    /COMSPFS/NFIS
          NZ     X5,PRSX     IF FILE SELECTION BUFFER ALLOCATED 
          MEMORY CM,,R,EMBUF+4  REDUCE MEMORY 
          EQ     PRSX        RETURN 
  
  
 PRSA     VFD    12/2000B+DDPP,30/0,18/MSRE 
 COMMON   SPACE  4,10 
*         PRESET COMMON DECKS.
  
  
          LIST   X
*CALL     COMCPFP 
          LIST   *
*CALL     COMCRSB 
*CALL     COMCWTO 
          TITLE  BUFFER ALLOCATION. 
  
 EPRS     EQU    *           END OF PRESET CODE 
          SPACE  4,10 
*         MAIN PROGRAM BUFFERS. 
  
  
 CATB     EQU    FWAB        CATALOG FILE BUFFER
 PFRB     EQU    CATB+CATBL  *PFM* REQUEST FILE BUFFER
 PFLB     EQU    PFRB+PFRBL  PROCESSED FILES FILE BUFFER
 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
 DBUF     EQU    MS4B+MSFBL  DEVICE INFORMATION BUFFER
          SPACE  4,10 
*         BUFFERS USED BY BOTH MAIN PROGRAM AND PRESET. 
  
  
 .BUF     MAX    DBUF+DBUFL,EPRS  START OF BUFFERS ALSO USED BY PRESET
 OUTB     EQU    .BUF        OUTPUT FILE BUFFER 
 SUMB     EQU    OUTB+OUTBL  SUMMARY FILE BUFFER
 DSTBUF   EQU    SUMB+SUMBL  DEVICE STATUS BUFFER 
 EMBUF    EQU    DSTBUF+100B*2  END OF MAIN PROGRAM BUFFERS 
          SPACE  4,10 
*         PRESET BUFFERS OVERLAID BY FILE SELECTIONS. 
  
  
 ESTADD   EQU    EMBUF       *RSB* PARAMETER WORD FOR EST 
 ESTBUF   EQU    ESTADD+1    EST BUFFER 
 MSTADD   EQU    ESTBUF+ESMX*ESTE  *RSB* PARAMETER WORD FOR MST 
 MSTBUF   EQU    MSTADD+1    MST BUFFER 
 EBUF     EQU    MSTBUF+MSTL END OF PRESET BUFFERS
  
  
          END 
