PFILES
          IDENT  PFILES,FWA 
          ABS 
          SST 
          ENTRY  APPEND 
          ENTRY  ATTACH 
          ENTRY  CHANGE 
          ENTRY  DEFINE 
          ENTRY  DROPDS 
          ENTRY  GET
          ENTRY  NEW
          ENTRY  OLD
          ENTRY  PACKNAM
          ENTRY  PERMIT 
          ENTRY  PURGE
          ENTRY  REPLACE
          ENTRY  SAVE 
          ENTRY  NPC= 
          ENTRY  RFL= 
          ENTRY  SDM= 
          ENTRY  SSM= 
          SYSCOM B1          DEFINE (B1) = 1
          TITLE  PFILES - PERMANENT FILE REQUEST PROCESSOR. 
*COMMENT  PFILES - PERMANENT FILE MANIPULATOR.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4
***       PFILES - PERMANENT FILE MANIPULATOR.
*         J. L. WARDELL.    70/11/03. 
*         G. R. GREENFIELD   75/02/07. (MODIFIED) 
          SPACE  4
***              PFILES PROCESSES PERMANENT FILE REQUESTS FOR A JOB.
*         TO ACCESS ANY PERMANENT FILES THE USER MUST HAVE DEFINED A
*         USER NAME.  THIS IS DONE VIA *LOGIN* (FOR INTERACTIVE)
*         OR *USER* COMMAND (FOR BATCH).  THE USER NAME IS
*         A 7 CHARACTER FIELD WHICH REPRESENTS A SPECIFIC CATALOG IN
*         THE PERMANENT FILE SYSTEM.  UNLESS SPECIFIED VIA AN OPTIONAL
*         USER NAME, ALL PERMANENT FILE REQUESTS WILL BE TO THIS
*         CATALOG.
*         THOSE USER NAMES WITH ASTERISKS (*) REPRESENT USERS WITH
*         AUTOMATIC READ ONLY PERMISSION TO CATALOGS OF OTHER USERS 
*         IF ALL NON-ASTERISK CHARACTERS OF THE TWO USER NAMES MATCH. 
* 
*         EXAMPLE.
*                NORMAL USER NAMES. 
*                KRONOS1
*                KRONOS2
*                KRONOS3
* 
*                A USER NAME WITH AUTOMATIC PERMISSION ON ALL FILES 
*                IN CATALOGS OF 
*                            KRONOS1
*                            KRONOS2
*                            KRONOS3
*                WOULD BE    KRON***
*                      OR    KRONO**
*                      OR    KRONOS*
*                      OR    *RONOS*
* 
* 
*         TWO METHODS OF ACCESS ARE AVAILABLE TO PERMANENT FILES. 
* 
*         1.     DIRECT ACCESS.  FILES CAN BE ACCESSED DIRECTLY VIA 
*                NORMAL I/O PROCEDURES INCLUDING RANDOM READS AND 
*                WRITES.  FILES OF THIS TYPE ARE ALLOCATED IN LARGE 
*                BLOCKS (SEE *R* OPTION FOR BLOCK SIZES). 
* 
*         2.     INDIRECT ACCESS.  FILES CAN BE ACCESSED INDIRECTLY BY
*                USING A WORKING COPY OF THE PERMANENT FILE.  THIS COPY 
*                CAN BE GENERATED VIA THE *GET* COMMAND. IF THE USER
*                DESIRES THE WORKING COPY TO REMAIN PERMANENT A SPECIFIC
*                PERMANENT FILE REQUEST MUST BE MADE AFTER THE FILE 
*                HAS BEEN ALTERED (SEE SAVE OR REPLACE COMMAND).
*                FILES OF THIS TYPE ARE ALLOCATED IN BLOCK SIZES
*                OF 64 CM WORDS (640 CHARACTERS). 
* 
* 
*         FOR ANY PERMANENT FILE (DIRECT OR INDIRECT) THAT HAS A
*         CURRENT COPY ON ALTERNATE STORAGE, THE USER CAN DROP THE
*         ASSOCIATED DISK SPACE WITH THE *DROPDS* COMMAND.  THIS
*         COMMAND WILL ALSO RETURN THE LOCAL FILE IF IT EXISTS. 
* 
* 
* 
*         PERMANENT FILE COMMAND FORMAT.
* 
*         THE GENERAL FORMAT FOR A PERMANENT FILE REQUEST IS DESCRIBED
*         BELOW.  IF SPECIAL OPTIONS ARE DESIRED, THEY MUST FOLLOW ALL
*         FILES SPECIFIED AND MUST APPLY TO ALL FILES.  THE OPTIONS MUST
*         FOLLOW THE /, ARE ORDER-INDEPENDENT, AND ARE INDICATED BY 
*         THE SPECIFIED KEYWORD.
* 
*         PFCMD (LFN = PFN / KW1 = OPTION1, . . . , KWN = OPTIONN)
* 
*                PFCMD
*                            THE PARTICULAR PERMANENT FILE COMMAND. 
*                LFN
*                            THE WORKING FILE NAME USED WHILE ACCESSING 
*                            THE PERMANENT FILE.
*                PFN
*                            THE NAME UNDER WHICH THE FILE IS CATALOGED 
*                            IN THE PERMANENT FILE DIRECTORY.  IF THE 
*                            PFN PARAMETER IS NOT PRESENT, LFN IS 
*                            ASSUMED TO BE BE THE PERMANENT FILE NAME.
* 
*         IN CERTAIN CASES, IF NO LFN IS SPECIFIED, THE USER-S
*         PRIMARY FILE IS IMPLIED.  THESE ARE DEFAULT CALLS,
*         AND OCCUR WHEN THE COMMAND IS *GET*, *PURGE*, *REPLACE* 
*         OR *SAVE*, AND NO ARGUMENT OR ONE BLANK ARGUMENT IS 
*         SPECIFIED, I.E. *GET.* OR *SAVE,.*
* 
*         THE KEYWORDS AND OPTIONS WHICH MAY BE SUPPLIED ARE DESCRIBED
*         BELOW:  
* 
*         KEYWORD OPTION     DESCRIPTION
* 
*         UN=    USERNAM     USER NAME FOR THE FILE.  THIS
*                            PARAMETER IS NECESSARY ONLY IF THE 
*                            PERMANENT FILE INVOLVED RESIDES IN ANOTHER 
*                            USERS CATALOG.  TO BE ABLE TO ACCESS OTHER 
*                            FILE CATALOGS, THE USER MUST BE GRANTED
*                            EXPLICIT PERMISSION (SEE PERMIT COMMAND).
*                            THE FILE MUST BE A SEMIPRIVATE OR LIBRARY
*                            FILE, OR THE USER MUST HAVE AUTOMATIC
*                            PERMISSION (REFER TO THE PREVIOUS
*                            DESCRIPTION OF USER NAMES).
* 
*         PW=    PASSWRD     THE USER HAS THE OPTION OF SPECIFYING A
*                            SEVEN CHARACTER PASSWORD FOR A FILE.  THIS 
*                            PASSWORD MUST BE SPECIFIED WHENEVER
*                            ALTERNATE USERS ACCESS THE FILE. 
* 
*         PW                 SPECIFIES USER DESIRES SECURE ENTRY OF 
*                            PASSWORD.
* 
*         XD=    YYMMDD      OPTIONAL PASSWORD/PERMIT EXPIRATION DATE 
*                            FOR THE FILE.  YYMMDD MUST NOT BE BEFORE 
*                            THE CURRENT DATE.  *XD* CANNOT BE
*                            SPECIFIED TOGETHER WITH *XT*.  ON A *SAVE* 
*                            OR *DEFINE*, *XD* CANNOT BE SPECIFIED
*                            WITHOUT *PW*.
* 
*         XT=    NNNN        OPTIONAL PASSWORD/PERMIT EXPIRATION TERM 
*                            WHERE NNNN IS THE NUMBER OF DAYS THAT IS 
*                            ADDED TO THE CURENT DATE AND THEN USED AS
*                            THE PASSWORD/PERMIT EXPIRATION DATE. 
*                            VALUES MAY RANGE FROM 0 TO 4095 (OR *),
*                            WHERE 0 SETS THE PASSWORD AS IMMEDIATELY 
*                            EXPIRED, AND 4095 (OR *) IS USED TO SET A
*                            NON-EXPIRING PASSWORD/PERMIT.  *XT* CAN
*                            NOT BE SPECIFIED TOGETHER WITH *XD*.  ON 
*                            A *SAVE* OR *DEFINE*, *XD* CANNOT BE 
*                            SPECIFIED WITHOUT *PW*.
* 
*         CT=                PERMANENT FILE CATEGORY.  PERMANENT FILES
*                            MAY FALL INTO THREE CATEGORIES WHICH 
*                            CONTROL THE METHOD OF ACCESS.  THIS
*                            PARAMETER MUST BE SPECIFIED WHEN THE FILE
*                            IS SAVED OR DEFINED. 
*                P  -        FILES AVAILABLE FOR ACCESS ONLY BY THE 
*                PRIVATE     ORIGINATING USER OR TO THOSE EXPLICITLY
*                PR          GRANTED PERMISSION.  (SEE PERMIT COMMAND.) 
* 
*                S  -        FILES AVAILABLE FOR ACCESS BY ALL USERS
*                SPRIV       KNOWING THE FILE NAME, PASSWORD AND USER 
*                            NUMBER.  ACCESSES FOR FILES OF THIS
*                            CATEGORY ARE RECORDED FOR THE ORIGINATOR 
*                            OF THE FILE IN THE PERMIT ENTRIES OF 
*                            THE FILE.
*                L  -        FILES AVAILABLE FOR ACCESS BY ALL USERS
*                LIBRARY     KNOWING THE FILE NAME, PASSWORD, AND USER
*                PUBLIC      NUMBER.  ACCESSES FOR FILES OF THIS TYPE 
*                PU          ARE NOT RECORDED FOR THE ORIGINATOR OF THE 
*                            FILE.
* 
*         M=                 ACCESS MODE (PERMISSION LEVEL) 
*                W -         WRITE, MODIFY, UPDATE, APPEND, READ, 
*                WRITE       EXECUTE AND/OR PURGE 
*                R -         READ AND/OR EXECUTE
*                READ 
*                E -         EXECUTE ONLY 
*                EXECUTE
*                A -         APPEND ONLY (INDIRECT FILES).
*                APPEND      APPEND, READ AND EXECUTE (DIRECT FILES). 
*                N -         REMOVE PREVIOUS PERMISSION 
*                NULL 
*                M -         MODIFY, UPDATE, APPEND, READ AND EXECUTE.
*                MODIFY 
*                RM -        READ/ALLOW MODIFY, READ/ALLOW UPDATE,
*                READMD      READ/ALLOW APPEND, READ AND EXECUTE. 
*                RA -        READ/ALLOW APPEND, READ AND EXECUTE. 
*                READAP 
*                U -         UPDATE, READ AND EXECUTE.
*                UPDATE 
*                RU -        READ/ALLOW UPDATE, READ AND EXECUTE. 
*                READUP 
* 
*         AL=    LEVEL       OPTIONAL SECURITY ACCESS LEVEL THAT THE
*                            FILE IS TO BE CREATED WITH.  ONE- TO 
*                            SEVEN-CHARACTER MNEMONIC.  IF *AL* IS
*                            NOT SPECIFIED, THE CURRENT JOB ACCESS
*                            LEVEL WILL BE USED.
* 
*         SS=                FILE SUBSYSTEM.
*                            IF *SS* IS OMITTED, NO SUBSYSTEM IS USED 
*                            EXCEPT IN THE CASE OF A *SAVE* OF THE
*                            PRIMARY FILE.  IF *SS* IS USED ALONE, THE
*                            CURRENT SUBSYSTEM IS FORCED ON ALL FILES 
*                            AFFECTED.  IF *SS* IS EQUIVALENCED, THE
*                            SPECIFIED SUBSYSTEM IS FORCED ON ALL 
*                            FILES AFFECTED.  A THREE-CHARACTER 
*                            ABBREVIATION MAY BE USED FOR 
*                            THE SUBSYSTEM NAME.
* 
*         BR =               BACKUP REQUIREMENT (PFDUMP). 
*                N -         NO BACKUP REQUIRED.
*                Y -         BACKUP ALWAYS REQUIRED.
*                MD -        (MEDIA DEPENDENT) BACKUP REQUIRED IF FILE
*                            RESIDES ON DISK, BUT NOT IF FILE 
*                            RESIDES ON MSF.
* 
*         PR =               PREFERRED RESIDENCE (TYPE OF DEVICE).
*                L -         FILE LOCKED TO DISK (VALIDATION REQUIRED). 
*                D -         DISK RESIDENCE PREFERRED.
*                M -         CARTRIDGE ALTERNATE STORAGE RESIDENCE
*                              PREFERRED. 
*                N -         NO PREFERENCE. 
*                T -         TAPE ALTERNATE STORAGE RESIDENCE 
*                              PREFERRED. 
* 
*         R=                 SPECIFIES TYPE OF DEVICE ON WHICH THE
*                            PERMANENT FILE RESIDES OR IS TO RESIDE.
*                            IF NOT REQUIRED FOR THE REQUESTED
*                            OPERATION, IT IS IGNORED.  THIS
*                            PARAMETER MAY ALSO HAVE BEEN SPECIFIED 
*                            ON A PREVIOUS *PACKNAM* COMMAND. 
*                            IF *R* HAS NOT BEEN SPECIFIED IN 
*                            EITHER FASHION, A SYSTEM DEFAULT (SEE
*                            *COMSPFM*) WILL BE USED FOR AUXILIARY
*                            PACK REQUESTS. 
* 
*                            DEVICE             PRUS/BLOCK  CHARS/BLOCK 
* 
*                DE          EXTENDED MEMORY    16          10240 
*                DI          844-21 PACK GROUP  107*N       68480*N 
*                DIN         N = UNIT COUNT 
*                                (1-8,BLANK=1)
*                DJ          844-41 PACK GROUP  227*N       145280*N
*                DJN         N = UNIT COUNT 
*                                (1-8,BLANK=1)
*                DK          844-21 FULL TRACK  112*N       71680*N 
*                DKN         N = UNIT COUNT 
*                                (N=1-8,BLANK=1)
*                DL          844-4X FULL TRACK  227*N       145280*N
*                DLN         N = UNIT COUNT 
*                                (N=1-8,BLANK=1)
*                DM          885 PACK GROUP     640*N       409600*N
*                DMN         N = UNIT COUNT 
*                                (1-3,BLANK=1)
*                DP          EXTENDED MEMORY    16          10240 
*                DQ          885 FULL TRACK     640*N       409600*N
*                DQN         N = UNIT COUNT 
*                                (1-3,BLANK=1)
*                DV          819 SINGLE DENSITY 620         396800
*                DW          819 DOUBLE DENSITY 1240        793600
* 
*         PN=                PACK NAME. UNIQUE SEVEN CHARACTER
*                            NAME ASSOCIATED WITH A REMOVABLE 
*                            DEVICE. USER CAN SPECIFY THE PACK NAME 
*                            OF THE DEVICE HE WISHES THE PERMANENT
*                            FILE REQUEST TO GO TO. 
* 
*         NA                 NO ABORT OPTION. IF SET PROGRAM WILL NOT 
*                            ABORT. IF FILE IS BUSY (ATTACH ONLY) 
*                            THE JOB WILL BE SUSPENDED TILL FILE IS 
*                            AVAILABLE. FOR ALL OTHER CONDITIONS, 
*                            THE ERROR MESSAGE WILL BE ISSUED AND 
*                            THE PROGRAM WILL CONTINUE.  *NA* CANNOT BE 
*                            SPECIFIED TOGETHER WITH *WB*.
* 
*         WB                 WAIT BUSY OPTION.  IF SET, PROGRAM WILL
*                            WAIT FOR BUSY FILES AND PACK MOUNTS, BUT 
*                            ALL OTHER ERRORS WILL CAUSE ABORTS.  *WB*
*                            CANNOT BE SPECIFIED TOGETHER WITH *NA*.
* 
*         RT                 REAL-TIME OPTION.  IF SET, PROGRAM WILL
*                            CONTINUE PROCESSING AFTER A STAGE HAS
*                            BEEN INITIATED FOR A NON-DISK RESIDENT 
*                            FILE, OR IF A PF UTILITY IS ACTIVE.
*                            IF NOT SET, PROGRAM WILL WAIT
*                            UNTIL STAGE IS COMPLETE OR PF UTILITY
*                            IS NO LONGER ACTIVE, AND FILE
*                            IS AVAILABLE.
* 
*         CE                 CLEAR ERROR STATUS IN THE FILES
*                            CATALOG ENTRY. THIS OPTION IS ONLY 
*                            PROCESSED BY *CHANGE*, AND CANNOT BE 
*                            SPECIFIED TOGETHER WITH THE *CE* OPTION. 
* 
*         CP                 RESET THE CHARGE AND PROJECT NUMBERS IN
*                            THE FILE-S CATALOG ENTRY TO THE CURRENT
*                            ACTIVE CHARGE AND PROJECT NUMBERS.  THIS 
*                            OPTION IS ONLY PROCESSED BY *CHANGE*, AND
*                            CANNOT BE SPECIFIED TOGETHER WITH THE *CP* 
*                            PARAMETER. 
* 
*         S=                 SPACE DESIRED.  THIS SPECIFIES SPACE 
*                            DESIRED, IN PRUS, FOR ALLOCATION.  IF
*                            SPECIFIED, DEVICE(OF DEVICE TYPE SPECIFIED 
*                            BY *R*) WILL BE ASSIGNED IF THIS MANY
*                            PRUS ARE AVAILABLE FOR ALLOCATION.  NOTE - 
*                            SPACE IS NOT RESERVED BY SPECIFING THIS
*                            PARAMETER. 
* 
*         ND                 DO NOT DROP NON-PRIMARY LOCAL FILES AFTER
*                            PROCESSING FUNCTION. 
* 
*         AC=                ALTERNATE CATLIST PERMISSION.
*                N -         ALTERNATE USERS ARE NOT PERMITTED TO 
*                            CATLIST THE FILE.
*                Y -         ALTERNATE USERS ARE PERMITTED TO CATLIST 
*                            THE FILE.
* 
* 
*         MULTIPLE FILE REQUESTS
* 
*         UP TO 20 FILES MAY BE ACCESSED WITH A SINGLE CALL BY USING
*         THE FOLLOWING COMMAND FORMAT.  IF SPECIAL OPTIONS ARE 
*         SPECIFIED, THEY APPLY TO ALL FILES. 
*         NOTE - MULTIPLE FILE REQUESTS ARE NOT PERMITTED ON
*                *NEW* OR *OLD* FUNCTIONS.
* 
*                PFCMD (LFNN = PFNN, LFN2, . . ., LFNN = PFNN) / KW1 =
*                 OPTION1, . . ., KWN = OPTIONN)
          SPACE  4,40 
