PFS 
          IDENT  PFS,/COMSPFS/OVCA
          ABS 
          SST    LODS 
          ENTRY  PFS
          ENTRY  PFLOAD 
          ENTRY  PFDUMP 
          ENTRY  PFCAT
          ENTRY  PFATC
          ENTRY  PFCOPY 
          ENTRY  PFREL
          ENTRY  PFLIST 
          ENTRY  PFRES
          ENTRY  ARG= 
          ENTRY  RFL= 
          ENTRY  SSJ= 
          ENTRY  UTL= 
          SYSCOM B1 
          TITLE  PFS - PERMANENT FILE SUPERVISOR. 
          SPACE  4,10 
*COMMENT  PFS - PERMANENT FILE SUPERVISOR.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4,10 
***       PFS - PERMANENT FILE SUPERVISOR 
*         S. T. WORSTELL     73/02/15.
*         P. L. VERELL       79/06/08.
*         G. S. YODER        86/10/10.
          SPACE  4,10 
***       *PFS* PROCESSES ALL PARAMETERS FOR THE PERMANENT FILE 
*         UTILITIES, THEN LOADS THE PROPER OVERLAY. 
* 
*         UTILITY 
*         OPTIONS            UTILITY
* 
*           LD               PFLOAD - LOAD PERMANENT FILES. 
*           DU               PFDUMP - DUMP PERMANENT FILES. 
*           CA               PFCAT - CATALOG PERMANENT FILES. 
*           AT               PFATC - CATALOG PF ARCHIVE TAPE. 
*           CP               PFCOPY - COPY PF ARCHIVE FILE(S) TO CP.
*           RL               PFREL - RELEASE DISK SPACE.
*           LI               PFLIST - LIST PF UTILITY SUMMARY FILE. 
* 
*         IF X.PFS CALL IS MADE, K.UO. MUST BE ENTERED
*         WHERE *UO* IS ONE OF THE ABOVE PARAMETERS.
*         THIS MUST BE ENTERED BEFORE ANY OTHERS ARE ENTERED. 
          SPACE  4,10 
***       OPERATOR AND DAYFILE MESSAGES.
* 
*         THESE MESSAGES ARE ISSUED TO BOTH THE *K* DISPLAY AND THE 
*         DAYFILE.
* 
* 
*         * ACCESS LEVEL OUT OF RANGE.* = THE SPECIFIED UPPER 
*         ACCESS LEVEL IS GREATER THAN THE SYSTEM UPPER ACCESS LEVEL
*         LIMIT, OR THE SPECIFIED LOWER ACCESS LEVEL IS LESS THAN THE 
*         SYSTEM LOWER ACCESS LEVEL LIMIT.  THESE RESTRICTIONS APPLY TO 
*         *PFLOAD*, *PFDUMP* AND *PFCOPY* AND TO ALL UTILITIES IF A 
*         SUMMARY FILE IS SELECTED. 
* 
*         * BOTH FM AND PN SPECIFIED.* = FAMILY AND PACK NAME MAY NOT 
*         BOTH BE SPECIFIED.
* 
*         * CN, SPN ENTRIES AT MAXIMUM.* = THE MAXIMUM NUMBER OF CHARGE 
*         AND PROJECT NUMBER SELECTIONS HAVE ALREADY BEEN ENTERED.
* 
*         * DT AND OP=P CONFLICT.* = THE PURGE OPTION CANNOT BE USED
*         WITH THE *DT* OPTION. 
* 
*         * DT AND OP=Z CONFLICT.* = THE ZERO ALTERNATE STORAGE 
*         POINTERS OPTION CANNOT BE USED WITH THE *DT* OPTION.
* 
*         * DT AND PN CONFLICT.* = THE DT OPTION CANNOT BE
*         SPECIFIED ON A DUMP OF AN AUXILIARY PACK. 
* 
*         * ENTERED PARAMETER NOT VALID.* = THE PARAMETER IS NOT
*         LEGAL FOR THE UTILITY BEING RUN.
* 
*         * FAMILY/PACK NOT FOUND.* = FAMILY OR PACK IS NOT DEFINED IN
*         THE PERMANENT FILE SYSTEM.
* 
*         * FILENAME CONFLICT - (FILENAME)* = THE INDICATED FILE
*         NAME HAS BEEN SPECIFIED ON MORE THAN ONE PARAMETER. 
* 
*         * LA AND UA BOTH REQUIRED.* = IF ONE LIMIT OF THE ACCESS
*         LEVEL RANGE IS SPECIFIED, THEY BOTH MUST BE.
* 
*         * LA VALUE LARGER THAN UA.* = THE VALUE CORRESPONDING 
*         TO THE LOWER ACCESS LEVEL NAME IS GREATER THAN THE VALUE
*         CORRESPONDING TO THE UPPER ACCESS LEVEL NAME. 
* 
*         * LS VALUE LARGER THAN US.* = THE LOWER FILE SIZE LIMIT IS
*         GREATER THAN THE UPPER FILE SIZE LIMIT. 
* 
*         * PF SPECIFIED BUT NOT UI/UN.* = IF A FILE NAME IS SPECIFIED, 
*         AN ASSOCIATED USER INDEX OR USER NAME IS REQUIRED.
* 
*         * PF UTILITY ABORTED.* = THE PF UTILITY HAS ABORTED DUE 
*         TO AN ERROR DETECTED DURING PARAMETER PROCESSING. 
* 
*         * PF UTILITY INPUT FILE EMPTY.* = THE FILE SPECIFIED FOR
*         THE *I* PARAMETER DID NOT CONTAIN ANY INPUT DIRECTIVES, 
*         OR WAS ALREADY POSITIONED TO EOI. 
* 
*         * PS INCORRECT REGISTER NAME.* = THE SPECIFIED JOB CONTROL
*         REGISTER IS NOT VALID.
* 
*         * RD AND UI/UN NOT ALLOWED.* = RDF FILE OPTION CANNOT BE USED 
*         WITH THE UI OR UN OPTIONS.
* 
*         * SPN SPECIFIED BUT NOT CN.* = IF A PROJECT NUMBER IS 
*         SPECIFIED, AN ASSOCIATED CHARGE NUMBER IS REQUIRED. 
* 
*         * TD AND DN CONFLICT.* = THE *TD* AND *DN* PARAMETERS CANNOT
*         BE CONCURRENTLY SPECIFIED.
* 
*         * TD AND DA CONFLICT.* = THE *TD* AND *DA* PARAMETERS CANNOT
*         BE CONCURRENTLY SPECIFIED.
* 
*         * UNKNOWN ACCESS LEVEL NAME.* = THE ACCESS LEVEL NAME 
*         SPECIFIED BY THE *LA* OR *UA* PARAMETER IS NOT ONE OF THE 
*         EIGHT DEFINED NAMES.
* 
*         * USER ACCESS NOT VALID.* = NON-SYSTEM ORIGIN USER
*         DOES NOT HAVE SYSTEM ORIGIN PRIVILEGES WITH *DEBUG* STATUS
*         ON. 
* 
*         * USER INDEX OUT OF RANGE.* = THE USER INDEX SPECIFIED BY 
*         THE *UI* OR *DI* PARAMETER IS LARGER THAN 377777B.
* 
*         * USER NAME INCORRECT.* = USER NAME CANNOT BE CONVERTED TO
*         A USER INDEX CORRECTLY. 
* 
*         * VSN SELECTIONS AT MAXIMUM.* = THE MAXIMUM NUMBER OF 
*         ALTERNATE STORAGE VSN SELECTIONS HAVE ALREADY BEEN ENTERED. 
 MACROS   SPACE  4,10 
*         MACROS. 
 LOPT     SPACE  4,10 
**        LOPT - DEFINE VALID *LO* OPTIONS FOR UTILITY. 
* 
* P       LOPT   U
* 
*         ENTRY  P = OPTION MNEMONIC OR *END* TO TERMINATE SEQUENCE.
*                U = (U1,U2,U3...UN)
*                  U1 - UN = TWO CHARACTER UTILITY IDENTIFIERS. 
  
  
          PURGMAC  LOPT 
          MACRO  LOPT,P,U 
          LOCAL  A,B
 C        IFC    NE,$P$END$ 
 A        MICRO  1,,
          IRP    U
 B        DECMIC 11-/COMSPFS/U_UT 
 A        MICRO  1,, "A"+1S"B"
          IRP 
          ORG    TVLO+/COMSPFS/P_LOP
          VFD    12/"A",42/0,6/1R_P 
 C        ELSE
          ORG    TVLO+/COMSPFS/MXLO 
 C        ENDIF 
 LOPT     ENDM
 PARAM    SPACE  4,10 
**        PARAM - DEFINE VALID UTILITY PARAMETERS.
* 
* P       PARAM  U
* 
*         ENTRY  P = PARAMETER KEYWORD OR *END* TO TERMINATE SEQUENCE.
*                U = (U1,U2,U3...UN)
*                  U1 - UN = TWO CHARACTER UTILITY IDENTIFIERS. 
  
  
          PURGMAC  PARAM
          MACRO  PARAM,P,U
          LOCAL  A,B
 C        IFC    NE,$P$END$ 
 A        MICRO  1,,
          IRP    U
 B        DECMIC 11-/COMSPFS/U_UT 
 A        MICRO  1,, "A"+1S"B"
          IRP 
          ORG    TVUP+EP_P-ENTP 
 D        IF     DEF,D.P
          VFD    12/"A",30/0,18/D.P 
 D        ELSE
          VFD    12/"A",30/0,18/0 
 D        ENDIF 
 C        ELSE
          ORG    TVUP+ENTPL 
 C        ENDIF 
 PARAM    ENDM
 READCM   SPACE  4,10 
**        READCM - READ CENTRAL MEMORY RESIDENT.
* 
*         READCM WC,CA,BA 
* 
*                WC = WORD COUNT. 
*                CA = CENTRAL MEMORY ADDRESS TO READ. 
*                BA = BUFFER ADDRESS TO READ TO.
  
          PURGMAC  READCM 
 READCM   MACRO  WC,CA,BA 
          MACREF READCM 
          R=     X1,WC
          R=     X2,CA
          R=     X3,BA
          RJ     RCM
 READCM   ENDM
 UOPT     SPACE  4,10 
**        UOPT - DEFINE VALID *OP* OPTIONS FOR UTILITY. 
* 
* P       UOPT   U
* 
*         ENTRY  P = OPTION MNEMONIC OR *END* TO TERMINATE SEQUENCE.
*                U = (U1,U2,U3...UN)
*                  U1 - UN = TWO CHARACTER UTILITY IDENTIFIERS. 
  
  
          PURGMAC  UOPT 
          MACRO  UOPT,P,U 
          LOCAL  A,B
 C        IFC    NE,$P$END$ 
 A        MICRO  1,,
          IRP    U
 B        DECMIC 11-/COMSPFS/U_UT 
 A        MICRO  1,, "A"+1S"B"
          IRP 
          ORG    TVUO+/COMSPFS/P_UOP
          VFD    12/"A",42/0,6/1R_P 
 C        ELSE
          ORG    TVUO+/COMSPFS/MXUO 
 C        ENDIF 
 UOPT     ENDM
 MICROS   SPACE  4,10 
*         MICRO DEFINITIONS.
  
  
 30BLANKS MICRO  1,30,$                              $
 40BLANKS MICRO  1,40,$"30BLANKS"          $
 50BLANKS MICRO  1,50,$"40BLANKS"          $
 60BLANKS MICRO  1,60,$"50BLANKS"          $
          SPACE  4,10 
*         MISCELLANEOUS.
  
 IBUFL    EQU    1001B       INPUT/FILE SELECTION BUFFER LENGTH 
 TBUFL    EQU    101B        TERMINAL OUTPUT FILE BUFFER LENGTH 
 COMMON   SPACE  4,10 
*         COMMON DECKS. 
  
  
*CALL     COMCMAC 
*CALL     COMCCMD 
*CALL     COMCDCM 
*CALL     COMSLFD 
*CALL     COMSMLS 
          LIST   X
*CALL     COMSPFS 
          LIST   *
*CALL     COMSPFU 
*CALL     COMSPRD 
*CALL     COMSSFM 
*CALL     COMSSSD 
*CALL     COMSSSJ 
          TITLE  OVERLAY CALL PROCESSOR.
 POC      SPACE  4,10 
          ORG    /COMSPFS/OVCA
  
**        POC - PROCESS OVERLAY CALL. 
* 
*         ENTRY  (X1) = 42/ OVERLAY NAME,18/0.
*                THIS SUBROUTINE IS ENTERED BY A REGULAR JUMP RATHER
*                THAN A RETURN JUMP.
* 
*         EXIT   CONTROL IS TRANSFERRED TO THE ENTRY POINT OF THE 
*                OVERLAY CALLED.
* 
*         USES   B - 2. 
  
  
 POC      BSS    0           ENTRY
          OVERLAY X1,100B,S  LOAD OVERLAY 
          SB2    X1 
          JP     B2          JUMP TO OVERLAY ENTRY POINT
          SPACE  4,10 
*         COMMON DECKS REQUIRED FOR OVERLAY LOADING.
  
  
*CALL     COMCOVL 
*CALL     COMCSYS 
          SPACE  4,10 
*         *SSJ=* SPECIAL ENTRY POINT PARAMETER BLOCK. 
  
  
 SSJ=     VFD    12/0,24/-0,12/PFCS,12/IRSI 
          BSSZ   SSJL-1 
  
 ARG=     BSS    0           SUPRESS SYSTEM ARGUMENT PROCESSING 
 UTL=     BSS    0           SYSTEM UTILITY SPECIAL ENTRY POINT 
          SPACE  4,10 
          ERRNG  /COMSPFS/OVCA+/COMSPFS/OVCAL-*  *OVCA* OVERFLOW
          TITLE  DISPLAY BUFFER.
          ORG    /COMSPFS/DIS 
  
  
 MSYM     KDL    1,M,(**) 
 M        EQU    K-1         SET LINE NUMBER OF MESSAGE LINE
          ORG    MSYM 
  
*         COMMON LEFT SCREEN BUFFER.
  
 H1DS     KDL    1,T,(PFXXXX) 
 M1DS     KDL    1,M-3,("40BLANKS") 
 MSDS     KDL    1,M-2,( N/A MEANS PARAMETER DOES NOT APPLY TO THIS UTIL
,ITY.)
 M2DS     KDL    1,M-1,("40BLANKS") 
 ERDS     KDL    1,M,("40BLANKS") 
 INDS     KDL    1,I,("50BLANKS") 
          CON    0           END OF BUFFER
          SPACE  4,10 
*         LEFT SCREEN PAGE 1. 
  
 LPG1     VFD    12/0,36/0,12/0   DISPLAY CONTROL WORD
  
          KDL    54,T,(PAGE 1 OF 6) 
          KDL    5,,(OPTION)
          KDL    39,H,(DESCRIPTION) 
 D.FM     KDL    1,,( FM = 0) 
          KDL    26,K,(FAMILY NAME (1-7 CHARACTERS).) 
 D.PN     KDL    1,,( PN = 0) 
          KDL    26,K,(PACK NAME (1-7 CHARACTERS).) 
 D.DN     KDL    1,,( DN = 0) 
          KDL    26,K,(DEVICE NUMBER (0-77B).)
 D.TD     KDL    1,,( TD = 0) 
          KDL    26,K,(TRUE DEVICE NUMBER (0-77B).) 
 D.UN     KDL    1,,( UN = 0) 
          KDL    26,K,(USER NAME (1-7 CHARACTERS).) 
 D.UI     KDL    1,,( UI = 0) 
          KDL    26,K,(USER INDEX (0-377777B).) 
 D.DD     KDL    1,,( DD = 0) 
          KDL    26,K,(DESTINATION DEVICE NUMBER (0-77B).)
 D.DI     KDL    1,,( DI = 0) 
          KDL    26,K,(DESTINATION USER INDEX (0-377777B).) 
 D.LO     KDL    1,,( LO = 0) 
          KDL    26,K,(LIST OPTIONS VALID - XXXX.)
 D.VLO    EQU    *-1
 D.L      KDL    1,,( L =  OUTPUT)
          KDL    26,K,(OUTPUT FILE NAME (1-7 CHARACTERS).)
 D.OP     KDL    1,,( OP = 0) 
          KDL    26,K,(OPTIONS VALID - XXXXXXXXXXXXX.)
 D.VUO    EQU    *-2
 D.EO     KDL    1,,( EO   PROCESS) 
          KDL    26,K,(IF SPECIFIED, DO NOT PROCESS FILES WITH) 
          KDL    26,K,(MASS STORAGE ERRORS.)
          VFD    12/7777B,48/H1DS  SWITCH TO COMMON BUFFER
          ERRNG  M-2-K       LINES OVERWRITE *N/A* MESSAGE
          SPACE  4,10 
*         LEFT SCREEN PAGE 2. 
  
 LPG2     VFD    12/0,36/0,12/0   DISPLAY CONTROL WORD
  
          KDL    54,T,(PAGE 2 OF 6) 
          KDL    5,,(OPTION)
          KDL    39,H,(DESCRIPTION) 
 D.SD     KDL    1,,( SD   NO SETTING)
          KDL    23,K,(IF SPECIFIED, SET DISK SPACE RELEASE DATE.)
 D.UD     KDL    1,,( UD   NO UPDATE) 
          KDL    23,K,(IF SPECIFIED, UPDATE UTILITY CONTROL DATE.)
 D.DT     KDL    1,,( DT   NO DESTAGE)
          KDL    23,K,(IF SPECIFIED, DESTAGE TO TAPE DUMP.) 
 D.IP     KDL    1,,( IP   NO INHIBIT)
          KDL    23,K,(IF SPECIFIED, INHIBIT PROCESSING.) 
 D.AD     KDL    1,,( AD = 0) 
          KDL    23,K,(AFTER DATE (YYMMDD).)
 D.AT     KDL    1,,( AT = 0) 
          KDL    23,K,(AFTER TIME (HHMMSS).)
 D.BD     KDL    1,,( BD = 0) 
          KDL    23,K,(BEFORE DATE (YYMMDD).) 
 D.BT     KDL    1,,( BT = 0) 
          KDL    23,K,(BEFORE TIME (HHMMSS).) 
 D.LS     KDL    1,,( LS = 0) 
          KDL    23,K,(LOWER FILE SIZE LIMIT.)
 D.US     KDL    1,,( US = NO LIMIT)
          KDL    23,K,(UPPER FILE SIZE LIMIT.  * = NO LIMIT.) 
 D.COS    KDL    1,,( COS = 0)
          KDL    23,K,(CATALOG ONLY SIZE LIMIT.  * = NO LIMIT.) 
          VFD    12/7777B,48/H1DS  SWITCH TO COMMON BUFFER
          ERRNG  M-2-K       LINES OVERWRITE *N/A* MESSAGE
          SPACE  4,10 
*         LEFT SCREEN PAGE 3. 
  
 LPG3     VFD    12/0,36/0,12/0   DISPLAY CONTROL WORD
  
          KDL    54,T,(PAGE 3 OF 6) 
          KDL    5,,(OPTION)
          KDL    39,H,(DESCRIPTION) 
 D.T      KDL    1,,( T =  TAPE)
          KDL    25,K,(ARCHIVE FILE NAME (1-7 CHARACTERS).) 
 D.SF     KDL    1,,( SF = 0) 
          KDL    25,K,(NUMBER OF FILES TO SKIP.)
 D.N      KDL    1,,( N =  1) 
          KDL    25,K,(NUMBER OF FILES TO PROCESS.) 
 D.VF     KDL    1,,( VF = 0) 
          KDL    25,K,(VERIFY FILE NAME (1-7 CHARACTERS).)
 D.MF     KDL    1,,( MF = 0) 
          KDL    25,K,(MASTER FILE NAME (1-7 CHARACTERS).)
 D.RD     KDL    1,,( RD = 0) 
          KDL    25,K,(RELEASE DATA FILE NAME (1-7 CHARACTERS).)
 D.S      KDL    1,,( S =  0) 
          KDL    25,K,(SUMMARY FILE NAME (1-7 CHARACTERS).) 
 D.SR     KDL    1,,( SR = 0) 
          KDL    25,K,(SUMMARY FILE RECORD NAME (1-7 CHAR.).) 
 D.SI     KDL    1,,( SI =  0)
          KDL    25,K,(SUMMARY INPUT FILE NAME (1-7 CHAR.).)
 D.LA     KDL    1,,( LA = 0) 
          KDL    25,K,(LOWER ACCESS LEVEL (1-7 CHARACTERS).)
 D.UA     KDL    1,,( UA = 0) 
          KDL    25,K,(UPPER ACCESS LEVEL (1-7 CHARACTERS).)
 D.PVSN   KDL    1,,( PVSN = 0) 
          KDL    25,K,(VSN OF PREVIOUS ARCHIVE TAPE (1-6 CHAR).)
 D.PS     KDL    1,,( PS = 0) 
          KDL    25,K,(PROCESSING STATUS REGISTER (1-3 CHAR).)
          VFD    12/7777B,48/H1DS  SWITCH TO COMMON BUFFER
          ERRNG  M-2-K       LINES OVERWRITE *N/A* MESSAGE
          SPACE  4,10 
*         LEFT SCREEN PAGE 4. 
  
 LPG4     VFD    12/0,36/0,12/0        DISPLAY CONTROL WORD 
  
          KDL    54,T,(PAGE 4 OF 6) 
          KDL    5,K,(USER INDEX AND FILE NAME SELECTIONS)
          KDL    5,H,( ENTER * TO MOVE FORWARD, / TO MOVE BACKWARD) 
 D.PF     KDL    1,K,(      "60BLANKS") 
 D.PFS    EQU    *-D.PF 
          KDL    1,K,(      "60BLANKS") 
          KDL    1,K,(      "60BLANKS") 
          KDL    1,K,(      "60BLANKS") 
          KDL    1,K,(      "60BLANKS") 
          KDL    1,K,(      "60BLANKS") 
          KDL    1,K,(      "60BLANKS") 
          KDL    1,K,(      "60BLANKS") 
          KDL    1,K,(      "60BLANKS") 
          KDL    1,K,(      "60BLANKS") 
          KDL    1,K,(      "60BLANKS") 
          KDL    1,K,(      "60BLANKS") 
 D.PFL    EQU    *-D.PF 
          VFD    12/7777B,48/H1DS  SWITCH TO COMMON BUFFER
          ERRNG  M-2-K       LINES OVERWRITE *N/A* MESSAGE
          SPACE  4,10 
*         LEFT SCREEN PAGE 5. 
  
 LPG5     VFD    12/0,36/0,12/0        DISPLAY CONTROL WORD 
  
          KDL    54,T,(PAGE 5 OF 6) 
          KDL    5,H,(DISK RESIDENCE SELECTIONS)
 D.DA     KDL    1,K,(      "60BLANKS") 
 D.DAD    KDL    1,K,(      "60BLANKS") 
          KDL    1,K,(      "60BLANKS") 
          KDL    1,K,(      "60BLANKS") 
          KDL    1,K,( )
          KDL    5,H,(CARTRIDGE ALTERNATE STORAGE SELECTION)
 D.CA     KDL    1,K,(      "60BLANKS") 
          KDL    1,K,( )
          KDL    5,H,(TAPE ALTERNATE STORAGE SELECTIONS)
 D.TA     KDL    1,K,(      "60BLANKS") 
 D.TAV    KDL    1,K,(      "60BLANKS") 
          KDL    1,K,(      "60BLANKS") 
          VFD    12/7777B,48/H1DS  SWITCH TO COMMON BUFFER
          ERRNG  M-2-K       LINES OVERWRITE *N/A* MESSAGE
          SPACE  4,10 