***       DAYFILE MESSAGES. 
* 
* 
*         * ERROR IN ALTERNATE CATLIST PERMISSION.* = ALTERNATE CATLIST 
*                PERMISSION SPECIFIED WAS NOT RECOGNIZED. 
* 
*         * ERROR IN ARGUMENT.* = THE COMMAND IS SYNTACTICALLY
*                INCORRECT, OR AN INCORRECT PARAMETER WAS ENTERED 
*                FOR THE COMMAND. 
* 
*         * ERROR IN BACKUP REQUIREMENT.* = BACKUP REQUIREMENT
*                SPECIFIED WAS NOT RECOGNIZED.
* 
*         * ERROR IN EXPIRATION DATE.* = THE VALUE SPECIFIED
*                FOR *XD* WAS NOT A VALID DATE, OR THE VALUE
*                SPECIFIED FOR *XT* WAS GREATER THAN 4095.
* 
*         * ERROR IN FILE CATEGORY.* = FILE CATEGORY SPECIFIED WAS
*                NOT RECOGNIZED.
* 
*         * ERROR IN MODE.* = MODE SPECIFIED WAS NOT RECOGNIZED.
* 
*         * ERROR IN PREFERRED RESIDENCE.* = PREFERRED RESIDENCE
*                SPECIFIED WAS NOT RECOGNIZED.
* 
*         * ERROR IN RESIDENCE.* = RESIDENCE PARAMETER IS INCORRECT.
* 
*         * ERROR IN SUBSYSTEM.* = SUBSYSTEM SPECIFIED WAS
*                NOT RECOGNIZED.
* 
*         * INCORRECT PASSWORD.* = AN INCORRECT PASSWORD WAS ENCOUNTERD 
*                UPON SECURE ENTRY. 
* 
*         * NO PRIMARY FILE.* = AN IMPLIED PRIMARY FILE OPERATION 
*                (DEFAULT CALL) WAS MADE, BUT NO PRIMARY FILE WAS 
*                FOUND. 
* 
*         * PARAMETERS CE AND CP ARE MUTUALLY EXCLUSIVE.* = THE 
*                PARAMETERS *CE* AND *CP* CANNOT BE BOTH BE INCLUDED
*                ON THE SAME *CHANGE* COMMAND.
* 
*         * UNKNOWN ACCESS LEVEL NAME.* = THE VALUE SPECIFIED FOR 
*                THE *AL* PARAMETER WAS NOT VALID.  SEE *COMSMLS* 
*                FOR A LIST OF VALID ACCESS LEVEL NAMES.
* 
*         NOTE - SEE *PFM* DOCUMENTATION FOR ADDITIONAL ERROR MESSAGES. 
          SPACE  4,10 
***       OPERATOR MESSAGES.
* 
* 
*         NONE. 
          SPACE  4
*CALL     COMCMAC 
*CALL     COMCCMD 
*CALL     COMSLFD 
*CALL     COMSMLS 
*CALL     COMSMSP 
*CALL     COMSPFM 
*CALL     COMSREM 
*CALL     COMSTCM            (230)
          SPACE  4
**        PROGRAM CONSTANTS.
  
  
 NFILES   EQU    21          MAX NUMBER OF FILES + 1 IN ONE COMMAND 
 NPC=     EQU    0           FORCE OPERATING SYSTEM PARAMETER FORMAT
 BUFL     EQU    NWCE+2      BUFFER LENGTH
 SDM=     EQU    0           SUPPRESS DAYFILE MESSAGE 
 SSM=     EQU    0           SECURE SYSTEM MEMORY 
 CCPK     EQU    13B         PACKNAME COMMAND 
 CCNW     EQU    14B         NEW COMMAND
 CCOL     EQU    15B         OLD COMMAND
 CCDS     EQU    16B         DROPDS COMMAND 
 GFILES   EQU    40B         NUMBER OF ENTRIES IN GETFNT BUFFER 
 GLEN     EQU    GFILES*2    LENGTH OF *GETFNT* BUFFER
*                            NOTE - SHOULD CONSIDER VALUE OF *RFL=* 
 PBUFL    EQU    100         *PACKNAM* STRING BUFFER LENGTH 
          TITLE  PARAMETER PROCESSING.
**        PFILES - PROCESS REQUEST. 
  
  
          ORG    125B 
 FET      SPACE  4
 FWA      BSS    0           DEFINE LOAD ADDRESS
  
 F        BSS    0
 FILE     FILEB  IBUF,BUFL,(FET=CFLM) 
 .F       BSS    0
          ORG    F+1         SUPPRESS ADDRESS ON *PFM* ERRORS 
          VFD    13/0,1/1,22/0,6/CFLM-5,18/IBUF 
          ORG    .F 
  
 I        BSS    0
 INPUT    FILEB  IBUF,BUFL,FET=6
  
 O        BSS    0
 OUTPUT   FILEB  PMSG,PMSGL+1,FET=6 
  
 ERR      SPACE  4,10 
**        ERR - PROCESS ARGUMENT ERROR. 
* 
*         MACROS ABORT, MESSAGE.
  
  
 ERR      BSS    0           ENTRY
          MESSAGE  (=C* ERROR IN ARGUMENT.*)
 ERR1     ABORT 
 PFL      SPACE  4,10 
**        PFL - PROCESS PERMANENT FILE REQUEST. 
* 
*         ENTRY  (B7) = COMMAND CODE. 
* 
*         USES   X - ALL. 
*                A - 1, 2, 4, 5, 6. 
*                B - 1, 2, 3, 4, 5, 6, 7. 
* 
*         CALLS  ARG, CTJ, ESP, IDF, PAC, PAL, PBR, PCT, PDC, PMD,
*                PNA, PPX, PRE, PRT, PSS. 
* 
*         MACROS CONTROL, MESSAGE.
  
  
 PFL      SUBR               ENTRY/EXIT 
          SX6    B7+         SAVE COMMAND CODE
          SB1    1
          SA6    PFLA 
          RJ     IDF         ISSUE DAYFILE MESSAGE
          SA1    ACTR        ARGUMENT COUNT 
          SA2    PFLA        GET COMMAND CODE 
          SB4    X1 
          SB7    X2 
          SB6    60          SET SHIFT COUNT FOR COMMAND
          SB6    B6-B7
          RJ     PDC         PROCESS DEFAULT CALL 
          ZR     B2,PFL7     IF DEFAULT AND PRIMARY FOUND 
  
*         PROCESS FILE NAME LIST. 
  
 PFL1     SA4    ARGR 
          MX0    42 
          SB2    B0          CLEAR FILE COUNT 
          SX3    PRM17       SET MASK FOR *LFN=PFN* SYNTAX
 PFL2     BX6    X0*X4
          SX7    X4-1R=      CHECK SEPARATOR
          SX1    B0          CLEAR PF NAME
          ZR     X6,ERR      IF BLANK NAME
          SA6    B2+TSFN     SET SYSTEM FILE NAME 
          NZ     X7,PFL3     IF NOT *=* 
          SB4    B4-B1       DECREMENT ARG. COUNT 
          SA4    A4+B1       READ NEXT ARG. 
          ZR     B4,ERR      IF NO ARG. 
          BX1    X0*X4
          ZR     X1,ERR      IF BLANK ARG.
          SX7    X4-1R= 
          ZR     X7,ERR      IF *LFN1=PFN1=*
          LX7    X3,B6
          PL     X7,ERR      IF *LFN=PFN* SYNTAX NOT ALLOWED ON COMMAND 
 PFL3     BX6    X1          SET PF NAME
          SA6    B2+TPFN
          SX7    B2          SAVE INDEX OF LAST FILE
          SA7    PFLB 
          SB2    B2+B1       ADVANCE FILE COUNT 
          SB5    B2-NFILES
          GT     B5,ERR      IF TOO MANY FILES
          SB3    X4-1R/      CHECK FOR SPECIAL ARG. 
          SB4    B4-B1       DECREMENT ARG. COUNT 
          SX6    B0          CLEAR NEXT FILE NAME 
          SA6    B2+TSFN
          SA4    A4+B1       READ NEXT ARG. 
          EQ     B3,PFL4     IF SPECIAL ARG.
          NZ     B4,PFL2     LOOP FOR NEXT ARG. 
          EQ     PFL7        PROCESS SPECIAL PARAMETERS 
  
*         PROCESS SPECIAL ARGUMENTS.
  
 PFL4     SB5    TARG        ARGUMENT TABLE 
          RJ     ARG
          NZ     X1,ERR      IF ERROR 
  
*         DETERMINE IF PARAMETERS ARE LEGAL FOR COMMAND SPECIFIED.
  
          SB2    TPARL
 PFL6     SB2    B2-B1
          LT     B2,PFL7     IF NO MORE PARAMETERS
          SA1    B2+TPAR     READ ARGUMENT VALIDATION 
          SA2    B2+TARG
          SA2    X2 
          ZR     X2,PFL6     IF ARGUMENT NOT ENTERED
          LX1    X1,B6
          NG     X1,PFL6     IF PARAMETER ALLOWED 
          EQ     ERR         ISSUE ERROR
  
*         PROCESS SECURE PASSWORD ENTRY.
  
 PFL7     SA5    PWD
          SB2    X5 
          SB2    B2-B1
          NZ     B2,PFL8     IF *PW* NOT ENTERED
          MX0    42 
          BX5    X0*X5
          NZ     X5,PFL8     IF PASSWORD NOT ENTERED SECURELY 
          RJ     ESP         ENTER SECURE PASSWORD
          SA6    PWD         SET PASSWORD 
  
*         PROCESS REMAINING PARAMETERS. 
  
 PFL8     MX0    42 
          RJ     PAC         PROCESS ALTERNATE CATLIST
          RJ     PAL         PROCESS ACCESS LEVEL 
          RJ     PBR         PROCESS BACKUP REQUIREMENT 
          RJ     PCT         PROCESS CATEGORY 
          SA5    MODE        PROCESS MODE 
          RJ     PMD
          RJ     PNA         PROCESS *NO ABORT*/*WAIT BUSY* PARAMETERS
          RJ     PPX         PROCESS PASSWORD/PERMIT EXPIRATION DATE
          RJ     PRE         PROCESS PREFERRED RESIDENCE
          RJ     PRT         PROCESS *REAL-TIME* PARAMETER
          RJ     PSS         PROCESS SUBSYSTEM
          RJ     PRD         PROCESS RESIDENCE DEFINITION 
          EQ     PFLX        RETURN 
  
  
 PFLA     CON    0           COMMAND CODE 
 PFLB     CON    0           INDEX OF LAST FILE NAME
 PNC      SPACE  4,15 
**        PNC - PROCESS NEXT COMMAND. 
* 
*         READ AHEAD ON COMMAND FILE, AND PROCESS 
*         THE NEXT COMMAND IF IT IS A *PFILES* CALL.
* 
*         EXIT   TO FUNCTION PROCESSOR. 
* 
*         USES   X - 0, 1, 2, 3, 5, 6.
*                A - 1, 2, 5, 6.
*                B - 2, 3.
* 
*         CALLS  CTJ. 
* 
*         MACROS CONTROL, ENDRUN, MESSAGE, RECALL.
  
  
 PNC      BSS    0           ENTRY
          SA1    JOPR        CHECK FOR *DIS* CALL 
          LX1    59-19
          NG     X1,PNC4     IF *DIS* CALL
          CONTROL CCDR,RSS
          SA5    CCDR 
          ZR     X5,PNC4     IF NO COMMAND PENDING
          SA1    ACTR        READ PROGRAM NAME
          SA2    FWA-1       FIRST ENTRY NAME 
          MX0    42 
          BX1    X0*X1
 PNC1     NG     X2,PNC4     IF END OF ENTRY POINT NAMES
          BX3    X0*X2
          BX6    X3-X1
          SB2    X2 
          SA2    A2-B1
          NZ     X6,PNC1     IF NO MATCH
          CONTROL CCDR       ADVANCE COMMAND
          SA1    PGNR 
          SX6    B0+
          ZR     X1,ERR1     IF COMMAND LIMIT 
          SB3    PARML       CLEAR PARAMETERS 
 PNC2     SA6    PARM-1+B3
          SB3    B3-B1
          NZ     B3,PNC2     IF MORE PARAMETERS TO CLEAR
          RECALL F
          SB3    CFLM-CFCN
 PNC3     SA6    F+CFCN-1+B3 CLEAR *PFM* FET PARAMETERS 
          SB3    B3-B1
          NZ     B3,PNC3     IF MORE WORDS IN FET 
          SA1    F+1         CLEAR *EP*, *RT* AND *SP* BITS 
          SX6    61B
          LX6    39-0 
          BX6    -X6*X1 
          SA6    A1 
          SA2    F+4         CLEAR *AL* FIELD IN FET
          MX0    -6 
          LX0    36-0 
          BX6    X0*X2
          SA6    A2 
          JP     B2          PROCESS CALL 
  
 PNC4     RJ     CTJ         CHECK FOR *TXOT* JOB 
          ZR     X2,PNC5     IF *TXOT* JOB
          MESSAGE (=C*PF REQUEST COMPLETE.*),1
          EQ     PNC6        END
  
 PNC5     SA1    ERRFLG 
          NZ     X1,PNC6     IF ERROR ENCOUNTERED 
          MESSAGE  ZR,1      CLEAR *MS1W* 
 PNC6     ENDRUN
          SPACE  4
*         TABLES. 
  
  
 ZR       CON    0           ZERO WORD FOR ARG. DEFAULT 
 NZ       CON    1           NON-ZERO WORD FOR ARG. DEFAULT 
 CE       CON    SRCE        CLEAR ERROR FUNCTION 
 CPN      CON    SRCP        RESET CHARGE/PROJECT NUMBERS 
  
  
 CSV      DECMIC CCSV-1 
 CGT      DECMIC CCGT-1 
 CPG      DECMIC CCPG-1 
 CPM      DECMIC CCPM-1 
 CRP      DECMIC CCRP-1 
 CAP      DECMIC CCAP-1 
 CDF      DECMIC CCDF-1 
 CAT      DECMIC CCAT-1 
 CCG      DECMIC CCCG-1 
 CPK      DECMIC CCPK-1 
 CNW      DECMIC CCNW-1 
 COL      DECMIC CCOL-1 
 CDS      DECMIC CCDS-1 
  
  
 PRM1     SET    1S"CSV"+1S"CGT"+1S"CPG"+1S"CRP"+1S"CAP"+1S"CDF"+1S"CAT"
,+1S"CCG"+1S"COL"     PASSWORD
 PRM2     SET    1S"CSV"+1S"CRP"+1S"CDF"+1S"CAT"+1S"CCG"    MODE
 PRM3     SET    1S"CSV"+1S"CDF"+1S"CCG"            FILE CATEGORY 
 PRM4     SET    1S"CSV"+1S"CGT"+1S"CDF"+1S"CPG"+1S"CPM"+1S"CRP"+1S"CAP"
,+1S"CAT"+1S"CCG"+1S"COL"+1S"CDS"   NO ABORT, WAIT BUSY 
 PRM5     SET    1S"CGT"+1S"CPG"+1S"CRP"+1S"CAP"+1S"CAT"+1S"COL"   UN 
 PRM6     SET    1S"CSV"+1S"CGT"+1S"CPG"+1S"CPM"+1S"CRP"+1S"CAP"+1S"CDF"
,+1S"CAT"+1S"CCG"+1S"CPK"+1S"COL"+1S"CDS"   PACKNAME, RESIDENCE 
 PRM7     SET    1S"CDF"     SPACE
 PRM8     SET    1S"CNW"+1S"COL"     NO DROP
 PRM9     SET    1S"CGT"+1S"CSV"+1S"CPG"+1S"CRP"     NO ARGUMENTS 
 PRM10    SET    1S"CCG"     CLEAR ERROR STATUS 
 PRM11    SET    1S"CSV"+1S"CCG"  SUBSYSTEM 
 PRM12    SET    1S"CDF"+1S"CCG"+1S"CSV"  BACKUP REQUIREMENT
 PRM13    SET    1S"CSV"+1S"CDF"+1S"CCG"  PREFERRED RESIDENCE 
 PRM14    SET    1S"CGT"+1S"CAT"+1S"COL"  REAL TIME PARAMETER 
 PRM15    EQU    1S"CCG"+1S"CDF"+1S"CSV"+1S"CPM"  PASSWORD/PERMIT EXP 
 PRM16    EQU    1S"CDF"+1S"CSV"       FILE ACCESS LEVEL
 PRM17    EQU    1S"CSV"+1S"CGT"+1S"CPM"+1S"CRP"+1S"CDF"+1S"CAT"+1S"CCG"
,+1S"COL"+1S"CDS"                      *LFN=PFN* SYNTAX 
 PRM18    SET    1S"CSV"+1S"CDF"+1S"CCG"  ALTERNATE CATLIST PERMISSION
 PRM19    SET    1S"CCG"     RESET CHARGE/PROJECT NUMBERS 
  
  
*         NOTE - ENTRIES IN THE NEXT TWO TABLES MUST BE IN
*         THE SAME ORDER IN EACH TABLE. 
  
  
*         TABLE OF LEGAL PARAMETERS FOR COMMANDS. 
  
 TPAR     BSS    0
          VFD    42/0,18/PRM8   NO DROP 
          VFD    42/0,18/PRM1   PASSWORD
          VFD    42/0,18/PRM2   MODE
          VFD    42/0,18/PRM3   FILE CATEGORY 
          VFD    42/0,18/PRM6   RESIDENCE 
          VFD    42/0,18/PRM5   USER NAME 
          VFD    42/0,18/PRM6   PACKNAME
          VFD    42/0,18/PRM4   NO ABORT
          VFD    42/0,18/PRM4   WAIT BUSY 
          VFD    42/0,18/PRM7   SPACE 
          VFD    42/0,18/PRM10  CLEAR ERROR STATUS
          VFD    42/0,18/PRM11  SUBSYSTEM 
          VFD    42/0,18/PRM12  BACKUP REQUIREMENT
          VFD    42/0,18/PRM13  PREFERRED RESIDENCE 
          VFD    42/0,18/PRM14  REAL-TIME PARAMETER 
          VFD    42/0,18/PRM15  PASSWORD/PERMIT EXPIRATION DATE 
          VFD    42/0,18/PRM15  PASSWORD/PERMIT EXPIRATION TERM 
          VFD    42/0,18/PRM16  FILE ACCESS LEVEL 
          VFD    42/0,18/PRM18  ALTERNATE CATLIST PERMISSION
          VFD    42/0,18/PRM19  RESET CHARGE/PROJECT NUMBERS
 TPARL    EQU    *-TPAR         LIMIT OF PARAMETERS 
  
  
*         TABLE OF KEYWORD/PARAMETER EQUIVALENCES.
  
 TARG     BSS    0
 ND       ARG    -NZ,NODROP 
 PW       ARG    NZ,PWD 
 M        ARG    NZ,MODE
 CT       ARG    NZ,CTG 
 R        ARG    ZR,RES 
 UN       ARG    ZR,USNM
 PN       ARG    ZR,PKNM,400B 
 NA       ARG    -NZ,NABT 
 WB       ARG    -NZ,WBUSY
 S        ARG    ZR,SPACE 
 CE       ARG    -CE,CLRE 
 SS       ARG    NZ,SUBSYS
 BR       ARG    NZ,BREQ
 PR       ARG    NZ,PRES
 RT       ARG    -NZ,RTIME
 XD       ARG    NZ,PXD,400B
 XT       ARG    NZ,PXT,400B
 AL       ARG    ZR,FAL,400B
 AC       ARG    ZR,ALCT
 CP       ARG    -CPN,CPNG
          ARG 
  
 TARGP    BSS    0           ARGUMENT TABLE FOR *PACKNAM* COMMAND 
 PN       ARG    ZR,PKNM
 R        ARG    ZR,RES 
          ARG 
 TARGPL   EQU    *-TARGP-1
          SPACE  4,10 
**        PARAMETER AREA. 
  
 PARM     BSS    0
 NODROP   CON    0           NO DROP
 PWD      CON    0           PASSWORD 
 MODE     CON    0           FILE MODE
 CTG      CON    0           FILE CATEGORY
 RES      CON    0           RESIDENCE OF FILE
 USNM     CON    0           USER NAME
 PKNM     CON    0           PACKNAME 
 NABT     CON    0           NO ABORT OPTION
 WBUSY    CON    0           WAIT BUSY OPTION 
 SPACE    CON    0           SPACE
 CLRE     CON    0           CLEAR ERROR STATUS 
 SUBSYS   CON    0           SUBSYSTEM
 BREQ     CON    0           BACKUP REQUIREMENT 
 PRES     CON    0           PREFERRED RESIDENCE
 ALCT     CON    0           ALTERNATE CATLIST PERMISSION 
 RTIME    CON    0           REAL-TIME PARAMETER
 PXD      CON    0           PASSWORD/PERMIT EXPIRATION DATE
 PXT      CON    0           PASSWORD/PERMIT EXPIRATION TERM
 FAL      CON    0           FILE ACCESS LEVEL
 CPNG     CON    0           RESET CHARGE/PROJECT NUMBERS 
 SREQ     CON    0           SPECIAL REQUEST SUBFUNCTION FOR *CHANGE* 
 ERRFLG   CON    0           NONZERO IF *PFM* ERROR DETECTED
 PARML    EQU    *-PARM 
  
*         MESSAGE FOR SECURE ENTRY OF PASSWORD. 
  
PMSG      DATA   10H"EM"  PASSWO
          DATA   10HRD:"NL"  (((
          DATA   10H((((("CR"  )
          DATA   10H)))))))"CR" 
          DATA   10H MMMMMMMM 
          DATA   10H"CR"  QQQQQQ
          DATA   10HQQ"CR"  XXXX
          DATA   10HXXXX"CR""CB""EL"
 PMSGL    EQU    *-PMSG 
          TITLE  FUNCTION PROCESSORS. 
 APPEND   SPACE  4,15 
***       APPEND (P,F1,F2,F3,...,FN/PW,UN,PN,R,NA,WB) 
* 
*         APPEND FILES F1...FN TO PERMANENT FILE. 
*         EACH FILE *FN* IS APPENDED AT EOI OF *P*. 
* 
*                P = PERMANENT FILE TO BE APPENDED TO.
*                FN = FILES TO BE APPENDED. 
*                PW = FILE PASSWORD.
*                UN = USER NAME.
*                PN = PACK NAME.
*                R = RESIDENCE. 
*                NA = NO ABORT IF ERROR ENCOUNTERED.
*                WB = WAIT FOR PACK MOUNT.
  
  
 APPEND   BSS    0           ENTRY
          SB7    CCAP        SET FUNCTION CODE
          RJ     PFL         PROCESS PERMANENT FILE REQUEST 
          SA1    TSFN        SET PERMANENT FILE NAME
          BX6    X1 
          SA6    F+CFPN 
          SB3    B1          SET TABLE COUNTER
          SA5    B3+TSFN
          ZR     X5,ERR      IF NO LOCAL FILE NAME
 APP1     SX6    B1          SET LOCAL FILE NAME IN FET 
          BX6    X6+X5
          SA6    F
          APPEND F,,USNM,PWD,PKNM,RES 
          RJ     CES         CHECK ERROR STATUS 
          SB3    B3+B1       ADVANCE POINTER
          SA5    B3+TSFN
          NZ     X5,APP1     IF ANOTHER FILE
          EQ     PNC         PROCESS NEXT COMMAND 
 ATTACH   SPACE  4,25 
***       ATTACH (F=P/UN,PW,M,PN,R,NA,WB,RT)
* 
*         ATTACH PERMANENT FILE FOR DIRECT ACCESS USE.
* 
*         AN ATTEMPT WILL BE MADE FIRST TO ATTACH EACH FILE WITH THE
*         *RT* BIT SET IN THE FET.  FOR ANY FILE FOR WHICH STAGING WAS
*         INITIATED OR A PF UTILITY WAS ACTIVE, ANOTHER *ATTACH* WILL 
*         BE PERFORMED WITHOUT THE *RT* BIT SET TO ACTUALLY ATTACH
*         THE FILE. 
* 
*                F = WORKING FILE NAME
*                P = PERMANENT FILE NAME
*                UN = USER NAME.
*                PW = FILE PASSWORD 
*                M = MODE OF ACCESS 
*                PN = PACK NAME.
*                R = RESIDENCE. 
*                NA = NO ABORT IF ERROR ENCOUNTERED.  WAIT FOR BUSY 
*                            FILE UNTIL AVAILABLE.
*                WB = WAIT FOR PACK MOUNT AND FOR BUSY FILE.
*                RT = RETURN CONTROL AFTER STAGE INITIATED OR IF
*                            PF UTILITY IS ACTIVE.  DO NOT
*                            WAIT FOR FILE TO BE AVAILABLE. 
* 
*                DEFAULT VALUES.
*                            M = READ.
*                            PW = 0.
*                            NA = 0.
  
  
 ATTACH   BSS    0           ENTRY
          SB7    CCAT        SET FUNCTION CODE
          RJ     PFL         PROCESS PERMANENT FILE REQUEST 
          SA1    PFLB        GET INDEX OF LAST FILE NAME
          SB4    X1+
 ATT1     SB3    B0+         GET FIRST FILE NAME
 ATT2     SA5    B3+TSFN
          ZR     X5,ATT5     IF PREVIOUS *ATTACH* OF THIS FILE WORKED 
          SX6    B1          PROCESS FILE NAME
          BX6    X5+X6
          SA6    F
 ATT3     ATTACH F,B3+TPFN,USNM,PWD,MODE,PKNM,RES 
          RJ     CES         CHECK ERROR STATUS 
          ZR     X6,ATT6     IF FILE BUSY 
          ZR     X7,ATT4     IF WAITING STAGING, UTILITY OR INTERLOCK 
          SX6    B0+         CLEAR FILE NAME
          SA6    B3+TSFN
          EQ     ATT5        CHECK FOR MORE FILES 
  
 ATT4     SX6    B1+         SET FLAG TO INDICATE RETRY NEEDED
          SA6    ATTA 
 ATT5     SB3    B3+1        CHECK FOR MORE FILES 
          LE     B3,B4,ATT2  IF MORE FILES TO PROCESS 
          SA1    ATTA 
          ZR     X1,PNC      IF NO RETRY NEEDED 
          BX6    X6-X6       CLEAR FLAG 
          SA6    A1 
          SA1    RTIME
          NZ     X1,PNC      IF *RT* PARAMETER SPECIFIED
          SA1    F+1         CLEAR REAL-TIME PROCESSING BIT 
          MX6    1
          LX6    43-59
          BX6    X1-X6
          SA6    A1 
          EQ     ATT1        RETRY WITH *RT* CLEARED
  
 ATT6     ROLLOUT  ZR        ROLL OUT UNTIL FILE AVAILABLE
          EQ     ATT3        RETRY AFTER ROLLED IN
  
  
 ATTA     CON     0          NONZERO IF RETRY WITHOUT *RT* REQUIRED 
 CHANGE   SPACE  4,20 
***       CHANGE (N=P/PW,CT,M,BR,PR,SS,PN,R,NA,WB,CE,XT,AC,CP)
* 
*         CHANGE CATALOG ENTRY FOR PERMANENT FILE.
* 
*                N = NEW FILE NAME. 
*                P = OLD PERMANENT FILE NAME. 
*                PW = FILE PASSWORD.
*                CT = FILE CATEGORY.
*                M = MODE OF ACCESS ALLOWED FOR FILE. 
*                BR = BACKUP REQUIREMENT. 
*                PR = PREFERRED RESIDENCE.
*                SS = SUBSYSTEM.
*                PN = PACK NAME.
*                R = RESIDENCE. 
*                NA = NO ABORT IF ERROR ENCOUNTERED.
*                WB = WAIT FOR PACK MOUNT.
*                CE = CLEAR ERROR STATUS. 
*                XT = PASSWORD EXPIRATION DATE OR TERM. 
*                AC = ALTERNATE CATLIST PERMISSION. 
*                CP = RESET CHARGE/PROJECT NUMBERS IN PFC.
  
  
 CHANGE   BSS    0           ENTRY
          SB7    CCCG        SET FUNCTION CODE
          MX6    42          SET PWD DEFAULT TO ALL 7S
          SA6    PWD
          RJ     PFL         PROCESS PERMANENT FILE REQUEST 
          RJ     PSR         PROCESS SPECIAL REQUEST SUBFUNCTION
          SB3    B0 
          SA5    B3+TSFN
 CHG1     SB4    A5 
          SA1    B3+TPFN
          NZ     X1,CHG2     IF NAME CHANGE 
          BX1    X5          SET PERMANENT FILE NAME
          SB4    B0          SET NO NEW NAME
 CHG2     CHANGE F,X1,B4,PWD,,CTG,MODE,PKNM,RES,,SREQ,SUBSYS,BREQ,PRES,P
,XT,ALCT
          RJ     CES         CHECK ERROR STATUS 
          SB3    B3+B1
          SA5    B3+TSFN
          NZ     X5,CHG1     IF ANOTHER FILE
          EQ     PNC         PROCESS NEXT COMMAND 
 DEFINE   SPACE  4,30 
***       DEFINE (F=P/PW,CT,M,BR,PR,PN,R,NA,WB,XT,AL,AC)
* 
*         DEFINE PERMANENT FILE FOR DIRECT ACCESS USAGE.
* 
*                F = WORKING FILE NAME. 
*                P = PERMANENT FILE NAME. 
*                PW = FILE PASSWORD 
*                CT = FILE CATEGORY.
*                M = MODE OF ACCESS ALLOWED FOR SEMI-PRIVATE OR LIBRARY 
*                BR = BACKUP REQUIREMENT. 
*                PR = PREFERRED RESIDENCE.
*                PN = PACK NAME.
*                R = DEVICE TYPE FILE IS TO BE ASSIGNED TO. 
*                S = SPACE REQUIRED ON DEVICE (PRUS-DECIMAL). 
*                NA = NO ABORT IF ERROR ENCOUNTERED.
*                WB = WAIT FOR PACK MOUNT.
*                XT = PASSWORD EXPIRATION DATE OR TERM. 
*                AL = FILE ACCESS LEVEL.
*                AC = ALTERNATE CATLIST PERMISSION. 
* 
*                DEFAULT VALUES.
*                            PW = 0.
*                            CT = PRIVATE.
*                            R = 0 (USES MASTER DEVICE OR DEVICE
*                                FILE CURRENTLY RESIDES ON).
*                            M = WRITE. 
*                            S = 0. 
*                            NA = 0.
*                            AC = NO. 
  
  
 DEFINE   BSS    0           ENTRY
          SB7    CCDF        SET FUNCTION CODE
          RJ     PFL         PROCESS PERMANENT FILE REQUEST 
          SA5    SPACE       CONVERT SPACE PARAMETER
          ZR     X5,DEF1     IF NOT SPECIFIED 
          SB7    B1          SET DECIMAL DEFAULT
          RJ     DXB
          NZ     X4,ERR      IF ERROR 
          SA6    F+CFOU 
 DEF1     SB3    B0 
          SA5    B3+TSFN     SET SYSTEM FILE NAME 
 DEF2     SX6    B1          SET STATUS COMPLETE
          BX6    X5+X6
          SA6    F
          DEFINE F,B3+TPFN,PWD,,RES,CTG,MODE,PKNM,,,BREQ,PRES,,PXT,FAL,A
,LCT
          RJ     CES         CHECK ERROR STATUS 
          SB3    B3+B1       ADVANCE TO NEXT FILE 
          SA5    B3+TSFN
          NZ     X5,DEF2     IF ANOTHER FILE TO PROCESS 
          EQ     PNC         PROCESS NEXT COMMAND 
DROPDS    SPACE  4,15 
***       DROPDS(F=P/PN,R,NA,WB)
* 
*         DROP DISK SPACE FOR FILE WITH ALTERNATE STORAGE COPY. 
*         RETURN LOCAL FILE IF PRESENT. 
* 
*                F = LOCAL FILE NAME. 
*                P = PERMANENT FILE NAME. 
*                PN = PACK NAME.
*                R = RESIDENCE. 
*                NA = NO ABORT IF ERROR ENCOUNTERED.
*                WB = WAIT FOR PACK MOUNT.
  
  
 DROPDS   BSS    0           ENTRY
          SB7    CCDS 
          RJ     PFL         PROCESS PERMANENT FILE REQUEST 
          SB3    B0 
          SA5    B3+TSFN
 DRO1     SX6    B1 
          BX6    X5+X6
          SA6    F
          RETURN F,R
          SA1    B3+TPFN     SET PERMANENT FILE NAME (IF SPECIFIED) 
          BX6    X1 
          SA6    X2+CFPN
          DROPDS F
          RJ     CES         CHECK ERROR STATUS 
          SB3    B3+B1       ADVANCE TO NEXT FILE 
          SA5    B3+TSFN
          NZ     X5,DRO1     IF ANOTHER FILE TO PROCESS 
          EQ     PNC         PROCESS NEXT COMMAND 
 GET      SPACE  4,20 
***       GET (F=P/PW,UN,PN,R,RT,NA,WB) 
* 
*         RETRIEVE COPY OF INDIRECT ACCESS PERMANENT FILE.
* 
*         AN ATTEMPT WILL BE MADE FIRST TO GET EACH FILE WITH THE 
*         *RT* BIT SET IN THE FET.  FOR ANY FILE FOR WHICH STAGING WAS
*         INITIATED OR A PF UTILITY WAS ACTIVE, ANOTHER *GET* WILL BE 
*         PERFORMED WITHOUT THE *RT* BIT SET TO ACTUALLY GET THE FILE.
* 
*                F = WORKING FILE NAME. 
*                P = PERMANENT FILE NAME
*                PW = FILE PASSWORD 
*                UN = USER NAME.
*                PN = PACK NAME.
*                R = RESIDENCE. 
*                RT = RETURN CONTROL AFTER STAGE INITIATED OR IF
*                     A PF UTILITY IS ACTIVE. DO NOT
*                     WAIT FOR FILE TO BE AVAILABLE.
*                NA = NO ABORT IF ERROR ENCOUNTERED.
*                WB = WAIT FOR PACK MOUNT.
  
  
 GET      BSS    0           ENTRY
          SB7    CCGT        SET FUNCTION CODE
          RJ     PFL         PROCESS PERMANENT FILE REQUEST 
          RJ     GPN         GET PRIMARY FILE NAME
          SA1    PFLB        GET INDEX OF LAST FILE NAME
          SB4    X1+
 GET1     SB3    B0+         GET FIRST FILE NAME
 GET2     SA5    B3+TSFN     SYSTEM FILE NAME 
          ZR     X5,GET6     IF PREVIOUS *GET* OF THIS FILE WORKED
          SX6    B1 
          BX6    X6+X5
          SA6    F
          SA2    GETTAB+1    CHECK FOR PRIMARY FILE 
          BX2    X5-X2
          NZ     X2,GET3     IF NOT PRIMARY FILE
          OLD    F,B3+TPFN,USNM,PWD,PKNM,RES
          EQ     GET4        CHECK FOR NEXT FILE
  
 GET3     GET    F,B3+TPFN,USNM,PWD,PKNM,RES
 GET4     RJ     CES         CHECK ERROR STATUS 
          ZR     X7,GET5     IF WAITING STAGING, UTILITY OR INTERLOCK 
          SX6    B0+         CLEAR FILE NAME
          SA6    B3+TSFN
          EQ     GET6        ADVANCE TO NEXT FILE 
  
 GET5     SX6    B1+         SET FLAG TO INDICATE THAT RETRY NEEDED 
          SA6    GETA 
 GET6     SB3    B3+1        ADVANCE TO NEXT FILE 
          LE     B3,B4,GET2  IF ANOTHER FILE TO PROCESS 
          SA1    GETA 
          ZR     X1,PNC      IF NO RETRY NEEDED 
          BX6    X6-X6       CLEAR FLAG 
          SA6    A1 
          SA1    RTIME
          NZ     X1,PNC      IF *RT* PARAMETER SPECIFIED
          SA1    F+1         CLEAR REAL-TIME PROCESSING BIT 
          MX6    1
          LX6    43-59
          BX6    X1-X6
          SA6    A1 
          EQ     GET1        RETRY WITH *RT* CLEARED
  
  
 GETA     CON    0           NONZERO IF RETRY WITHOUT *RT* REQUIRED 
 NEW      SPACE  4,10 
***       NEW (F/ND)
* 
*         CREATE A NEW PRIMARY FILE. ANY CURRENT WORKING FILE 
*         NAMED F IS RETURNED, AND A NEW (EMPTY) FILE F CREATED 
*         AND MADE USER S NEW PRIMARY FILE. 
* 
*                F = NEW PRIMARY FILE NAME. 
*                ND = IF NOT SPECIFIED, ALL WORKING FILES WILL BE 
*                     RETURNED (EXCEPT PRIMARY).
  
  
 NEW      BSS    0           ENTRY
          SB7    CCNW        SET FUNCTION CODE
          RJ     PFL         PROCESS PERMANENT FILE REQUEST 
          SX1    B1          INDICATE FILE NOT BUSY 
          SA2    TSFN 
          SA3    A2+B1
          NZ     X3,ERR      IF MORE THAN 1 WORKING FILE SPECIFIED
          SA3    TPFN 
          NZ     X3,ERR      IF PERMANENT FILE NAME SPECIFIED 
          BX6    X1+X2
          SA6    F
          RETURN A6          RETURN EXISTING PRIMARY FILE 
          PRIMARY X2         CREATE NEW PRIMARY FILE
          RJ     RNF         RETURN NON-PRIMARY FILES 
          EQ     PNC         PROCESS NEXT COMMAND 
 OLD      SPACE  4,15 
***       OLD (F=P/PW,UN,PN,R,RT,NA,WB,ND)
* 
*         RETRIEVE COPY OF PERMANENT FILE FOR SYSTEM USAGE. 
*         INDIRECT ACCESS FILES ONLY. 
*         FILE F WILL BE MADE USER S NEW PRIMARY FILE.
* 
*                F = WORKING FILE NAME. 
*                P = PERMANENT FILE NAME. 
*                PW = FILE PASSWORD.
*                UN = USER NAME.
*                PN = PACK NAME.
*                R = RESIDENCE. 
*                RT = RETURN CONTROL AFTER STAGE INITIATED OR IF
*                     A PF UTILITY IS ACTIVE. DO NOT
*                     WAIT FOR FILE TO BE AVAILABLE.
*                NA = NO ABORT IF ERROR ENCOUNTERED.
*                WB = WAIT FOR PACK MOUNT.
*                ND = IF NOT SPECIFIED, ALL WORKING FILES WILL BE 
*                     RETURNED (EXCEPT PRIMARY).
  
  
 OLD      BSS    0           ENTRY
          SB7    CCOL        SET FUNCTION CODE
          RJ     PFL         PROCESS PERMANENT FILE REQUEST 
          SX1    B1          INDICATE FILE NOT BUSY 
          SA2    TSFN 
          SA3    A2+B1
          NZ     X3,ERR      IF MORE THAN 1 WORKING FILE SPECIFIED
          BX6    X1+X2
          SA6    F
          OLD    F,TPFN,USNM,PWD,PKNM,RES 
          RJ     CES         CHECK ERROR STATUS 
          RJ     RNF         RETURN NON-PRIMARY FILES 
          EQ     PNC         PROCESS NEXT COMMAND 
 PACKNAM  SPACE  4,10 
***       PACKNAM(NAME) 
*         PACKNAM(NAME,TYPE)
*         PACKNAM(NAME,R=TYPE)
*         PACKNAM(PN=NAME)
*         PACKNAM(PN=NAME,R=TYPE) 
* 
*         SET DEFAULT PACKNAME AND DEVICE TYPE. 
* 
*                NAME = PACK NAME.
*                TYPE = DEVICE TYPE.
  
  
 PACKNAM  BSS    0           ENTRY
          SB1    1
          RJ     IDF         ISSUE DAYFILE MESSAGE
          SB2    CCDR        UNPACK COMMAND TO STRING BUFFER
          RJ     USB
          RJ     POP         SKIP OVER PROGRAM NAME 
          ZR     B6,PAC2     IF NO ARGUMENTS
          SB2    TARGPL      CONVERT POSITIONAL ARGUMENTS 
          SB3    TARGP
          SB4    PBUF 
          RJ     CPA
          NG     B5,ERR      IF ERRORS IN CONVERSION
          PL     X1,PAC2     IF NO ARGUMENTS PROCESSED
          SX6    B5+         PROCESS ARGUMENTS
          SB6    PBUF 
          SA6    USBC 
          RJ     ARM
          NZ     X1,ERR      IF ARGUMENT ERROR
          RJ     PRD         PROCESS RESIDENCE DEFINITION 
          SA4    RES         VALIDATE DEVICE TYPE 
          ZR     X4,PAC2     IF DEVICE TYPE NOT SPECIFIED 
          MX0    -6 
          LX4    18 
          BX6    -X0*X4 
          NZ     X6,PAC1     IF THREE CHARACTER DEVICE TYPE SPECIFIED 
          SX6    1R1         ADD *1* TO TWO CHARACTER DEVICE TYPE 
          BX4    X4+X6
 PAC1     SA1    PKNM 
          ZR     X1,PAC2     IF *PN* NOT SPECIFIED
          BX6    X1+X4       COMBINE *PN* WITH *R*
          SA6    A1 
 PAC2     PACKNAM  PKNM      ENTER PACK NAME AND PACK TYPE
          EQ     PNC         PROCESS NEXT COMMAND 
 PERMIT   SPACE  4,20 
***       PERMIT (P,UN1=M1,UN2=M2,...,UNN=MN/PN,R,NA,WB,XT) 
* 
*         PERMIT USER TO ACCESS PERMANENT FILE WITH SPECIFIED MODE. 
* 
*                P = PERMANENT FILE NAME. 
*                UN = USER NAME TO BE PERMITTED.
*                M = MODE OF ACCESS PERMITTED.
*                            W - WRITE, READ, EXECUTE APPEND
*                            R - READ, EXECUTE. 
*                            E - EXECUTE. 
*                            A - APPEND.
*                            N - NULL.
*                PN = PACK NAME.
*                R = RESIDENCE. 
*                NA = NO ABORT IF ERROR ENCOUNTERED.
*                WB = WAIT FOR PACK MOUNT.
*                XT = PERMIT EXPIRATION DATE OR TERM. 
* 
*                DEFAULT VALUES.
*                            M = READ.
  
  
 PERMIT   BSS    0           ENTRY
          SB7    CCPM        SET FUNCTION CODE
          RJ     PFL         PROCESS PERMANENT FILE REQUEST 
          SA1    TSFN        SET FILE NAME
          SA2    TPFN        CHECK FOR LOCAL FILE NAME
          NZ     X2,ERR      IF LOCAL FILE SPECIFIED
          SB7    CCPM        SET PERMIT FUNCTION
          SX6    B1 
          BX6    X6+X1
          SA6    F
          SB3    B1 
          SA1    B3+TSFN     READ FIRST USER NAME 
          ZR     X1,ERR      IF NO USER SPECIFIED 
 PER1     SA5    B3+TPFN     MODE 
          RJ     PMD         CONVERT MODE 
          PERMIT F,,B3+TSFN,MODE,PKNM,RES,,,PXT 
          RJ     CES         CHECK ERROR STATUS 
          SB3    B3+B1       ADVANCE TO NEXT USER 
          SA1    B3+TSFN
          NZ     X1,PER1     IF ANOTHER USER TO PROCESS 
          EQ     PNC         PROCESS NEXT COMMAND 
 PURGE    SPACE  4,15 
***       PURGE (P/UN,PW,PN,R,NA,WB)
* 
*         PURGE PERMANENT FILE. 
* 
*                P = PERMANENT FILE NAME
*                UN = USER NAME.
*                (USER MUST HAVE WRITE PERMISSION)
*                PW = FILE PASSWORD 
*                PN = PACK NAME.
*                R = RESIDENCE. 
*                NA = NO ABORT IF ERROR ENCOUNTERED.
*                WB = WAIT FOR PACK MOUNT.
  
  
 PURGE    BSS    0           ENTRY
          SB7    CCPG        SET FUNCTION CODE
          RJ     PFL         PROCESS PERMANENT FILE REQUEST 
          SB3    B0          PROCESS FILE NAME LIST 
          SA5    B3+TSFN
 PUR1     SX6    B1 
          BX6    X6+X5
          SA6    F
          PURGE  F,USNM,PWD,PKNM,RES
          RJ     CES         CHECK ERROR STATUS 
          SB3    B3+B1       ADVANCE TO NEXT FILE 
          SA5    B3+TSFN
          NZ     X5,PUR1     IF ANOTHER FILE TO PROCESS 
          EQ     PNC         PROCESS NEXT COMMAND 
 REPLACE  SPACE  4,15 
***       REPLACE (F=P/PW,M,UN,PN,R,NA,WB)
* 
*         REPLACE PERMANENT FILE WITH COPY OF WORKING FILE. 
*         INDIRECT ACCESS FILES ONLY. 
* 
*                F = WORKING FILE NAME. 
*                P = PERMANENT FILE NAME
*                PW = FILE PASSWORD 
*                M = MODE OF ACCESS (IF FILE DOES NOT ALREADY EXIST). 
*                UN = USER NAME.
*                     (USER MUST HAVE WRITE PERMISSION).
*                PN = PACK NAME.
*                R = RESIDENCE. 
*                NA = NO ABORT IF ERROR ENCOUNTERED.
*                WB = WAIT FOR PACK MOUNT.
  
  
 REPLACE  BSS    0           ENTRY
          SB7    CCRP        SET FUNCTION CODE
          RJ     PFL         PROCESS PERMANENT FILE REQUEST 
          SB3    B0 
          SA5    B3+TSFN     SYSTEM FILE NAME 
 REP1     SX6    B1 
          BX6    X5+X6
          SA6    F
          REPLACE  F,B3+TPFN,USNM,PWD,,PKNM,RES,,,MODE
          RJ     CES         CHECK ERROR STATUS 
          SB3    B3+B1       ADVANCE TO NEXT FILE 
          SA5    B3+TSFN
          NZ     X5,REP1     IF ANOTHER FILE TO PROCESS 
          EQ     PNC         PROCESS NEXT COMMAND 
 SAVE     SPACE  4,25 
***       SAVE (F=P/PW,CT,M,BR,SS,PR,PN,R,NA,WB,XT,AL,AC) 
* 
*         SAVE COPY OF WORKING FILE ON PERMANENT FILES. 
*         IF PRIMARY FILE IS SAVED, ASSOCIATED SUBSYSTEM IS 
*         SET INTO CATALOG. 
*         INDIRECT ACCESS FILES ONLY. 
* 
*                F = WORKING FILE NAME. 
*                P = PERMANENT FILE NAME
*                PW = FILE PASSWORD 
*                CT = FILE CATEGORY 
*                M = MODE OF ACCESS 
*                BR = BACKUP REQUIREMENT. 
*                SS = SUBSYSTEM.
*                PN = PACK NAME.
*                R = RESIDENCE. 
*                PR = PREFERRED RESIDENCE.
*                NA = NO ABORT IF ERROR ENCOUNTERED.
*                WB = WAIT FOR PACK MOUNT.
*                XT = PASSWORD EXPIRATION DATE OR TERM. 
*                AL = FILE ACCESS LEVEL.
*                AC = ALTERNATE CATLIST PERMISSION. 
* 
*                DEFAULT VALUES.
*                            PW = 0.
*                            CT = PRIVATE.
*                            M = WRITE. 
*                            NA = 0.
*                            AC = NO. 
  
  
 SAVE     BSS    0           ENTRY
          SB7    CCSV        SET FUNCTION CODE
          RJ     PFL         PROCESS PERMANENT FILE REQUEST 
          RJ     GPN         GET PRIMARY FILE NAME
          SB3    B0 
          SA5    B3+TSFN     SYSTEM FILE NAME 
 SAV1     SX6    B1 
          BX6    X6+X5
          SA6    F
          SA1    SUBSYS 
          NZ     X1,SAV2     IF *SS* SPECIFIED
          SA1    GETTAB+1    CHECK FOR PRIMARY FILE 
          BX1    X1-X5
          NZ     X1,SAV2     IF NOT MATCH 
          SA2    PSSA        GET CURRENT SUBSYSTEM
          BX6    X2 
          SA6    SUBSYS 
 SAV2     SAVE   F,B3+TPFN,PWD,,CTG,MODE,PKNM,RES,,SUBSYS,BREQ,PRES,,PXT
,,FAL,ALCT
          RJ     CES         CHECK ERROR STATUS 
          SB3    B3+B1       ADVANCE TO NEXT FILE 
          SA5    B3+TSFN
          NZ     X5,SAV1     IF ANOTHER FILE TO PROCESS 
          EQ     PNC         PROCESS NEXT COMMAND 
          TITLE  SUBROUTINES. 
 CES      SPACE  4,20 
**        CES - CHECK ERROR STATUS. 
* 
*         ABORT IF *NA* WAS NOT SPECIFIED, AND AN ERROR OTHER THAN
*         *FILE BUSY*, *FILE INTERLOCKED*, *STAGE INITIATED* OR 
*         *PF UTILITY ACTIVE* IS DETECTED.
* 
*         ENTRY  (X2) = FET ADDRESS.
* 
*         EXIT   (X6) = 0 IF *FILE BUSY* ERROR. 
*                (X7) = 0 IF *STAGE INITIATED*, *PF UTILITY ACTIVE* 
*                            OR *FILE INTERLOCKED*. 
*                (ERRFLG) .NE. 0 IF ERROR OTHER THAN *FILE BUSY*, 
*                   *STAGE INITIATED*, *PF UTILITY ACTIVE* OR 
*                   *FILE INTERLOCKED*. 
* 
*         USES   X - 1, 6, 7. 
*                A - 1, 6.
* 
*         MACROS ABORT. 
  
  
 CES      SUBR               ENTRY/EXIT 
          MX6    -8          CHECK ERROR STATUS FIELD 
          SA1    X2 
          AX1    10 
          BX1    -X6*X1 
          SX6    X1-/ERRMSG/FBS 
          SX7    X1-/ERRMSG/PSI 
          ZR     X1,CESX     IF NO ERROR
          ZR     X6,CESX     IF *FILE BUSY* STATUS
          ZR     X7,CESX     IF *STAGE INITIATED* STATUS
          SX7    X1-/ERRMSG/PFA 
          ZR     X7,CESX     IF *PF UTILITY ACTIVE* STATUS
          SX7    X1-/ERRMSG/FIN 
          ZR     X7,CESX     IF *FILE INTERLOCKED* STATUS 
          SA6    ERRFLG      SAVE ERROR FLAG
          SA1    NABT 
          NZ     X1,CESX     IF *NA* SPECIFIED RATHER THAN *WB* OR *RT* 
          ABORT              ABORT (ERROR MESSAGE ISSUED BY *PFM*)
 CTJ      SPACE  4,9
**        CTJ - CHECK FOR *TXOT* JOB. 
* 
*         EXIT   (X2) = 0, IF *TXOT* JOB. 
* 
*         USES   X - 0, 1.
*                A - 1. 
  
  
 CTJ      SUBR               ENTRY/EXIT 
          SA1    JOPR        FETCH ORIGIN TYPE FROM COMMUNICATION AREA
          LX1    -24
          MX0    -12
          BX1    -X0*X1 
          SX2    X1-TXOT
          EQ     CTJX        EXIT 
 CVT      SPACE  4,15 
**        CVT - CONVERT ARGUMENT
* 
*         ENTRY  (B5) = ADDRESS OF TABLE
*                (X5) = ARGUMENT
*                TABLE OF ARGUMENTS IN FOLLOWING FORMAT.
*T,       42/ARGUMENT,18/VALUE
* 
*         EXIT   (X6) = 0 IF LEGAL ARGUMENT 
*                (X7) = EQUIVALENT VALUE (RIGHT JUSTIFIED)
* 
*         CALLS  *NONE* 
* 
*         USES   X - 0, 2, 4, 5, 6, 7.
*                A - 4. 
*                B - 5. 
  
  
 CVT      SUBR               ENTRY/EXIT 
          MX0    42 
          MX6    1
          BX5    X0*X5
 CVT1     SA4    B5          READ NEXT TABLE ENTRY
          ZR     X4,CVTX     IF END OF TABLE
          SB5    B5+B1       ADVANCE TABLE POINTER
          BX2    X0*X4       PICK ARGUMENT
          BX7    -X0*X4      PICK EQUIVALENCE 
          IX6    X2-X5
          ZR     X6,CVTX     IF ARGUMENT FOUND
          EQ     CVT1        LOOP FOR NEXT TABLE VALUE
 ESP      SPACE  4,25 
**        ESP - ENTER SECURE PASSWORD.
* 
*         THIS SUBROUTINE PROCESSES SECURELY ENTERED PASSWORDS. 
*         IF OUTPUT FILE IS ASSIGNED TO A TERMINAL THE MESSAGE
*         *PASSWORD:* ALONG WITH BLANK OUT CHARACTERS FOR SECURE
*         ENTRY OF PASSWORD WILL BE SENT TO THE TERMINAL. 
*         FILE *INPUT* WILL THEN BE READ FOR THE PASSWORD.
*         FOR BATCH JOBS FILE *INPUT* IS READ FOR THE PASSWORD. 
* 
*         ENTRY  (PFLA) = COMMAND CODE. 
* 
*         EXIT   (X6) = PASSWORD. 
*                (B7) = COMMAND CODE. 
*                TO *ABT* IF INCORRECT PASSWORD ENCOUNTERED.
* 
*         USES   X - ALL. 
*                A - 1, 2, 6, 7.
*                B - 2, 3, 4, 5, 6, 7.
* 
*         CALLS  STF. 
* 
*         MACROS CSET, MESSAGE, READSKP, WRITE. 
  
  
 ESP      SUBR               ENTRY/EXIT 
          SX2    O           SET ADDRESS OF FET 
          RJ     STF         CHECK IF OUTPUT ASSIGNED TO TERMINAL 
          NZ     X6,ESP1     IF OUTPUT NOT ASSIGNED TO TERMINAL 
          SA1    X2+B1       SET BUFFER FULL
          SX7    X1 
          SX6    X1+PMSGL 
          SA6    A1+B1       SET IN BELOW DATA FOR MESSAGE
          SA7    A6+B1       SET OUT = FIRST
          WRITE  X2,*        FORCE WRITE BIT SET
          SA1    O
          MX0    42 
          BX2    X0*X1       FILE NAME FOR OUTPUT POINTER 
          SX1    A1          SET ADDRESS OF FET FOR POINTER 
          BX6    X1+X2
          SA6    ARGR        FORCE WRITE BEFORE READ ON ROLLOUT 
 ESP1     SX2    I           SET ADDRESS OF FET 
          RJ     STF         CHECK IF INPUT ASSIGNED TO TERMINAL
          NZ     X6,ESP2     IF INPUT NOT ASSIGNED TO TERMINAL
          CSET   NORMAL      ENSURE TERMINAL IN NORMAL MODE 
 ESP2     READSKP I,,R       READ INPUT FOR PASSWORD
          SA1    I+2         DETERMINE NUMBER OF WORDS READ 
          SA2    A1+B1
          IX6    X1-X2
          ZR     X6,ESP10    IF NO DATA ENTERED (NULL PASSWORD) 
          SB5    X6 
          SB3    B0 
          BX5    X5-X5
          BX6    X6-X6
          SB4    60 
          SB7    B0 
          MX0    -6 
 ESP3     SA2    IBUF+B3     PICK UP NEXT DATA WORD 
          SB2    B0+
 ESP4     LX2    6
          BX1    -X0*X2      PICK UP CHARACTER TO CHECK 
          NZ     X1,ESP5     IF CHARACTER NOT ZERO
          NZ     X5,ESP10    IF 00 ENCOUNTERED
          SX5    B1+         SET FLAG TO INDICATE 0 ENCOUNTERED 
          EQ     ESP9        CHECK FOR MORE CHARACTERS
  
 ESP5     NZ     X5,ESP11    IF PREVIOUS CHARACTER = COLON
 ESP6     SB6    X1-1R9 
          GT     B6,ESP8     IF NOT ALPHANUMERIC CHARACTER
 ESP7     SB4    B4-6 
          LX7    X1,B4
          BX6    X7+X6
          SB7    B7+1 
          SB6    B7-7 
          GT     B6,ESP11    IF PASSWORD .GT. SEVEN CHARACTERS
          EQ     ESP9        CHECK FOR MORE CHARACTERS
  
 ESP8     SX4    X1-1R* 
          ZR     X4,ESP7     IF CHARACTER = * 
          SX3    X1-1R
          NZ     X3,ESP11    IF CHARACTER NOT BLANK 
 ESP9     SB2    B2+B1
          SB6    B2-10
          LT     B6,ESP4     IF NOT END OF WORD 
          SB3    B3+B1
          SB6    B5-B3
          EQ     B6,ESP11    IF TOO MUCH DATA ENTERED 
          EQ     ESP3        GET NEXT WORD
  
 ESP10    SA1    I+1
          BX7    X1 
          SA7    A1+B1       SET IN = FIRST FOR INPUT BUFFER
          SA1    PFLA        RESET (B7) = COMMAND CODE
          SB7    X1 
          SA1    =1L0        CHECK FOR *0*
          BX7    X6-X1
          NZ     X7,ESPX     IF *0* NOT SPECIFIED 
          BX6    X7          SET NULL PASSWORD
          EQ     ESPX        RETURN 
  
 ESP11    MESSAGE (=C* INCORRECT PASSWORD.*)
          ABORT 
 GPN      SPACE  4,21 
**        GPN - GET PRIMARY FILE NAME.
*         THIS SUBROUTINE IS USED FOR DETERMINING THE NAME OF 
*         THE USER S PRIMARY FILE- IF ONE EXISTS. 
* 
*         A LFM GETFNT CALL IS MADE, WITH SELECTIVITY OF PRIMARY
*         TYPE ONLY, AND CONTROL BITS SET FOR NORMAL TREATMENT
*         OF CHECKPOINT FILES AND NO MODIFICATION OF FST ENTRIES. 
* 
*         ENTRY  (GPNB) .NE. 0 IMPLIES PRIMARY HAS ALREADY BEEN 
*                            FETCHED BY A DEFAULT CALL. 
* 
*         EXIT   IF (GPNB) = 0, 
*                (GETTAB+1) AND (X6) .NE. 0 IMPLIES PRIMARY EXISTS AND
*                                    CONTAINS NAME (LEFT
*                                    JUSTIFIED WITH ZERO FILL). 
*                (GETTAB+1) AND (X6) = 0 IMPLIES NO PRIMARY EXISTS. 
* 
*         USES   X - 2, 3, 6, 7.
*                A - 2, 6, 7. 
* 
*         MACROS GETFNT.
  
  
 GPN      SUBR               ENTRY/EXIT 
          SA2    GPNB 
          NZ     X2,GPNX     IF HAVE ALREADY FETCHED PRIMARY, EXIT
          BX7    X7-X7       CLEAR BUFFER CONTROL WORD
          SA7    GETTAB 
          SA2    GPNA 
          BX6    X2 
          SA6    F+CFPN 
          GETFNT F
          BX6    X6-X6       CLEAR PFM LOCATION FET+CFPN
          SA6    F+CFPN 
          SA2    GETTAB+1 
          MX3    42          MASK OUT ALL BUT NAME OF PRIMARY 
          BX6    X2*X3
          SA6    A2 
          EQ     GPNX        EXIT 
  
*         GETFNT CONTROL WORD.
  
 PRIM     DECMIC PTFT 
 PMSK     EQU    1S"PRIM" 
 GPNA     VFD    12/1,24/PMSK,6/15B,18/GETTAB 
 GPNB     DATA   0           PRIMARY FETCHED FLAG 
 IDF      SPACE  4,10 
**        IDF - ISSUE DAYFILE MESSAGE.
* 
*         ENTRY  (CCDR) = COMMAND.
* 
*         USES   X - 4, 5.
*                A - 4, 5.
*                B - 2, 6.
* 
*         CALLS  CTJ, RSP.
  
  
 IDF      SUBR               ENTRY/EXIT 
          SA4    TARG+1      FWA ARGUMENT TABLE 
          SB6    TKPR        FWA KEYWORD/POSITION TABLE 
          SA5    CCDR        FWA COMMAND BUFFER 
          SB2    1R/         SKIP TO */*
          RJ     RSP         REMOVE SECURE PARAMETERS FROM COMMAND
          MESSAGE CCDR,0,R   ISSUE COMMAND TO DAYFILE 
          EQ     IDFX        RETURN 
  
  
 TKPR     BSS    0           TABLE OF KEYWORDS/POSITIONS TO REMOVE
          CON    2LAL        ACCESS LEVEL 
          CON    2LPW        PASSWORD 
          CON    0           END OF TABLE 
 PAC      SPACE  4,15 