*         LEFT SCREEN PAGE 6. 
  
 LPG6     VFD    12/0,36/0,12/0        DISPLAY CONTROL WORD 
  
          KDL    54,T,(PAGE 6 OF 6) 
          KDL    5,K,(CHARGE AND PROJECT NUMBER SELECTIONS) 
          KDL    2,,(CHARGE     PROJECT)
          KDL    34,H,(CHARGE     PROJECT)
 CNDS     KDL    1,K,(      "60BLANKS") 
 CNDSS    EQU    *-CNDS 
          KDL    1,K,(      "60BLANKS") 
          KDL    1,K,(      "60BLANKS") 
          KDL    1,K,(      "60BLANKS") 
          KDL    1,K,(      "60BLANKS") 
          KDL    1,K,(      "60BLANKS") 
          KDL    1,K,(      "60BLANKS") 
          KDL    1,K,(      "60BLANKS") 
          KDL    1,K,(      "60BLANKS") 
          KDL    1,K,(      "60BLANKS") 
          KDL    1,K,(      "60BLANKS") 
          KDL    1,K,(      "60BLANKS") 
 CNDSL    EQU    *-CNDS 
          VFD    12/7777B,48/H1DS  SWITCH TO COMMON BUFFER
          ERRNG  M-2-K       LINES OVERWRITE *N/A* MESSAGE
          SPACE  4,10 
          SPACE  4,10 
*         RIGHT SCREEN. 
  
  
 P.       EQU    *
 P        VFD    12/0,36/0,12/2    DISPLAY CONTROL WORD 
  
 RGHT     VFD    12/0,36/0,12/0   DISPLAY CONTROL WORD
  
          KDL    8,T,(OP OPTIONS) 
          KDL    1,K,(A - LAST ACCESS.) 
          KDL    1,K,(C - CREATION.)
          KDL    1,K,(D - DIRECT ACCESS.) 
          KDL    1,K,(E - EXTRACT CATALOG IMAGE RECORD.)
          KDL    1,K,(I - INDIRECT ACCESS.) 
          KDL    1,K,(L - LOAD LEVELING.) 
          KDL    1,K,(M - LAST MODIFICATION.) 
          KDL    1,K,(O - OMIT CATALOG IMAGE RECORD.) 
          KDL    1,K,(P - PURGE AFTER DUMP.)
          KDL    1,K,(Q - ADD CATALOG AND PERMIT RECORDS.)
          KDL    1,K,(R - REPLACE.) 
          KDL    1,K,(S - SUPPRESS FILE STAGING.) 
          KDL    1,K,(T - DATA MODIFICATION.) 
          KDL    1,K,(Y - PROCESS ALL FILES AS *BR=Y*.) 
          KDL    1,H,(Z - ZERO OUT ASA LINKAGE.)
 MSGK     SET    K
          KDL    1,K,(SPECIFY ONLY ONE OF (C, A, M, OR T).) 
          KDL    1,K,(SPECIFY ONLY ONE OF (I OR D).)
  
          KDL    49,T,(LO OPTIONS)
          KDL    44,K,(C - PERMANENT FILE)
          KDL    48,K,(DEVICE CATALOG.) 
          KDL    44,K,(E - ERRORS.) 
          KDL    44,K,(S - SUMMARY.)
          KDL    44,K,(T - FILES PROCESSED.)
 K        SET    MSGK 
          KDL    40,K,(OPTIONS ARE ENTERED AS -)
          KDL    47,K,(LO = CET.    OR) 
          KDL    47,K,(OP = CIP.) 
          CON    0           END OF BUFFER
          SPACE  4,10 
          ERRNG  /COMSPFS/DIS+/COMSPFS/DISL-*  *DIS* OVERFLOW 
          TITLE  CONVERTED PARAMETER LIST.
*         TABLE OF CONVERTED PARAMETERS.
  
  
          ORG    /COMSPFS/CPL 
 PARC     BSSZ   /COMSPFS/CPTAL  TABLE OF CONVERTED PARAMETERS
          ORG    PARC+/COMSPFS/CPTB  PRESET ARCHIVE FILE NAME 
          DATA   L*TAPE*
          ORG    PARC+/COMSPFS/CPLB  PRESET LIST OUTPUT FILE NAME 
          DATA   L*OUTPUT*
          ORG    PARC+/COMSPFS/CPSI  PRESET SUMMARY INPUT FILE NAME 
          DATA   L*SUMMARY* 
          ORG    PARC+/COMSPFS/CPUS  PRESET UPPER SIZE LIMIT
          CON    37777777777777777777B
          SPACE  4,10 
 CPNM     EQU    /COMSPFS/CPFN  FIRST NAME PARAMETER
 CPOC     EQU    /COMSPFS/CPUI  FIRST OCTAL PARAMETER 
 CPDM     EQU    /COMSPFS/CPSF  FIRST DECIMAL PARAMETER 
 CPNE     EQU    /COMSPFS/CPEO  FIRST NON-EQUIVALENCED PARAMETER
          SPACE  4,10 
*         LEFT SCREEN TRAILER DISPLAY ADDRESSES.
* 
*         NOTE - THIS TABLE MUST BE IN THE SAME ORDER AS THE
*         *DATL* TABLE IN *COMSPFS*.
  
  
          ORG    /COMSPFS/PADR
  
 DADD     BSS    0
          CON    M1DS+1 
          CON    MSDS+1 
          CON    M2DS+1 
          CON    ERDS+1 
          CON    INDS+1 
          TITLE  KEYBOARD PROCESSOR.
 KIP      SPACE  4,20 
**        KIP - KEYBOARD PROCESSOR. 
* 
*         THE KEYBOARD PROCESSOR READS INPUT PARAMETERS FOR FUNCTIONS.
* 
*         ENTRY  (B2) = EXIT ADDRESS FOR PARAMETER PROCESSING.
*                (B3) = EXIT ADDRESS FOR FUNCTION PROCESSING. 
*                (INFF) .NE. 0 IF READING FROM INPUT FILE.
* 
*         EXIT   TO (B3) IF *GO* ENTERED, OR IF END OF INPUT FILE.
*                TO (B2) IF ANYTHING ELSE ENTERED.
*                (KBUF) = FWA OF INPUT PARAMETERS.
* 
*         USES   X - ALL. 
*                A - 1, 2, 5, 6, 7. 
*                B - 2, 3, 6, 7.
* 
*         CALLS  PGD. 
* 
*         MACROS CONSOLE, MESSAGE, MOVE, READ, READC, RECALL. 
  
  
 KDIS     VFD    24/KBUF,18/0,18/MENU  *K* DISPLAY CONTROL WORD 
  
          ORG    /COMSPFS/KIN 
 KBUF     BSSZ   /COMSPFS/KINL  KEYBOARD INPUT BUFFER 
          ERRPL  KDIS-KBUF   CHECK FOR ORIGIN CONFLICT
  
          ORG    /COMSPFS/KIP 
  
 KIP      BSS    0           ENTRY
          SX6    B2          SET EXIT ADDRESSES 
          SX7    B3 
          SA6    KIPA 
          SA7    KIPB 
  
*         DISPLAY SCREEN AND CHECK INPUT TYPE.
  
 KIP3     CONSOLE  KDIS 
          SA1    KIFL 
          NZ     X1,KIP6     IF K-DISPLAY INPUT AFTER PARAMETER ERROR 
          SA1    INFF 
          ZR     X1,KIP6     IF NOT READING FROM INPUT FILE 
  
*         READ INPUT FILE.
  
          MESSAGE  (=C**),2  CLEAR *REQUEST K-DISPLAY* MESSAGE
          SA1    TRIF 
          SX0    X1+
          ZR     X1,KIP5     IF NOT TERMINAL FILE 
 KIP4     READ   I,R
 KIP5     READC  I,KBUF,/COMSPFS/KINL 
          ZR     X1,KIP7     IF COMPLETE READ 
          NZ     X0,KIP4     IF TERMINAL FILE 
          EQ     KIP9        EXIT TO FUNCTION PROCESSOR 
  
*         CHECK FOR K-DISPLAY INPUT.
  
 KIP6     SX6    B0+
          SA6    KBUF        CLEAR INPUT BUFFER 
 KIP7     SA5    KBUF 
          MX3    6
          NZ     X5,KIP8     IF INPUT READY 
          RECALL
          EQ     KIP7        CHECK FOR INPUT
  
*         CHECK FOR PAGE REQUEST. 
  
 KIP8     SX1    KDIS        CHECK FOR PAGE REQUEST 
          SA2    CPAG 
          BX3    X3*X5
          BX4    X4-X4
          RJ     PGD         PAGE DISPLAY IF *+* OR *-* 
          SX1    KIP3        SET ARGUMENT PROCESSOR TO *KIP3* 
          ZR     X4,KIP11    IF PAGE COMMAND
  
*         CHECK FOR *GO*. 
  
          SX1    2RGO        CHECK FOR END OF PARAMETERS
          MX0    12 
          LX1    48 
          BX0    X0*X5
          IX1    X1-X0
          NZ     X1,KIP10    IF NOT *GO* (END OF PARAMETERS)
          SA1    KIFL 
          ZR     X1,KIP9     IF NOT READING FROM K-DISPLAY AFTER ERROR
          BX6    X6-X6       CLEAR *K-DISPLAY INPUT AFTER ERROR* FLAG 
          SA6    A1 
          SA1    INFF 
          NZ     X1,KIP3     IF READING FROM AN INPUT FILE
  
*         EXIT TO FUNCTION PROCESSOR. 
  
 KIP9     MOVE   5,BLK,INDS+1  CLEAR MESSAGE LINE 
          SA1    KDIS        RESET K-DISPLAY POINTER WORD TO PAGE ONE 
          SX2    LPG1 
          MX6    42 
          BX6    X6*X1
          BX6    X6+X2
          SA6    A1 
          SA1    KIPB        EXIT TO FUNCTION PROCESSOR 
          EQ     KIP11       DISPLAY COMMAND
  
*         PROCESS INPUT CHARACTER STRING. 
  
 KIP10    SA1    KIPA        GET ARGUMENT PROCESSOR ADDRESS 
 KIP11    SB2    X1 
          MOVE   4,BLK,ERDS+1  CLEAR ERROR MESSAGE LINE 
          MOVE   5,KBUF,INDS+1  DISPLAY INPUT LINE
          JP     B2          EXIT TO PROCESSOR
  
  
 KIPA     CON    0           EXIT FOR ARGUMENT PROCESSING 
 KIPB     CON    0           EXIT FOR FUNCTION PROCESSING 
  
 INFF     BSSZ   1           INPUT FILE FLAG
 KIFL     CON    0           K-DISPLAY INPUT (.NZ. IF ERROR AND *OP=K*) 
  
 BLK      DATA   50H
          SPACE  4,10 
*         COMMON DECKS. 
  
*CALL     COMCCPM 
*CALL     COMCDCP 
*CALL     COMCMVE 
 PGD      SPACE  4,10 
 PGD      HERE               ASSEMBLE PAGING SUBROUTINE HERE
  
 CPAG     CON    MPAG        INITIAL PAGING TABLE IS MENU TABLE 
  
 TPAG     PAGT   LPG1        OPTION SELECTION PAGING TABLE
          PAGT   LPG2 
          PAGT   LPG3 
          PAGT   LPG4 
          PAGT   LPG5 
          PAGT   LPG6 
          PAGT
          PAGT   RGHT 
          PAGT   *
  
  
          ERRNG  /COMSPFS/KIP+/COMSPFS/KIPL-*  *KIP* OVERFLOW 
          TITLE  PARAMETER HOLD AREA. 
          SPACE  4,10 
**        ENTERED PARAMETERS AREA.
  
  
 ENTP     BSS    0
  
 ENAM     BSS    0           FIRST NAME PARAMETER 
 EPFM     BSS    1           FAMILY NAME
 EPPN     BSS    1           PACK NAME
 EPT      BSS    1           ARCHIVE FILE NAME
 EPVF     BSS    1           VERIFY FILE NAME 
 EPL      BSS    1           OUTPUT FILE NAME 
 EPMF     BSS    1           MASTER FILE NAME 
 EPRD     BSS    1           RELEASE DATA FILE NAME 
 EPS      BSS    1           SUMMARY FILE NAME
 EPSI     BSS    1           SUMMARY INPUT FILE NAME
 EPPS     BSS    1           PROCESSING STATUS JOB CONTROL REGISTER 
  
*         NAME PARAMTERS AFTER THIS POINT WILL ACCEPT A DISPLAY CODE
*         ZERO AS A VALID VALUE.  THE PREVIOUS NAME PARAMETERS WILL 
*         CHANGE A DISPLAY CODE ZERO TO A BINARY ZERO.
  
 EPZR     BSS    0           START OF ZERO VALUE NAME PARAMETERS
 EPUN     BSS    1           USER NAME
 EPLA     BSS    1           LOWER ACCESS LEVEL 
 EPUA     BSS    1           UPPER ACCESS LEVEL 
 EPPVSN   BSS    1           PREVIOUS ARCHIVE TAPE VSN
 EPSR     BSS    1           SUMMARY FILE RECORD NAME 
 NNAM     EQU    *-ENAM      NUMBER OF NAME PARAMETERS
  
 EPLO     BSS    1           LIST OPTIONS 
 EPOP     BSS    1           UTILITY OPTIONS
  
 EOCT     BSS    0           FIRST OCTAL PARAMETER
 EPUI     BSS    1           USER INDEX 
 EPDI     BSS    1           DESTINATION USER INDEX 
 EPDN     BSS    1           DEVICE NUMBER
 EPTD     BSS    1           TRUE DEVICE NUMBER 
 EPDD     BSS    1           DESTINATION DEVICE 
 NOCT     EQU    *-EOCT      NUMBER OF OCTAL PARAMETERS 
  
 EDEC     BSS    0           FIRST DECIMAL PARAMETER
 EPSF     BSS    1           NUMBER OF FILES TO SKIP
 EPN      BSS    1           NUMBER FILES TO PROCESS
 EPLS     BSS    1           LOWER SIZE LIMIT 
 EPUS     BSS    1           UPPER SIZE LIMIT 
 EPCOS    BSS    1           CATALOG ONLY SIZE LIMIT
 NDEC     EQU    *-EDEC      NUMBER OF DECIMAL PARAMETERS 
  
 ENEQ     BSS    0           FIRST NON-EQUIVALENCED PARAMETER 
 EPEO     BSS    1           ERROR OPTION 
 EPSD     BSS    1           SET DISK SPACE RELEASE DATE
 EPUD     BSS    1           UPDATE UTILITY CONTROL DATE
 EPDT     BSS    1           DESTAGE TO TAPE DUMP 
 EPIP     BSS    1           INHIBIT PROCESSING 
 NNEQ     EQU    *-ENEQ      NUMBER OF NON-EQUIVALENCED PARAMETERS
  
 EPAD     BSS    1           AFTER DATE 
 EPAT     BSS    1           AFTER TIME 
 EPBD     BSS    1           BEFORE DATE
 EPBT     BSS    1           BEFORE TIME
  
 EPIF     BSSZ   1           INPUT FILE NAME
  
 EPFN     BSS    0           FIRST PF NAME PARAMETER
 EPPF     BSS    10D         PERMANENT FILE NAMES 
 NPFN     EQU    *-EPFN      NUMBER OF PF NAMES ENTERED 
  
 EPDA     BSS    1           DISK ADDRESS SELECTION 
 EPCA     BSS    1           CARTRIDGE ALTERNATE STORAGE SELECTION
 EPTA     BSS    1           TAPE ALTERNATE STORAGE SELECTION 
 EPCN     BSS    1           CHARGE NUMBER SELECTIION 
 EPSPN    BSS    2           PROJECT NUMBER SELECTION 
  
 EPCUI    BSS    1           CLEAR UI SELECTION 
 EPCPF    BSS    1           CLEAR PF SELECTION 
 EPCDA    BSS    1           CLEAR DA SELECTION 
 EPCCA    BSS    1           CLEAR CA SELECTION 
 EPCTA    BSS    1           CLEAR TA SELECTION 
 EPCCN    BSS    1           CLEAR CN SELECTION 
 EPCPN    BSS    2           CLEAR SPN SELECTION
  
 ENTPL    EQU    *-ENTP      LENGTH OF ENTERED PARAMETERS 
  
*         CHECK SYNCHRONIZATION WITH *PARC* TABLE.
  
          ERRNZ  EPFM-ENTP-/COMSPFS/CPFN
          ERRNZ  EPLO-ENTP-/COMSPFS/CPLO
          ERRNZ  EPOP-ENTP-/COMSPFS/CPOP
          ERRNZ  EPUI-ENTP-/COMSPFS/CPUI
          ERRNZ  EPSF-ENTP-/COMSPFS/CPSF
          ERRNZ  EPEO-ENTP-/COMSPFS/CPEO
          SPACE  4,10 
*         FETS/STORAGE. 
  
*         CAUTION - INPUT FILE AND SELECTION FILE USE SAME BUFFER.
  
 I        BSS    0           INPUT FET
          FILEB  IBUF,IBUFL,FET=6 
  
 T        BSS    0           TERMINAL OUTPUT FET
 ZZZZZG0  FILEB  TBUF,TBUFL,FET=6,DTY=2RTT
  
 S        BSS    0           FILE/UI SELECTION FET
 ZZZZZGB  FILEB  IBUF,IBUFL,FET=6 
  
 SCR      BSS    0           SCRATCH FILE RETURN FET
 ZZZZZGZ  FILEB  IBUF,IBUFL,FET=6 
  
 PFXD     CON    0           PF DISPLAY INDEX (SCREEN 4)
          TITLE  PARAMETER VALIDATION TABLES. 
          SPACE  4,10 
*         *PFS* UTILITY SELECTION ARGUMENT TABLE. 
  
  
 IARG     BSS    0
 LD       ARG    -LDRG,/COMSPFS/UTLC
 DU       ARG    -DURG,/COMSPFS/UTLC
 CA       ARG    -CARG,/COMSPFS/UTLC
 AT       ARG    -ATRG,/COMSPFS/UTLC
 CP       ARG    -CPRG,/COMSPFS/UTLC
 RL       ARG    -RLRG,/COMSPFS/UTLC
 LI       ARG    -LIRG,/COMSPFS/UTLC
          BSSZ   1
  
 LDRG     CON    /COMSPFS/LDUT  *PFLOAD*
 DURG     CON    /COMSPFS/DUUT  *PFDUMP*
 CARG     CON    /COMSPFS/CAUT  *PFCAT* 
 ATRG     CON    /COMSPFS/ATUT  *PFATC* 
 CPRG     CON    /COMSPFS/COUT  *PFCOPY*
 RLRG     CON    /COMSPFS/RLUT  *PFREL* 
 LIRG     CON    /COMSPFS/LIUT  *PFLIST*
          SPACE  4,10 
*         UTILITY PARAMETERS ARGUMENT TABLE.
  
  
 TARG     BSS    0
 FM       ARG    DARG,EPFM,400B,1 
 PN       ARG    DARG,EPPN,400B,1 
 T        ARG    DARG,EPT,,1
 VF       ARG    DVFN,EPVF,400B,1 
 L        ARG    DARG,EPL,400B,1
 MF       ARG    DARG,EPMF,400B,1 
 RD       ARG    DARG,EPRD,400B,1 
 UN       ARG    DARG,EPUN,400B,1 
 PFRG     BSS    0
 PF       ARG    EPPF,EPPF,400B,1 
 PF       ARG    EPPF+1,EPPF+1,400B,1 
 PF       ARG    EPPF+2,EPPF+2,400B,1 
 PF       ARG    EPPF+3,EPPF+3,400B,1 
 PF       ARG    EPPF+4,EPPF+4,400B,1 
 PF       ARG    EPPF+5,EPPF+5,400B,1 
 PF       ARG    EPPF+6,EPPF+6,400B,1 
 PF       ARG    EPPF+7,EPPF+7,400B,1 
 PF       ARG    EPPF+8,EPPF+8,400B,1 
 PF       ARG    EPPF+9,EPPF+9,400B,1 
 LO       ARG    DARG,EPLO,400B,1 
 OP       ARG    DARG,EPOP,400B,1 
 UI       ARG    DARG,EPUI,400B,1 
 DI       ARG    DARG,EPDI,400B,1 
 DN       ARG    DARG,EPDN,400B,1 
 TD       ARG    DARG,EPTD,400B,1 
 DD       ARG    DARG,EPDD,400B,1 
 SF       ARG    DARG,EPSF,400B,1 
 N        ARG    DARG,EPN,400B,1
 EO       ARG    -E1RG,EPEO,,1
 SD       ARG    -E1RG,EPSD,,1
 UD       ARG    -E1RG,EPUD,,1
 AD       ARG    DARG,EPAD,400B,1 
 AT       ARG    DARG,EPAT,400B,1 
 BD       ARG    DARG,EPBD,400B,1 
 BT       ARG    DARG,EPBT,400B,1 
 LA       ARG    DARG,EPLA,400B,1 
 UA       ARG    DARG,EPUA,400B,1 
 PVSN     ARG    DARG,EPPVSN,400B,1 
 DT       ARG    -E1RG,EPDT,,1
 IP       ARG    -E1RG,EPIP,,1
 I        ARG    DINF,EPIF,,1 
 LS       ARG    DARG,EPLS,400B,1 
 US       ARG    DARG,EPUS,400B,1 
 COS      ARG    DARG,EPCOS,400B,1
 S        ARG    DSUN,EPS,400B,1
 SR       ARG    DSRN,EPSR,400B,1 
 SI       ARG    DSUN,EPSI,400B,1 
 PS       ARG    DARG,EPPS,400B,1 
 DA       ARG    DARG,EPDA,400B,1 
 TA       ARG    DARG,EPTA,,1 
 CA       ARG    DARG,EPCA,,1 
 CN       ARG    DARG,EPCN,400B,1 
 SPN      ARG    DARG,EPSPN,400B,2
 CUI      ARG    DARG,EPCUI,,1
 CPF      ARG    DARG,EPCPF,,1
 CDA      ARG    DARG,EPCDA,400B
 CCA      ARG    DARG,EPCCA,,1
 CTA      ARG    DARG,EPCTA,,1
 CCN      ARG    DARG,EPCCN,400B,1
 CPN      ARG    DARG,EPCPN,400B,2
          CON    0           END OF TABLE 
  
  
 DARG     BSSZ   1           DEFAULT ZERO ARGUMENT
 E1RG     CON    1           DEFAULT NON-ZERO ARGUMENT
 DRDF     DATA   L*ZZZZRDF*  DEFAULT RELEASE DATA FILE NAME 
 DVFN     DATA   L*PFVER*    DEFAULT VERIFY FILE NAME 
 DINF     DATA   L*INPUT*    DEFAULT INPUT FILE NAME
 DSUN     DATA   L*SUMMARY*  DEFAULT SUMMARY FILE NAME
 DSRN     CON    0           DEFAULT SUMMARY FILE RECORD NAME 
          SPACE  4,10 