**        PAC - PROCESS ALTERNATE CATLIST PERMISSION. 
* 
*         ENTRY  (ALCT) = ALTERNATE CATLIST PERMISSION (DISPLAY CODE).
* 
*         EXIT   (ALCT) = ALTERNATE CATLIST PERMISSION
*                        (NUMERIC EQUIVALENT).
* 
*         USES   X - 5, 7.
*                A - 5, 7.
*                B - 5. 
* 
*         CALLS  CVT. 
* 
*         MACROS ABORT, MESSAGE.
  
  
 PAC      SUBR               ENTRY/EXIT 
          SA5    ALCT 
          ZR     X5,PACX     IF NOT SPECIFIED 
          SB5    TACP 
          RJ     CVT         CONVERT ARGUMENT 
          SA7    A5 
          ZR     X6,PACX     IF LEGAL ARGUMENT
          MESSAGE  (=C* ERROR IN ALTERNATE CATLIST PERMISSION.*)
          ABORT 
  
  
****
*         TABLE OF ALTERNATE CATLIST PERMISSIONS. 
  
  
 TACP     BSS    0
          VFD    42/0LN,18/ACNO 
          VFD    42/0LY,18/ACYS 
          CON    0
****
 PAL      SPACE  4,10 
**        PAL - PROCESS ACCESS LEVEL. 
* 
*         EVALUATE IF AN ACCESS LEVEL HAS BEEN SPECIFIED.  IF SO, 
*         SET ACCESS LEVEL VALUE AND *SP* BIT IN THE FET. 
* 
*         ENTRY  (FAL) = FILE ACCESS LEVEL. 
* 
*         USES   X - 1, 2, 6. 
*                A - 1, 6.
*                B - 2. 
* 
*         CALLS  VLC. 
* 
*         MACROS ABORT. 
  
  
 PAL      SUBR               ENTRY/EXIT 
          SA1    FAL
          ZR     X1,PALX     IF *AL* NOT SPECIFIED
          SB2    B0          SET ACCESS LEVEL FLAG
          RJ     VLC         VALIDATE ACCESS LEVEL MNEMONIC 
          NG     X2,PAL1     IF INCORRECT ACCESS LEVEL
          BX6    X2          SET *AL* IN FET
          SA6    FAL
          SA1    F+B1        SET *SP* BIT IN FET
          SX2    B1 
          LX2    39-0 
          BX6    X1+X2
          SA6    A1 
          EQ     PALX        RETURN 
  
 PAL1     MESSAGE  (=C* UNKNOWN ACCESS LEVEL NAME.*)
          ABORT 
 PBR      SPACE  4,20 
**        PBR - PROCESS BACKUP REQUIREMENT. 
* 
*         ENTRY  (BREQ) = BACKUP REQUIREMENT (DISPLAY CODE).
* 
*         EXIT   (BREQ) = BACKUP REQUIREMENT (NUMERIC EQUIVALENT).
* 
*         USES   X - 5. 
*                A - 5, 7.
*                B - 5. 
* 
*         CALLS  CVT. 
* 
*         MACROS ABORT, MESSAGE.
  
  
 PBR      SUBR               ENTRY/EXIT 
          SA5    BREQ 
          ZR     X5,PBRX     IF NO ARGUMENT SPECIFIED 
          SB5    TBREQ
          RJ     CVT         CONVERT ARGUMENT TO EQUIVALENT 
          SA7    A5          SAVE CONVERSION
          ZR     X6,PBRX     IF LEGAL ARGUMENT
  
          MESSAGE  (=C* ERROR IN BACKUP REQUIREMENT.*)
          ABORT 
  
  
****
*         TABLE OF BACKUP REQUIREMENTS. 
  
  
 TBREQ    BSS    0
          VFD    42/0LN,18/BRNO  BACKUP NOT REQUIRED
          VFD    42/0LY,18/BRAL  BACKUP ALWAYS REQUIRED 
          VFD    42/0LMD,18/BRMD  BACKUP REQUIRED UNLESS FILE ON MSF
          CON    0