**        TABLE OF VALID UTILITY PARAMETERS.  THIS TABLE IS IN THE SAME 
*         ORDER AS *ENTP*.
  
  
 TVUP     BSS    0
  
 AD       PARAM  (LD,DU,CA,AT,CO,RL,LI) 
 AT       PARAM  (LD,DU,CA,AT,CO,RL,LI) 
 BD       PARAM  (LD,DU,CA,AT,CO,RL,LI) 
 BT       PARAM  (LD,DU,CA,AT,CO,RL,LI) 
 CA       PARAM  (LD,DU,CA,AT,CO,RL,LI) 
 CCA      PARAM  (LD,DU,CA,AT,CO,RL,LI) 
 CCN      PARAM  (LD,DU,CA,AT,CO,RL,LI) 
 CDA      PARAM  (LD,DU,CA,AT,CO,RL,LI) 
 CN       PARAM  (LD,DU,CA,AT,CO,RL,LI) 
 COS      PARAM  (DU) 
 CPF      PARAM  (LD,DU,CA,AT,CO,RL,LI) 
 CPN      PARAM  (LD,DU,CA,AT,CO,RL,LI) 
 CTA      PARAM  (LD,DU,CA,AT,CO,RL,LI) 
 CUI      PARAM  (LD,DU,CA,AT,CO,RL,LI) 
 DA       PARAM  (LD,DU,CA,AT,CO,RL,LI) 
 DD       PARAM  (LD) 
 DI       PARAM  (LD) 
 DN       PARAM  (LD,DU,CA,RL)
 DT       PARAM  (DU) 
 EO       PARAM  (LD) 
 FM       PARAM  (LD,DU,CA,RL)
 IP       PARAM  (DU,RL)
 L        PARAM  (LD,DU,CA,AT,CO,RL,LI) 
 LA       PARAM  (LD,DU,CA,AT,CO,RL,LI) 
 LO       PARAM  (LD,DU,CA,AT,CO,RL,LI) 
 LS       PARAM  (LD,DU,CA,AT,CO,RL,LI) 
 N        PARAM  (LD,AT,CO) 
 MF       PARAM  (CO) 
 OP       PARAM  (LD,DU,CA,AT,CO,RL,LI) 
 PF       PARAM  (LD,DU,CA,AT,CO,RL,LI) 
 PN       PARAM  (LD,DU,CA,RL)
 PS       PARAM  (LD,DU,CA,AT,CO,RL,LI) 
 PVSN     PARAM  (DU) 
 RD       PARAM  (DU) 
 S        PARAM  (LD,DU,CA,AT,CO,RL)
 SD       PARAM  (DU) 
 SF       PARAM  (LD,DU,AT,CO)
 SI       PARAM  (LI) 
 SPN      PARAM  (LD,DU,CA,AT,CO,RL,LI) 
 SR       PARAM  (LD,DU,CA,AT,CO,RL)
 T        PARAM  (LD,DU,AT,CO)
 TA       PARAM  (LD,DU,CA,AT,CO,RL,LI) 
 TD       PARAM  (LD,DU,CA,RL)
 UA       PARAM  (LD,DU,CA,AT,CO,RL,LI) 
 UD       PARAM  (LD) 
 UI       PARAM  (LD,DU,CA,AT,CO,RL,LI) 
 UN       PARAM  (LD,DU,CA,AT,CO,RL,LI) 
 US       PARAM  (LD,DU,CA,AT,CO,RL,LI) 
 VF       PARAM  (DU) 
 END      PARAM 
          SPACE  4,10 
*         TABLE OF VALID UTILITY LIST OPTIONS.
  
  
 TVLO     BSS    0
  
 C        LOPT   (LD,DU,AT,LI)
 E        LOPT   (LD,DU,CA,AT,CO,RL,LI) 
 S        LOPT   (LD,DU,CA,AT,CO,RL,LI) 
 T        LOPT   (LD,DU,CA,AT,CO,RL,LI) 
 END      LOPT
          SPACE  4,10 
*         TABLE OF VALID UTILITY OPTIONS. 
  
  
 TVUO     BSS    0
  
 A        UOPT   (LD,DU,CA,AT,CO,RL,LI) 
 C        UOPT   (LD,DU,CA,AT,CO,RL,LI) 
 D        UOPT   (LD,DU,CA,AT,CO,RL,LI) 
 E        UOPT   (LD) 
 I        UOPT   (LD,DU,CA,AT,CO,RL,LI) 
 K        UOPT   (LD,DU,CA,AT,CO,RL,LI) 
 L        UOPT   (LD) 
 M        UOPT   (LD,DU,CA,AT,CO,RL,LI) 
 O        UOPT   (LD) 
 P        UOPT   (DU) 
 Q        UOPT   (CO) 
 R        UOPT   (LD) 
 S        UOPT   (DU) 
 T        UOPT   (LD,DU,CA,AT,CO,RL,LI) 
 V        UOPT   (LD) 
 Y        UOPT   (DU) 
 Z        UOPT   (LD,DU)
 END      UOPT
          TITLE  COMMAND ENTRY POINTS.
          SPACE  4,10 
*         COMMAND ENTRY POINTS. 
 PFATC    SPACE  4,10 
 PFATC    BSS    0           ENTRY
          SX6    /COMSPFS/ATUT  SET *PFATC* UTILITY 
 PFA1     SA6    UTCF        SET COMMAND CALL 
          SA6    /COMSPFS/UTLC  SET UTILITY CODE
          SA6    IPAF        SET *I* PARAMETER ALLOWED
          EQ     PFS         ENTER MAIN PROGRAM 
 PFCAT    SPACE  4,10 
 PFCAT    BSS    0           ENTRY
          SX6    /COMSPFS/CAUT  SET *PFCAT* UTILITY 
          EQ     PFA1        SET UTILITY CODE 
 PFCOPY   SPACE  4,10 
 PFCOPY   BSS    0           ENTRY
          SX6    /COMSPFS/COUT  SET *PFCOPY* UTILITY
          EQ     PFA1        SET UTILITY CODE 
 PFDUMP   SPACE  4,10 
 PFDUMP   BSS    0           ENTRY
          SX6    /COMSPFS/DUUT  SET *PFDUMP* UTILITY
          EQ     PFA1        SET UTILITY CODE 
 PFLOAD   SPACE  4,10 
 PFLOAD   BSS    0           ENTRY
          SX6    /COMSPFS/LDUT  SET *PFLOAD*  UTILITY 
          EQ     PFA1        SET UTILITY CODE 
 PFREL    SPACE  4,10 
 PFREL    BSS    0           ENTRY
          SX6    /COMSPFS/RLUT  SET *PFREL* UTILITY 
          EQ     PFA1        SET UTILITY CODE 
 PFLIST   SPACE  4,10 
 PFLIST   BSS    0           ENTRY
          SX6    /COMSPFS/LIUT  SET *PFLIST* UTILITY
          EQ     PFA1        SET UTILITY CODE 
 PFRES    SPACE  4,10 
 PFRES    BSS    0           ENTRY
          SX6    /COMSPFS/RSUT  SET *PFRES* UTILITY 
          SA2    PGNR 
          SX2    X2          GET ARGUMENT COUNT 
          ZR     X2,PFA1     IF NO PARAMETERS 
          MESSAGE  ERRG      * ENTERED PARAMETER NOT VALID.*
          MESSAGE  ERRT      * PF UTILITY ABORTED.* 
          ABORT 
          TITLE  PFS - MAIN PROGRAM.
 PFS      SPACE  4,15 
**        PFS - MAIN PROGRAM. 
* 
*         EXIT   TO *POC* TO LOAD OVERLAY.
*                ABORT IF CALLER DOES NOT HAVE REQUIRED PRIVILEGES. 
* 
*         USES   X - 0, 1, 2, 3, 4, 5, 6. 
*                A - 1, 2, 3, 4, 6. 
*                B - 1, 2, 3, 4, 5, 6.
* 
*         CALLS  AFS, ARM, DUN, IIF, KIP, PAD, PBD, PCS, PDP, PFD, PFP, 
*                PLO, PNE, PNP, POC, PPC, PPF, PPO, PSD, PSP, PSS, PUO, 
*                PVP, SKD, USB, VDI, WFS. 
* 
*         MACROS ABORT, CONSOLE, CSET, GETSPS, MEMORY, MESSAGE, MOVE, 
*                PDATE, RECALL, RETURN, WRITEC, WRITER. 
  
  
 PFS      BSS    0           ENTRY
          SB1    1
  