****
 PCT      SPACE  4,15 
**        PCT - PROCESS FILE CATEGORY.
* 
*         ENTRY  (CTG) = LEFT JUSTIFIED DISPLAY CODED ARGUMENT. 
* 
*         EXIT   (CTG) = RIGHT JUSTIFIED EQUIVALENT ARGUMENT. 
* 
*         USES   X - 5, 7.
*                A - 5, 7.
*                B - 5. 
* 
*         CALLS  CVT. 
* 
*         MACROS ABORT, MESSAGE.
  
  
 PCT      SUBR               ENTRY/EXIT 
          SA5    CTG
          ZR     X5,PCTX     IF NO ARGUMENT 
          SB5    TCAT 
          RJ     CVT         CONVERT ARGUMENT TO EQUIVALENT 
          SX7    X7+40B 
          SA7    A5          SAVE CONVERSION
          ZR     X6,PCTX     IF LEGAL ARGUMENT
  
          MESSAGE (=C* ERROR IN FILE CATEGORY.*)
          ABORT 
  
  
****
*         TABLE OF FILE CATEGORIES. 
  
  
 TCAT     BSS    0
          VFD    42/0LPRIVATE,18/FCPR 
          VFD    42/0LP,18/FCPR 
          VFD    42/0LPR,18/FCPR
          VFD    42/0LSPRIV,18/FCSP 
          VFD    42/0LS,18/FCSP 
          VFD    42/0LLIBRARY,18/FCLI 
          VFD    42/0LL,18/FCLI 
          VFD    42/0LPUBLIC,18/FCLI
          VFD    42/0LPU,18/FCLI
          CON    0