*         CHECK FOR PROPER USER VALIDATION. 
*         (SYSTEM ORIGIN OR SYSTEM ORIGIN PRIVILEGES WITH *DEBUG* ON).
  
          GETSPS PFSA 
          SA1    PFSA 
          ZR     X1,PFS1     IF USER VALID
          MESSAGE  ERRH      * USER ACCESS NOT VALID.*
          MESSAGE  ERRT      * PF UTILITY ABORTED.* 
          ABORT 
  
 PFS1     PDATE  /COMSPFS/STDT  SET START DATE AND TIME 
          SA1    /COMSPFS/STDT
          BX6    X1 
          SA6    VDTA        SET *COMCVDT* BASE DATE AND TIME 
          SX3    YTAB        PRESET *K* DISPLAY COORDINATES 
          RJ     PRK
          SX6    B0+         TERMINATE FILE SELECTION BUFFER
          SA6    SBUF 
          RJ     RSF         RETURN SCRATCH FILES 
          SA1    UTCF 
          ZR     X1,PFS2     IF *PFS* ENTRY 
          CONSOLE  KDIS 
          MESSAGE  (=C**),2  CLEAR *REQUEST K-DISPLAY* MESSAGE
          RJ     SKD         SET INITIAL *K* DISPLAY
          SB2    CCDR        SET COMMAND ADDRESS
          RJ     USB         UNPACK COMMAND PARAMETERS
          RJ     POP
          NZ     X6,PFS5     IF NO LEADING *$* OR */* 
          RJ     POP         SKIP COMMAND KEYWORD 
          EQ     PFS5        PROCESS COMMAND PARAMETERS 
  
 PFS2     RJ     DUN         DETERMINE UTILITY NAME 
 PFS3     SB2    PFS4        ARGUMENT PROCESSOR 
          SB3    PFS14       FUNCTION PROCESSOR 
          EQ     KIP         PROCESS KEYBOARD 
  
 PFS4     RJ     AFS         ADVANCE FILE SELECTIONS DISPLAY
          ZR     X2,PFS9     IF DISPLAY ADVANCE ENTRY PROCESSED 
          SX6    B0+         CLEAR ERROR FLAG 
          SA6    ERFL 
          MOVE   4,BLK,ERDS+1  CLEAR ERROR MESSAGE
          SB2    KBUF        SET ENTERED PARRAMETERS ADDRESS
          RJ     USB         UNPACK ENTERED PARAMETERS
 PFS5     SB3    TARG        SET ARGUMENT TABLE ADDRESS 
          RJ     ARM         PROCESS ENTERED ARGUMENTS
          ZR     X1,PFS6     IF NO ERROR
          SX6    ERRG        SET ERROR FLAG 
          SA6    ERFL 
  
*         PROCESS ARGUMENTS.
  
 PFS6     RJ     PNP         PROCESS NAME PARAMETERS
          RJ     PLO         PROCESS LIST OPTIONS 
          RJ     PUO         PROCESS UTILITY OPTIONS
          RJ     PPO         PROCESS OCTAL PARAMETERS 
          RJ     PDP         PROCESS DECIMAL PARAMETERS 
          RJ     PNE         PROCESS NON-EQUIVALENCED PARAMETERS
          RJ     PBD         PROCESS BEFORE DATE AND TIME 
          RJ     PAD         PROCESS AFTER DATE AND TIME
          RJ     PFP         PROCESS FAMILY, PACK, AND USER NAME
          NZ     X6,PFS7     IF ERROR IN FAMILY, PACK, OR USER NAME 
          RJ     PPF         PROCESS PERMANENT FILES
          RJ     PFD         PROCESS FILE SELECTION DELETIONS 
 PFS7     RJ     PSS         PROCESS ALTERNATE STORAGE SELECTIONS 
          RJ     PSD         PROCESS ALTERNATE STORAGE DELETIONS
          RJ     PCS         PROCESS CHARGE AND PROJECT SELECTIONS
          RJ     IIF         INITIALIZE INPUT FILE
  
*         CLEAR PARAMETER ENTRY AREA. 
  
          BX6    X6-X6       CLEAR DATE REQUIRED FLAG 
          SA6    DTFL 
          SB3    ENTPL       SET PARAMETER ENTRY AREA LENGTH
          SB2    ENTP-1 
 PFS8     SA6    B2+B3
          SB3    B3-B1
          NZ     B3,PFS8     IF MORE TO CLEAR 
  
*         CHECK FOR PARAMETER ERRORS. 
  
 PFS9     SB2    NPFN        SET ENTERED PF NAME TABLE LENGTH 
          SA4    =2LPF
          MX0    12 
          SA2    PFRG        SET FWA OF PF NAME ARGUMENT TABLE
          SA3    EPFN        SET FWA OF ENTERED PF NAME TABLE 
 PFS10    BX2    -X0*X2      CHANGE BACK THE PF ENTRIES 
          BX6    X2+X4
          SA6    A2 
          BX6    X6-X6       CLEAR THE ENTERED PF NAME TABLE
          SA6    A3 
          SB2    B2-B1       DECREMENT INDEX
          SA2    A2+B1       INCREMENT POINTER
          SA3    A3+B1
          GT     B2,B0,PFS10 IF NOT END OF ENTERED PF NAME TABLE
          SA1    ERFL        CHECK FOR ERROR
          SA3    X1          GET ERROR MESSAGE
          NZ     X1,PFS11    IF ERROR 
          SA1    KIFL 
          NZ     X1,PFS3     IF K-DISPLAY INPUT AFTER PARAMETER ERROR 
          SA1    UTCF 
          SA2    INFF 
          ZR     X1,PFS3     IF *PFS* ENTRY 
          NZ     X2,PFS3     IF READING FROM INPUT FILE 
          EQ     PFS14       PROCESS CALL TO UTILITY OVERLAY
  
*         PROCESS PARAMETER ERROR.
  
 PFS11    MOVE   3,A3,ERDS+1 DISPLAY MESSAGE
          MESSAGE  A3        ISSUE MESSAGE TO DAYFILE 
          SA1    UTCF 
          SA2    TRIF 
          ZR     X1,PFS3     IF *PFS* ENTRY 
          NZ     X2,PFS12    IF TERMINAL INPUT FILE 
          SA1    PARC+/COMSPFS/CPOP 
          LX1    /COMSPFS/KUOP
          NG     X1,PFS13    IF *OP=K* SPECIFIED
          MESSAGE  ERRT      * PF UTILITY ABORTED.* 
          ABORT 
  
*         PROCESS PARAMETER ERROR WITH TERMINAL INPUT FILE. 
  
 PFS12    WRITEC T,A3        ISSUE MESSAGE TO TERMINAL
          WRITER T,R         FLUSH BUFFER 
          EQ     PFS3        RESUME INPUT 
  
*         PROCESS PARAMETER ERROR WITH *OP=K* SPECIFIED.
  
 PFS13    SX6    B1+         SET K-DISPLAY INPUT FLAG 
          SA6    KIFL 
          EQ     PFS3        GET OPERATOR INPUT 
  
*         PROCESS CALL TO UTILITY OVERLAY.
  
 PFS14    SA1    INFF 
          ZR     X1,PFS15    IF NO DIRECTIVES FILE
          RECALL I
 PFS15    MOVE   5,BLK,INDS+1  CLEAR MESSAGE LINE 
          RJ     PSP         PROCESS SECURITY PARAMETERS
          NZ     X3,PFS11    IF ERROR 
          RJ     PVP         PROCESS PREVIOUS VSN PARAMETER 
          NZ     X3,PFS11    IF ERROR 
          RJ     PPC         PROCESS PARAMETER CONFLICTS
          NZ     X3,PFS11    IF ERROR 
          RJ     VDI         VALIDATE DESTINATION USER INDEX
          NZ     X3,PFS11    IF ERROR 
          RJ     VPS         VALIDATE PROCESSING STATUS REGISTER
          NZ     X3,PFS11    IF ERROR 
          SA1    ACSF 
          ZR     X1,PFS16    IF NOT TO RESET *ASCII* MODE 
          CSET   ASCII       RESET *ASCII* MODE 
 PFS16    SA1    /COMSPFS/UTLC  GET UTILITY NAME
          SA1    TDUN-1+X1
          MX6    -36
          BX6    -X6*X1 
          LX6    18 
          SA6    PFSB+2 
          MOVE   PFSBL,PFSB,MSDS  REPLACE *N/A* MESSAGE 
          SA1    KDIS        FORCE DISPLAY OF THE FIRST PAGE
          SX6    LPG1 
          MX0    42 
          BX1    X1*X0
          BX6    X1+X6
          SA6    A1 
          CONSOLE  KDIS 
          RJ     WFS         WRITE FILE SELECTIONS
          RETURN T,R         RETURN OUTPUT SCRATCH FILE 
          MEMORY CM,,,45000B
          BX6    X6-X6       CLEAR INPUT
          SA6    KBUF 
          SA6    INFF        CLEAR INPUT FILE FLAG
          SA6    /COMSPFS/FISP  CLEAR FILE SELECTION BUFFER POINTER 
          SA1    /COMSPFS/UTLC
          SA1    TFCN+X1     GET OVERLAY NAME 
          MX0    42 
          SX6    X1          CHECK IF K-DISPLAY INPUT NECESSARY 
          ZR     X6,POC      IF K-DISPLAY INPUT PROCESSING NEEDED 
          BX5    X0*X1
          MX0    -36         CLEAR INPUT BUFFER ADDRESS 
          SA2    KDIS 
          BX6    -X0*X2 
          SA6    A2 
          CONSOLE  KDIS 
          MESSAGE  (=C**),2  CLEAR *REQUEST K-DISPLAY* MESSAGE
          BX1    X5 
          EQ     POC         PROCESS OVERLAY CALL 
  
  
 PFSA     CON    0           SYSTEM ORIGIN PRIVILEGES STATUS
 PFSB     KDL    1,M-2,(      INITIATING PFXXXX   "30BLANKS") 
 PFSBL    EQU    *-PFSB 
 TFCN     SPACE  4,10 
**        TFCN - TABLE OF FUNCTION PROCESSORS.
* 
*T,       42/ OVERLAY NAME,18/ I
* 
*         I = 0 IF K-DISPLAY INPUT TO BE ALLOWED. 
*           .NE. 0 IF INPUT NOT ALLOWED AFTER OVERLAY LOADED. 
  
  
 TFCN     BSS    0
          LOC    0
          CON    0
          VFD    42/0LPFLOAD1,18/0  PFLOAD
          VFD    42/0LPFDUMP1,18/0  PFDUMP
          VFD    42/0LPFDM1,18/1    PFCAT 
          VFD    42/0LPFAM1,18/1    PFATC 
          VFD    42/0LPFAM1,18/1    PFCOPY
          VFD    42/0LPFDM1,18/1    PFREL 
          VFD    42/0LPFLIST1,18/1  PFLIST
          VFD    42/0LPFAM1,18/1    PFRES 
 TFCNL    EQU    *
          LOC    *O 
          TITLE  RESERVED LOCATIONS.
*         RESERVED LOCATIONS. 
  
  
 ACSF     CON    0           *ASCII* CHARACTER SET FLAG 
 ERFL     CON    0           ERROR FLAG 
 DFAD     CON    0           DEFAULTED AFTER DATE/TIME FLAG 
 DTFL     CON    0           DATE AND TIME REQUIRED FLAG
 IPAF     CON    0           *I* PARAMETER ALLOWED FLAG 
 NVSS     CON    0           NUMBER OF VSN SELECTIONS (TA PARAMETER)
 PTEP     CON    0           ADDRESS OF ENTERED PARAMETER 
 PTNP     CON    0           NUMBER OF PARAMETERS LEFT TO ROCESS
 PTCP     CON    0           ADDRESS OF CONVERTED PARAMETERS
 PTMW     CON    0           PARAMETER MASK WORD
 TRIF     CON    0           TERMINAL INPUT FLAG
 UTCF     CON    0           UTILITY COMMAND FLAG (0 IF *PFS.* CALL)
          SPACE  4,10 
*         MESSAGES. 
  
  
 ERRA     DATA   30H BOTH FM AND PN SPECIFIED.
          CON    0
 ERRB     DATA   30H FAMILY/PACK NOT FOUND. 
          CON    0
 ERRC     DATA   30H USER NAME INCORRECT. 
          CON    0
 ERRD     DATA   30H PF SPECIFIED BUT NOT UI/UN.
          CON    0
 ERRE     DATA   30H RD AND UI/UN NOT ALLOWED.
          CON    0
 ERRF     DATA   30H FILENAME CONFLICT -
          CON    0
 ERRG     DATA   30H ENTERED PARAMETER NOT VALID. 
          CON    0
 ERRH     DATA   30H USER ACCESS NOT VALID. 
          CON    0
 ERRI     DATA   30H LA AND UA BOTH REQUIRED. 
          CON    0
 ERRJ     DATA   30H LA VALUE LARGER THAN UA. 
          CON    0
 ERRK     DATA   30H UNKNOWN ACCESS LEVEL NAME. 
          CON    0
 ERRL     DATA   30H ACCESS LEVEL OUT OF RANGE. 
          CON    0
 ERRM     DATA   30H VSN TOO LONG.
          CON    0
 ERRN     DATA   30H USER INDEX OUT OF RANGE. 
          CON    0
 ERRO     DATA   30H DT AND OP=P CONFLICT.
          CON    0
 ERRP     DATA   30H DT AND OP=Z CONFLICT.
          CON    0
 ERRQ     DATA   30H LS VALUE LARGER THAN US. 
          CON    0
 ERRR     DATA   30H VSN SELECTIONS AT MAXIMUM. 
          CON    0
 ERRS     DATA   30H CN, SPN ENTRIES AT MAXIMUM.
          CON    0
 ERRT     DATA   30H PF UTILITY ABORTED.
          CON    0
 ERRU     DATA   30H PF UTILITY INPUT FILE EMPTY. 
          CON    0
 ERRV     DATA   30H DT AND PN CONFLICT.
          CON    0
 ERRW     DATA   30H SPN SPECIFIED BUT NOT CN.
          CON    0
 ERRX     DATA   30H PS INCORRECT REGISTER NAME.
          CON    0
 ERRY     DATA   30H TD AND DN CONFLICT.
          CON    0
 ERRZ     DATA   30H TD AND DA CONFLICT.
          CON    0
          SPACE  4,10 
*         COMMON DECKS. 
  
  
*CALL     COMCARM 
*CALL     COMCCDD 
*CALL     COMCCIO 
          LIST   X
*CALL     COMCCNS 
          LIST   *
*CALL     COMCCOD 
*CALL     COMCDTC 
*CALL     COMCDXB 
*CALL     COMCEDT 
*CALL     COMCJCR 
*CALL     COMCLFM 
*CALL     COMCPOP 
*CALL     COMCRDC 
*CALL     COMCRDW 
*CALL     COMCRSB 
*CALL     COMCSCB 
*CALL     COMCSFN 
*CALL     COMCSTF 
*CALL     COMCUSB 
*CALL     COMCVDE 
*CALL     COMCVDT 
*CALL     COMCVLC 
*CALL     COMCWTC 
*CALL     COMCWTO 
*CALL     COMCWTW 
          TITLE  SUBROUTINES. 
 AFS      SPACE  4,15 
**        AFS - ADVANCE FILE SELECTIONS DISPLAY.
* 
*         EXIT   (X2) = 0 IF SPECIAL DISPLAY ADVANCE CHARACTER ENTERED. 
*                FILE SELECTIONS DISPLAY ADVANCED IF SPECIAL CHARACTER
*                ENTERED. 
* 
*         USES   X - 1, 2, 6. 
*                A - 1, 6.
* 
*         CALLS  DFS. 
  
  
 AFS      SUBR               ENTRY/EXIT 
          SA1    /COMSPFS/KIN 
          LX1    0-48 
          SX6    -D.PFL/2 
          SX2    X1-1R/*100B
          ZR     X2,AFS1     IF MOVE BACKWARD, SCREEN 4 
          SX2    X1-1R**100B
          NZ     X2,AFSX     IF NOT MOVE FORWARD, SCREEN 4
          SX6    D.PFL/2
 AFS1     SA1    PFXD        UPDATE DISPLAY INDEX 
          IX6    X6+X1
          SA6    A1 
          RJ     DFS         DISPLAY FILE SELECTIONS
          SX2    B0          SET SPECIAL ENTRY PROCESSED
          EQ     AFSX        RETURN 
 CFC      SPACE  4,10 
**        CFC - CHECK FILE NAME CONFLICTS.
* 
*         EXIT   (X1) = FILE NAME CAUSING CONFLICT. 
*                (X1) = 0 IF NO CONFLICT. 
* 
*         USES   X - 1, 2, 3, 4, 6. 
*                A - 1, 2, 3, 4.
  
  
 CFC      SUBR               ENTRY/EXIT 
          SA2    CFCA-1 
          SA1    INFF 
          MX6    42 
          NZ     X1,CFC1     IF INPUT FILE SPECIFIED
          SA2    A2+B1       DO NOT CHECK INPUT FILE
 CFC1     SX1    A2-CFCA-CFCAL+2
          ZR     X1,CFCX     IF ALL FILE NAMES CHECKED
          SA2    A2+B1       READ FILE NAME ADDRESS 
          SA1    X2          READ FILE NAME 
          BX1    X6*X1
          ZR     X1,CFC1     IF NO FILE NAME
          SA3    A2+
 CFC2     SX4    A3-CFCA-CFCAL+1
          ZR     X4,CFC1     IF END OF ENTRIES TO COMPARE 
          SA3    A3+B1       READ NEXT FILE NAME ADDRESS FOR COMPARE
          SA4    X3          READ FILE NAME TO COMPARE
          BX4    X1-X4
          BX4    X6*X4
          NZ     X4,CFC2     IF NO FILE NAME CONFLICT 
          EQ     CFCX        RETURN WITH (X1) = FILE NAME 
  
  
 CFCA     BSS    0           TABLE OF FILE NAME ADDRESSES 
          CON    I                   INPUT FILE NAME
          CON    PARC+/COMSPFS/CPTB  ARCHIVE FILE NAME
          CON    PARC+/COMSPFS/CPVF  VERIFY FILE NAME 
          CON    PARC+/COMSPFS/CPLB  OUTPUT FILE NAME 
          CON    PARC+/COMSPFS/CPMF  MASTER FILE NAME 
          CON    PARC+/COMSPFS/CPRD  RELEASE DATA FILE NAME 
          CON    PARC+/COMSPFS/CPSU  SUMMARY FILE NAME
          CON    PARC+/COMSPFS/CPSI  SUMMARY INPUT FILE NAME
 CFCAL    EQU    *-CFCA      TABLE LENGTH 
 DCS      SPACE  4,10 
**        DCS - DISPLAY CHARGE AND PROJECT NUMBER SELECTIONS. 
* 
*         EXIT   K DISPLAY UPDATED. 
* 
*         USES   X - 1, 2, 5, 6.
*                A - 1, 2, 5. 
*                B - 3, 6, 7. 
* 
*         CALLS  SFN, SCB.
  
  
 DCS      SUBR               ENTRY/EXIT 
          SB6    /COMSPFS/TCNS-3  INITIALIZE SELECTIONS TABLE ADDRESS 
          SA5    DCSA-1 
 DCS1     SA5    A5+1        GET LINE DESCRIPTORS ADDRESS 
          SB7    CNDS-CNDSS  INITIALIZE K DISPLAY ADDRESS 
          ZR     X5,DCSX     IF DISPLAY COMPLETE
  
*         ADVANCE TO NEXT ENTRY.
  
 DCS2     SB7    B7+CNDSS    ADVANCE K DISPLAY ADDRESS
          SX1    B7-CNDS-CNDSL
          ZR     X1,DCS1     IF END OF PASS 
          SX1    B6-DCSF
          ZR     X1,DCS3     IF BLANK FILLING END OF DISPLAY
          SB6    B6+3        ADVANCE SELECTION ADDRESS
 DCS3     SA1    B6+
          NZ     X1,DCS4     IF NOT END OF SELECTIONS TABLE ENTRIES 
          SB6    DCSF        SET TO BLANK FILL REMAINDER OF DISPLAY 
          SA1    B6+
  
*         SET CHARGE AND PROJECT FIELDS IN DISPLAY. 
  
 DCS4     SX6    X1-1 
          NZ     X6,DCS5     IF NOT NULL CHARGE NUMBER
          SA1    DCSD 
 DCS5     RJ     SFN         SPACE FILL CHARGE NUMBER 
          SB3    X5          SET LINE DESCRIPTOR ADDRESS
          RJ     SCB         SET CHARGE NUMBER
          SA1    B6+B1
          NZ     X1,DCS6     IF PROJECT SELECTION PRESENT 
          SA2    B6 
          SX2    X2-1 
          ZR     X2,DCS7     IF NULL CHARGE NUMBER
          SA1    DCSE 
          EQ     DCS7        SET PROJECT NUMBER 
  
 DCS6     SX6    X1-1 
          NZ     X6,DCS7     IF NOT NULL PROJECT SELECTION
          SA1    DCSD 
 DCS7     RJ     SFN         SPACE FILL PROJECT NUMBER
          SB3    X5+1        SET LINE DESCRIPTOR ADDRESS
          RJ     SCB         SET PROJECT NUMBER FIRST WORD
          SA1    B6+2 
          BX6    X1 
          RJ     SFN         SPACE FILL PROJECT NUMBER
          SB3    X5+2        SET LINE DESCRIPTOR ADDRESS
          RJ     SCB         SET PROJECT NUMBER SECOND WORD 
          EQ     DCS2        PROCESS NEXT ENTRY 
  
  
 DCSA     CON    DCSB        PASS 1 LINE DESCRIPTORS
          CON    DCSC        PASS 2 LINE DESCRIPTORS
          CON    0
  
 DCSB     CFORM  5,10        CHARGE NUMBER
          CFORM  16,10       PROJECT NUMBER WORD ONE
          CFORM  26,10       PROJECT NUMBER WORD TWO
  
 DCSC     CFORM  37,10       CHARGE NUMBER
          CFORM  48,10       PROJECT NUMBER WORD ONE
          CFORM  58,10       PROJECT NUMBER WORD TWO
  
 DCSD     DATA   0LNULL.
 DCSE     DATA   0LALL. 
  
 DCSF     DATA   10H
          DATA   10H
          DATA   10H
 DFS      SPACE  4,15 
**        DFS - DISPLAY FILE SELECTIONS.
* 
*         ENTRY  (/COMSPFS/NFIS) = NUMBER OF SELECTIONS.
*                (PFXD) = STARTING OFFSET.
* 
*         EXIT   NEXT DISPLAY BUILT.
* 
*         USES   X - 0, 1, 2, 3, 5, 6.
*                A - 1, 2, 5, 6.
*                B - 2, 3, 5, 6.
* 
*         CALLS  COD, SFN.
  
  
 DFS      SUBR               ENTRY/EXIT 
          SA1    =10H 
          SA2    DFSA        BLANK OUT EXISTING VALUES
          BX6    X1 
          SA5    A2          HOLD FOR LATER USE 
 DFS1     SA6    X2+
          SA2    A2+B1
          NZ     X2,DFS1     IF MORE TO BLANK 
          SA1    /COMSPFS/NFIS
          SA2    PFXD 
          IX3    X2-X1
          NG     X2,DFS2     IF UNDERFLOW 
          NG     X3,DFS3     IF NO OVERFLOW 
 DFS2     SX2    B0          RESET TO START 
          SX6    B0+
          SA6    A2 
 DFS3     SB5    X2+         SET STARTING FILE
          SB6    X1          SET END OF TABLE 
          MX0    1           SET PREVIOUS USER INDEX
 DFS4     GE     B5,B6,DFSX  IF ENTIRE TABLE PROCESSED
          SA2    SBUF+B5     GET ENTRY
          LX2    0-42 
          SX1    X2 
          BX3    X1-X0
          ZR     X3,DFS5     IF INDICIES MATCH
          BX0    X1          UPDATE INDEX 
          RJ     COD
          SA2    SBUF+B5
          SX1    1R-&1R 
          SB3    48 
          BX6    X4-X1
          SB2    B3-B2
          LX6    -6 
          LX1    B2 
          BX6    X6-X1
          SA6    X5          PLACE INDEX
          SA5    A5+B1
          ZR     X5,DFSX     IF TABLE FULL
          LX2    0-42 
 DFS5     MX1    7*6
          BX1    X1*X2
          ZR     X1,DFS7     IF NO FILE NAME (GLOBAL) 
          RJ     SFN
 DFS6     LX6    -6          INDENT 
          SA6    X5 
          SA5    A5+B1
          ZR     X5,DFSX     IF TABLE FULL
          SB5    B5+B1
          EQ     DFS4        GET NEXT ENTRY 
  
 DFS7     SA1    =10HALL. 
          BX6    X1 
          EQ     DFS6        INDENT 
  
  
 DFSA     BSS    0           LIST OF DISPLAY LOCATIONS
 .A       SET    D.PFL/D.PFS NUMBER OF LINES
 .C       SET    D.PF+1 
 OUTER    DUP    D.PFS-1
 .B       SET    .C 
 .C       SET    .C+1 
 INNER    DUP    .A 
          CON    .B 
 .B       SET    .B+D.PFS 
 INNER    ENDD
 .B       SET    .C 
 OUTER    ENDD
          DATA   0           MARK END OF POINTERS 
 DNP      SPACE  4,15 
**        DNP - DISPLAY NON-VALID PARAMETERS. 
* 
*         ENTRY  (X1) = FIRST PARAMETER *TVUP* ENTRY. 
*                (X6) = *N/A* DISPLAY TEXT. 
*                (A1) = ADDRESS OF FIRST PARAMETER *TVUP* ENTRY.
*                (B2) = NUMBER OF PARAMETERS TO PROCESS.
*                (B5) = UTILITY CODE. 
* 
*         EXIT   *N/A* TEXT DISPLAYED FOR PARAMETERS NOT VALID FOR
*                  UTILITY. 
* 
*         USES   X - 1. 
*                A - 1, 6.
*                B - 2, 3.
  
  
 DNP      SUBR               ENTRY/EXIT 
 DNP1     SB3    X1+         SET DISPLAY ADDRESS
          LX1    B5 
          SB2    B2-B1       DECREMENT PARAMETER COUNT
          NG     X1,DNP2     IF VALID OPTION
          SA6    B3+1        SET *N/A* TEXT IN DISPLAY
 DNP2     ZR     B2,DNPX     IF NO MORE PARAMETERS
          SA1    A1+1        GET NEXT *TVUP* ENTRY
          EQ     DNP1        CHECK NEXT PARAMETER 
 DRS      SPACE  4,15 
**        DRS - DISPLAY GENERAL RESIDENCY SELECTION.
* 
*         ENTRY  (X1) = CONVERTED SELECTION PARAMETER.
*                (B7) = DISPLAY ADDRESS.
* 
*         EXIT   GENERAL RESIDENCY SELECTION DISPLAYED IF PRESENT.
* 
*         USES   X - 1, 2, 6. 
*                A - 2. 
*                B - 3. 
* 
*         CALLS  SCB. 
  
  
 DRS      SUBR               ENTRY/EXIT 
          SA2    DRSA 
          ZR     X1,DRS1     IF NO SELECTION
          SX1    X1-1 
          SA2    DRSB 
          ZR     X1,DRS1     IF RESIDENT SELECTION
          SA2    DRSC 
 DRS1     SB3    DRSD 
          BX6    X2 
          RJ     SCB         SET MESSAGE FIRST WORD IN DISPLAY
          SA2    A2+B1
          SB3    DRSD+1 
          BX6    X2 
          RJ     SCB         SET MESSAGE SECOND WORD IN DISPLAY 
          EQ     DRSX        RETURN 
  
 DRSA     DATA   10H
          DATA   10H
  
 DRSB     DATA   10HRESIDENT
          DATA   10H
  
 DRSC     DATA   10HNON-RESIDE
          DATA   10HNT
  
 DRSD     CFORM  4,10 
          CFORM  14,10
 DSS      SPACE  4,20 
**        DSS - DISPLAY STORAGE MEDIA SELECTIONS. 
* 
*                (PARC+/COMSPFS/CPDA) = DISK ALL RESIDENT OR ALL
*                  NON-RESIDENT SELECTION.
*                (PARC+/COMSPFS/CPDA+1 - PARC+/COMSPFS/CPDA+1) =
*                  RESIDENCY DEVICE SELECTIONS. 
*                (PARC+/COMSPFS/CPCA) = CARTRIDGE ALTERNATE STORAGE 
*                  ALL RESIDENT OR ALL NON-RESIDENT SELECTION.
*                (PARC+/COMSPFS/CPTA) = TAPE ALTERNATE STORAGE
*                  ALL RESIDENT OR ALL NON-RESIDENT SELECTION.
*                (PARC+/COMSPFS/CPTA+1 - PARC+/COMSPFS/CPTA+18) = 
*                  TAPE ALTERNATE STORAGE VSN LIST. 
* 
*         EXIT   ALTERNATE STORAGE DISPLAY UPDATED. 
* 
*         USES   X - 0, 1, 5, 6, 7. 
*                A - 1, 5.
*                B - 5, 6, 7. 
* 
*         CALLS  CDD, COD, DRS, SCB.
  
  
 DSS      SUBR               ENTRY/EXIT 
  
*         DISPLAY DISK GENERAL RESIDENCY SELECTION. 
  
          SA1    PARC+/COMSPFS/CPDA 
          SB7    D.DA        SET DISPLAY ADDRESS
          SX1    X1 
          RJ     DRS         DISPLAY RESIDENCY SELECTION
  
*         DISPLAY RESIDENCY DEVICE NUMBERS. 
  
          SA5    PARC+/COMSPFS/CPDA  GET FIRST 31 DEVICE SELECTIONS 
          SB7    D.DAD       SET DEVICE DISPLAY BASE ADDRESS
          SX0    B0+         INITIALIZE DEVICE NUMBER 
          SB6    B0+         INITIALIZE DISPLAY INDEX 
 DSS1     SX1    X0-63
          ZR     X1,DSS3     IF ALL DEVICES CHECKED 
          LX5    1           ADVANCE SELECTION MASK 
          SX1    X0-31
          SX0    X0+B1       ADVANCE DEVICE NUMBER
          NZ     X1,DSS2     IF LAST DEVICE CHECKED NOT 31
          SA5    PARC+/COMSPFS/CPDA+1  GET LAST 32 DEVICE SELECTIONS
 DSS2     PL     X5,DSS1     IF DEVICE NOT SELECTED 
          SX1    X0+
          RJ     COD         CONVERT DEVICE NUMBER
          BX6    X4 
          EQ     DSS4        SET DEVICE NUMBER IN DISPLAY 
  
 DSS3     SX6    2R          BLANK FILL DEVICE NUMBER 
          LX6    -12
 DSS4     SB3    DSSA+B6     SET LINE DESCRIPTOR ADDRESS
          RJ     SCB         SET DEVICE NUMBER IN DISPLAY 
          SX1    B6-63+1
          SB6    B6+1        ADVANCE DISPLAY INDEX
          NZ     X1,DSS1     IF DISPLAY NOT COMPLETE
  
*         DISPLAY CARTRIDGE GENERAL RESIDENCY SELECTION.
  
          SA1    PARC+/COMSPFS/CPCA 
          SB7    D.CA        SET DISPLAY ADDRESS
          RJ     DRS         DISPLAY RESIDENCY SELECTION
  
*         DISPLAY TAPE GENERAL RESIDENCY SELECTION. 
  
          SA1    PARC+/COMSPFS/CPTA 
          SB7    D.TA        SET DISPLAY ADDRESS
          RJ     DRS         DISPLAY RESIDENCY SELECTION
  
*         DISPLAY TAPE ALTERNATE STORAGE VSN-S. 
  
 DSS5     SA5    PARC+/COMSPFS/CPTA+1  GET FIRST VSN
          SB7    D.TAV       SET VSN DISPLAY BASE ADDRESS 
          SB6    B0+         INITIALIZE DISPLAY INDEX 
 DSS6     ZR     X5,DSS7     IF END OF VSN-S
          MX7    -12
          BX0    X7*X5       VSN PREFIX 
          BX1    -X7*X5      VSN SEQUENCE NUMBER
          LX0    36 
          SX1    X1+10000D   BIAS SEQUENCE NUMBER FOR LEADING ZEROES
          RJ     CDD         CONVERT SEQUENCE NUMBER
          MX7    -24
          BX6    -X7*X6      REMOVE BIAS
          LX6    24 
          BX6    X0+X6       MERGE PREFIX AND SEQUENCE NUMBER 
          SA5    A5+B1       GET NEXT VSN 
          EQ     DSS8        SET VSN IN DISPLAY 
  
 DSS7     SA1    =10H 
          BX6    X1          BLANK FILL ENTRY 
 DSS8     SB3    DSSB+B6     SET LINE DESCRIPTOR ADDRESS
          RJ     SCB         SET VSN IN DISPLAY 
          SX1    B6-/COMSPFS/MXVS 
          SB6    B6+1        ADVANCE DISPLAY INDEX
          ZR     X1,DSSX     IF DISPLAY COMPLETE
          EQ     DSS6        CHECK NEXT VSN 
  
  
 DSSA     BSS    0           DEVICE NUMBER DISPLAY LINE DESCRIPTORS 
          CFORM  4,2
          CFORM  7,2
          CFORM  10,2 
          CFORM  13,2 
          CFORM  16,2 
          CFORM  19,2 
          CFORM  22,2 
          CFORM  25,2 
          CFORM  28,2 
          CFORM  31,2 
          CFORM  34,2 
          CFORM  37,2 
          CFORM  40,2 
          CFORM  43,2 
          CFORM  46,2 
          CFORM  49,2 
          CFORM  52,2 
          CFORM  55,2 
          CFORM  58,2 
          CFORM  61,2 
          CFORM  64,2 
          CFORM  70+4,2 
          CFORM  70+7,2 
          CFORM  70+10,2
          CFORM  70+13,2
          CFORM  70+16,2
          CFORM  70+19,2
          CFORM  70+22,2
          CFORM  70+25,2
          CFORM  70+28,2
          CFORM  70+31,2
          CFORM  70+34,2
          CFORM  70+37,2
          CFORM  70+40,2
          CFORM  70+43,2
          CFORM  70+46,2
          CFORM  70+49,2
          CFORM  70+52,2
          CFORM  70+55,2
          CFORM  70+58,2
          CFORM  70+61,2
          CFORM  70+64,2
          CFORM  140+4,2
          CFORM  140+7,2
          CFORM  140+10,2 
          CFORM  140+13,2 
          CFORM  140+16,2 
          CFORM  140+19,2 
          CFORM  140+22,2 
          CFORM  140+25,2 
          CFORM  140+28,2 
          CFORM  140+31,2 
          CFORM  140+34,2 
          CFORM  140+37,2 
          CFORM  140+40,2 
          CFORM  140+43,2 
          CFORM  140+46,2 
          CFORM  140+49,2 
          CFORM  140+52,2 
          CFORM  140+55,2 
          CFORM  140+58,2 
          CFORM  140+61,2 
          CFORM  140+64,2 
  
 DSSB     BSS    0           VSN DISPLAY LINE DESCRIPTORS 
          CFORM  4,6
          CFORM  11,6 
          CFORM  18,6 
          CFORM  25,6 
          CFORM  32,6 
          CFORM  39,6 
          CFORM  46,6 
          CFORM  53,6 
          CFORM  60,6 
          CFORM  70+4,6 
          CFORM  70+11,6
          CFORM  70+18,6
          CFORM  70+25,6
          CFORM  70+32,6
          CFORM  70+39,6
          CFORM  70+46,6
          CFORM  70+53,6
          CFORM  70+60,6
 DUN      SPACE  4,15 
**        DUN - DETERMINE UTILITY NAME. 
* 
*         ENTRY  (KBUF) = ENTERED UTILITY MNEMONIC. 
* 
*         EXIT   (/COMSPFS/UTLC) = SELECTED UTILITY CODE. 
*                INITIAL *K* DISPLAY SET UP.
* 
*         USES   A - 4. 
*                B - 2, 3, 4. 
*                X - 4. 
* 
*         CALLS  ARM, KIP, SKD, USB.
* 
*         MACROS MOVE.
  
  
 DUN      SUBR               ENTRY/EXIT 
 DUN1     SB2    DUN2        SET RETURN ADDRESS 
          SB3    DUN2 
          EQ     KIP         GET OPERATOR INPUT 
  
 DUN2     SB2    KBUF        SET ENTERED PARAMETERS ADDRESS 
          RJ     USB         UNPACK ENTERED PARAMETERS
          SB3    IARG        SET ARGUMENT TABLE ADDRESS 
          SB6    USBB        SET STRING BUFFER ADDRESS
          RJ     ARM         PROCESS ENTERED ARGUMENTS
          NZ     X1,DUN3     IF ERROR IN ARGUMENT 
          SA1    /COMSPFS/UTLC
          ZR     X1,DUN3     IF NULL ENTRY
          RJ     SKD         SET INITIAL *K* DISPLAY
          MOVE   4,BLK,ERDS+1  CLEAR ERROR LINE 
          MOVE   5,BLK,INDS+1  CLEAR INPUT LINE 
          EQ     DUNX        RETURN 
  
 DUN3     MOVE   3,ERRG,ERDS+1  SET ERROR MESSAGE 
          EQ     DUN1        GET OPERATOR INPUT 
 IIF      SPACE  4,20 
**        IIF - INITIALIZE INPUT FILE.
* 
*         EXIT   (IPAF) = 0.
*                INPUT FILE FET INITIALIZED IF INPUT FILE SPECIFIED.
*                (INFF) .NE. 0 IF INPUT FILE SPECIFIED. 
*                INITIAL READ INITIATED IF NOT TERMINAL INPUT FILE. 
*                (TRIF) .NE. 0 IF TERMINAL INPUT FILE.
*                (ACSF) .NE. 0 IF TERMINAL INPUT FILE AND *ASCII* MODE. 
*                *ASCII* MODE CLEARED IF TERMINAL INPUT FILE. 
*                (ERFL) = ERROR MESSAGE ADDRESS IF INPUT FILE PARAMETER 
*                  NOT ALLOWED. 
* 
*         USES   X - 1, 2, 3, 6, 7. 
*                A - 1, 2, 3, 6, 7. 
* 
*         CALLS  STF. 
* 
*         MACROS CSET, READ, REQUEST, SETFS, TSTATUS. 
  
  
 IIF2     SX7    ERRG        SET PARAMETER ERROR
          SA7    ERFL 
  
 IIF      SUBR               ENTRY/EXIT 
          SA1    IPAF 
          SA3    EPIF 
          BX6    X6-X6
          SX7    B1 
          SA6    IPAF        DISALLOW *I* PARAMETER 
          ZR     X3,IIFX     IF NO INPUT FILE SPECIFIED 
          ZR     X1,IIF2     IF *I* PARAMETER NOT ALLOWED 
          SA7    INFF        SET INPUT FILE FLAG
          SX2    I           SET INPUT FILE FET ADDRESS 
          BX7    X3+X7
          SA7    X2 
          RJ     STF         CHECK FILE ASSIGNMENT
          NZ     X6,IIF1     IF NOT TERMINAL FILE 
          SX6    B1+         SET TERMINAL INPUT FLAG
          SA6    TRIF 
          REQUEST  T,U,N     ASSIGN TERMINAL OUTPUT FILE
          SETFS  T,SSST      SET SSJ= FILE STATUS 
          TSTATUS  IIFA      GET CHARACTER SET
          SA1    IIFA+B1
          SX6    B1 
          LX1    59-2 
          PL     X1,IIFX     IF NOT *ASCII* MODE
          SA7    ACSF        SET *ASCII* MODE 
          CSET   NORMAL      CLEAR *ASCII* MODE 
          EQ     IIFX        RETURN 
  
 IIF1     READ   I,R
          SA1    I+2         CHECK FOR EMPTY/MISPOSITIONED INPUT FILE 
          SA2    A1+B1
          BX6    X1-X2
          NZ     X6,IIFX     IF BUFFER NOT EMPTY
          SX7    ERRU        * PF UTILITY INPUT FILE EMPTY.*
          SA7    ERFL 
          EQ     IIFX        RETURN 
  
  
 IIFA     BSS    2           *TSTATUS* CALL BLOCK 
 OCK      SPACE  4,15 
**        OCK - OPTION CHECK. 
* 
*         ENTRY  (B7) = OPTION TABLE FWA. 
*                (B6) = LENGTH OF OPTION TABLE. 
*                (X2) = ENTERED OPTIONS LEFT JUSTIFIED. 
* 
*         EXIT   (X6) = CONVERTED PARAMETER WORD IF NO ERROR. 
*                (X6) = 0 IF ERROR. 
* 
*         USES   A - 1. 
*                B - 2, 3, 4. 
*                X - 1, 2, 3, 4, 6, 7.
  
  
 OCK3     SX6    B0+         SET ERROR IN ENTRY 
  
 OCK      SUBR               ENTRY/EXIT 
          SA1    /COMSPFS/UTLC
          SB4    59 
          SB3    X1+         SET UTILITY CODE SHIFT COUNT 
          SX6    B0          INITIALIZE CONVERTED OPTIONS 
          MX7    -6 
 OCK1     LX2    6
          BX3    -X7*X2      GET ENTERED OPTION 
          SB2    -1          INITIALIZE OPTION TABLE INDEX
          ZR     X3,OCKX     IF ALL ENTERED OPTIONS PROCESSED 
 OCK2     SB2    B2+B1       ADVANCE TABLE INDEX
          EQ     B2,B6,OCK3  IF OPTION NOT FOUND IN TABLE 
          SA1    B7+B2       GET TABLE ENTRY
          BX4    -X7*X1 
          BX4    X3-X4
          NZ     X4,OCK2     IF NO MATCH
          LX1    B3 
          PL     X1,OCK3     IF OPTION NOT VALID FOR UTILITY
          SB2    B4-B2
          SX1    1
          LX1    B2          SET OPTION FLAG
          BX6    X6+X1
          EQ     OCK1        CHECK NEXT CHARACTER 
 OCP      SPACE  4,10 
**        OCP - OPTION COMBINATION PROCESSOR. 
* 
*         ENTRY  (X6) = CONVERTED OPTION WORD.
* 
*         EXIT   (X6) = 0 IF CONFLICTS. 
*                (X6) = CONVERTED OPTION WORD IF NO CONFLICTS.
* 
*         USES   X - 2, 3, 6, 7.
*                A - 7. 
*                B - 5. 
  
  
 OCP      SUBR               ENTRY/EXIT 
          SX3    160001B     CHECK *CAMT* OPTION CONFLICT 
          LX3    59-15
          BX2    X3*X6
          CX2    X2 
          SB5    X2 
          LE     B5,B1,OCP2  IF NO CREATE,ACCESS,MODIFY CONFLICT
 OCP1     SX6    B0          SET ERROR
          EQ     OCPX        EXIT 
  
 OCP2     BX7    X2          SET DATE AND TIME FLAG 
          SA7    DTFL 
 OCP3     SX3    3           CHECK ACCESS CONFLICT
          LX3    56-1 
          BX2    X3*X6
          CX2    X2 
          SB5    X2 
          LE     B5,B1,OCP4  IF NO ACCESS CONFLICTS 
          EQ     OCP1        CONFLICT OF ACCESS 
  
 OCP4     SX3    3           CHECK OMIT AND EXTRACT 
          LX3    49-1 
          BX2    X3*X6
          CX2    X2 
          SB5    X2 
          LE     B5,B1,OCP5  IF NO CONFLICTS
          EQ     OCP1        SET ERROR
  
 OCP5     SX3    101B        CHECK PURGE AND SUPPRESS CONFLICT
          LX3    53-6 
          BX2    X3*X6
          CX2    X2 
          SB5    X2 
          LE     B5,B1,OCPX  IF NO CONFLICTS
          EQ     OCP1        ERROR
 PAD      SPACE  4,25 
**        PAD - PROCESS AFTER DATE AND TIME.
* 
*         ENTRY  (/COMSPFS/UTLC) = SELECTED UTILITY CODE. 
*                (DTFL) = DATE REQUIRED FLAG. 
*                BEFORE DATE AND TIME PROCESSING COMPLETED. 
* 
*         EXIT   (ERFL) = ERROR MESSAGE ADDRESS IF ERROR. 
*                VALID AFTER DATE AND TIME PARAMETERS POSTED IN 
*                  K-DISPLAY. 
*                VALID AFTER DATE AND TIME PARAMETERS OR THEIR
*                  CORRESPONDING DEFAULT VALUES (IF REQUIRED BUT NOT
*                  ENTERED) CONVERTED FROM DISPLAY CODE TO BINARY AND 
*                  POSTED IN THE CONVERTED PARAMETER TABLE. 
* 
*         USES   A - 1, 2, 4, 6, 7. 
*                B - 4. 
*                X - 0, 1, 2, 4, 5, 6, 7. 
* 
*         CALLS  VDE. 
* 
*         MACROS EDATE, ETIME.
  
  
 PAD      SUBR               ENTRY/EXIT 
  
*         PROCESS AFTER DATE. 
  
          SA1    EPAD 
          NZ     X1,PAD2     IF DATE ENTERED
          SA1    PARC+/COMSPFS/CPAD 
          NZ     X1,PAD6     IF DATE PREVIOUSLY ENTERED 
          SA1    EPAT 
          NZ     X1,PAD1     IF AFTER TIME ENTERED
          SA1    DTFL 
          ZR     X1,PAD6     IF DATE NOT REQUIRED 
          SA1    PARC+/COMSPFS/CPBD 
          NZ     X1,PADX     IF BEFORE DATE/TIME PRESENT
 PAD1     SA1    /COMSPFS/STDT  SET DEFAULT DATE
          MX6    -18
          SX7    B1 
          BX6    X6*X1
          SA7    DFAD        SET DEFAULTED AFTER DATE/TIME FLAG 
          EQ     PAD5        POST DEFAULT DATE IN CONVERTED TABLE 
  
 PAD2     SA2    /COMSPFS/UTLC  CHECK ENTRY VALIDITY
          SA4    TVUP+EPAD-ENTP 
          SB4    X2 
          LX0    B4,X4
          PL     X0,PAD3     IF NOT VALID ENTRY 
          SA4    EPAD        CHECK FOR RESET TO ZERO
          SA2    =1L0 
          BX6    X4-X2
          NZ     X6,PAD2.1   IF ZERO NOT SPECIFIED FOR AFTER DATE 
          SA6    PARC+/COMSPFS/CPAD  RESET AFTER DATE/TIME TO ZERO
          SA4    PBDA        POST ZEROES IN K-DISPLAY 
          BX6    X4 
          SA6    D.AD+1 
          SA6    D.AT+1 
          EQ     PADX        RETURN 
  
 PAD2.1   SX2    B0+         SET CONVERSION MODE FOR DATE 
          RJ     VDE         VALIDATE DATE
          PL     X6,PAD4     IF NO ERROR
 PAD3     SX6    ERRG        SET PARAMETER ERROR
          SA6    ERFL 
          EQ     PAD6        PROCESS TIME ENTRY 
  
 PAD4     BX7    X7-X7       CLEAR DEFAULTED AFTER DATE/TIME FLAG 
          SA7    DFAD 
          LX6    18          POSITION CONVERTED DATE
 PAD5     SA1    PARC+/COMSPFS/CPAD  COMBINE DATE WITH EXISTING TIME
          MX2    -18
          BX1    -X2*X1 
          BX6    X6+X1
          SA6    A1          POST IN CONVERTED PARAMETER TABLE
  
*         PROCESS AFTER TIME. 
  
 PAD6     SA1    EPAT 
          NZ     X1,PAD7     IF TIME ENTERED
          EQ     PAD10       CHECK K-DISPLAY POSTING REQUIREMENT
  
 PAD7     SA2    /COMSPFS/UTLC  CHECK ENTRY VALIDITY
          SA4    TVUP+EPAT-ENTP 
          SB4    X2 
          LX0    B4,X4
          PL     X0,PAD8     IF NOT VALID ENTRY 
          SA4    EPAT        CHECK FOR RESET TO ZERO
          SA2    =1L0 
          BX6    X4-X2
          NZ     X6,PAD7.1   IF ZERO NOT SPECIFIED FOR AFTER TIME 
          SA2    PBDA        POST ZEROES IN K-DISPLAY 
          BX7    X2 
          SA7    D.AT+1 
          EQ     PAD9        COMBINE TIME WITH EXISTING DATE
  
 PAD7.1   SX2    B1+         SET CONVERSION MODE FOR TIME 
          RJ     VDE         VALIDATE TIME
          PL     X6,PAD9     IF NO ERROR
 PAD8     SX6    ERRG        SET ERROR FLAG 
          SA6    ERFL 
          EQ     PADX        RETURN 
  
 PAD9     SA1    PARC+/COMSPFS/CPAD 
          NZ     X2,PAD9.1   IF RELATIVE TIME ENTRY 
          MX2    42 
          BX1    X2*X1
          BX6    X6+X1       MERGE ENTERED TIME WITH DATE 
 PAD9.1   BX7    X7-X7
          SA6    A1          POST IN CONVERTED PARAMETER TABLE
          SA7    DFAD        CLEAR DEFAULTED AFTER DATE/TIME FLAG 
 PAD10    SA4    PARC+/COMSPFS/CPAD 
          ZR     X4,PADX     IF NOTHING TO DISPLAY
          MX5    -18         SAVE TIME
          BX5    -X5*X4 
          AX4    18          DISPLAY DATE 
          EDATE  X4 
          SA6    D.AD+1 
          ETIME  X5          DISPLAY TIME 
          SA6    D.AT+1 
          EQ     PADX        RETURN 
 PBD      SPACE  4,30 
**        PBD - PROCESS BEFORE DATE AND TIME. 
* 
*         ENTRY  (/COMSPFS/UTLC) = SELECTED UTILITY CODE. 
*                (DTFL) = DATE REQUIRED FLAG. 
* 
*         EXIT   (ERFL) = ERROR MESSAGE ADDRESS IF ERROR. 
*                VALID BEFORE DATE AND TIME PARAMETERS POSTED IN
*                  K-DISPLAY. 
*                VALID BEFORE DATE AND TIME PARAMETERS OR THEIR 
*                  CORRESPONDING DEFAULT VALUES (IF REQUIRED BUT NOT
*                  ENTERED) CONVERTED FROM DISPLAY CODE TO BINARY AND 
*                  POSTED IN THE CONVERTED PARAMETER TABLE. 
* 
*         USES   A - 1, 2, 4, 6.
*                B - 4. 
*                X - 0, 1, 2, 4, 5, 6.
* 
*         CALLS  VDE. 
* 
*         MACROS EDATE, ETIME.
  
  
 PBD      SUBR               ENTRY/EXIT 
  
*         PROCESS BEFORE DATE.
  
          SA1    EPBD 
          NZ     X1,PBD1     IF DATE ENTERED
          SA1    PARC+/COMSPFS/CPBD 
          NZ     X1,PBD5     IF DATE PREVIOUSLY ENTERED 
          SA1    EPBT 
          ZR     X1,PBDX     IF BEFORE TIME NOT ENTERED 
          SA1    /COMSPFS/STDT  SET DEFAULT DATE
          MX6    -18
          BX6    X6*X1
          EQ     PBD4        POST IN CONVERTED PARAMETER TABLE
  
 PBD1     SA2    /COMSPFS/UTLC  CHECK ENTRY VALIDITY
          SA4    TVUP+EPBD-ENTP 
          SB4    X2 
          LX0    B4,X4
          PL     X0,PBD2     IF NOT VALID ENTRY 
          SA4    EPBD        CHECK FOR RESET TO ZERO
          SA2    =1L0 
          BX6    X4-X2
          NZ     X6,PBD1.1   IF ZERO NOT SPECIFIED FOR BEFORE DATE
          SA6    PARC+/COMSPFS/CPBD  RESET BEFORE DATE/TIME TO ZERO 
          SA4    PBDA        POST ZEROES IN K-DISPLAY 
          BX6    X4 
          SA6    D.BD+1 
          SA6    D.BT+1 
          EQ     PBDX        RETURN 
  
 PBD1.1   SX2    B0+         SET CONVERSION MODE FOR DATE 
          RJ     VDE         VALIDATE DATE
          PL     X6,PBD3     IF NO ERROR
 PBD2     SX6    ERRG        SET PARAMETER ERROR
          SA6    ERFL 
          EQ     PBD5        PROCESS TIME ENTRY 
  
 PBD3     LX6    18          POSITION CONVERTED DATE
 PBD4     SA1    PARC+/COMSPFS/CPBD  COMBINE DATE WITH EXISTING TIME
          MX2    -18
          BX1    -X2*X1 
          BX6    X6+X1
          SA6    A1          POST IN CONVERTED PARAMETER TABLE
  
*         PROCESS BEFORE TIME.
  
 PBD5     SA1    EPBT 
          NZ     X1,PBD6     IF TIME ENTERED
          EQ     PBD9        CHECK K-DISPLAY POSTING REQUIREMENT
  
 PBD6     SA2    /COMSPFS/UTLC  CHECK ENTRY VALIDITY
          SA4    TVUP+EPBT-ENTP 
          SB4    X2 
          LX0    B4,X4
          PL     X0,PBD7     IF NOT VALID ENTRY 
          SA4    EPBT        CHECK FOR RESET TO ZERO
          SA2    =1L0 
          BX6    X4-X2
          NZ     X6,PBD6.1   IF ZERO NOT SPECIFIED FOR BEFORE TIME
          SA2    PBDA        POST ZEROES IN K-DISPLAY 
          BX7    X2 
          SA7    D.BT+1 
          EQ     PBD8        COMBINE TIME WITH EXISTING DATE
  
 PBD6.1   SX2    B1+         SET CONVERSION MODE FOR TIME 
          RJ     VDE         VALIDATE TIME
          PL     X6,PBD8     IF NO ERROR
 PBD7     SX6    ERRG        SET ERROR FLAG 
          SA6    ERFL 
          EQ     PBDX        RETURN 
  
 PBD8     SA1    PARC+/COMSPFS/CPBD 
          NZ     X2,PBD8.1   IF RELATIVE TIME ENTRY 
          MX2    42 
          BX1    X2*X1
          BX6    X6+X1       MERGE ENTERED TIME WITH DATE 
 PBD8.1   SA6    PARC+/COMSPFS/CPBD  POST IN CONVERTED PARAMETER TABLE
 PBD9     SA4    PARC+/COMSPFS/CPBD 
          ZR     X4,PBDX     IF NOTHING TO DISPLAY
          MX5    -18         SAVE TIME
          BX5    -X5*X4 
          AX4    18          DISPLAY DATE 
          EDATE  X4 
          SA6    D.BD+1 
          ETIME  X5          DISPLAY TIME 
          SA6    D.BT+1 
          SA1    DFAD 
          ZR     X1,PBDX     IF AFTER DATE/TIME NOT DEFAULTED 
          BX6    X6-X6
          SA6    PARC+/COMSPFS/CPAD  CLEAR AFTER DATE CONVERTED ENTRY 
          SA6    DFAD        CLEAR DEFAULTED AFTER DATE/TIME FLAG 
          SA1    PBDA 
          BX6    X1 
          SA6    D.AD+1      RESET K-DISPLAY AFTER DATE 
          SA6    D.AT+1      RESET K-DISPLAY AFTER TIME 
          EQ     PBDX        RETURN 
  
 PBDA     DATA   H*0*        K-DISPLAY RESET CONSTANT 
 PCS      SPACE  4,20 
**        PCS - PROCESS CHARGE AND PROJECT NUMBER SELECTIONS. 
* 
*         ENTRY  (/COMSPFS/UTLC) = SELECTED UTILITY CODE. 
*                (EPCN) = ENTERED CHARGE NUMBER SELECTION.
*                (EPSPN) = ENTERED PROJECT NUMBER SELECTION.
*                (EPCCN) = ENTERED CHARGE NUMBER DELETION.
*                (EPCPN) = ENTERED PROJECT NUMBER DELETION. 
* 
*         EXIT   CHARGE AND PROJECT NUMBER SELECTIONS UPDATED IF NO 
*                  ERROR. 
*                CHARGE AND PROJECT NUMBER SELECTIONS DISPLAY UPDATED 
*                  IF NO ERROR. 
*                (ERFL) = ERROR MESSAGE ADDRESS IF ERROR. 
* 
*         USES   X - 1, 2, 3, 6, 7. 
*                A - 1, 2, 3, 6, 7. 
*                B - 2, 3, 4, 5, 6. 
* 
*         CALLS  ACS, APS, DCS, RCS, RPS. 
  
  
*         SAVE SELECTIONS TABLE POINTERS AND UPDATE K DISPLAY.
  
 PCS5     SX6    B4 
          SX7    B5 
          SA6    PCSA        SAVE ASSUMED CHARGE NUMBER ADDRESS 
          SA7    PCSB        SAVE END OF ENTRIES ADDRESS
          RJ     DCS         DISPLAY CHARGE AND PROJECT SELECTIONS
  
 PCS      SUBR               ENTRY/EXIT 
  
*         SET SELECTIONS TABLE POINTERS.
  
          SA1    PCSA 
          SA2    PCSB 
          SB2    /COMSPFS/TCNS   SET FWA OF SELETIONS 
          SB3    /COMSPFS/TCNS+/COMSPFS/TCNSL  SET LWA+1 OF SELECTIONS
          SB4    X1          SET ASSUMED CHARGE NUMBER ADDRESS
          SB5    X2          SET END OF ENTRIES ADDRESS 
  
*         PROCESS CHARGE NUMBER ENTRY.
  
          SA1    EPCN 
          SA2    /COMSPFS/UTLC
          SA3    TVUP+EPCN-ENTP 
          SX7    ERRG        * ENTERED PARAMETER NOT VALID.*
          ZR     X1,PCS1     IF NO CHARGE NUMBER SELECTION
          SB6    X2 
          LX3    B6 
          PL     X3,PCS4     IF *CN* PARAMETER NOT VALID FOR UTILITY
          RJ     ACS         ADD CHARGE NUMBER SELECTION
          SX7    ERRS        * CN, SPN ENTRIES AT MAXIMUM.* 
          NZ     X6,PCS4     IF NO ROOM FOR ENTRY 
  
*         PROCESS PROJECT NUMBER ENTRY. 
  
 PCS1     SA1    EPSPN
          SA2    /COMSPFS/UTLC
          SA3    TVUP+EPSPN-ENTP
          SX7    ERRG        * ENTERED PARAMETER NOT VALID.*
          ZR     X1,PCS2     IF NO PROJECT NUMBER SELECTION 
          SB6    X2 
          LX3    B6 
          PL     X3,PCS4     IF *SPN* PARAMETER NOT VALID FOR UTILITY 
          SX7    ERRW        * SPN SPECIFIED BUT NOT CN.* 
          ZR     B4,PCS4     IF NO SELECTION CHARGE NUMBER
          SA2    A1+1 
          RJ     APS         ADD PROJECT NUMBER SELECTION 
          SX7    ERRS        * CN, SPN ENTRIES AT MAXIMUM.* 
          NZ     X6,PCS4     IF PROJECT ENTRY NOT MADE
  
*         PROCESS CHARGE NUMBER DELETION. 
  
 PCS2     SA1    EPCCN
          SA2    /COMSPFS/UTLC
          SA3    TVUP+EPCCN-ENTP
          SX7    ERRG        * ENTERED PARAMETER NOT VALID.*
          ZR     X1,PCS3     IF NO CHARGE NUMBER DELETION 
          SB6    X2 
          LX3    B6 
          PL     X3,PCS4     IF *CCN* PARAMETER NOT VALID FOR UTILITY 
          RJ     RCS         REMOVE CHARGE NUMBER SELECTION 
  
*         PROCESS PROJECT NUMBER DELETION.
  
 PCS3     SA1    EPCPN
          SA2    /COMSPFS/UTLC
          SA3    TVUP+EPCPN-ENTP
          SX7    ERRG        * ENTERED PARAMETER NOT VALID.*
          ZR     X1,PCS5     IF NO PROJECT NUMBER DELETION
          SB6    X2 
          LX3    B6 
          PL     X3,PCS4     IF *CPN* PARAMETER NOT VALID FOR UTILITY 
          ZR     B4,PCS5     IF NO CHARGE NUMBER IN EFFECT
          SA2    A1+B1
          RJ     RPS         REMOVE PROJECT NUMBER SELECTION
          EQ     PCS5        SAVE TABLE POINTERS
  
*         SET ERROR FLAG. 
  
 PCS4     SA7    ERFL        SET ERROR FLAG 
          EQ     PCS5        SAVE TABLE POINTERS
  
  
 PCSA     CON    0           ASSUMED CHARGE NUMBER ADDRESS
 PCSB     CON    /COMSPFS/TCNS+3  END OF ENTRIES ADDRESS
 PDP      SPACE  4,30 
**        PDP - PROCESS DECIMAL PARAMETERS. 
* 
*         ENTRY  (/COMSPFS/UTLC) = SELECTED UTILITY CODE. 
*                EDEC = FIRST ENTERED DECIMAL PARAMETER.
*                CPDM = FIRST CONVERTED DECIMAL PARAMETER.
*                NDEC = NUMBER OF DECIMAL PARAMETERS. 
* 
*         EXIT   (ERFL) = ERROR MESSAGE ADDRESS IF ERROR. 
*                VALID DECIMAL PARAMETERS POSTED IN THE K-DISPLAY.
*                VALID DECIMAL PARAMETERS CONVERTED FROM DISPLAY CODE 
*                TO BINARY AND POSTED IN THEIR CORRESPONDING
*                CONVERTED PARAMETER TABLE LOCATIONS. 
* 
*         USES   A - 0, 1, 5, 6.
*                B - 2, 3, 4, 6, 7. 
*                X - 1, 4, 5, 6.
* 
*         CALLS  DXB, RPT, SPT. 
  
  
 PDP      SUBR               ENTRY/EXIT 
          SA1    /COMSPFS/UTLC
          SB2    EDEC        SET FWA OF ENTERED DECIMAL PARAMETERS
          SB4    PARC+CPDM   SET FWA OF CONVERTED DECIMAL PARAMETERS
          SB3    NDEC        SET NUMBER OF DECIMAL PARAMETERS 
          SB7    1           SET CONVERSION MODE TO DECIMAL FOR *DXB* 
          SB6    X1+         SET UTILITY CODE SHIFT COUNT 
 PDP1     SA1    B2+TVUP-ENTP 
          SA5    B2+
          SA0    X1          SET DISPLAY ADDRESS
          LX1    B6 
          ZR     X5,PDP4     IF PARAMETER NOT ENTERED 
          PL     X1,PDP2     IF PARAMETER NOT VALID FOR UTILITY 
          SX6    1R*
          LX6    -6 
          BX6    X6-X5
          NZ     X6,PDP1.1   IF NOT SET UNLIMITED 
          MX6    1           SET UNLIMITED VALUE
          BX6    -X6
          SA1    PDPA        GET DISPLAY VALUE
          EQ     PDP3        PROCESS NEXT PARAMETER 
  
 PDP1.1   RJ     SPT         SAVE POINTERS
          RJ     DXB         CONVERT DISPLAY CODE TO BINARY 
          RJ     RPT         RESTORE POINTERS 
          SA1    B2+         GET ENTERED VALUE FOR DISPLAY
          ZR     X4,PDP3     IF NO ERROR
 PDP2     SX6    ERRG        SET ERROR FLAG 
          SA6    ERFL 
          EQ     PDP4        CONTINUE WITH NEXT PARAMETER 
  
 PDP3     SA6    B4          SET CONVERTED PARAMETER
          BX6    X1          SET DISPLAY VALUE
          SA6    A0+1 
 PDP4     SB2    B2+B1       INCREMENT POINTERS 
          SB3    B3-B1
          SB4    B4+1 
          NZ     B3,PDP1     IF MORE DECIMAL PARAMETERS 
          EQ     PDPX        RETURN 
  
  
 PDPA     DATA   H*NO LIMIT  *
 PFD      SPACE  4,15 
**        PFD - PROCESS FILE SELECTION DELETIONS. 
* 
*         ENTRY  (EPCUI) = USER INDEX TO CLEAR. 
*                (EPCPF) = PERMANENT FILE NAME TO CLEAR.
* 
*         EXIT   SPECIFIED FILE SELECTIONS REMOVED FROM SELECTION 
*                  BUFFER.
* 
*         USES   X - 0, 1, 2, 3, 6, 7.
*                A - 1, 2, 3, 5, 6, 7.
*                B - 2, 7.
* 
*         CALLS  DFS, DXB.
  
  
  
 PFD9     SX6    ERRG        * ENTERED PARAMETER NOT VALID.*
          SA6    ERFL 
  
 PFD      SUBR               ENTRY/EXIT 
          SA5    EPCUI
          ZR     X5,PFD3     IF NO CLEAR USER INDEX ENTERED 
          SB7    B0+         SET OCTAL CONVERSION 
          RJ     DXB         CONVERT USER INDEX 
          NZ     X4,PFD9     IF ERROR IN CONVERSION 
          BX1    X6 
          AX6    17 
          NZ     X6,PFD9     IF USER INDEX TOO LARGE
          SA2    PARC+/COMSPFS/CPUI 
          BX6    X1-X2
          LX1    -18
          NZ     X6,PFD1     IF NOT CLEARING CURRENT USER INDEX 
          SA3    =1L0 
          SA6    A2+         CLEAR CURRENT USER INDEX 
          BX7    X3          SET DISPLAY VALUE
          SA7    D.UI+1 
 PFD1     MX0    18 
          SB2    B0          INITIALIZE SELECTIONS FOUND
          SA2    SBUF-1 
 PFD2     SA2    A2+1        READ NEXT SELECTION
          ZR     X2,PFD6     IF END OF SELECTIONS 
          BX6    X0*X2
          IX6    X6-X1
          NG     X6,PFD2     IF BELOW USER INDEX
          NZ     X6,PFD6     IF PAST USER INDEX 
          SB2    B2+1        COUNT SELECTION FOUND
          EQ     PFD2        CHECK NEXT SELECTION 
  
*         PROCESS FILE NAME DELETIONS.
  
 PFD3     SA1    EPCPF
          SA2    PARC+/COMSPFS/CPUI 
          ZR     X1,PFDX     IF NO CLEAR FILE NAME ENTERED
          ZR     X2,PFDX     IF NO USER INDEX IN EFFECT 
          BX1    X1+X2       MERGE USER INDEX AND FILE NAME 
          LX1    -18
          SA2    SBUF-1 
          SX7    1           SET NO PREVIOUS FILE SELECTION 
          MX0    18 
 PFD4     SA2    A2+B1
          ZR     X2,PFDX     IF END OF SELECTIONS 
          BX3    X7          SET PREVIOUS FILE SELECTION FLAG 
          BX2    X2-X1
          BX7    X0*X2
          NZ     X2,PFD4     IF NO MATCH ON FILE SELECTION
          ZR     X3,PFD5     IF PREVIOUS FILE SELECTION FOR USER INDEX
          SA3    A2+B1       CHECK NEXT SELECTION 
          BX3    X1-X3
          BX3    X0*X3
          ZR     X3,PFD5     IF SAME USER INDEX 
          BX6    X0*X1       SET MATCH-ALL SELECTION FOR USER INDEX 
          SA6    A2 
          EQ     PFD8        UPDATE SELECTIONS DISPLAY
  
 PFD5     SA2    A2+B1       SET FIRST WORD TO MOVE 
          SB2    B1+         SET NUMBER OF SELECTIONS TO CLEAR
  
*         UPDATE SELECTION COUNT. 
  
 PFD6     ZR     B2,PFDX     IF NO SELECTIONS FOUND 
          SA1    /COMSPFS/NFIS
          SB3    X1 
          SX6    B3-B2
          SA6    A1+
  
*         DELETE SELECTIONS FROM BUFFER.
  
 PFD7     BX6    X2 
          SA6    A2-B2
          SA2    A2+1 
          NZ     X6,PFD7     IF ALL ENTRIES NOT MOVED 
 PFD8     RJ     DFS         DISPLAY FILE SELECTIONS
          EQ     PFDX        RETURN 
 PFP      SPACE  4,20 
**        PFP - PROCESS FAMILY, PACK AND USER NAME. 
* 
*         EXIT   (X6) = 0, IF NO ERROR. 
*                (X6) .NE. 0, IF ERROR. 
*                (PFPD) = 0 IF NO ERROR.
*                (PFPD) .NE. 0, IF ERROR. 
*                (ERFL) = ERROR MESSAGE ADDRESS IF ERROR. 
*                (PARC+/COMSPFS/CPFM) = 42/FAMILY,6/,12/EST ORDINAL.
*                (PARC+/COMSPFS/CPPN) = 42/PACKNAM,6/,12/EST ORDINAL. 
*                (PARC+/COMSPFS/CPUI) = CONVERTED USER NAME IF NOT
*                  PRIVATE PACK.
* 
*         USES   A - 1, 2, 3, 4, 5, 6, 7. 
*                B - 2, 3.
*                X - ALL. 
* 
*         CALLS  RSB=.
* 
*         MACROS READCM, SYSTEM.
  
  
 PFP14    SA6    PFPD        FORCE REVALIDATION 
 PFP15    SA6    ERFL        SET ERROR FLAG 
  
 PFP      SUBR               ENTRY/EXIT 
          SA1    EPFM 
          SA2    EPPN 
          SA3    EPUN 
          SA4    PFPD 
          IX1    X1+X2
          IX3    X3+X4
          IX1    X1+X3
          ZR     X1,PFP12    IF NO NEED TO VALIDATE FM, PN, UN
          BX6    X6-X6
          SA6    PFPA        CLEAR PACK FLAG
          SA6    A6+B1       CLEAR DEFAULT FAMILY FLAG
          SA5    PARC+/COMSPFS/CPUN  READ USER NAME 
          SA1    PARC+/COMSPFS/CPFN 
          SA2    PARC+/COMSPFS/CPPN 
          ZR     X2,PFP1     IF NO PACK NAME
          SX6    ERRA        * BOTH FM AND PN SPECIFIED.* 
          NZ     X1,PFP14    IF BOTH *FM* AND *PN* SPECIFIED
          BX1    X2          PROCESS PACK NAME
          SX6    B1          SET PACK FLAG
          SA6    PFPA 
          EQ     PFP2        READ EST 
  
*         PROCESS DEFAULT FAMILY CALL.
  
 PFP1     NZ     X1,PFP2     IF FAMILY SPECIFIED
          READCM B1,PFNL,PARC+/COMSPFS/CPFN 
          MX0    -9 
          AX1    12 
          BX1    -X0*X1      DEFAULT FAMILY EST ORDINAL 
          SX6    4000B       SET DEFAULT FAMILY FLAG
          BX6    X6+X1
          SA6    PFPB 
          SX1    B0+         CLEAR NAME 
  
*         READ EST. 
  
 PFP2     MX0    42          SET FAMILY/PACK NAME 
          BX0    X0*X1
          READCM B1,ESTP,ESTBUF  READ EST POINTER 
          MX3    -12
          BX2    X1          SET *COMCRSB* ENTRY CONDITIONS 
          AX2    12 
          BX3    -X3*X2 
          SX1    ESTBUF      SET ADDRESS TO TRANSFER TO 
          AX2    24          SET ADDRESS TO TRANSFER FROM 
          R=     X6,ESTE
          SB3    X3          SET LAST EST ORDINAL + 1 
          IX3    X3*X6       SET WORD COUNT 
          SX4    B0          SET SUBSYSTEM (= *CMR*)
          MX6    1
          SA6    X1 
          RJ     RSB=        READ EST 
          SB2    NOPE        INITIALIZE EST ORDINAL FOR SEARCH
          SA1    PFPB 
          NZ     X1,PFP7     IF DEFAULT FAMILY FLAG SET 
  
*         SEARCH FOR FAMILY/PACK. 
  
 PFP3     SX1    B2 
          R=     X2,ESTE
          IX6    X1*X2
          SA1    ESTBUF+X6+EQDE  READ EST ENTRY 
          SB2    B2+B1
          ZR     X1,PFP4     IF EMPTY ENTRY 
          NG     X1,PFP5     IF MASS STORAGE EQUIPMENT
 PFP4     GT     B3,B2,PFP3  IF MORE ENTRIES
          SX6    ERRB        * FAMILY/PACK NOT FOUND.*
          EQ     PFP14       ERROR EXIT 
  
 PFP5     MX2    -12
          BX2    -X2*X1      MST ADDRESS
          LX2    3
          READCM MSTL,X2,MSTBUF  READ MST 
          SA1    MSTBUF+PFGL CHECK FAMILY/PACK NAME 
          MX2    42 
          BX1    X2*X1
          BX1    X1-X0
          NZ     X1,PFP4     IF NO MATCH ON FAMILY/PACK 
          SA1    PFPA 
          ZR     X1,PFP8     IF NOT PACK
          SA1    MSTBUF+PUGL CHECK USER NAME
          BX1    X2*X1
          ZR     X1,PFP6     IF PACK NOT PRIVATE
          BX2    X1-X5
          NZ     X2,PFP4     IF NO MATCH ON USER NAME 
 PFP6     SX6    B2-B1       EST ORDINAL
          BX6    X6+X0       SET PACK DEFAULT WORD
          SA6    PARC+/COMSPFS/CPPN 
          NZ     X1,PFP12    IF PRIVATE PACK
          SX0    B0          CLEAR PACK NAME
          EQ     PFP9        VALIDATE USER NAME 
  
*         READ DEFAULT FAMILY NAME. 
  
 PFP7     MX0    -9 
          BX2    -X0*X1      DEFAULT FAMILY EST ORDINAL 
          SB2    X2 
          R=     X0,ESTE
          IX6    X2*X0
          SA2    ESTBUF+X6+EQDE  READ EST ENTRY 
          MX0    -12
          BX2    -X0*X2 
          LX2    3           MST ADDRESS
          READCM MSTL,X2,MSTBUF  GET DEFAULT FAMILY NAME
          SA1    MSTBUF+PFGL
          MX2    42 
          BX0    X2*X1
          SB2    B2+B1
 PFP8     SX6    B2-B1       SET FAMILY DEFAULT WORD
          BX6    X6+X0
          SA6    PARC+/COMSPFS/CPFN 
 PFP9     ZR     X5,PFP12    IF NO USER NAME
  
*         VALIDATE USER NAME. 
  
          BX6    X0          FAMILY/PACK NAME 
          SA6    PFPC 
          SX7    B1          SET TO NOT CHECK PASSWORD
          SA7    A6+B1
          BX7    X5+X7       SET TO ALLOW USER INDEX ABOVE *AUIMX*
          SA7    A7+B1
          SYSTEM CPM,R,PFPC,5600B  VALIDATE USER NAME 
          SA1    PFPC+2 
          MX0    -18
          BX1    -X0*X1 
          BX6    X1 
          NZ     X1,PFP10    IF VALID USER NAME 
          SX6    ERRC        * USER NAME INCORRECT.*
          EQ     PFP14       ERROR EXIT 
  
 PFP10    SA6    PARC+/COMSPFS/CPUI  SET USER INDEX 
          RJ     COD         CONVERT USER INDEX 
          BX6    X4 
          SA6    D.UI+1 
 PFP11    SX6    B0+         SET NO ERROR 
          SA6    PFPD        SET PARAMETERS VALIDATED 
          EQ     PFPX        RETURN 
  
 PFP12    SA1    EPUI 
          ZR     X1,PFP13    IF USER INDEX NOT ENTERED
          SA1    =1L0        CLEAR USER NAME
          BX6    X6-X6
          BX7    X1 
          SA6    PARC+/COMSPFS/CPUN 
          SA7    D.UN+1 
 PFP13    SA1    PARC+/COMSPFS/CPUI 
          SX6    ERRN        * USER INDEX OUT OF RANGE.*
          AX1    17 
          NZ     X1,PFP15    IF USER INDEX TOO LARGE
          EQ     PFP11       RETURN WITH NO ERROR 
  
  
 PFPA     CON    0           PACK FLAG
 PFPB     CON    0           DEFAULT FAMILY FLAG
 PFPC     BSSZ   13          *CPM* FUNCTION PARAMETER BLOCK 
 PFPD     CON    1           CURRENT FM, PN, UN NOT VALIDATED FLAG
 ESTBUF   BSS    ESMX*ESTE   EST BUFFER 
 MSTBUF   BSS    MSTL        MST BUFFER 
 PLO      SPACE  4,15 
**        PLO - PROCESS LIST OPTIONS. 
* 
*         ENTRY  (EPLO) = ENTERED LIST OPTIONS. 
* 
*          EXIT  (PARC+/COMSPFS/CPLO) = CONVERTED LIST OPTIONS IF NO
*                  ERROR. 
*                 K-DISPLAY UPDATED WITH ENTERED LIST OPTIONS IF NO 
*                  ERROR. 
*                (ERFL) = ERROR MESSAGE ADDRESS IF ERROR. 
* 
*         USES   X - 1, 2, 6. 
*                A - 1, 2, 6. 
*                B - 6, 7.
* 
*         CALLS  OCK. 
  
  
 PLO      SUBR               ENTRY/EXIT 
          SA2    EPLO 
          ZR     X2,PLOX     IF NO LIST OPTION ENTERED
          SA1    =1L0        CHECK FOR RESET TO ZERO
          BX6    X2-X1
          ZR     X6,PLO1     IF ZERO SPECIFIED FOR OPTION 
          SB6    /COMSPFS/MXLO  SET NUMBER OF LIST OPTIONS
          SB7    TVLO        SET LIST OPTION TABLE ADDRESS
          RJ     OCK         PERFORM OPTION CRACKING
          NZ     X6,PLO1     IF NO ERROR
          SX6    ERRG        SET ERROR FLAG 
          SA6    ERFL 
          EQ     PLOX        RETURN 
  
 PLO1     SA6    PARC+/COMSPFS/CPLO 
          SA2    EPLO        POST ENTERED LIST OPTION IN K-DISPLAY
          BX6    X2 
          SA6    D.LO+1 
          EQ     PLOX        RETURN 
 PNE      SPACE  4,30 
**        PNE - PROCESS NON-EQUIVALENCED PARAMETERS.
* 
*         ENTRY  (/COMSPFS/UTLC) = SELECTED UTILITY CODE. 
*                ENEQ = FIRST ENTERED NON-EQUIVALENCED PARAMETER. 
*                CPNE = FIRST CONVERTED NON-EQUIVALENCED PARAMETER. 
*                SETT = FWA OF NON-EQUIVALENCED PARAMETER VALUE TABLE.
*                NNEQ = NUMBER OF NON-EQUIVALENCED PARAMETERS.
* 
*         EXIT   (ERFL) = ERROR MESSAGE ADDRESS IF ERROR. 
*                SETTINGS FOR THE VALID NON-EQUIVALENCED PARAMETERS 
*                  POSTED IN THE K-DISPLAY. 
*                SETTING MADE IN THE CONVERTED PARAMETER TABLE FOR EACH 
*                  VALID NON-EQUIVALENCED PARAMETER SPECIFIED.
* 
*         USES   A - 0, 1, 2, 6.
*                B - 2, 3, 4, 6.
*                X - 1, 2, 6. 
  
  
 PNE      SUBR               ENTRY/EXIT 
          SA1    /COMSPFS/UTLC
          SB2    ENEQ        SET FWA OF ENTERED PARAMETERS
          SB3    NNEQ        SET NUMBER OF PARAMETERS 
          SB4    PARC+CPNE   SET FWA OF CONVERTED PARAMETERS
          SB6    B0+         INITIALIZE VALUE TABLE POINTER 
          SB5    X1+         SET UTILITY CODE SHIFT COUNT 
 PNE1     SA2    B2+TVUP-ENTP 
          SA1    B2+
          SA0    X2          SET DISPLAY ADDRESS
          LX2    B5 
          ZR     X1,PNE3     IF NOT ENTERED 
          NG     X2,PNE2     IF PARAMETER VALID FOR UTILITY 
          SX6    ERRG        SET ERROR FLAG 
          SA6    ERFL 
          EQ     PNE3        CONTINUE WITH NEXT PARAMETER 
  
 PNE2     SA1    SETT+B6     MAKE CONVERTED PARAMETER TABLE SETTING 
          SX6    1
          SA6    B4+         SET PARAMETER SPECIFIED
          BX6    X1 
          SA6    A0          SET TEXT IN DISPLAY
 PNE3     SB2    B2+B1       INCREMENT POINTERS 
          SB3    B3-B1
          SB4    B4+B1
          SB6    B6+B1
          NZ     B3,PNE1     IF MORE PARAMETERS TO PROCESS
          EQ     PNEX        RETURN 
 PNP      SPACE  4,30 
**        PNP - PROCESS NAME PARAMETERS.
* 
*         ENTRY  (/COMSPFS/UTLC) = SELECTED UTILITY CODE. 
*                ENAM = FIRST ENTERED NAME PARAMETER. 
*                CPNM = FIRST CONVERTED NAME PARAMETER. 
*                NNAM = NUMBER OF NAME PARAMETERS.
*                LEFT-MOST BIT OF VALIDATION MASK CORRESPONDS TO FIRST
*                  NAME PARAMETER.
* 
*         EXIT   (ERFL) = ERROR MESSAGE ADDRESS IF ERROR. 
*                VALID NAME PARAMETERS POSTED IN THE K-DISPLAY. 
*                VALID NAME PARAMETER VALUES POSTED IN THE CONVERTED
*                  PARAMETER TABLE. 
* 
*         USES   A - 0, 1, 2, 6, 7. 
*                B - 2, 3, 4, 5.
*                X - 1, 2, 6, 7.
  
  
 PNP      SUBR               ENTRY/EXIT 
          SA1    /COMSPFS/UTLC
          SB2    ENAM        SET FWA OF ENTERED NAME PARAMETERS 
          SB3    NNAM        SET NUMBER OF NAME PARAMETERS
          SB4    PARC+CPNM   SET FWA OF CONVERTED NAME PARAMETERS 
          SB5    X1+         SET UTILITY CODE SHIFT COUNT 
 PNP1     SA1    B2+TVUP-ENTP 
          SA2    B2 
          MX7    -18
          SX6    ERRG 
          SA0    X1+         SET DISPLAY ADDRESS
          LX1    B5 
          BX7    -X7*X2 
          ZR     X2,PNP5     IF NAME NOT ENTERED
          PL     X1,PNP2     IF PARAMETER NOT VALID FOR UTILITY 
          ZR     X7,PNP3     IF .LE. 7 CHARACTERS 
 PNP2     SA6    ERFL        SET ERROR FLAG 
          EQ     PNP5        CONTINUE WITH NEXT NAME
  
 PNP3     BX7    X2          POST IN CONVERTED PARAMETER TABLE
          SA7    B4 
          SA1    =1L0        CHECK FOR RESET TO ZERO
          BX6    X2-X1
          NZ     X6,PNP4     IF ZERO NOT SPECIFIED FOR NAME 
          SX2    B2-EPZR
          PL     X2,PNP4     IF DISPLAY CODE ZERO TO BE ACCEPTED
          SA6    B4          CLEAR NAME PARAMETER VALUE 
 PNP4     SA7    A0+1        SET IN K-DISPLAY 
 PNP5     SB2    B2+B1       INCREMENT POINTERS 
          SB3    B3-B1
          SB4    B4+1 
          NZ     B3,PNP1     IF MORE NAMES TO PROCESS 
          EQ     PNPX        RETURN 
 PPC      SPACE  4,15 
**        PPC - PROCESS PARAMETER CONFLICTS.
* 
*         EXIT   (X3) = 0 IF NO ERROR.
*                (X3) .NE. 0 IF ERROR.
*                (A3) = ADDRESS OF MESSAGE IF ERROR.
* 
*         USES   X - 1, 2, 3, 6.
*                A - 1, 2, 3, 6.
* 
*         CALLS  CFC, SFN.
  
  
 PPC      SUBR               ENTRY/EXIT 
          SA1    PARC+/COMSPFS/CPLS 
          SA2    PARC+/COMSPFS/CPUS 
          IX1    X2-X1
          PL     X1,PPC1     IF UPPER SIZE LIMIT .GE. LOWER SIZE LIMIT
          SA3    ERRQ        * LS VALUE LARGER THAN US.*
          EQ     PPCX        RETURN 
  
 PPC1     SA2    /COMSPFS/NFIS
          SA3    PARC+/COMSPFS/CPRD 
          ZR     X3,PPC2     IF *RD* NOT SPECIFIED
          ZR     X2,PPC2     IF NO USER INDEX /FILE NAME SELECTIONS 
          SA3    ERRE        * RD AND UI/UN NOT ALLOWED.* 
          EQ     PPCX        ERROR EXIT 
  
 PPC2     RJ     CFC         CHECK FILE NAME CONFLICTS
          ZR     X1,PPC3     IF NO CONFLICT 
          RJ     SFN
          LX6    -6 
          SA6    ERRF+2 
          SA3    ERRF        * FILENAME CONFLICT - (FILENAME)*
          EQ     PPCX        RETURN 
  
 PPC3     SA2    PARC+/COMSPFS/CPDT 
          ZR     X2,PPC4     IF *DT* NOT SPECIFIED
          SA1    PARC+/COMSPFS/CPOP 
          SA3    ERRO        * DT AND OP=P CONFLICT.* 
          LX1    59-53
          NG     X1,PPCX     IF DT AND OP=P CONFLICT
          LX1    59-46-59+53
          SA3    ERRP        * DT AND OP=Z CONFLICT.* 
          NG     X1,PPCX     IF DT AND OP=Z CONFLICT
          SA3    ERRV        * DT AND PN CONFLICT.* 
          SA1    PARC+/COMSPFS/CPPN 
          NZ     X1,PPCX     IF DT AND PN CONFLICT
 PPC4     SA1    PARC+/COMSPFS/CPTD 
          ZR     X1,PPC5     IF *TD* NOT SPECIFIED
          SA1    PARC+/COMSPFS/CPDN 
          SA3    ERRY        * TD AND DN CONFLICT.* 
          NZ     X1,PPCX     IF *DN* SPECIFIED
          SA1    PARC+/COMSPFS/CPDA 
          SA2    A1+B1
          SA3    ERRZ        * TD AND DA CONFLICT.* 
          BX1    X1+X2
          NZ     X1,PPCX     IF *DA* SPECIFIED
 PPC5     SX3    B0+         SET NO ERROR 
          EQ     PPCX        RETURN 
 PPF      SPACE  4,25 
**        PPF - PROCESS PERMANENT FILE NAME AND USER INDEX SELECTIONS.
* 
*         ENTRY  (/COMSPFS/UTLC) = SELECTED UTILITY CODE. 
*                EPPF = ADDRESS OF FIRST ENTERED PF NAME PARAMETER. 
*                (PARC+/COMSPFS/CPUI) = CURRENT USER INDEX FOR FILE 
*                  SELECTIONS.
*                NPFN = ENTERED PF NAME TABLE LENGTH. 
* 
*         EXIT   (ERFL) = ERROR MESSAGE ADDRESS IF ERROR. 
*                USER INDEX OR FILE NAME SELECTIONS ENTERED IN
*                  SELECTIONS BUFFER. 
*                USER INDEX AND FILE NAME SELECTIONS DISPLAY UPDATED. 
*                (/COMSPFS/NFIS) = NUMBER OF USER INDEX/FILE NAME 
*                  SELECTIONS.
* 
*         USES   X - 0, 1, 2, 3, 4, 6, 7. 
*                A - 1, 2, 3, 6.
*                B - 2. 
* 
*         CALLS  DFS. 
* 
*         MACROS MEMORY.
  
  
 PPF8     SX6    ERRD        * PF SPECIFIED BUT NOT UI/UN.* 
          ZR     X2,PPFX     IF NO FILE NAMES ENTERED 
 PPF9     SA6    ERFL        SET ERROR FLAG 
  
 PPF      SUBR               ENTRY/EXIT 
          SA2    EPFN        GET FIRST ENTERED FILE NAME
          SA1    /COMSPFS/UTLC
          SA3    TVUP+EPFN-ENTP 
          ZR     X2,PPF0     IF NO FILE NAMES ENTERED 
          SB2    X1+
          LX3    B2 
          SX6    ERRG        SET PARAMETER ERROR
          PL     X3,PPF9     IF *PF* PARAMETER NOT VALID FOR UTILITY
 PPF0     SA1    PARC+/COMSPFS/CPUI  GET CURRENT USER INDEX 
          SA3    /COMSPFS/NFIS  GET CURRENT SELECTION COUNT 
          SB2    NPFN        MAXIMUM NUMBER OF ENTERED PF NAMES 
          ZR     X1,PPF8     IF NO USER INDEX IN EFFECT 
          BX0    X1 
  
*         PROCESS NEXT FILE NAME. 
  
 PPF1     MX7    -18
          SX6    ERRG        SET PARAMETER ERROR
          BX7    -X7*X2 
          NZ     X7,PPF9     IF .GT. 7 CHARACTERS ENTERED 
          BX6    X0+X2       MERGE UI AND PF
          LX6    42          18/UI,42/PF
          SA1    SBUF-1 
 PPF2     SA1    A1+B1       ADVANCE TO NEXT SELECTION
          IX4    X1-X6
          ZR     X4,PPF5     IF FILE OR ALL FILES ALREADY SELECTED
          ZR     X1,PPF4     IF END OF SELECTION BUFFER 
          MX7    18          CHECK MATCH ON USER INDEX
          BX5    X6-X1
          BX5    X7*X5
          BX7    -X7*X1 
          NZ     X5,PPF3     IF SELECTION NOT FOR CURRENT USER INDEX
          ZR     X2,PPFX     IF NOT PROCESSING ENTERED FILE NAME
          NZ     X7,PPF3     IF NOT USER INDEX MATCH-ALL SELECTION
          SA6    A1          REPLACE MATCH-ALL SELECTION WITH FILE NAME 
          EQ     PPF5        PROCESS NEXT ENTERED FILE NAME 
  
 PPF3     NG     X4,PPF2     IF NOT BEYOND FILE 
  
*         ADD NEW SINGLE FILE OR USER INDEX MATCH-ALL SELECTION.
  
 PPF4     SA6    A1 
          BX6    X1 
          SA1    A1+B1
          NZ     X6,PPF4     IF MORE TO MOVE
          SA6    A1          WRITE BUFFER TERMINATOR
          SX3    X3+B1       ADVANCE NUMBER OF SELECTIONS 
 PPF5     SA2    A2+B1       NEXT ENTERED PF NAME 
          SB2    B2-B1
          ZR     X2,PPF6     IF ALL ENTRIES PROCESSED 
          GT     B2,B0,PPF1  IF NOT END OF CONVERTED PARAMETER TABLE
  
*         UPDATE LENGTH, DISPLAY SELECTIONS AND CHECK FIELD LENGTH. 
  
 PPF6     SA1    PPFA 
          SX6    X3 
          AX1    30 
          SA6    /COMSPFS/NFIS
          SX3    X6+SBUF+14D REQUIRED FL FOR NEXT PASS
          IX7    X3-X1
          NG     X7,PPF7     IF ENOUGH FIELD LENGTH 
          MEMORY CM,PPFA,R,X3 
 PPF7     RJ     DFS         DISPLAY FILE SELECTIONS
          EQ     PPFX 
  
  
 PPFA     VFD    30/RFL=-10,30/  WORKING FIELD LENGTH 
 PPO      SPACE  4,30 
**        PPO - PROCESS OCTAL PARAMETERS. 
* 
*         ENTRY  (/COMSPFS/UTLC) = SELECTED UTILITY CODE. 
*                EOCT = FIRST ENTERED OCTAL PARAMETER.
*                CPOC = FIRST CONVERTED OCTAL PARAMETER.
*                NOCT = NUMBER OF OCTAL PARAMETERS. 
* 
*         EXIT   (ERFL) = ERROR MESSAGE ADDRESS IF ERROR. 
*                VALID OCTAL PARAMETERS ENTERED ARE POSTED ON THE 
*                K-DISPLAY AND IN THEIR CORRESPONDING CONVERTED 
*                PARAMETER TABLE LOCATIONS. 
* 
*         USES   A - 0, 1, 5, 6.
*                B - 2, 3, 4, 6, 7. 
*                X - 1, 5, 6. 
* 
*         CALLS  DXB, SPT, RPT. 
  
  
 PPO      SUBR               ENTRY/EXIT 
          SA1    /COMSPFS/UTLC  INITIALIZE VALIDATION MASK
          SB2    EOCT        SET FWA OF ENTERED OCTAL PARAMETERS
          SB3    NOCT        SET NUMBER OF OCTAL PARAMETERS 
          SB4    PARC+CPOC   SET FWA OF CONVERTED OCTAL PARAMETERS
          SB7    B0+         SELECT OCTAL CONVERSION MODE FOR *DXB* 
          SB6    X1+         SET UTILITY CODE SHIFT COUNT 
 PPO1     SA1    B2+TVUP-ENTP 
          SA5    B2 
          MX6    -18
          SA0    X1+         SET DISPLAY ADDRESS
          BX6    -X6*X5 
          LX1    B6 
          ZR     X5,PPO4     IF NOT ENTERED 
          PL     X1,PPO2     IF PARAMETER NOT VALID FOR UTILITY 
          NZ     X6,PPO2     IF .GT. 7 CHARACTERS 
          RJ     SPT         SAVE POINTERS
          RJ     DXB         CONVERT DISPLAY CODE TO BINARY 
          RJ     RPT         RESTORE POINTERS 
          ZR     X4,PPO3     IF NO ERRORS 
 PPO2     SX6    ERRG        SET ERROR FLAG 
          SA6    ERFL 
          EQ     PPO4        CONTINUE WITH NEXT OCTAL PARAMETER 
  
 PPO3     SA6    B4          POST IN CONVERTED PARAMETER TABLE
          SA1    B2          POST IN K-DISPLAY
          BX6    X1 
          SA6    A0+B1
 PPO4     SB2    B2+B1       INCREMENT POINTERS 
          SB3    B3-B1
          SB4    B4+1 
          NZ     B3,PPO1     IF MORE OCTAL PARAMETERS 
          EQ     PPOX        RETURN 
 PSD      SPACE  4,15 
**        PSD - PROCESS STORAGE SELECTION DELETIONS.
* 
*         ENTRY  (EPCDA) = DISK SELECTION TO CLEAR. 
*                (EPCCA) = CARTRIDGE SELECTION TO CLEAR.
*         ENTRY  (/COMSPFS/UTLC) = SELECTED UTILIY CODE.
*                (EPCCA) = CARTRIDGE SELECTION TO CLEAR.
*                (EPCTA) = TAPE SELECTION TO CLEAR. 
* 
*         EXIT   SPECIFIED STORAGE SELECTIONS DELETED.
*                STORAGE SELECTIONS DISPLAY UPDATED.
*                (ERFL) = ERROR MESAGE ADDRESS IF ERROR.
* 
*         USES   X - 1, 2, 3, 6, 7. 
*                A - 1, 2, 6, 7.
*                B - 2. 
* 
*         CALLS   DSS, VAV, VRP.
  
  
 PSD8     SX7    ERRG        SET PARAMETER ERROR
          SA7    ERFL 
  
 PSD      SUBR               ENTRY/EXIT 
  
*         PROCESS DISK STORAGE SELECTION DELETION.
  
          SA1    EPCDA
          ZR     X1,PSD0.4   IF NO DISK SELECTION TO CLEAR
          SA2    /COMSPFS/UTLC
          SA3    TVUP+EPCDA-ENTP
          SB2    X2          SET UTILITY CODE SHIFT COUNT 
          LX3    B2 
          PL     X3,PSD0.3   IF *CDA* PARAMETER NOT VALID FOR UTILITY 
          RJ     VRP         VALIDATE RESIDENCY PARAMETER 
          ZR     X6,PSD0.1   IF NOT *R* OR *N* PARAMETER
          SX7    X2 
          IX7    X2-X7
          SX6    X6-1 
          SA7    PARC+/COMSPFS/CPDA  CLEAR SELECTION
          NZ     X6,PSD0.2   IF NOT *R* ENTRY 
          SA6    A7          CLEAR ALL DEVICE SELECTIONS
          SA6    A6+B1
          EQ     PSD0.2      DISPLAY SELECTIONS 
  
*         PROCESS RESIDENCY DEVICE SELECTION DELETION 
  
 PSD0.1   BX5    X1 
          SB7    B0          SELECT OCTAL CONVERSION DEFAULT
          RJ     DXB         CONVERT DEVICE NUMBER
          NZ     X4,PSD0.3   IF ERROR IN DEVICE NUMBER
          ZR     X6,PSD0.3   IF ZERO DEVICE NUMBER
          MX1    54 
          BX1    X1*X6
          NZ     X1,PSD0.3   IF DEVICE NUMBER TOO LARGE 
          MX1    -5 
          BX1    -X1*X6 
          AX6    5           SET WORD INDEX FOR DEVICE
          BX1    -X1
          SA2    PARC+/COMSPFS/CPDA+X6
          SB2    X1+59       SET POSITION IN WORD FOR DEVICE
          SX1    1
          LX1    B2 
          BX6    -X1*X2      CLEAR DEVICE SELECTED BIT
          SA6    A2 
 PSD0.2   RJ     DSS         DISPLAY STORAGE SELECTIONS 
          EQ     PSD0.4      CHECK CARTRIDGE SELECTION DELETION 
  
 PSD0.3   SX6    ERRG        * ENTERED PARAMETER NOT VALID.*
          SA6    ERFL 
  
*         PROCESS CARTRIDGE ALTERNATE STORAGE SELECTION DELETION. 
  
 PSD0.4   SA1    EPCCA
          ZR     X1,PSD3     IF NO CARTRIDGE SELECTION TO CLEAR 
          SA2    /COMSPFS/UTLC
          SA3    TVUP+EPCCA-ENTP
          SB2    X2          SET UTILITY CODE SHIFT COUNT 
          LX3    B2 
          PL     X3,PSD1     IF *CCA* PARAMETER NOT VALID FOR UTILITY 
          RJ     VRP         VALIDATE RESIDENCY PARAMETER 
          NZ     X6,PSD2     IF *R* OR *N* ENTRY
 PSD1     SX7    ERRG        SET PARAMETER ERROR
          SA7    ERFL 
          EQ     PSD3        PROCESS TAPE SELECTION DELETION
  
 PSD2     SX7    B0+         CLEAR SELECTION
          SA7    PARC+/COMSPFS/CPCA 
          RJ     DSS         DISPLAY STORAGE SELECTIONS 
  
*         PROCESS TAPE ALTERNATE STORAGE SELECTION DELETION.
  
 PSD3     SA1    EPCTA
          ZR     X1,PSDX     IF NO TAPE SELECTION TO CLEAR
          SA2    /COMSPFS/UTLC
          SA3    TVUP+EPCTA-ENTP
          SB2    X2          SET UTILITY CODE SHIFT COUNT 
          LX3    B2 
          PL     X3,PSD8     IF *CTA* PARAMETER NOT VALID FOR UTILITY 
          RJ     VRP         VALIDATE RESIDENCY PARAMETER 
          ZR     X6,PSD4     IF NOT *R* OR *N* PARAMETER
          SX7    B0+
          SX6    X6-1 
          SA7    PARC+/COMSPFS/CPTA  CLEAR SELECTION
          NZ     X6,PSD7     IF NOT *R* ENTRY 
          SA7    A7+1        CLEAR ALL VSN SELECTIONS 
          SA7    NVSS 
          EQ     PSD7        DISPLAY SELECTIONS 
  
*         PROCESS ALTERNATE STORAGE VSN SELECTION DELETION. 
  
 PSD4     RJ     VAV         VALIDATE ALTERNATE STORAGE VSN 
          ZR     X6,PSD8     IF NOT VALID VSN 
          SA1    PARC+/COMSPFS/CPTA 
 PSD5     SA1    A1+B1       READ VSN SELECTION 
          ZR     X1,PSDX     IF END OF ENTRIES
          BX1    X1-X6
          NZ     X1,PSD5     IF NO MATCH ON ENTRY 
 PSD6     SA1    A1+1 
          BX6    X1 
          SA6    A1-B1
          NZ     X6,PSD6     IF NOT END OF ENTRIES
          SA1    NVSS        DECREMENT VSN SELECTION COUNT
          SX6    X1-1 
          SA6    A1+
 PSD7     RJ     DSS         DISPLAY STORAGE SELECTIONS 
          EQ     PSDX        RETURN 
 PSP      SPACE  4,20 
**        PSP - PROCESS SECURITY PARAMETERS.
* 
*         ENTRY  (/COMSPFS/UTLC) = UTILITY CODE.
* 
*         EXIT   (X3) = 0 IF NO ERROR.
*                (X3) .NE. 0 IF ERROR.
*                (A3) = ADDRESS OF ERROR MESSAGE IF ERROR.
*                  CONVERTED PARAMETER VALUES SAVED.
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 5, 6. 
*                B - 2. 
* 
*         CALLS  VLC. 
* 
*         MACROS GETSSL.
  
  
 PSP3     ZR     X5,PSPX     IF UPPER LEVEL NOT SPECIFIED 
 PSP4     SA3    ERRI        * LA AND UA BOTH REQUIRED.*
  
 PSP      SUBR               ENTRY/EXIT 
          SA1    PARC+/COMSPFS/CPLA    LOWER ACCESS LEVEL 
          SA5    PARC+/COMSPFS/CPUA    UPPER ACCESS LEVEL 
          SX3    B0+         CLEAR ERROR FLAG 
          ZR     X1,PSP3     IF LOWER LEVEL NOT SPECIFIED 
          SB2    B0+
          RJ     VLC         VALIDATE LOWER ACCESS LEVEL NAME 
          SA3    ERRK        * UNKNOWN ACCESS LEVEL NAME.*
          NG     X2,PSPX     IF NOT VALID NAME
          ZR     X5,PSP4     IF UPPER LEVEL NOT SPECIFIED 
          BX7    X2 
          SX6    X2+40B      SAVE CONVERTED VALUE 
          SA6    PSPB 
          BX1    X5 
          RJ     VLC         VALIDATE UPPER ACCESS LEVEL NAME 
          SA3    ERRK        * UNKNOWN ACCESS LEVEL NAME.*
          NG     X2,PSPX     IF NOT VALID NAME
          BX5    X2 
          IX6    X2-X7
          SA3    ERRJ        * LA VALUE LARGER THAN UA.*
          NG     X6,PSPX     IF LOWER LEVEL ABOVE UPPER LEVEL 
          SX6    X2+40B      SAVE CONVERTED VALUE 
          SA6    PSPB+1 
  
*         CHECK ACCESS LEVELS IN RANGE. 
  
          GETSSL PSPA        GET SYSTEM SECURITY STATUS 
          MX0    -6 
          SA1    PSPA 
          LX1    12 
          BX2    -X0*X1      SYSTEM SECURITY MODE 
          ZR     X2,PSP2     IF SYSTEM NOT IN SECURE MODE 
          SA2    PARC+/COMSPFS/CPSU 
          NZ     X2,PSP1     IF SUMMARY FILE SELECTED 
          SA2    /COMSPFS/UTLC  DETERMINE UTILITY 
          SX4    X2-/COMSPFS/LDUT 
          ZR     X4,PSP1     IF *PFLOAD*
          SX4    X2-/COMSPFS/DUUT 
          ZR     X4,PSP1     IF *PFDUMP*
          SX4    X2-/COMSPFS/COUT 
          NZ     X4,PSP2     IF NOT *PFCOPY*
 PSP1     SA3    ERRL        * ACCESS LEVEL OUT OF RANGE.*
          LX1    6
          BX2    -X0*X1      SYSTEM LOWER ACCESS LEVEL LIMIT
          IX2    X7-X2
          NG     X2,PSPX     IF SPECIFIED LOWER LEVEL OUT OF RANGE
          LX1    6
          BX2    -X0*X1      SYSTEM UPPER ACCESS LEVEL LIMIT
          IX2    X2-X5
          NG     X2,PSPX     IF SPECIFIED UPPER LEVEL OUT OF RANGE
 PSP2     BX3    X3-X3       SET NO ERROR 
          SA1    PSPB        SET CONVERTED VALUES 
          SA2    A1+B1
          BX6    X1 
          BX7    X2 
          SA6    PARC+/COMSPFS/CPLA 
          SA7    PARC+/COMSPFS/CPUA 
          EQ     PSPX        RETURN 
  
  
 PSPA     CON    0           SECURITY STATUS WORD 
 PSPB     BSSZ   2           CONVERTED ACCESS LEVEL VALUES
 PSS      SPACE  4,20 
**        PSS - PROCESS STORAGE MEDIA SELECTIONS. 
* 
*         ENTRY  (/COMSPFS/UTLC) = SELECTED UTILIY CODE.
*                (EPDA) = ENTERED DISK RESIDENCY SELECTION. 
*                (EPCA) = ENTERED CARTRIDGE ALTERNATE STORAGE 
*                  SELECTION. 
*                (EPTA) = ENTERED TAPE ALTERNATE STORAGE SELECTION. 
* 
*         EXIT   STORAGE SELECTIONS UPDATED.
*                STORAGE SELECTIONS DISPLAY UPDATED.
*                (ERFL) = ERROR MESSAGE ADDRESS IF ERROR. 
* 
*         USES   X - 1, 2, 3, 5, 6, 7.
*                A - 1, 2, 3, 6, 7. 
*                B - 2, 7.
* 
*         CALLS  DSS, DXB, VAV, VRS.
  
  
 PSS8     SX7    ERRG        * ENTERED PARAMETER NOT VALID.*
 PSS9     SA7    ERFL        SET ERROR MESSAGE ADDRESS
  
 PSS      SUBR               ENTRY/EXIT 
  
*         PROCESS DISK ADDRESS SELECTION. 
  
          SA1    EPDA 
          ZR     X1,PSS0.4   IF NO DISK ADDRESS SELECTION 
          SA2    /COMSPFS/UTLC
          SA3    TVUP+EPDA-ENTP 
          SB2    X2          SET UTILITY CODE SHIFT COUNT 
          LX3    B2 
          PL     X3,PSS0.3   IF *DA* PARAMETER NOT VALID FOR UTILITY
          SA2    PARC+/COMSPFS/CPDA 
          RJ     VRS         VALIDATE RESIDENCY SELECTION 
          ZR     X6,PSS0.1   IF NOT ALL RESIDENT/NON-RESIDENT ENTRY 
          SX7    X6-1 
          NZ     X7,PSS0.2   IF NOT ALL RESIDENT SELECTION
          SA1    PARC+/COMSPFS/CPDA 
          SX6    X1+
          SA6    A1 
          SA7    A1+B1
          EQ     PSS0.2      DISPLAY SELECTIONS 
  
*         PROCESS RESIDENCY DEVICE SELECTION. 
  
 PSS0.1   BX5    X1 
          SB7    B0          SELECT OCTAL CONVERSION DEFAULT
          RJ     DXB         CONVERT DEVICE NUMBER
          NZ     X4,PSS0.3   IF ERROR IN DEVICE NUMBER
          ZR     X6,PSS0.3   IF ZERO DEVICE NUMBER
          MX1    54 
          BX1    X1*X6
          NZ     X1,PSS0.3   IF DEVICE NUMBER TOO LARGE 
          SA2    PARC+/COMSPFS/CPDA 
          SX2    X2-1 
          ZR     X2,PSS0.4   IF ALL DEVICES ALREADY SELECTED
          MX1    -5 
          BX1    -X1*X6 
          AX6    5           SET WORD INDEX FOR DEVICE
          BX1    -X1
          SA2    PARC+/COMSPFS/CPDA+X6
          SB2    X1+59       SET POSITION IN WORD FOR DEVICE
          SX1    1
          LX1    B2 
          BX6    X2+X1       SET DEVICE SELECTED BIT
          SA6    A2+
 PSS0.2   RJ     DSS         DISPLAY STORAGE SELECTIONS 
          EQ     PSS0.4      CHECK CARTRIDGE SELECTION
  
 PSS0.3   SX6    ERRG        * ENTERED PARAMETER NOT VALID.*
          SA6    ERFL 
  
*         PROCESS CARTRIDGE ALTERNATE STORAGE SELECTION.
  
 PSS0.4   SA1    EPCA 
          ZR     X1,PSS3     IF NO CARTRIDGE STORAGE SELECTION ENTERED
          SA2    /COMSPFS/UTLC
          SA3    TVUP+EPCA-ENTP 
          SB2    X2          SET UTILITY CODE SHIFT COUNT 
          LX3    B2 
          PL     X3,PSS1     IF *CA* PARAMETER NOT VALID FOR UTILITY
          SA2    PARC+/COMSPFS/CPCA 
          RJ     VRS         VALIDATE RESIDENCY SELECTION 
          NZ     X6,PSS2     IF NO ERROR IN ENTRY 
 PSS1     SX6    ERRG        * ENTERED PARAMETER NOT VALID.*
          SA6    ERFL 
          EQ     PSS3        CHECK TAPE ALTERNATE STORAGE SELECTION 
  
 PSS2     RJ     DSS         DISPLAY STORAGE SELECTIONS 
  
*         PROCESS TAPE ALTERNATE STORAGE SELECTION. 
  
 PSS3     SA1    EPTA 
          ZR     X1,PSSX     IF NO TAPE ALTERNATE STORAGE SELECTION 
          SA2    /COMSPFS/UTLC
          SA3    TVUP+EPTA-ENTP 
          SB2    X2          SET UTILITY CODE SHIFT COUNT 
          LX3    B2 
          PL     X3,PSS8     IF *TA* PARAMETER NOT VALID FOR UTILITY
          SA2    PARC+/COMSPFS/CPTA 
          RJ     VRS         VALIDATE RESIDENCY SELECTION 
          ZR     X6,PSS4     IF NOT ALL RESIDENT/NON-RESIDENT ENTRY 
          SX1    X6-2 
          SX7    B0+
          ZR     X1,PSS7     IF NON-RESIDENT SELECTION
          SA7    PARC+/COMSPFS/CPTA+1  CLEAR ALL VSN SELECTIONS 
          SA7    NVSS        CLEAR VSN SELECTION COUNT
          EQ     PSS7        DISPLAY ALTERNATE STORAGE SELECTIONS 
  
*         PROCESS VSN ENTRY.
  
 PSS4     RJ     VAV         VALIDATE ALTERNATE STORAGE VSN 
          ZR     X6,PSS8     IF NOT VALID VSN 
          SA1    PARC+/COMSPFS/CPTA 
          SX1    X1-1 
          ZR     X1,PSSX     IF ALL VSN-S ALREADY SELECTED
          SA3    NVSS 
          SX2    X3-/COMSPFS/MXVS 
          SX7    ERRR        * VSN SELECTIONS AT MAXIMUM.*
          ZR     X2,PSS9     IF MAXIMUM VSN SELECTIONS ALREADY ENTERED
 PSS5     SA1    A1+B1       READ VSN SELECTION 
          IX2    X1-X6
          ZR     X1,PSS6     IF END OF ENTRIES
          ZR     X2,PSSX     IF VSN ALREADY SELECTED
          NG     X2,PSS5     IF NOT PAST ENTRY
 PSS6     SA6    A1+         WRITE ENTRY
          BX6    X1 
          SA1    A1+B1
          NZ     X6,PSS6     IF NOT END OF ENTRIES
          SA6    A1+         WRITE TERMINATOR WORD
          SX6    X3+1        COUNT VSN ENTRY
          SA6    A3+
 PSS7     RJ     DSS         DISPLAY STORAGE SELECTIONS 
          EQ     PSSX        RETURN 
 PUO      SPACE  4,15 
**        PUO - PROCESS UTILITY OPTIONS.
* 
*         ENTRY  (EPOP) = ENTERED UTILITY OPTIONS.
* 
*         EXIT   (PARC+/COMSPFS/CPOP) = CONVERTED UTILITY OPTIONS IF NO 
*                  ERROR. 
*                 K-DISPLAY UPDATED WITH ENTERED UTILITY OPTIONS IF NO
*                  ERROR. 
*                (ERFL) = ERROR MESSAGE ADDRESS IF ERROR. 
* 
*         USES   X - 1, 2, 6. 
*                A - 1, 2, 6. 
*                B - 6, 7.
* 
*         CALLS  OCK, OCP.
  
  
 PUO      SUBR               ENTRY/EXIT 
          SA2    EPOP 
          ZR     X2,PUOX     IF OPTION NOT ENTERED
          SA1    =1L0        CHEK FOR RESET TO ZERO 
          BX6    X2-X1
          ZR     X6,PUO3     IF ZERO SPECIFIED FOR OPTION 
          SB6    /COMSPFS/MXUO  SET NUMBER OF UTILITY OPTIONS 
          SB7    TVUO        SET UTILITY OPTION TABLE ADDRESS 
          RJ     OCK         PERFORM OPTION CRACKING
          NZ     X6,PUO2     IF NO ERROR
 PUO1     SX6    ERRG        SET ERROR FLAG 
          SA6    ERFL 
          EQ     PUOX        RETURN 
  
 PUO2     RJ     OCP         PERFORM OPTION CONFLICT PROCESSING 
          ZR     X6,PUO1     IF CONFLICT
 PUO3     SA6    PARC+/COMSPFS/CPOP 
          SA2    EPOP        POST ENTERED UTILITY OPTIONS IN K-DISPLAY
          BX6    X2 
          SA6    D.OP+1 
          EQ     PUOX        RETURN 
 PVP      SPACE  4,10 
**        PVP - PROCESS PREVIOUS VSN. 
* 
*         EXIT   (X3) = 0 IF NO ERROR.
*                (X3) .NE. 0 IF ERROR.
*                (A3) = ADDRESS OF ERROR MESSAGE, IF ERROR. 
* 
*         USES   X - 0, 1.
*                A - 1, 3.
  
  
 PVP      SUBR               ENTRY/EXIT 
          SA1    PARC+/COMSPFS/CPPV PREVIOUS ARCHIVE TAPE VSN 
          MX0    36 
          SA3    ERRM        * VSN TOO LONG.* 
          BX3    -X0*X1      NON-ZERO IF VSN OVER 6 CHARACTERS
          EQ     PVPX        RETURN 
 RCM      SPACE  4,15 
**        RCM - READ CENTRAL MEMORY RESIDENT. 
* 
*         ENTRY  (X1) = WORD COUNT. 
*                (X2) = CM ADDRESS TO READ FROM.
*                (X3) = BUFFER ADDRESS TO READ TO.
* 
*         EXIT   WORDS READ TO BUFFER.
*                (X1) = FIRST WORD READ.
* 
*         USES   A - 1, 6.
*                X - 1, 2, 6. 
* 
*         MACROS SYSTEM.
  
  
 RCM      SUBR               ENTRY/EXIT 
          MX6    42 
          LX1    36 
          SA6    X3 
          LX2    18 
          BX6    X1+X3
          BX6    X2+X6
          SA6    RCMA 
          SYSTEM  RSB,,A6 
          SA1    X3 
          EQ     RCMX        RETURN 
  
  
 RCMA     CON    0           *RSB* PARAMETER WORD 
 RPT      SPACE  4,20 
**        RPT - RESTORE POINTERS. 
* 
*         ENTRY  (PTEP)= ENTERED PARAMETER ADDRESS. 
*                (PTNP) = NUMBER OF PARAMETER TO PROCESS. 
*                (PTCP) = CONVERTED PARAMETER ADDRESS.
*                (PTMW) = PARAMETER MASK WORD.
* 
*         EXIT   (B2) = (PTEP). 
*                (B3) = (PTNP). 
*                (B4) = (PTCP). 
*                (X0) = (PTMW). 
* 
*         USES   A - 1, 2.
*                B - 2, 3, 4. 
*                X - 0, 1, 2. 
  
  
 RPT      SUBR               ENTRY/EXIT 
          SA1    PTEP 
          SA2    PTNP 
          SB2    X1 
          SB3    X2 
          SA1    PTCP 
          SB4    X1 
          SA1    PTMW 
          BX0    X1 
          EQ     RPTX        RETURN 
          SPACE  4,10 
**        RSF - RETURN SCRATCH FILES. 
* 
*         EXIT   SCRATCH FILES RETURNED.
* 
*         USES   X - 3, 4, 5, 6.
*                A - 3, 6.
* 
*         MACROS RETURN.
  
  
 RSF      SUBR               ENTRY/EXIT 
          SA3    RSFA-1 
          SX4    B1 
          LX4    18 
 RSF1     SA3    A3+B1
          ZR     X3,RSFX     IF ALL FILES RETURNED
          SX5    X3          NUMBER OF FILE NAMES IN RANGE
          IX3    X3-X5       SET FIRST FILE NAME
          SX6    1
          BX3    X3+X6       SET COMPLETE STATUS
 RSF2     BX6    X3 
          SA6    SCR
          RETURN SCR,R       RETURN FILE
          IX3    X3+X4       ADVANCE FILE NAME
          SX5    X5-1 
          NZ     X5,RSF2     IF ALL FILES IN RANGE NOT RETURNED 
          EQ     RSF1        CHECK NEXT RANGE OF FILE NAMES 
  
  
 RSFA     VFD    42/0LZZZZZG0,18/10 
          VFD    42/0LZZZZZGA,18/2
          CON    0           END OF TABLE 
 SDR      SPACE  4,15 
**        SDR - SET DEFAULT SUMMARY FILE RECORD NAME. 
* 
*         ENTRY  (B5) = UTILITY CODE. 
* 
*         EXIT   (B5) = *TVUP* UTILITY CODE SHIFT COUNT.
*                SUMMARY FILE RECORD NAME SET TO CURRENT DATE 
*                  IF SUMMARY FILE VALID FOR UTILITY. 
* 
*         USES   X - 0, 1, 6, 7.
*                A - 1, 6, 7. 
* 
*         CALLS  SFN. 
* 
*         MACROS EDATE. 
  
  
 SDR      SUBR               ENTRY/EXIT 
          SA2    TVUP+EPS-ENTP
          SA1    /COMSPFS/STDT
          LX2    B5 
          AX1    18          PACKED FORMAT START DATE 
          PL     X2,SDRX     IF SUMMARY FILE NOT VALID
          EDATE  X1          CONVERT START DATE 
          MX0    12 
          LX6    6
          BX7    X0*X6       SET YEAR 
          LX6    6
          LX0    -12
          BX1    X0*X6
          BX7    X7+X1       MERGE MONTH
          LX6    6
          LX0    -12
          BX1    X0*X6
          BX7    X7+X1       MERGE DAY
          BX1    X7 
          SA7    PARC+/COMSPFS/CPSR  SET DEFAULT RECORD NAME
          SA7    DSRN 
          RJ     SFN         SPACE FILL NAME FOR DISPLAY
          SA6    D.SR+1 
          EQ     SDRX        RETURN 
 SKD      SPACE  4,15 
**        SKD - SET INITIAL *K* DISPLAY.
* 
*         ENTRY  (/COMSPFS/UTLC) = UTILITY CODE.
* 
*         EXIT   INITIAL *K* DISPLAY FOR UTILITY SET UP.
* 
*         USES   A - 1, 2, 6. 
*                X - 1, 2, 6. 
* 
*         CALLS  SVO. 
  
  
 SKD      SUBR               ENTRY/EXIT 
          SA2    /COMSPFS/UTLC
          SA1    TDUN-1+X2   GET UTILITY NAME 
          BX6    X1 
          SA6    H1DS        SET IN DISPLAY 
          SX6    TPAG        SELECT UTILITY DISPLAY PAGING TABLE
          SA6    CPAG 
          SA1    SKDA        SET *K* DISPLAY POINTER WORD 
          BX6    X1 
          SA6    KDIS 
          RJ     SVO         SET VALID OPTIONS
          EQ     SKDX        RETURN 
  
  
 SKDA     VFD    24/KBUF,18/RGHT,18/LPG1
  
 TDUN     BSS    0           TABLE OF DISPLAY UTILITY NAMES 
          KDL    1,T,(PFLOAD) 
          KDL    1,T,(PFDUMP) 
          KDL    1,T,(PFCAT)
          KDL    1,T,(PFATC)
          KDL    1,T,(PFCOPY) 
          KDL    1,T,(PFREL)
          KDL    1,T,(PFLIST) 
 SPT      SPACE  4,20 
**        SPT - SAVE POINTERS.
* 
*         ENTRY  (B2) = ENTERED PARAMETER ADDRESS.
*                (B3) = NUMBER OF PARAMETERS LEFT TO PROCESS. 
*                (B4) = CONVERTED PARAMETER ADDRESS.
*                (X0) = PARAMETER MASK WORD.
* 
*         EXIT   (PTEP) = (B2). 
*                (PTNP) = (B3). 
*                (PTCP) = (B4). 
*                (PTMW) = (X0). 
* 
*         USES   A - 6, 7.
*                X - 6, 7.
  
  
 SPT      SUBR               ENTRY/EXIT 
          SX6    B2 
          SX7    B3 
          SA6    PTEP 
          SA7    PTNP 
          SX6    B4 
          SA6    PTCP 
          BX7    X0 
          SA7    A6+B1
          EQ     SPTX        RETURN 
 SVO      SPACE  4,15 
**        SVO - SET VALID OPTIONS.
* 
*         ENTRY  (/COMSPFS/UTLC) = SELECTED UTILITY ORDINAL.
* 
*         EXIT   DEFAULT SUMMARY FILE RECORD NAME SET.
*                UTILITY AND LIST OPTIONS VALID FOR UTILITY DISPLAYED.
*                PARAMETERS NOT VALID FOR UTILITY MARKED *N/A*. 
* 
*         USES   A - 1, 2, 6, 7.
*                B - 3, 5.
*                X - 1, 2, 6, 7.
* 
*         CALLS  DNP, SDR.
  
  
 SVO      SUBR               ENTRY/EXIT 
          SA2    /COMSPFS/UTLC  GET UTILITY CODE
          SA1    TUTN+X2
          SB5    X2          SET UTILTY CODE
          BX6    X1 
          SA6    /COMSPFS/UTLN
  
*         CLEAR DEFAULT FILE NAMES WHEN NOT SUPPORTED BY UTILITY. 
  
          SA1    TVUP+EPT-ENTP
          SA2    TVUP+EPSI-ENTP 
          SX6    B0+
          LX1    B5 
          LX2    B5 
          NG     X1,SVO1     IF ARCHIVE FILE VALID FOR UTILITY
          SA6    PARC+/COMSPFS/CPTB  CLEAR ARCHIVE FILE NAME
 SVO1     NG     X2,SVO2     IF SUMMARY INPUT FILE VALID FOR UTILITY
          SA6    PARC+/COMSPFS/CPSI  CLEAR SUMMARY INPUT FILE NAME
 SVO2     RJ     SDR         SET DEFAULT SUMMARY FILE RECORD NAME 
  
*         SET VALID LIST AND UTILITY OPTIONS. 
  
          SA1    VLOT+B5     SET LO VALID OPTIONS 
          SX2    B5          MULTIPLY INDEX BY 2
          LX2    1-0
          SA2    VUOT+X2     SET UTILITY VALID OPTIONS
          BX6    X1 
          BX7    X2 
          SA6    D.VLO
          SA7    D.VUO
          SA1    A2+B1
          BX7    X1 
          SA7    D.VUO+1
  
*         DISPLAY PARAMETERS VALID FOR UTILITY. 
  
          SA2    CNAV        SET *N/A* WORD 
          BX6    X2 
          SA1    TVUP-ENTP+ENAM  SET NAME PARAMETERS
          SB2    NNAM        SET PARAMETER COUNT
          RJ     DNP         DISPLAY NON-VALID PARAMETERS 
          SA1    TVUP-ENTP+EOCT  SET OCTAL PARAMETERS 
          SB2    NOCT        SET PARAMETER COUNT
          RJ     DNP         DISPLAY NON-VALID PARAMETERS 
          SA1    TVUP-ENTP+EDEC  SET DECIMAL PARAMETERS 
          SB2    NDEC        SET PARAMETER COUNT
          RJ     DNP         DISPLAY NON-VALID PARAMETERS 
          SA1    TVUP-ENTP+ENEQ  SET NON-EQUIVALENCED PARAMETERS
          SB2    NNEQ        SET PARAMETER COUNT
          RJ     DNP         DISPLAY NON-VALID PARAMETERS 
          EQ     SVOX        EXIT 
  
  
 TUTN     BSS    1           TABLE OF UTILITY NAMES 
          DATA   0LPFLOAD 
          DATA   0LPFDUMP 
          DATA   0LPFCAT
          DATA   0LPFATC
          DATA   0LPFCOPY 
          DATA   0LPFREL
          DATA   0LPFLIST 
          DATA   0LPFRES
  
 CNAV     DATA   H*-- N/A -- *
  
 VLOT     BSS    1           VALID LIST OPTION TABLE
          DATA   H*ID - TCESMU * FOR PFLOAD 
          DATA   H*ID - TCESMU * FOR PFDUMP 
          DATA   H*ID - TESMU  * FOR PFCAT
          DATA   H*ID - TCESMU * FOR PFATC
          DATA   H*ID - TESMU  * FOR PFCOPY 
          DATA   H*ID - TESMU  * FOR PFREL
          DATA   H*ID - TCESMU * FOR PFLIST 
          DATA   H*            * FOR PFRES
  
 VUOT     BSS    2           VALID UTILITY OPTION TABLE 
          DATA   H*CAMIDTLREOZVK       *  FOR PFLOAD
          DATA   H*CAMIDTPSYZK         *  FOR PFDUMP
          DATA   H*CAMTIDK             *  FOR PFCAT 
          DATA   H*CAMTIDK             *  FOR PFATC 
          DATA   H*CAMTIDQK            *  FOR PFCOPY
          DATA   H*CAMTIDK             *  FOR PFREL 
          DATA   H*CAMTIDK             *  FOR PFLIST
          DATA   H*                    *  FOR PFRES 
  
 SETT     BSS    0           NON-EQUIVALENCED PARAMETER VALUE TABLE 
          DATA   H*INHIBIT   *  FOR *EO* PARAMETER
          DATA   H*SET DATE  *  FOR *SD* PARAMETER
          DATA   H*UPDATE    *  FOR *UD* PARAMETER
          DATA   H*DESTAGE   *  FOR *DT* PARAMETER
          DATA   H*INHIBIT   *  FOR *IP* PARAMETER
  
          ERRNZ  *-SETT-NNEQ
 VAV      SPACE  4,15 
**        VAV - VALIDATE TAPE ALTERNATE STORAGE VSN ENTRY.
* 
*         ENTRY  (X1) = ENTRY TO VALIDATE.
* 
*         EXIT   (X6) = 0 IF ERROR IN ENTRY.
*                (X6) = VSN POINTER IF NO ERROR.
* 
*         USES   X - 0, 1, 2, 5, 6. 
*                A - 1, 6.
*                B - 7. 
* 
*         CALLS  DXB. 
  
  
 VAV1     SX6    B0+         SET ERROR IN VSN ENTRY 
  
 VAV      SUBR               ENTRY/EXIT 
          MX0    12 
          BX6    X0*X1       SAVE VSN PREFIX
          SA6    VAVA 
          BX1    -X0*X1 
          LX1    -24
          SX6    77B
          BX0    X0*X1
          BX6    X6*X1
          NZ     X0,VAV1     IF GREATER THAN SEVEN CHARACTERS ENTERED 
          ZR     X6,VAVX     IF LESS THAN SIX CHARACTERS ENTERED
          SX6    X6-1RB 
          ZR     X6,VAVX     IF *B* RADIX 
          SX6    X6-1RD+1RB 
          ZR     X6,VAVX     IF *D* RADIX 
          MX5    24 
          LX1    36 
          BX6    -X5*X1 
          BX5    X5*X1
          NZ     X6,VAV1     IF MORE THAN SIX CHARACTERS ENTERED
          SB7    B1          SET DECIMAL CONVERSION 
          RJ     DXB         CONVERT VSN SEQUENCE NUMBER
          SA1    VAVA 
          NZ     X4,VAV1     IF NOT VALID SEQUENCE NUMBER 
          SX2    X6-4095-1
          PL     X2,VAV1     IF SEQUENCE NUMBER .GT. 4095 
          LX1    -36
          BX6    X1+X6       MERGE VSN PREFIX AND SEQUENCE NUMBER 
          EQ     VAVX        RETURN 
  
  
 VAVA     CON    0           VSN PREFIX 
 VDI      SPACE  4,10 
**        VDI - VALIDATE DESTINATION USER INDEX.
* 
*         EXIT   (X3) = 0, IF NO ERROR. 
*                (X3) .NE. 0, IF ERROR. 
*                (A3) = ADDRESS OF MESSAGE, IF ERROR. 
* 
*         USES   X - 1, 3.
*                A - 1, 3.
  
  
 VDI      SUBR               ENTRY/EXIT 
          SA1    PARC+/COMSPFS/CPDI  CHECK *DI* PARAMETER 
          BX3    X3-X3       SET NO ERROR 
          AX1    17 
          ZR     X1,VDIX     IF USER INDEX NOT TOO LARGE
          SA3    ERRN        * USER INDEX OUT OF RANGE.*
          EQ     VDIX        RETURN 
 VPS      SPACE  4,10 
**        VPS - VALIDATE PROCESSING STATUS REGISTER.
* 
*         EXIT   (X3) = 0 IF NO ERROR.
*                (X3) .NE. 0 IF ERROR.
*                (A3) = ADDRESS OF ERROR MESSAGE IF ERROR.
* 
*         USES   X - 1, 3.
*                A - 1, 3.
* 
*         CALLS  GWR. 
  
  
 VPS      SUBR               ENTRY/EXIT 
          SA1    PARC+/COMSPFS/CPPS 
          SX3    B0+
          ZR     X1,VPSX     IF NO STATUS REGISTER SPECIFIED
          RJ     GWR         VALIDATE REGISTER NAME 
          SX3    X7-1 
          ZR     X3,VPSX     IF VALID REGISTER NAME 
          SA3    ERRX        * PS INCORRECT REGISTER NAME.* 
          EQ     VPSX        RETURN WITH ERROR
 VRP      SPACE  4,10 
**        VRP - VALIDATE ALTERNATE STORAGE RESIDENCY PARAMETER. 
* 
*         ENTRY  (X1) = ENTERED PARAMETER.
* 
*         EXIT   (X6) = 0 IF NEITHER *R* NOR *N* ENTERED. 
*                (X6) = 1 IF *R* ENTERED. 
*                (X6) = 2 IF *N* ENTERED. 
* 
*         USES   X - 3, 6, 7. 
  
  
 VRP      SUBR               ENTRY/EXIT 
          MX6    6
          BX3    X6*X1
          BX7    -X6*X1 
          LX3    6
          NZ     X7,VRP1     IF NOT *R* OR *N* ENTRY
          SX7    X3-1RR 
          SX6    B1 
          ZR     X7,VRPX     IF ALL RESIDENT SELECTION
          SX6    B1+B1
          SX7    X3-1RN 
          ZR     X7,VRPX     IF ALL NON-RESIDENT SELECTION
 VRP1     SX6    B0+         SET NOT *R* OR *N* ENTRY 
          EQ     VRPX        RETURN 
 VRS      SPACE  4,20 
**        VRS - VALIDATE RESIDENCY SELECTION. 
* 
*         ENTRY  (X1) = ENTERED PARAMETER.
*                (A2) = ADDRESS OF CONVERTED PARAMETER. 
*                (X2 BITS 0 - 17) = CURRENT VALUE OF CONVERTED
*                  RESIDENCY PARAMETER. 
* 
*         EXIT   (X6) = 0 IF NEITHER *R* NOR *N* ENTERED. 
*                (X6) = 1 IF *R* ENTERED. 
*                (X6) = 2 IF *N* ENTERED. 
*                CONVERTED RESIDENCY PARAMETER UPDATED IF *R* OR *N*
*                  ENTRY. 
* 
*         USES   X - 3, 7.
*                A - 7. 
* 
*         CALLS  VRP. 
  
  
 VRS      SUBR               ENTRY/EXIT 
          RJ     VRP         VALIDATE RESIDENCY PARAMETER 
          ZR     X6,VRSX     IF ENTRY NOT *R* OR *N*
          SX3    X2+
          BX7    X2+X6
          ZR     X3,VRS1     IF NO CURRENT SELECTION
          BX7    X3-X6
          ZR     X7,VRSX     IF ENTRY SAME AS CURRENT SELECTION 
          IX7    X2-X3       CLEAR CURRENT SELECTION
 VRS1     SA7    A2          SET RESIDENCY SELECTION
          EQ     VRSX        RETURN 
 WFS      SPACE  4,10 
**        WFS - WRITE FILE SELECTIONS.
* 
*         EXIT   FILE SELECTIONS WRITTEN TO SCRATCH FILE. 
* 
*         USES   X - 1, 5, 6. 
*                A - 1, 5.
* 
*         MACROS WRITE, WRITEO, WRITER. 
  
  
 WFS      SUBR               ENTRY/EXIT 
          WRITE  S,*
          SA1    /COMSPFS/NFIS
          ZR     X1,WFSX     IF NO SELECTIONS 
          SA5    SBUF 
 WFS1     LX5    18-0        42/FILE NAME, 18/ USER INDEX 
          BX6    X5 
          SA5    A5+1 
          WRITEO X2 
          NZ     X5,WFS1     IF MORE TO WRITE 
          BX6    X6-X6
          WRITEO X2          WRITE TERMINATOR 
          WRITER X2,R 
          EQ     WFSX        RETURN 
 MENU     SPACE  4,20 
*         LEFT SCREEN MENU DISPLAY. 
  
 MENU     VFD    12/0,36/0,12/0   DISPLAY CONTROL WORD
  
          KDL    18,T,(PERMANENT FILE UTILITY OPTIONS)
 K        SET    6
          KDL    13,H,(ENTER K.UO.) 
          KDL    13,,(UO) 
          KDL    31,H,(DESCRIPTION) 
          KDL    13,K,(AT      PFATC (CATALOG TAPE))
          KDL    13,K,(CA      PFCAT (CATALOG PERMANENT FILES)) 
          KDL    13,K,(CP      PFCOPY (COPY TAPE))
          KDL    13,K,(DU      PFDUMP (DUMP PERMANENT FILES)) 
          KDL    13,K,(LD      PFLOAD (LOAD PERMANENT FILES)) 
          KDL    13,K,(RL      PFREL (RELEASE DISK SPACE))
          KDL    13,K,(LI      PFLIST (LIST SUMMARY FILE))
          VFD    12/7777B,48/ERDS  SWITCH TO COMMON BUFFER
  
 MPAG     PAGT   MENU,1      MENU PAGING TABLE
          PAGT
          PAGT   *
  
 PRK      HERE               ASSEMBLE Y-COORDINATE PRESET CODE HERE 
  
 YTAB     KDL    *           Y-COORDINATE TABLE 
  
          USE    LITERALS 
  
 TBUF     BSS    TBUFL       TERMINAL OUTPUT FILE BUFFER
 IBUF     BSS    0           INPUT/SELECTIONS FILE BUFFER 
 SBUF     EQU    IBUF+IBUFL  SELECTIONS BUFFER
 RFL=     EQU    SBUF+30D 
          SPACE  4,10 
          END 