****
 PDC      SPACE  4,25 
**        PDC - PROCESS DEFAULT CALL. 
* 
*         DETERMINE IF THE COMMAND IS A DEFAULT CALL. 
*         THIS IS A *GET*, *PURGE*, *REPLACE*, OR *SAVE*
*         WITH NO ARGUMENTS OR ONE BLANK ARGUMENT.
* 
*         ENTRY  (B4) = ARGUMENT COUNT. 
*                (B6) = SHIFT COUNT FOR COMMAND.
*                (B7) = COMMAND CODE. 
* 
*         EXIT   (B2) .NE. 0 IF NOT DEFAULT CALL. 
*                ABORT IF DEFAULT AND NO PRIMARY FILE.
*                IF DEFAULT AND PRIMARY FILE FOUND- 
*                (B2) = 0 
*                (TSFN) = PRIMARY FILE NAME.
*                (GPNB) .NE. 0. 
* 
*         USES   X - 1, 2, 6. 
*                A - 2, 6.
*                B - 2. 
* 
*         CALLS  GPN. 
* 
*         MACROS ABORT, MESSAGE.
  
  
 PDC      SUBR               ENTRY/EXIT 
          SB2    B1+         SET NO DEFAULT EXIT
          GT     B4,B1,PDCX  IF TOO MANY ARGUMENTS
          SX1    PRM9 
          LX1    X1,B6
          PL     X1,PDCX     IF DEFAULT NOT LEGAL FOR COMMAND 
          SA2    ARGR 
          NZ     X2,PDCX     IF ARGUMENT NOT BLANK
          RJ     GPN         GET PRIMARY FILE NAME
          ZR     X6,PDC1     IF NO PRIMARY FILE 
          SA6    GPNB        SET PRIMARY FETCHED FLAG 
          SA6    TSFN        SET DEFAULT FILE NAME
          SB2    B0          SET DEFAULT EXIT 
          BX6    X6-X6
          SA6    TSFN+1      TERMINATE *TSFN* TABLE 
          SA6    TPFN 
          EQ     PDCX        RETURN 
  
 PDC1     MESSAGE (=C* NO PRIMARY FILE.*) 
          ABORT 
 PMD      SPACE  4,15 
**        PMD - PROCESS MODE OF FILE. 
* 
*         ENTRY  (X5) = ACCESS MODE (DISPLAY CODE). 
* 
*         EXIT   (MODE) = ACCESS MODE (NUMERIC EQUIVALENT). 
* 
*         USES   X - 5, 7.
*                A - 5, 7.
*                B - 5. 
* 
*         CALLS  CVT. 
* 
*         MACROS ABORT, MESSAGE.
  
  
 PMD      SUBR               ENTRY/EXIT 
          NZ     X5,PMD2     IF MODE ENTERED
          SX7    PTRD        SET DEFAULT MODE (READ MODE) 
 PMD1     SA7    MODE 
          EQ     PMDX 
  
 PMD2     SB5    TMDE 
          RJ     CVT         CONVERT ARGUMENT 
          SX7    X7+40B 
          ZR     X6,PMD1     IF LEGAL ARGUMENT
  
          MESSAGE (=C* ERROR IN MODE.*) 
          ABORT 
  
  
****
*         TABLE OF FILE MODE EQUIVALENCES.
  
  
 TMDE     BSS    0
          VFD    42/0LWRITE,18/PTWR 
          VFD    42/0LW,18/PTWR 
          VFD    42/0LREAD,18/PTRD
          VFD    42/0LR,18/PTRD 
          VFD    42/0LEXECUTE,18/PTEX 
          VFD    42/0LE,18/PTEX 
          VFD    42/0LAPPEND,18/PTAP
          VFD    42/0LA,18/PTAP 
          VFD    42/0LNULL,18/PTNU
          VFD    42/0LN,18/PTNU 
          VFD    42/0LMODIFY,18/PTMD
          VFD    42/0LM,18/PTMD 
          VFD    42/0LREADMD,18/PTRM
          VFD    42/0LRM,18/PTRM
          VFD    42/0LREADAP,18/PTRA
          VFD    42/0LRA,18/PTRA
          VFD    42/0LUPDATE,18/PTUP
          VFD    42/0LU,18/PTUP 
          VFD    42/0LREADUP,18/PTRU
          VFD    42/0LRU,18/PTRU
          CON    0
****
 PNA      SPACE  4,10 
**        PNA - PROCESS *NO ABORT* AND *WAIT BUSY* OPTIONS. 
* 
*         ENTRY  (NABT) .NE. 0 IF *NO ABORT* SPECIFIED. 
*                (WBUSY) .NE. 0 IF *WAIT BUSY* REQUESTED. 
* 
*         EXIT   ERROR PROCESSING BIT SET IF REQUIRED.
*                TO *ERR* IF BOTH *NA* AND *WB* SPECIFIED.
* 
*         USES   X - 1, 2, 6. 
*                A - 1, 2, 6. 
  
  
 PNA      SUBR               ENTRY/EXIT 
          SA1    NABT 
          SA2    WBUSY
          IX1    X1+X2
          ZR     X1,PNAX     IF NEITHER *NA* OR *WB* SPECIFIED
          SX1    X1-2 
          ZR     X1,ERR      IF BOTH *NA* AND *WB* SPECIFIED
          SA1    F+1         SET ERROR PROCESSING BIT 
          SX6    B1 
          LX6    44 
          BX6    X1+X6
          SA6    A1 
          EQ     PNAX        RETURN 
 PPX      SPACE  4,20 
**        PPX - PROCESS PASSWORD/PERMIT EXPIRATION DATE/TERM. 
* 
*         ENTRY  (B7) = (PFLA) = COMMAND CODE.
*                (PXD) = EXPIRATION DATE (DISPLAY CODE).
*                (PXT) = EXPIRATION TERM (DISPLAY CODE).
* 
*         EXIT   (B7) = COMMAND CODE. 
*                (PXT) = NUMERIC EXPIRATION DATE/TERM.
*                TO *ERR* IF BOTH *XD* AND *XT* SPECIFIED,
*                OR IF ONE IS SPECIFIED ON A *SAVE OR *DEFINE*
*                WITHOUT *PW*.
* 
*         USES   X - 0, 1, 2, 3, 5, 6.
*                A - 1, 2, 3, 6.
*                B - 2, 7.
* 
*         CALLS  DXB, VDT.
* 
*         MACROS ABORT, MESSAGE, PDATE. 
  
  
 PPX6     SA6    PXT         SAVE *XT*
          SA1    PFLA        RESTORE COMMAND CODE 
          SB7    X1 
  
 PPX      SUBR               ENTRY/EXIT 
          SA1    PXT
          SA2    PXD
          SB2    X1 
          SB2    X2+B2
          ZR     B2,PPXX     IF NEITHER *XD* OR *XT* SPECIFIED
          NE     B2,B1,ERR   IF BOTH *XD* AND *XT* SPECIFIED
          SB2    B7-CCCG
          ZR     B2,PPX1     IF *CHANGE* COMMAND
          SB2    B7-CCPM
          ZR     B2,PPX1     IF *PERMIT* COMMAND
          SA3    PWD
          ZR     X3,ERR      IF *PW* NOT ENTERED
 PPX1     MX0    42 
          ZR     X2,PPX2     IF *XT* SPECIFIED RATHER THAN *XD* 
  
*         PROCESS EXPIRATION DATE.
  
          BX1    X0*X2
          SX2    B0 
          BX3    X1 
          LX3    -54
          SX3    X3-1R* 
          ZR     X3,PPX2.1   IF NON-EXPIRING PASSWORD/PERMIT REQUESTED
          RJ     VDT         VERIFY DATE SPECIFIED
          NG     X1,PPX5     IF DATE ALREADY OCCURRED 
          NG     X6,PPX5     IF CONVERSION ERROR
          EQ     PPX6        SAVE EXPIRATION DATE 
  
*         PROCESS EXPIRATION TERM.
  
 PPX2     BX1    X0*X1
          BX5    X1 
          LX1    -54
          SX2    X1-1R*      CHECK FOR *XT* = ASTERISK
          NZ     X2,PPX3     IF NOT NON-EXPIRING
 PPX2.1   SX6    7777B
          EQ     PPX6        STORE NON-EXPIRING TERM
  
 PPX3     SX2    X1-1R0      CHECK FOR *XT* = CHARACTER ZERO
          NZ     X2,PPX4     IF NOT IMMEDIATELY EXPIRING
          PDATE  PPXA        SET *XT* = CURRENT DATE
          SA2    PPXA 
          AX2    18 
          BX6    X2 
          EQ     PPX6        SAVE CURRENT DATE
  
 PPX4     ZR     X5,PPX5     IF NULL TERM SPECIFIED 
          SB7    1           CONVERT DECIMAL NUMBER 
          RJ     DXB         CONVERT DISPLAY CODE TO BINARY NUMBERS 
          NZ     X4,PPX5     IF CONVERSION ERROR
          SB2    X6-7777B 
          LE     B2,B0,PPX6  IF TERM DOES NOT EXCEED MAXIMUM
 PPX5     MESSAGE  (=C* ERROR IN EXPIRATION DATE.*) 
          ABORT 
  
 PPXA     DATA   0
 PRD      SPACE  4,10 
**        PRD - PROCESS RESIDENCE DEFINITION. 
* 
*         ENTRY  (RES) = RESIDENCE OF FILE. 
* 
*         USES   X - 0, 1, 2, 3.
*                A - 2, 3.
* 
*         MACROS ABORT, MESSAGE.
  
  
 PRD      SUBR               ENTRY/EXIT 
          SA3    RES
          ZR     X3,PRDX     IF RESIDENCE NOT DEFINED 
          MX0    12 
          BX1    X0*X3
          MX2    -6 
          LX3    18 
          BX2    -X2*X3 
          BX0    X0*X3
          NZ     X0,PRD3     IF RESIDENCE ENTRY TOO LONG
          ZR     X2,PRD1     IF *N* NOT DEFINED 
          SX3    X2-1R1 
          SX2    X2-1R9 
          NG     X3,PRD3     IF *N* .LT. 1
          PL     X2,PRD3     IF *N* .GT. 8
 PRD1     SA2    TDVM-1 
 PRD2     SA2    A2+B1
          BX3    X1-X2
          ZR     X3,PRDX     IF MATCH ON DEVICE 
          NZ     X2,PRD2     IF NOT END OF TABLE
 PRD3     MESSAGE  PRDA      * ERROR IN RESIDENCE.* 
          ABORT 
  
  
 PRDA     DATA   C* ERROR IN RESIDENCE.*
 TDVM     SPACE  4,10 
**        TDVM - TABLE OF DEVICE MNEMONICS. 
* 
*T TDVM   12/MN, 48/0 
* 
*         MN = DEVICE MNEMONIC. 
  
  
**        TBLM - DEFINE MACRO TO PRODUCE *TDVM* TABLE.
  
          PURGMAC  TBLM 
 TBLM     MACRO  EQ 
          VFD    12/2R_EQ,48/0
          ENDM
  
          LIST   G
 TDVM     TBL    "MSEQ" 
          CON    0           END OF TABLE 
          LIST   -G 
 PRE      SPACE  4,20 
**        PRE - PROCESS PREFERRED RESIDENCE.
* 
*         ENTRY  (PRES) = PREFERRED RESIDENCE (DISPLAY CODE). 
* 
*         EXIT   (PRES) = PREFERRED RESIDENCE (NUMERIC EQUIVALENT). 
* 
*         USES   X - 5. 
*                A - 5, 7.
*                B - 5. 
* 
*         CALLS  CVT. 
* 
*         MACROS ABORT, MESSAGE.
  
  
 PRE      SUBR               ENTRY/EXIT 
          SA5    PRES 
          ZR     X5,PREX     IF NO ARGUMENT SPECIFIED 
          SB5    TPRES
          RJ     CVT         CONVERT ARGUMENT TO EQUIVALENT 
          SA7    A5          SAVE CONVERSION
          ZR     X6,PREX     IF LEGAL ARGUMENT
          MESSAGE  (=C*ERROR IN PREFERRED RESIDENCE.*)
          ABORT 
  
  
****
*         TABLE OF PREFERRED RESIDENCES.
  
  
 TPRES    BSS    0
          VFD    42/0LL,18/RSLK 
          VFD    42/0LD,18/RSDS 
          VFD    42/0LM,18/RSMS 
          VFD    42/0LN,18/RSNP 
          VFD    42/0LT,18/RSTP 
          CON    0
****
 PRT      SPACE  4,10 
**        PRT - PROCESS *RT* PARAMETER. 
* 
*         ENTRY  (RTIME) = 0 IF *RT* NOT SPECIFIED. 
*                (PFLA) = COMMAND CODE. 
*                (PFLB) = NUMBER OF FILES SPECIFIED - 1.
* 
*         EXIT   *RT* BIT SET IN FET IF REQUESTED, OR IF MORE THAN ONE
*                FILE SPECIFIED ON AN *ATTACH* OR *GET* COMMAND.
* 
*         USES   X - 1, 6.
*                A - 1, 6.
  
  
 PRT      SUBR               ENTRY/EXIT 
          SA1    RTIME
          NZ     X1,PRT2     IF *RT* SPECIFIED
          SA1    PFLA 
          SX6    X1-CCAT
          ZR     X6,PRT1     IF *ATTACH* COMMAND
          SX6    X1-CCGT
          NZ     X6,PRTX     IF NOT *GET* COMMAND 
 PRT1     SA1    PFLB 
          ZR     X1,PRTX     IF ONLY ONE FILE SPECIFIED 
 PRT2     SA1    F+1         SET REAL-TIME PROCESSING BIT 
          MX6    1
          LX6    43-59
          BX6    X1+X6
          SA6    A1 
          EQ     PRTX        RETURN 
 PSR      SPACE  4,10 
**        PSR - PROCESS SPECIAL REQUEST SUBFUNCTION.
* 
*         EXIT   *SREQ* SET TO *CE* OR *CP* IF EITHER IS PRESENT. 
* 
*         USES   A - 1, 2, 6. 
*                X - 1, 2, 6. 
* 
*         MACROS ABORT, MESSAGE.
  
  
 PSR      SUBR               ENTRY/EXIT 
          SA1    CLRE        ENSURE *CE* AND *CP* NOT BOTH SPECIFIED
          ZR     X1,PSR1     IF *CE* PARAMETER NOT PRESENT
          SA2    CPNG        GET *CP* PARAMETER 
          BX6    X1 
          ZR     X2,PSR2     IF *CP* PARAMETER NOT PRESENT
          MESSAGE (=C* PARAMETERS CE AND CP ARE MUTUALLY EXCLUSIVE.*) 
          ABORT 
  
 PSR1     SA2    CPNG        PLACE *CP* INTO *SREQ* (MAY BE ZERO) 
          BX6    X2 
 PSR2     SA6    SREQ        PLACE EITHER *CE* OR *CP* INTO *SREQ*
          EQ     PSRX        RETURN 
 PSS      SPACE  4,10 
**        PSS - PROCESS SUBSYSTEM SELECTION.
* 
*         ENTRY  (SUBSYS) = VALUE FROM *SS* PARAMETER.
* 
*         EXIT   (SUBSYS) = SUBSYSTEM VALUE (IF *SS* SPECIFIED).
*                (PSSA) = CURRENT SUBSYSTEM.
* 
*         USES   X - 0, 1, 5, 7.
*                A - 1, 5, 7. 
* 
*         CALLS  CVT. 
  
  
 PSS      SUBR               ENTRY/EXIT 
          SA5    SUBSYS      GET *SS* PARAMETER VALUE 
          GETSS  PSSA        GET CURRENT SUBSYSTEM
          ZR     X5,PSSX     IF *SS* NOT SPECIFIED
          MX0    42 
          SA1    PSSA 
          BX5    X0*X5
          BX7    X1 
          ZR     X5,PSS1     IF *SS* NOT EQUIVALENCED 
          SB5    TSSY 
          RJ     CVT         CONVERT ARGUMENT 
          ZR     X6,PSS1     IF LEGAL VALUE 
          MESSAGE  (=C* ERROR IN SUBSYSTEM.*) 
          ABORT 
  
 PSS1     SX7    X7+40B      SAVE SELECTED SUBSYSTEM
          SA7    SUBSYS 
          EQ     PSSX        RETURN 
  
 PSSA     CON    0           CURRENT SUBSYSTEM
  
  
****
*         TABLE OF SUBSYSTEMS.
  
  
 TSSY     BSS    0
          VFD    42/0LNULL,18/NULS
          VFD    42/0LNUL,18/NULS 
          VFD    42/0LBASIC,18/BASS 
          VFD    42/0LBAS,18/BASS 
          VFD    42/0LFORTRAN,18/FORS 
          VFD    42/0LFOR,18/FORS 
          VFD    42/0LFTNTS,18/FTNS 
          VFD    42/0LFTN,18/FTNS 
          VFD    42/0LEXECUTE,18/EXES 
          VFD    42/0LEXE,18/EXES 
          VFD    42/0LBATCH,18/BATS 
          VFD    42/0LBAT,18/BATS 
          CON    0
****
 RNF      SPACE  4,14 
**        RNF - RETURN NON-PRIMARY FILES. 
*         THIS SUBROUTINE USES THE LFM FUNCTION GETFNT TO RETURN ALL
*         FILES CURRENTLY ASSIGNED TO JOB (EXCEPT THE PRIMARY FILE
*         AND ANY FILE WITH *CBST*, *CKST* OR *NDST* STATUS SET). 
* 
*         ENTRY  NONE.
* 
*         EXIT   NONE.
* 
*         USES   X - 0, 1, 2, 3, 4, 7.
*                A - 2, 7.
*                B - 3, 4.
* 
*         MACROS GETFNT, RECALL, RETURN.
  
  
 RNF      SUBR               ENTRY/EXIT 
          SA2    NODROP 
          NZ     X2,RNFX     IF ND PARAMETER SPECIFIED, EXIT
          BX7    X7-X7       CLEAR BUFFER CONTROL WORD
          SA7    GETTAB 
          SA2    RNFA        MAKE GETFNT CALL 
          BX7    X2 
          MX0    42 
          RECALL F
          SA7    F+CFPN 
  
 RNF1     GETFNT F
          SB3    B0 
          SB4    GLEN 
          MX3    -6 
  
 RNF2     SA2    B3+GETTAB+1
          ZR     X2,RNFX     IF END OF FILES
          BX1    -X3*X2 
          SX7    X1-NDST
          ZR     X7,RNF3     IF *NDST* FILE 
          SX7    X1-CBST
          SX4    X1-CKST
          ZR     X7,RNF3     IF CHECKPOINT FILE 
          ZR     X4,RNF3     IF CHECKPOINT FILE 
          BX4    X0*X2
          SX1    B1+         SET COMPLETE BIT 
          BX7    X1+X4
          RECALL F
          SA7    F
          RETURN F
  
 RNF3     SB3    B3+2 
          NE     B3,B4,RNF2  IF MORE FILES IN GETTAB
          SA2    GETTAB 
          NZ     X2,RNF1     IF MORE FILES TO PROCESS 
          EQ     RNFX        RETURN 
  
*         GETFNT CONTROL WORD.
  
 RNFA     VFD    12/GFILES,24/-PMSK,6/15B,18/GETTAB 
          SPACE  4
*         COMMON DECKS. 
  
*CALL     COMCARM 
*CALL     COMCARG 
*CALL     COMCCIO 
*CALL     COMCCPA 
*CALL     COMCCPM 
*CALL     COMCDXB 
*CALL     COMCLFM 
*CALL     COMCPFM 
*CALL     COMCPOP 
*CALL     COMCRSP 
*CALL     COMCSTF 
*CALL     COMCSYS 
*CALL     COMCUSB 
*CALL     COMCVDT 
*CALL     COMCVLC 
          SPACE  4,10 
*         BUFFER DEFINITIONS. 
  
  
          USE    BUFFERS
  
 TSFN     BSSN   NFILES      SYSTEM FILE NAMES
 TPFN     BSSN   NFILES      PERMANENT FILE NAMES 
 IBUF     BSSN   BUFL        INPUT BUFFER 
 GETTAB   BSSN   GLEN+2      *GETFNT* TABLE 
 PBUF     BSSN   PBUFL       *PACKNAM* STRING BUFFER
 RFL=     BSSN   0
          SPACE  4
          END 
