VALEX 
          IDENT  VALEX,ORIG 
          ABS 
          SST 
          SYSCOM B1 
          ENTRY  ACCOUNT
          ENTRY  BYE
          ENTRY  CHARGE 
          ENTRY  GOODBYE
          ENTRY  HELLO
          ENTRY  LOGIN
          ENTRY  LOGOUT 
          ENTRY  USER 
          ENTRY  XPR
          ENTRY  ARG= 
          ENTRY  VAL= 
          ENTRY  RFL= 
          ENTRY  SDM= 
          ENTRY  SSJ= 
          TITLE  VALEX - VALIDATION EXECUTIVE.
          SPACE  4,10 
*COMMENT  VALEX - VALIDATION EXECUTIVE. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4,10 
***       VALEX - VALIDATION EXECUTIVE. 
*         R. P. ROHRBOUGH    72/09/08.
*         G. R. GREENFIELD   75/11/25.
*         P. C. SMITH        81/06/10.
*         G. S. YODER        87/03/13.
          SPACE  4,10 
***       USER AND ACCOUNT COMMANDS.
* 
*         USER,USERNAM,PASSWOR,FAMILY.
* 
*         USER,UN=USERNAM,PW=PASSWOR,FM=FAMILY. 
* 
*         ACCOUNT,USERNAM,PASSWOR,FAMILY. 
* 
*         ACCOUNT,UN=USERNAM,PW=PASSWOR,FM=FAMILY.
* 
*                USERNAM = USER NAME (1-7 ALPHNUMERIC CHARACTERS
*                          INCLUDING ASTERISK). 
* 
*                PASSWOR = PASSWORD (1-7 ALPHNUMERIC CHARACTERS). 
* 
*                FAMILY  = FAMILY NAME (1-7 ALPHANUMERIC CHARACTERS). 
* 
*         IF THE FAMILY NAME IS OMITTED, THE DEFAULT FAMILY WILL BE 
*         ASSUMED.  DEFAULT CHARGE VALIDATION WILL BE PERFOMED IF THE 
*         USER NAME REQUIRES CHARGE VALIDATION AND NO *CHARGE* COMMAND
*         FOLLOWS THE *USER* COMMAND.  IF DEFAULT CHARGE VALIDATION 
*         FAILS AND FILE *INPUT* IS ASSIGNED TO A TERMINAL, THE USER
*         WILL BE PROMPTED FOR ENTRY OF A VALID CHARGE AND PROJECT
*         NUMBER. 
          SPACE  4,10 
***       CHARGE COMMAND. 
* 
*         CHARGE,CHARGE,PROJECT.
* 
*         CHARGE,CN=CHARGE,PN=PROJECT.
* 
*         CHARGE. 
* 
*                CHARGE  = EITHER OF THE FOLLOWING -
* 
*                          - CHARGE NUMBER (1-10 ALPHANUMERIC 
*                            CHARACTERS INCLUDING ASTERISK).
* 
*                          - DEFAULT CHARGE PARAMETER (*).  IF
*                            SPECIFIED, AND THE PROJECT NUMBER IS 
*                            NULL, THE DEFAULT CHARGE AND PROJECT 
*                            NUMBERS CONTAINED IN THE USER-S
*                            VALIDATION FILE ENTRY ARE USED.
* 
*                PROJECT = PROJECT NUMBER (1-20 ALPHANUMERIC CHARACTERS 
*                          INCLUDING ASTERISK). 
* 
*         IF BOTH CHARGE AND PROJECT NUMBERS ARE SPECIFIED THEY WILL BE 
*         VALIDATED FROM THE PROJECT PROFILE FILE (PROFILX) AND IF
*         VALID, A NEW ACCOUNT BLOCK WILL BE BEGUN.  OTHERWISE, THE JOB 
*         WILL BE ABORTED.  IF THE DEFAULT CHARGE PARAMETER (*) IS
*         SPECIFIED AS THE CHARGE PARAMETER AND THE PROJECT PARAMETER 
*         IS NULL, THE DEFAULT CHARGE AND PROJECT NUMBERS IN THE USER-S 
*         VALIDATION FILE (VALIDUX) ENTRY WILL BE USED AND PROCESSED AS 
*         IF THEY HAD BEEN ENTERED ON THE *CHARGE* COMMAND WITH THE 
*         EXCEPTION THAT IF BOTH THE DEFAULT CHARGE AND PROJECT FIELDS
*         ARE NULL AND THE USER NAME DOES NOT REQUIRE A *CHARGE*
*         COMMAND (*CCNR* PRIVILEGE) THE COMMAND WILL BE PROCESSED AS A 
*         NO-OP.  THIS IS FOR COMPATIBILITY WITH PREVIOUS SYSTEM LEVELS 
*         AND WILL BE REMOVED IN A FUTURE RELEASE.  IF THE *CHARGE.*
*         FORM OF THE COMMAND IS USED THE CHARGE AND PROJECT NUMBERS
*         WILL BE READ FROM THE FILE *INPUT*.  IF *INPUT* IS NOT
*         ASSIGNED TO A TERMINAL DEVICE, THE CHARGE AND PROJECT NUMBERS 
*         MUST APPEAR ON ONE LINE IN THE FORM - 
* 
*                            CHARGE,PROJECT 
* 
*         IF *INPUT* IS A TERMINAL FILE, THE USER WILL BE PROMPTED
*         FOR CHARGE AND PROJECT NUMBERS.  THEY MAY BE ENTERED
*         SEPARATELY OR IN THE ABOVE FORMAT IN RESPONSE TO THE CHARGE 
*         NUMBER PROMPT.  IF AN ASTERISK IS ENTERED IN RESPONSE TO
*         THE CHARGE NUMBER PROMPT, THE DEFAULT CHARGE WILL BE USED 
*         AND NO PROJECT NUMBER PROMPT WILL BE ISSUED.  IN THE CASE 
*         OF AN ERROR IN INPUT OR CHARGE VALIDATION, THE USER WILL BE 
*         REPROMPTED FOR CHARGE AND PROJECT NUMBERS UP TO A DEFINED 
*         ERROR LIMIT.
* 
* 
*         *CHARGE* COMMAND PROCESSING - 
* 
*         - IF THE COMMAND IS A SECONDARY *CHARGE* COMMAND AND A
*           PROJECT EPILOGUE EXISTS FOR THE CURRENT PROJECT NUMBER
*           THE EPILOGUE IS EXECUTED BEFORE ANY PROCESSING IS PERFORMED 
*           ON THE *CHARGE* COMMAND.  THE SECONDARY *CHARGE* COMMAND IS 
*           REEXECUTED WHEN THE EPILOGUE TERMINATES.
* 
*         - FOR A SECONDARY *CHARGE* COMMAND THE ACCOUNTING INFORMATION 
*           FOR THE CURRENT ACCOUNT BLOCK IS DISPLAYED IN THE ACCOUNT 
*           DAYFILE AND THE SRU-S ACCUMULATED DURING THE ACCOUNT BLOCK
*           ARE ADDED TO THE ACCUMULATOR IN THE PROFILE FILE LEVEL 3
*           BLOCK.
* 
*         - THE NEW CHARGE AND PROJECT NUMBERS ARE SET IN THE JOB-S 
*           NFL, THE SRU ACCUMULATOR IS CLEARED, AND THE SRU
*           MULTIPLIERS AND SRU LIMITS ARE RESET IF NECESSARY.
* 
*         - IF A PROJECT PROLOGUE IS DEFINED FOR THE NEW PROJECT NUMBER 
*           IT IS EXECUTED.  CHARGE REQUIRED STATUS MAY BE SET ON 
*           TERMINATION DEPENDING ON THE OPTION SET IN THE PROFILE FILE 
*           ENTRY.  SEE PROLOGUE SEQUENCING DOCUMENTATION.
* 
*         CHARGE VALIDATION MAY BE INVOKED IMPLICITLY BY *USER* COMMAND 
*         PROCESSING.  SEE *USER* COMMAND DOCUMENTATION.
          SPACE  4,15 
***       LOGOUT COMMANDS.
* 
*         BYE,ANAME.
* 
*         BYE,AP=ANAME. 
* 
*         GOODBYE,ANAME.
* 
*         GOODBYE,AP=ANAME. 
* 
*         HELLO,ANAME.
* 
*         HELLO,AP=ANAME. 
* 
*         LOGIN,ANAME.
* 
*         LOGIN,AP=ANAME. 
* 
*         LOGOUT,ANAME. 
* 
*         LOGOUT,AP=ANAME.
* 
*                ANAME = NETWORK APPLICATION NAME (1-7 ALPHANUMERIC 
*                        CHARACTERS).  THE DEFAULT IS *LOGOUT* FOR THE
*                        *BYE*, *GOODBYE*, AND *LOGOUT* COMMANDS AND
*                        *LOGIN* FOR THE *HELLO* AND *LOGIN* COMMANDS.
* 
* 
*         LOGOUT COMMANDS ARE PROCESSED AS FOLLOWS -
* 
*         - AN EPILOGUE PROGRAM IS EXECUTED IF ONE IS DEFINED.
* 
*         - AN ONLINE INTERACTIVE JOB IS DISCONNECTED FROM THE
*           TERMINAL AND THE TERMINAL IS OPTIONALLY SWITCHED TO 
*           ANOTHER NETWORK APPLICATION.
* 
*         - THE JOB IS TERMINATED.
          SPACE  4,10 
***       *XPR* COMMAND - EXECUTE SEQUENCED PROLOGUE. 
* 
*         $XPR.IT   NNNNNNN 
* 
*                I = PROLOGUE INDEX.
*                  = 0 IF SYSTEM PROLOGUE.
*                  = 1 IF PROJECT PROLOGUE. 
*                  = 2 IF USER PROLOGUE.
* 
*                T = PROLOGUE TERMINATION OPTION + 1 TO SET IF .NE. 0.
*                  = 0 IF NO CHANGE IN TERMINATION OPTION.
* 
*                NNNNNNN = PROLOGUE FILE NAME.
*                        = NULL (LINE TERMINATION) IF PROLOGUE FILE 
*                          ACCESS ERROR.
* 
* 
*         THE *XPR* COMMAND IS USED IN PROLOGUE SEQUENCING TO CLEAR 
*         NO-DROP STATUS AND TO RESET THE LOCAL FILE NAME OF A PROLOGUE 
*         FILE AFTER TERMINATION OF A PREVIOUS PROLOGUE.  THE PROLOGUE
*         TERMINATION OPTION MAY ALSO BE CHANGED OR CLEARED IF
*         NECESSARY.
          SPACE  4,10 
***       PROLOGUE AND EPILOGUE EXECUTION.
* 
*         SYSTEM AND USER PROLOGUE EXECUTION IS INITIATED ONLY BY A 
*         VALID PRIMARY *USER* COMMAND.  PROJECT PROLOGUE EXECUTION IS
*         INITIATED BY A VALID *CHARGE* COMMAND OR BY A *USER* COMMAND
*         IF A CHARGE IS VALIDATED IMPLICITLY.  FOR A PRIMARY *USER*
*         COMMAND THE EXECUTION ORDER IS SYSTEM, PROJECT, AND USER
*         PROLOGUE.  FOR THE SYSTEM AND PROJECT PROLOGUES, OPTIONS CAN
*         BE SELECTED UNDER *MODVAL* OR *PROFILE* TO SPECIFY SECURITY 
*         PROCESSING TO BE PERFORMED ON PROLOGUE TERMINATION.  THIS 
*         MAKES IT POSSIBLE TO RESTRICT THE USAGE OF USER NAMES AND 
*         PROJECT NUMBERS TO SPECIFIC APPLICATIONS OR TO PERFORM
*         VALIDATION CHECKS BEFORE ALLOWING UNRESTRICTED USAGE.  IF A 
*         SHELL PROGRAM IS DEFINED, IT IS POSSIBLE TO PREVENT NORMAL
*         PROCESSING OF COMMANDS IN A PROCEDURE.  THEREFORE, EITHER 
*         SHELL CONTROL WILL BE CLEARED OR THE JOB WILL BE ABORTED
*         DEPENDING ON THE SHELL PROGRAM ABORT OPTION UPON INITIATION 
*         OF A SYSTEM OR PROJECT PROLOGUE.  THE PROLOGUE FILES ARE
*         ACCESSED INTERNALLY BY *CHARGE* TO AVOID PASSING PERMANENT
*         FILE PASSWORDS TO THE SEQUENCING PROCEDURE.  IF ANY OF THE
*         PROLOGUES ABORT, THE SEQUENCING PROCEDURE WILL ABORT AT THAT
*         POINT.  IF A PROLOGUE FILE WAS DEFINED BUT COULD NOT BE 
*         ACCESSED, THE SEQUENCING PROCEDURE WILL ABORT AT THE POINT AT 
*         WHICH THAT PROLOGUE IS INVOKED. 
* 
*         PROJECT EPILOGUE EXECUTION IS INITIATED BY A SECONDARY
*         *CHARGE* COMMAND OR BY A LOGOUT COMMAND IF AN EPILOGUE IS 
*         DEFINED FOR THE CURRENT ACCOUNT BLOCK.  SHELL CONTROL IS
*         CLEARED BEFORE EPILOGUE EXECUTION BEGINS AND CHARGE REQUIRED
*         IS SET ON EPILOGUE TERMINATION TO ENSURE TERMINATION OF THE 
*         ACCOUNT BLOCK.  AN ATTEMPT TO SET SHELL CONTROL WITHOUT THE 
*         CLEAR CONTROL ON SHELL ABORT OPTION IN AN ACCOUNT BLOCK WHICH 
*         HAS AN EPILOGUE DEFINED WILL ABORT THE JOB. 
* 
*         *CHARGE* COMMANDS ARE NOT PERMITTED IN A SYSTEM OR PROJECT
*         PROLOGUE OR IN A PROJECT EPILOGUE TO AVOID AMBIGUITY WITH 
*         RESPECT TO SETTING CHARGE REQUIRED WHICH WOULD RESULT FROM
*         PROLOGUE OR EPILOGUE NESTING.  FOR THE SAME REASON, LOGOUT
*         COMMANDS ARE NOT PERMITTED IN A PROJECT PROLOGUE IF AN
*         EPILOGUE IS DEFINED FOR THE CURRENT ACCOUNT BLOCK.
          SPACE  4,10 
***       DAYFILE MESSAGES. 
* 
*         * ALTERNATE FAMILY NOT ALLOWED.*
*                THE USER IS NOT VALIDATED TO SPECIFY AN ALTERNATE
*                FAMILY ON A SECONDARY *USER* COMMAND.
* 
*         * ALTERNATE USER NAME NOT ALLOWED.* 
*                THE USER IS NOT VALIDATED TO SPECIFY AN ALTERNATE USER 
*                NAME ON A SECONDARY *USER* COMMAND.
* 
*         * CHARGE = CHARGENUMBER, PROJECT = PROJECTNUMBER. 
*                AN ACCOUNT BLOCK HAS BEEN INITIATED UNDER THE
*                INDICATED CHARGE AND PROJECT NUMBERS.
* 
*         * CHARGE ABNORMAL.* 
*                INTERNAL SYSTEM ERROR OCCURRED.
* 
*         * CHARGE ABORTED.*
*                EXTERNAL JOB ABORT.
* 
*         * CHARGE COMMAND REQUIRED.* 
*                THE COMMAND CANNOT BE EXECUTED UNTIL A VALID *CHARGE*
*                COMMAND IS EXECUTED. 
* 
*         * CHARGE FILE BUSY.*
*                FILE IS NOT AVAILABLE FOR CHARGE PURPOSES.  WAIT AND 
*                TRY AGAIN. 
* 
*         * CHARGE NOT VALID.*
*                1) CHARGE OR PROJECT NUMBER DOES NOT EXIST.
*                2) PROJECT NUMBER IS NOT AVAILABLE TO A USER WITH THIS 
*                   USER NAME.
*                3) CHARGE OR PROJECT NUMBER EXISTS BUT IS INACTIVE.
* 
*         * CHARGE NOT VALID AT THIS HOUR.* 
*                THIS PROJECT NUMBER CANNOT BE USED AT THIS TIME OF 
*                DAY. 
* 
*         * CHARGE NUMBER EXPIRED.* 
*                CHARGE NUMBER EXPIRATION DATE HAS OCCURRED.
* 
*         * CHARGE RESTRICTED TO DEFAULT.*
*                THE USER MAY ONLY USE THE DEFAULT CHARGE AND PROJECT 
*                NUMBER.
* 
*         * COMMAND NOT ALLOWED IN PROLOGUE/EPILOGUE.*
*                A *CHARGE* COMMAND WAS EXECUTED IN A SYSTEM PROLOGUE,
*                PROJECT PROLOGUE OR PROJECT EPILOGUE OR A LOGOUT 
*                COMMAND WAS EXECUTED IN A PROJECT PROLOGUE WHEN AN 
*                EPILOGUE WAS DEFINED (ISSUED BY *CPM*).
* 
*         * CUMULATIVE LIMIT EXCEEDED.* 
*                ONE OF THE INSTALLATION DEFINED RESOURCE USAGE 
*                ACCUMULATORS FOR THIS PROJECT EXCEEDS THE MAXIMUM
*                ALLOWABLE VALUE. 
* 
*         * CUMULATIVE SRU LIMIT EXCEEDED.* 
*                SRU ACCUMULATOR FOR THIS PROJECT EXCEEDS THE MAXIMUM 
*                ALLOWABLE VALUE. 
* 
*         * DATA BASE ERROR.* 
*                ERROR IN VALIDATION FILE STRUCTURE DETECTED. 
* 
*         * DEFAULT CHARGE NOT VALID.*
*                SAME AS "CHARGE NOT VALID" EXCEPT THAT THE DEFAULT 
*                CHARGE INFORMATION WAS USED FOR PROCESSING.
* 
*         * DEFAULT CHARGE NULL.* 
*                THE DEFAULT CHARGE NUMBER AND THE DEFAULT PROJECT
*                NUMBER WERE NULL.
* 
*         * EPILOGUE AND SHELL CONFLICT.* 
*                A SHELL PROGRAM WITH THE NO-ABORT OPTION WAS ACTIVE AT 
*                THE TIME A CHARGE AND PROJECT NUMBER WITH AN EPILOGUE
*                WAS VALIDATED. 
* 
*         * ERROR IN ARGUMENTS.*
*                ARGUMENT ERROR WAS DETECTED ON COMMAND.
* 
*         * ERROR IN DEFAULT CHARGE. *
*                DEFAULT CHARGE PROCESSING WAS NOT ATTEMPTED BECAUSE
*                THE DEFAULT CHARGE INFORMATION IN THE USER-S 
*                VALIDATION FILE ENTRY WAS INCORRECT. 
* 
*         * EXTENDED MEMORY MINIMUM CM NOT VALIDATED.*
*                MINIMUM CM REQUIRED FOR EXTENDED MEMORY USAGE EXCEEDS
*                VALIDATION LIMIT.
* 
*         * FORMAT ERROR IN INPUT.* 
*                THE CHARGE OR PROJECT NUMBER READ FROM THE INPUT FILE
*                WAS NOT IN THE CORRECT FORMAT. 
* 
*         * INCORRECT COMMAND.* 
*                THE *XPR* COMMAND WAS EXECUTED IN OTHER THAN THE 
*                PROLOGUE SEQUENCING PROCEDURE. 
* 
*         * INPUT ERROR LIMIT.* 
*                THE MAXIMUM ALLOWED NUMBER OF CONSECUTIVE INPUT ERRORS 
*                WAS EXCEEDED.
* 
*         * NO USER COMMAND EXECUTED.*
*                *CHARGE* COMMAND WAS NOT PRECEDED BY A *USER* COMMAND. 
* 
*         * PROJECT EPILOGUE NOT FOUND.*
*                THE PROJECT EPILOGUE FILE COULD NOT BE ACCESSED. 
* 
*         * PROJECT NUMBER EXPIRED.*
*                PROJECT NUMBER EXPIRATION DATE HAS OCCURRED. 
* 
*         * PROJECT PROLOGUE NOT FOUND.*
*                THE PROJECT PROLOGUE FILE COULD NOT BE ACCESSED. 
* 
*         * PROJECT PROLOGUE FILE NOT LOCAL.* 
*                THE FILE ZZZZPR1 WAS NOT LOCAL TO THE JOB AT THE TIME
*                THE PROJECT PROLOGUE WAS TO BE EXECUTED. 
* 
*         * PROLOGUE AND SHELL CONFLICT.* 
*                A SHELL PROGRAM WITH THE NO-ABORT OPTION WAS ACTIVE AT 
*                THE TIME A CHARGE AND PROJECT NUMBER WITH A PROLOGUE 
*                WAS VALIDATED. 
* 
*         * SECONDARY USER COMMANDS DISABLED.* = THE SYSTEM IS NOT
*                OPERATING IN SECURE MODE AND SECONDARY USER COMMANDS 
*                ARE DISABLED.
* 
*         * SECURITY CONFLICT.* 
*                USER AND/OR FAMILY NAME SPECIFIED ON A *USER* COMMAND
*                WERE NOT VALID OR A SECONDARY *USER* COMMAND WAS 
*                EXECUTED WHEN THE SYSTEM WAS RUNNING IN SECURED MODE 
*                (ISSUED BY *CPM*). 
* 
*         * SYSTEM PROLOGUE NOT FOUND.* 
*                THE SYSTEM PROLOGUE FILE COULD NOT BE ACCESSED.
* 
*         * TL NOT VALIDATED.*
*                JOB COMMAND *TL* PARAMETER IS GREATER THAN THE USER-S
*                VALIDATION LIMIT.
* 
*         * USER PROLOGUE NOT FOUND.* 
*                THE USER PROLOGUE FILE COULD NOT BE ACCESSED.
* 
*         * USER PROLOGUE FILE NOT LOCAL.*
*                THE FILE ZZZZPR2 WAS NOT LOCAL TO THE JOB AT THE TIME
*                THE USER PROLOGUE WAS TO BE EXECUTED.
* 
*         * YOUR PASSWORD EXPIRES AT 00.00.00 ON YY/MM/DD.* 
*                YOUR PASSWORD EXPIRES ON THE SPECIFIED TIME AND DATE.
          SPACE  4,10 
***       ACCOUNT FILE MESSAGES - 
* 
*         *ABUN, USER, FAMILY, TERMINAL.* 
*                PRIMARY *USER* COMMAND EXECUTED. 
* 
*         *ABIC, CHARGE, PROJECT.*
*                INITIAL DEFAULT CHARGE AND PROJECT NUMBER. 
* 
*         *ACUN, USER, FAMILY.* 
*                SECONDARY USER COMMAND EXECUTED. 
* 
*         *ABCN, CHARGE, PROJECT.*
*                BEGIN ACCOUNT BLOCK FOR PRIMARY CHARGE.
* 
*         *ACCN, CHARGE, PROJECT.*
*                BEGIN ACCOUNT BLOCK FOR SECONDARY CHARGE.
          TITLE  PROGRAM EQUIVALENCES.
**        ASSEMBLY OPTIONS. 
* 
*         LIM$ EQU 0 - FULL CHECKING- CHARGE PERFORMS ALL CHECKS
*                      CORRESPONDING TO THE ABOVE ERROR MESSAGE 
*                      DOCUMENTATION. 
*         LIM$ EQU 1 - SUPPRESSES CHECKING OF SRU ACCUMULATORS AND
*                      INSTALLATION DEFINED RESOURCE USAGE
*                      ACCUMULATORS, BUT RETAINS ALL OTHER CHECKING.
*         RPE$ DEFINED - ASSEMBLE CODE TO READ PROFILE FILE LEVEL 3 
*                      BLOCK FROM RANDOM ADDRESS. 
  
  
 RPE$     EQU    0
 LIM$     EQU    0
          SPACE  4,10 
*CALL     COMCCMD 
*CALL     COMCMAC 
*CALL     COMSACC 
*CALL     COMSJCE 
*CALL     COMSLFD 
*CALL     COMSPRD 
*CALL     COMSPFM 
          LIST   X
*CALL     COMSPRO 
          LIST   *
*CALL     COMSRPV 
*CALL     COMSSCD 
*CALL     COMSSRU 
*CALL     COMSSSJ 
*CALL     COMSTCM 
  
          SPACE  4,10 
**        PROGRAM EQUATES.
  
  
 ARG=     EQU    0           SUPPRESS COMMAND CRACKING
 SDM=     EQU    *           SUPPRESS DAYFILE MESSAGE 
 VAL=     EQU    *           ALLOW VALIDATION 
 BUFL     EQU    101B        BUFFER LENGTH
 ERLIM    EQU    5           INPUT ERROR RETRY LIMIT
 RPMS     EQU    /COMSRPV/OTMS+/COMSRPV/TIMS+/COMSRPV/PPMS  RPV MASK
          TITLE  GLOBAL DATA AREA.
**        FETS. 
  
  
          ORG    120B 
 ORIG     BSS    0
 I        BSS    0
 INPUT    FILEB  IBUF,BUFL,FET=10B
 O        BSS    0
 ZZZZZG0  FILEB  OBUF,BUFL,FET=10B,DTY=2RTT 
 F        BSS    0
 FILE     FILEB  FBUF,BUFL,EPR,(FET=17B)
 SSJ=     SPACE  4,10 
*         SPECIAL SYSTEM JOB PARAMETER AREA.
  
 SSJ=     VFD    12/0,24/0,12/PRCS,12/0 
          BSSZ   SSJL-1 
          SPACE  4,10 
*         GLOBAL STORAGE. 
  
 ACSF     CON    0           *ASCII* CHARACTER SET FLAG 
 APN      CON    0           APPLICATION NAME FOR LOGOUT
 DFCF     CON    0           DEFAULT CHARGE PRESENT FLAG
 EXER     CON    0           EXTERNAL ERROR CODE
 PRST     CON    0           PROLOGUE/EPILOGUE STATUS 
 TJEF     CON    0           TERMINATE JOB ON ERROR FLAG
 TRIA     CON    0           TERMINAL INTERRUPT ADDRESS 
 TRIF     CON    0           TERMINAL INTERACTION FLAG
  
*         THE ORDER OF THE FOLLOWING NINE LOCATIONS MUST BE MAINTAINED. 
  
 SPF      CON    0           SYSTEM PROLOGUE FILE NAME
          DATA   7LLIBRARY   SYSTEM PROLOGUE USER NAME
          CON    0           SYSTEM PROLOGUE PASSWORD 
 PPF      CON    0           PROJECT PROLOGUE FILE NAME AND OPTION
          CON    0           PROJECT PROLOGUE USER NAME 
          CON    0           PROJECT PROLOGUE PASSWORD
 UPF      CON    0           USER PROLOGUE FILE NAME
          CON    0           USER PROLOGUE USER NAME
          CON    0           USER PROLOGUE PASSWORD 
  
*         USER VALIDATION PARAMETER BLOCK.
  
 UNAM     CON    0           USER NAME
 UPSW     CON    0           USER PASSWORD / SPECIAL USER NAMES FLAG
 UFAM     CON    0           FAMILY NAME / STATUS FLAGS 
 UALMW    CON    0           ALMW - ACCOUNT LIMIT WORD
 UACLW    CON    0           ACLW - ACCOUNT COUNTING LIMIT WORD 
 UAACW    CON    0           AACW - ACCOUNT ACCESS CONTROL WORD 
 UPRO     CON    0           PROLOGUE FILE NAMES
 UPJ1     CON    0           DEFAULT PROJECT NUMBER (FIRST WORD)
 UPJ2     CON    0           DEFAULT PROJECT NUMBER (SECOND WORD) 
 UCRN     CON    0           DEFAULT CHARGE NUMBER
 UTRN     CON    0           TERMINAL NAME/TERMINAL NUMBER
  
*         CHARGE VALIDATION PARAMETER BLOCK.
  
 SRUM     BSS    2           CONTROL POINT SRU WORDS
 CGN      BSS    1           CHARGE NUMBER
 PRN      BSS    2           PROJECT NUMBER 
 ACCM     BSS    5           ACCOUNT FILE MESSAGE BUFFER
  
*         PROLOGUE/EPILOGUE CONTROL PARAMETER BLOCK.
  
 PRC      CON    0
  
*         REPRIEVE PARAMETER BLOCK. 
  
 RPB      RPVBLK RPV
          TITLE  COMMAND PROCESSORS.
 USER     SPACE  4,20 
**        USE - *USER* AND *ACCOUNT* COMMANDS.
* 
*         EXIT   TO *EPF* IF CHARGE NOT REQUIRED. 
*                TO *CHARGE* IF CHARGE REQUIRED AND NEXT COMMAND IS 
*                  *CHARGE*.
*                TO *RCH* IF DEFAULT CHARGE ERROR AND TERMINAL INPUT
*                  FILE.
*                TO *ABT* IF DEFAULT CHARGE ERROR AND NOT TERMINAL
*                  INPUT FILE.
* 
*         USES   X - 1, 2, 3, 5, 6. 
*                A - 0, 1, 2. 
*                B - 3, 6.
* 
*         CALLS  ABT, EPF, GPR, PRS, RCH, SCA, STI, VCH, VUN. 
* 
*         MACROS CONTROL, DISSR, MESSAGE, WRITEC, WRITER. 
  
  
 USER     BSS    0           ENTRY
 ACCOUNT  BSS    0
          RJ     PRS         PRESET 
          DISSR  IAAC        DISABLE SRU ACCUMULATION 
          SA0    USEA        SET ARGUMENT TABLE ADDRESS 
          SB3    USEB        SET SECURE ARGUMENT TABLE ADDRESS
          RJ     SCA         SET COMMAND ARGUMENTS
 USE1     SA1    A0          READ ARGUMENT TABLE
          ZR     X1,USE2     IF END OF ARGUMENTS
          SA1    X1          READ ARGUMENT
          SX1    X1 
          SA0    A0+B1       ADVANCE ARGUMENT POINTER 
          ZR     X1,USE1     IF ARGUMENT .LE. 7 CHARACTERS
          SB6    ERAR        * ERROR IN ARGUMENTS.* 
          EQ     ABT         ABORT
  
 USE2     RJ     VUN         VALIDATE USER NAME 
          CONTROL  CCDR,RSS  READ NEXT COMMAND
          SA1    ACTR 
          MX0    -6          CHECK FOR LEADING *$* OR */* 
          MX3    42 
          LX1    6
          BX0    -X0*X1 
          SX2    X0-1R$ 
          ZR     X2,USE3     IF *$* 
          SX2    X0-1R/ 
          ZR     X2,USE3     IF */* 
          LX1    -6 
 USE3     SA2    =6LCHARGE
          BX1    X3*X1
          BX2    X1-X2
          NZ     X2,USE4     IF NOT *CHARGE*
          CONTROL  CCDR      ADVANCE TO *CHARGE* COMMAND
          EQ     CHARGE      PROCESS *CHARGE* COMMAND 
  
 USE4     SA1    SSJ=+AACS   GET CHARGE REQUIRED FLAG 
          LX1    59-7 
          NG     X1,EPF      IF CHARGE NOT REQUIRED, PROCESS PROLOGUES
          DISSR  IACH        SET CHARGE VALIDATION UNIT CHARGE
          RJ     GPR         GET PROLOGUE/EPILOGUE STATUS 
          SX2    B0          SET VALIDATE DEFUALT CHARGE
          RJ     VCH         VALIDATE DEFAULT CHARGE
          RJ     STI         SET TERMINAL INTERACTION 
          SA1    TRIF 
          ZR     X1,ABT      IF NOT INTERACTIVE JOB 
          MESSAGE  B6,,R     ISSUE ERROR MESSAGE
          WRITEC O,B6        ISSUE MESSAGE TO TERMINAL
          WRITER O,R
          EQ     RCH         READ CHARGE FROM INPUT FILE
  
  
 USEA     BSS    0           ARGUMENT TABLE 
 UN       ARG    UNAM,UNAM,400B,1 
 PW       ARG    UPSW,UPSW,400B,1 
 FM       ARG    UFAM,UFAM,400B,1 
          ARG 
  
 USEB     BSS    0           SECURE ARGUMENTS FOR REMOVAL 
          VFD    42/2LPW,18/2  PASSWORD 
          CON    0           END OF TABLE 
 CHARGE   SPACE  4,15 
**        CHA - *CHARGE* COMMAND. 
* 
*         EXIT   TO *ABT* IF INVALID CHARGE.
*                TO *RCH* TO READ CHARGE FROM INPUT FILE. 
* 
*         USES   X - 1, 2, 6, 7.
*                A - 0, 1, 2. 
*                B - 3, 6.
* 
*         CALLS  ABT, EEF, GPR, ICA, PRS, RCH, SCA, STI, VCH. 
* 
*         MACROS DISSR. 
  
  
 CHARGE   BSS    0           ENTRY
          RJ     PRS         PRESET 
          RJ     GPR         GET PROLOGUE/EPILOGUE STATUS 
          SA1    PRST 
          MX6    2
          MX0    -25
          SB6    ERCN        * COMMAND NOT ALLOWED IN PROLOGUE/ ...*
          SX7    CRPT        SET CHARGE REQUIRED OPTION 
          BX2    X6*X1
          BX1    -X0*X1 
          NZ     X2,ICA      IF IN SYSTEM OR PROJECT PROLOGUE/EPILOGUE
          NZ     X1,EEF      IF EPILOGUE PENDING
          DISSR  IACH        DISABLE SRU ACCUMULATION 
          SA0    CHAA        SET ARGUMENT TABLE ADDRESS 
          SB3    B0+         SET NO SECURE ARGUMENTS
          RJ     SCA         SET COMMAND ARGUMENTS
          SB6    ERNU        * NO USER COMMAND EXECUTED.* 
          SA1    SSJ=+UIDS
          MX0    42 
          BX1    X0*X1
          ZR     X1,ABT      IF NO USER COMMAND EXECUTED
          SA1    CGN
          SA2    PRN
          SB6    ERAR        * ERROR IN ARGUMENTS.* 
          ZR     X1,CHA2     IF CHARGE PARAMETER NOT SPECIFIED
          LX1    6
          NZ     X2,CHA1     IF PROJECT NUMBER SPECIFIED
          SX1    X1-1R* 
          NZ     X1,ABT      IF NOT DEFAULT CHARGE PARAMETER
 CHA1     RJ     VCH         VALIDATE CHARGE AND PROJECT NUMBERS
          EQ     ABT         ABORT
  
 CHA2     NZ     X2,ABT      IF PROJECT NUMBER SPECIFIED
          RJ     STI         SET TERMINAL INTERACTION 
          EQ     RCH         READ CHARGE FROM *INPUT* FILE
  
  
 CHAA     BSS    0           ARGUMENT TABLE 
 CN       ARG    CGN,CGN,400B,1 
 PN       ARG    PRN,PRN,400B,2 
          ARG 
 LOG      SPACE  4,15 
**        LOG - LOGOUT COMMANDS.
* 
*         EXIT   TO *ABT* IF ERROR. 
*                TO *EEF* TO EXECUTE EPILOGUE.
*                TO *TRJ* TO TERMINATE JOB. 
* 
*         USES   X - 1, 6, 7. 
*                A - 0, 1.
*                B - 3, 6.
* 
*         CALLS  ABT, EEF, GPR, ICA, PRS, SCA, TRJ. 
  
  
 HELLO    BSS    0           ENTRY
 LOGIN    BSS    0           ENTRY
          SA1    =5LLOGIN    SET DEFAULT APPLICATION
          BX6    X1 
          SA6    APN
 BYE      BSS    0           ENTRY
 GOODBYE  BSS    0           ENTRY
 LOGOUT   BSS    0           ENTRY
          RJ     PRS         PRESET 
          RJ     GPR         GET PROLOGUE/EPILOGUE STATUS 
          SA2    PRST 
          MX0    -25
          BX1    -X0*X2 
          ZR     X1,LOG1     IF NO EPILOGUE PENDING 
          SB6    ERCN        * COMMAND NOT ALLOWED IN PROLOGUE/ ...*
          NG     X2,ICA      IF IN PROLOGUE 
          SX7    LOPT        SET LOGOUT OPTION
          EQ     EEF         EXECUTE EPILOGUE 
  
 LOG1     SA0    LOGA        SET ARGUMENT TABLE ADDRESS 
          SB3    0           SET NO SECURE ARGUMENTS
          RJ     SCA         SET COMMAND ARGUMENTS
          SA1    APN
          SX1    X1 
          NZ     X1,LOG2     IF ERROR IN APPLICATION NAME 
          EQ     TRJ         TERMINATE JOB
  
 LOG2     SB6    ERAR        * ERROR IN ARGUMENTS.* 
          EQ     ABT         ABORT
  
  
 LOGA     BSS    0           ARGUMENT TABLE 
 AP       ARG    APN,APN,400B,1 
          ARG 
 XPR      SPACE  4,10 
**        XPR - EXECUTE SEQUENCED PROLOGUE. 
* 
*         EXIT   TO *END* IF NO ERROR.
*                TO *ABT* IF PROLOGUE FILE ERROR. 
*                TO *ICA* IF ERROR IN *XPR* CALL. 
* 
*         CALLS  ABT, END, GPR, ICA, PRS, SNM.
* 
*         MACROS RENAME, SETFS. 
  
 XPR      BSS    0           ENTRY
          RJ     PRS         PRESET 
          RJ     GPR         GET PROLOGUE/EPILOGUE STATUS 
          SA1    PRST 
          SA5    CCDR 
          SB6    ERIC        * INCORRECT COMMAND.*
          LX1    59-58
          LX5    -18
          PL     X1,ICA      IF NOT CALLED FROM SEQUENCING PROCEDURE
          MX0    -6 
          BX6    -X0*X5 
          SB6    ERAR        * ERROR IN ARGUMENTS.* 
          SX1    X6-1R0 
          SX6    X6-1R1 
          SX2    X1-CAPT-2
          NG     X1,ICA      IF NOT VALID TERMINATION OPTION
          PL     X2,ICA      IF NOT VALID TERMINATION OPTION
          NG     X6,XPR1     IF NOT TO CHANGE TERMINATION OPTION
          SX1    B1          SET TERMINATION OPTION 
          LX6    18 
          BX6    X6+X1
          SA6    PRC
 XPR1     SA3    =6LZZZZPR
          SA4    CCDR+1 
          LX5    -6 
          BX6    -X0*X5 
          SX1    X6-1R0 
          SX2    X6-1R3 
          SX7    B1 
          LX6    18 
          NG     X1,ICA      IF NOT VALID PROLOGUE INDEX
          PL     X2,ICA      IF NOT VALID PROLOGUE INDEX
          SB6    ERPF        * XXXXXXX PROLOGUE NOT FOUND.* 
          ZR     X4,XPR2     IF PROLOGUE FILE ACESSS ERROR
          BX6    X6+X7
          BX6    X6+X3
          BX7    X4 
          SA6    F
          SA7    F+6
          RENAME F           RESET FILE NAME
          SA1    F
          MX7    -8 
          LX1    -10
          BX1    -X7*X1 
          SB6    ERPL        * XXXXXXX PROLOGUE FILE NOT LOCAL.*
          NZ     X1,XPR2     IF PROLOGUE FILE NOT LOCAL 
          SX7    B1          SET FILE NAME IN FET 
          BX7    X4+X7
          SA7    F
          SETFS  F,AD        CLEAR NO-DROP STATUS 
          EQ     END         TERMINATE
  
*         PROCESS PROLOGUE FILE ERROR.
  
 XPR2     BX6    -X0*X5      SET PROLOGUE TYPE
          SX6    X6-1R0 
          SA1    XPRA+X6     SET PROLOGUE/EPILOGUE TYPE IN MESSAGE
          SB5    B6+         SET MESSAGE ADDRESS
          SB2    1R?
          RJ     SNM
          EQ     ABT         ABORT
  
  
 XPRA     DATA   6LSYSTEM 
          DATA   7LPROJECT
          DATA   4LUSER 
          TITLE  PROLOGUE AND EPILOGUE SEQUENCING ROUTINES. 
 ACF      SPACE  4,15 
**        ACF - ACCESS PROLOGUE OR EPILOGUE FILE. 
* 
*         ENTRY  (X1) = 42/PERMANENT FILE NAME, 18/0. 
*                (X2) = 42/PASSWORD, 18/0.
*                (X3) = 42/USERNAME, 18/0.
*                (X4) = 42/LOCAL FILE NAME, 18/0. 
*                (B6) = 0 IF TO CLEAR SSJ= FILE STATUS. 
*                (B6) .NE. 0 IF TO SET NO-DROP FILE STATUS. 
* 
*         EXIT   (X5) = 0 IF FILE FOUND.
* 
*         USES   X - 0, 5, 6, 7.
*                A - 5, 6, 7. 
* 
*         MACROS ATTACH, GET, SETFS.
  
  
 ACF      SUBR               ENTRY/EXIT 
          SX6    3           SET FILE STATUS
          SX7    SRNF*10000B+PTRD  SET NO FAST ATTACH AND READ MODE 
          BX6    X4+X6
          BX7    X1+X7
          SA6    F+CFSN      SET LOCAL FILE NAME
          SA7    F+CFPN      SET PERMANENT FILE NAME AND MODE 
          SX5    ACFA        SET ERROR MESSAGE ADDRESS
          BX6    X3 
          BX7    X2+X5
          SA6    F+CFOU      SET USERNAME 
          SA7    F+CFPW      SET PASSWORD 
          GET    F,,,,,,IP
          SA5    X2          CHECK ERROR
          MX0    -8 
          AX5    10 
          BX5    -X0*X5 
          SX6    X5-/ERRMSG/FNF 
          NZ     X6,ACF1     IF NOT *FILE NOT FOUND*
          ATTACH F,,,,,,,IP 
          SA5    X2+         SET ERROR STATUS 
          AX5    10 
          BX5    -X0*X5 
 ACF1     NZ     X5,ACFX     IF ERROR IN ACCESS 
          NZ     B6,ACF2     IF SET NO-DROP STATUS
          SETFS  F,AD        CLEAR SSJ= STATUS
          EQ     ACFX        EXIT 
  
 ACF2     SETFS  F,NAD       SET NO-DROP STATUS 
          EQ     ACFX        EXIT 
  
  
 ACFA     BSS    3           ERROR MESSAGE
 EEF      SPACE  4,20 
**        EEF - EXECUTE EPILOGUE FILE.
* 
*         ENTRY  (X1) = PROFILE FILE LEVEL 3 BLOCK POINTERS.
*                (X7) = EPILOGUE TERMINATION OPTION.
* 
*         EXIT   TO *EXP* TO EXECUTE EPILOGUE.
*                TO *ABT* IF ERROR. 
* 
*         USES   X - 0, 1, 2, 3, 7. 
*                A - 0, 1, 2, 3, 7. 
*                B - 2, 5, 6. 
* 
*         CALLS  ACF, EXP, IPS, RPE, RPF, SNM.
* 
*         MACROS MESSAGE, MOVE, WRITEC. 
  
  
 EEF      BSS    0           ENTRY
          SX6    X7-LOPT
          LX7    18 
          NZ     X6,EEF1     IF NOT LOGOUT ON TERMINATION OPTION
          SA6    EEFB        SET NO *REVERT,EX* PROCESSING
 EEF1     SX2    3           SET EPILOGUE PENDING AND OPTION FLAGS
          BX7    X7+X2       SET EPILOGUE CONTROLS
          SA7    PRC
          RJ     RPE         READ PROFILE ENTRY 
          NZ     B6,ABT      IF ERROR IN PROFILE ENTRY
          RJ     RPF         RESTORE USER-S PERMANENT FILE PARAMETERS 
          SA1    B5+PENW     READ EPILOGUE FILE NAME
          SA3    B5+PEUW     READ USERNAME
          SA2    B5+PEPW     READ PASSWORD
          MX0    42 
          BX1    X0*X1
          BX3    X0*X3
          BX2    X0*X2
          BX4    X1          EPILOGUE LOCAL FILE NAME 
          SA0    A1          SAVE EPILOGUE NAME ADDRESS 
          SB6    B0          CLEAR SSJ= FILE STATUS 
          RJ     ACF         ACCESS FILE
          SA1    EEFB 
          NZ     X1,EEF2     IF *CHARGE* COMMAND
          MOVE   8,CCDR,EEFB MOVE LOGOUT COMMAND
          EQ     EEF3        SET EPILOGUE CALL
  
 EEF2     MOVE   7,CCDR,EEFB+2  MOVE *CHARGE* COMMAND 
          SX1    0           PACK *CHARGE* COMMAND CALL 
          SB5    EEFB 
          SB2    1R?         SET SEARCH CHARACTER 
          RJ     SNM
 EEF3     ZR     X5,EEF4     IF NO FILE ACCESS ERROR
          MESSAGE  EREF      * PROJECT EPILOGUE NOT FOUND.* 
          EQ     EEF5        INITIALIZE SEQUENCING
  
 EEF4     SA1    A0+         SET FILE NAME
          MX0    42 
          BX1    X0*X1
          SB5    EEFA        SET CALL ADDRESS 
          SB2    1R?         SET SEARCH CHARACTER 
          RJ     SNM         SET EPILOGUE CALL
 EEF5     RJ     IPS         INITIALIZE EPILOGUE SEQUENCING 
          NZ     X5,EEF6     IF EPILOGUE FILE ACCESS ERROR
          WRITEC F,EEFA      WRITE EPILOGUE CALL
 EEF6     WRITEC F,EEFB      WRITE CHARGE OR LOGOUT COMMAND 
          WRITEC F,(=C*$REVERT,NOLIST.*)
          WRITEC F,(=C*EXIT.*)  WRITE EXIT PROCESSING 
          WRITEC F,EEFB 
          WRITEC F,(=C*$REVERT,NOLIST.*)
          EQ     EXP         EXECUTE EPILOGUE 
  
  
 EEFA     DATA   C*???????. PROJECT EPILOGUE* 
 EEFB     DATA   20L$REVERT,EX.?????????
          BSSZ   8
 EPF      SPACE  4,15 
**        EPF - EXECUTE PROLOGUE FILES. 
* 
*         ENTRY  (SPF - SPF+8) = PROLOGUE PARAMETERS. 
* 
*         EXIT   PROLOGUE AND EPILOGUE CONTROLS SET IF REQUIRED.
*                TO *EXP* TO EXECUTE PROLOGUES. 
* 
*         USES   X - 1, 2, 3, 4, 5. 
*                A - 0, 1, 2, 3, 4. 
*                B - 2, 5, 6, 7.
* 
*         CALLS  ACF, END, EXP, SNM.
  
  
 EPF      BSS    0           ENTRY
  
*         PROCESS SYSTEM AND PROJECT PROLOGUE TERMINATION OPTIONS.
  
          SA1    SPF
          SA2    PPF
          SA3    UPF
          SA4    PRC
          SX7    X1+
          SX0    X2+
          BX6    X1+X2
          ZR     X6,EPF3     IF NO SYSTEM OR PROJECT PROLOGUE DEFINED 
          IX0    X7-X0       CHECK SYSTEM AND PROJECT PROLOGUE OPTIONS
          PL     X0,EPF1     IF PROJECT PROLOGUE OPTION NOT GREATER 
          SX7    X2+         USE PROJECT PROLOGUE OPTION
 EPF1     SX6    B1          SET INITIAL TERMINATION OPTION FLAGS 
          LX7    18 
          BX7    X4+X7
          BX7    X7+X6
          SA7    A4 
          LX6    18 
          ZR     X2,EPF2     IF NO PROJECT PROLOGUE DEFINED 
          NG     X0,EPF2     IF PROJECT PROLOGUE OPTION SET AS INITIAL
          SA4    EPFA+2 
          SX7    X2+B1       SET TO CHANGE TERMINATION OPTION 
          LX7    18 
          IX7    X4+X7
          SA7    A4 
 EPF2     ZR     X3,EPF3     IF NO USER PROLOGUE DEFINED
          SA4    EPFA+4 
          IX6    X4+X6       SET TO CLEAR TERMINATION OPTION
          SA6    A4 
          SX6    X2-CRPT     CHECK PROJECT PROLOGUE OPTION
          NZ     X6,EPF3     IF NOT UNCONDITIONAL CHARGE REQUIRED 
          SA6    UPF         CLEAR USER PROLOGUE PROCESSING 
  
*         ACCESS PROLOGUE FILES.
  
 EPF3     SB7    B0          INITIALIZE PROLOGUE INDEX
          SB6    B0          INITIALIZE EXECUTE PROLOGUE FLAG 
          SB5    EPFB        INITIALIZE PROLOGUE CALL ADDRESS 
          SA0    SPF         SET PROLOGUE PARAMETERS ADDRESS
 EPF4     SA1    A0          READ FILE NAME 
          SA3    A0+B1       READ USER NAME 
          SA2    A0+2        READ PASSWORD
          MX0    42 
          ZR     X1,EPF6     IF PROLOGUE NOT DEFINED
          BX1    X0*X1
          BX4    X1          PRESET LOCAL FILE NAME 
          ZR     B6,EPF5     IF NO PREVIOUS PROLOGUE
          SX5    B7 
          SA4    =7LZZZZPR0  SET LOCAL FILE NAME
          LX5    18 
          IX4    X4+X5
 EPF5     RJ     ACF         ACCESS PROLOGUE FILE 
          SB6    B1          SET EXECUTE PROLOGUE FLAG
          NZ     X5,EPF8     IF FILE NOT FOUND
          SA1    A0          SET PROLOGUE NAME IN CALL
          MX0    42 
          SB2    B7+B7       INDEX*2
          BX1    X0*X1
          BX6    X1 
          SA6    EPFA+1+B2
          SB2    1R?
          RJ     SNM
 EPF6     NZ     B7,EPF7     IF SYSTEM PROLOGUE NOT JUST PROCESSED
          RJ     RPF         RESTORE USER-S PERMANENT FILE PARAMETERS 
 EPF7     SB7    B7+1        ADVANCE PROLOGUE INDEX 
          SB5    B5+4        ADVANCE PROLOGUE CALL ADDRESS
          SB2    B7-3 
          SA0    A0+3        ADVANCE PARAMETER ADDRESS
          NZ     B2,EPF4     IF ALL PROLOGUES NOT PROCESSED 
          ZR     B6,END      IF NO PROLOGUES DEFINED
  
*         BUILD SEQUENCING PROCEDURE. 
  
 EPF8     RJ     IPS         INITIALIZE PROLOGUE SEQUENCING 
          SA0    SPF         SET PARAMETERS ADDRESS 
          MX0    42          SET FIRST PROLOGUE MASK
          SB7    B0          SET CALL PARAMETERS INDEX
 EPF9     SA1    A0+
          SA5    EPFA+1+B7
          ZR     X1,EPF11    IF PROLOGUE NOT DEFINED
          BX2    X0*X5
          NZ     X2,EPF10    IF FIRST PROLOGUE AND NO ACCESS ERROR
          WRITEC F,EPFA+B7   WRITE REENTRY PROCESSING 
 EPF10    ZR     X5,EPF12    IF FILE ACCESS ERROR 
          SB2    B7+B7       WRITE PROLOGUE CALL
          WRITEC F,EPFB+B2
          SX0    B0+         CLEAR FIRST PROLOGUE MASK
 EPF11    SB7    B7+2        ADVANCE CALL PARAMETERS INDEX
          SA0    A0+3        ADVANCE PARAMETER ADDRESS
          SB2    B7-6 
          NZ     B2,EPF9     IF ALL PROLOGUES NOT PROCESSED 
 EPF12    WRITEC F,(=C*$REVERT,NOLIST.*)
          WRITEC F,(=C*EXIT.*)
          WRITEC F,(=C*$REVERT,ABORT. PROLOGUE EXECUTION ABORTED*)
  
*         INSURE TERMINATION OPTION SET FOR *XPR* PROCESSING IF USER
*         PROLOGUE NOT FOUND AND NO SYSTEM OR PROJECT PROLOGUE DEFINED. 
  
          SX1    A0-UPF 
          NZ     X1,EXP      IF NOT EXIT ON USER PROLOGUE NOT FOUND 
          SA1    SPF
          SA2    PPF
          BX1    X1+X2
          SX6    B1 
          NZ     X1,EXP      IF SYSTEM OR PROJECT PROLOGUE DEFINED
          SX1    CCPT        SET *CLEAR CONTROLS* TERMINATION OPTION
          LX1    18 
          BX6    X1+X6
          SA1    PRC         ADD TO OTHER OPTIONS, IF ANY 
          BX6    X1+X6
          SA6    A1 
          EQ     EXP         EXECUTE PROLOGUES
  
  
 EPFA     VFD    30/0L$XPR.,6/1L0,6/1L0,18/3H 
          CON    0
          VFD    30/0L$XPR.,6/1L1,6/1L0,18/3H 
          CON    0
          VFD    30/0L$XPR.,6/1L2,6/1L0,18/3H 
          CON    0
  
 EPFB     DATA   24L???????. SYSTEM PROLOGUE
          DATA   0
          DATA   25L???????. PROJECT PROLOGUE 
          DATA   0
          DATA   30L$BEGIN,,???????. USER PROLOGUE
          DATA   0
 IPS      SPACE  4,10 
**        IPS - INITIALIZE PROLOGUE OR EPILOGUE SEQUENCING. 
* 
*         EXIT   PROCEDURE HEADER WRITTEN TO SEQUENCING PROCEDURE FILE. 
* 
*         USES   X - 1, 6.
*                A - 1, 6.
* 
*         MACROS RETURN, WRITEC.
  
  
 IPS      SUBR               ENTRY/EXIT 
          SA1    =7LZZZZZG1  SET FILE NAME IN FET 
          SX6    B1 
          BX6    X6+X1
          SA6    F
          RETURN F,R
          WRITEC F,(=14L.PROC,ZZZZZG1.)  WRITE PROCEDURE HEADER 
          EQ     IPSX        RETURN 
 RPF      SPACE  4,10 
**        RPF - RESTORE USER-S PERMANENT FILE PARAMETERS. 
* 
*         EXIT   USER-S PERMANENT FILE PARAMETERS RESTORED. 
* 
*         USES   X - 1, 6, 7. 
*                A - 1, 6, 7. 
* 
*         MACROS SETPFP.
  
  
 RPF      SUBR               ENTRY/EXIT 
          SA1    SSJ=+UIDS   RESTORE USER-S PERMANENT FILE PARAMETERS 
          SX7    3           SET USER NAME AND INDEX
          BX6    X1 
          SA7    RPFA 
          SA6    RPFA+2 
          SETPFP RPFA        SET PERMANENT FILE PARAMETERS
          EQ     RPFX        RETURN 
  
  
 RPFA     BSS    3           PERMANENT FILE PARAMETERS
          TITLE  CHARGE VALIDATION ROUTINES.
 GDC      SPACE  4,20 
**        GDC - GET DEFAULT CHARGE AND PROJECT NUMBERS. 
* 
*         CALLS *CPM* TO GET DEFAULT CHARGE AND PROJECT NUMBERS IF NOT
*         ALREADY PRESENT.
* 
*         ENTRY  (DFCF) .NE. 0 IF DEFAULT CHARGE PRESENT. 
* 
*         EXIT   (UCRN) = DEFAULT CHARGE NUMBER.
*                (UPJ1 - UPJ2) = DEFAULT PROJECT NUMBER.
*                (DFCF) .NE. 0. 
* 
*         USES   X - 1, 6.
*                A - 1, 6.
* 
*         CALLS  CPM=.
* 
*         MACROS MOVE.
  
  
 GDC      SUBR               ENTRY/EXIT 
          SA1    DFCF 
          NZ     X1,GDCX     IF DEFAULT CHARGE INFORMATION PRESENT
          SX6    B1          SET INFORMATION PRESENT
          SA6    A1 
          SX1    SBUF        SET PARAMETER BLOCK ADDRESS
          SX2    126B        SET RETURN USER BLOCK FUNCTION 
          RJ     CPM= 
          MOVE   3,(SBUF+APJN),UPJ1  SET DEFAULT CHARGE INFORMATION 
          EQ     GDCX        RETURN 
 RCH      SPACE  4,15 
**        RCH - READ CHARGE FROM *INPUT* FILE.
* 
*         ENTRY  (TRIF) = TERMINAL INTERACTION FLAG.
* 
*         EXIT   TO *VCH* TO VALIDATE CHARGE AND PROJECT. 
*                TO *ABT* IF RETRY LIMIT EXCEEDED.
*                TO *RSE* IF EXTERNAL ERROR.
* 
*         USES   X - 0, 1, 2, 3, 4, 6, 7. 
*                A - 1, 2, 3, 4, 6, 7.
*                B - 2, 6.
* 
*         CALLS  ABT, POP, USB, VCH.
* 
*         MACROS READ, READC, WRITEC, WRITER. 
  
  
 RCH      BSS    0           ENTRY
          SA1    TRIF 
          SA2    EXER 
          SX0    X1+
          ZR     X1,RCH1     IF NO TERMINAL INTERACTION 
          NZ     X2,RSE      IF EXTERNAL ERROR
          SX6    RCH         SET INTERRUPT ADDRESS
          SA6    TRIA 
          WRITEC O,RCHA      ISSUE CHARGE NUMBER PROMPT 
          WRITER O,R         FORCE WRITE
 RCH1     READ   I,R         READ CHARGE NUMBER 
          READC  I,SBUF,4 
          NG     X1,RCH5     IF NULL INPUT
          SB2    SBUF        UNPACK INPUT 
          RJ     USB
          SA1    USBC        FORCE TERMINATION
          SX6    1R.
          SX7    X1+B1
          SA6    X7 
          SA7    USBC 
          RJ     POP         ASSEMBLE CHARGE NUMBER 
          SA3    POPA 
          NG     B5,RCH5     IF ERROR IN ASSEMBLY 
          GE     B5,B1,RCH5  IF CHARGE NUMBER TOO LONG
          ZR     X3,RCH5     IF NO CHARGE NUMBER
          BX6    X3          SET CHARGE NUMBER
          LX3    6
          SX2    X3-1R* 
          SA6    CGN
          NZ     B6,RCH2     IF NOT TERMINATOR
          ZR     X2,RCH4     IF DEFAULT CHARGE PARAMETER
          ZR     X0,RCH5     IF NOT TERMINAL INPUT
          WRITEC O,RCHB      ISSUE PROJECT NUMBER PROMPT
          WRITER O,R         FORCE WRITE
          READ   I,R         READ PROJECT NUMBER
          READC  I,SBUF,3 
          NG     X1,RCH5     IF NULL INPUT
          SB2    SBUF        UNPACK PROJECT NUMBER
          RJ     USB
          SA1    USBC        FORCE TERMINATION
          SX6    1R.
          SX7    X1+B1
          SA6    X7 
          SA7    USBC 
 RCH2     RJ     POP         ASSEMBLE PROJECT NUMBER
          SA2    POPA 
          SA4    POPA+1 
          NG     B5,RCH5     IF ERROR IN ASSEMBLY 
          GT     B5,B1,RCH5  IF PROJECT NUMBER TOO LONG 
          NZ     B6,RCH5     IF NOT TERMINATOR
          ZR     X2,RCH5     IF NO PROJECT NUMBER 
          BX7    X7-X7
          ZR     B5,RCH3     IF ONE WORD PROJECT NUMBER 
          BX7    X4 
 RCH3     BX6    X2 
          SA6    PRN         SET PROJECT NUMBER 
          SA7    A6+B1
 RCH4     SX6    B0+         CLEAR INTERRUPT ADDRESS
          SA6    TRIA 
          RJ     VCH         VALIDATE CHARGE AND PROJECT
          EQ     RCH6        PROCESS VALIDATION ERROR 
  
*         PROCESS ERROR IN INPUT. 
  
 RCH5     SB6    ERFI        * FORMAT ERROR IN INPUT.*
 RCH6     SA1    TRIF 
          ZR     X1,ABT      IF NOT TERMINAL INTERACTION
          WRITEC O,B6        ISSUE ERROR MESSAGE TO TERMINAL
          WRITER O,R         FORCE WRITE
          SA2    RCHC 
          SX3    X2-ERLIM+1 
          SX6    X2+B1
          PL     X3,RCH7     IF INPUT ERROR LIMIT EXCEEDED
          SA6    A2          SET RETRY COUNT
          EQ     RCH         REPROMPT FOR CHARGE NUMBER 
  
 RCH7     SX0    ERIL        * INPUT ERROR LIMIT.*
          WRITEC O,X0 
          WRITER O,R         FORCE WRITE
          SB6    X0 
          EQ     ABT         ABORT
  
  
 RCHA     DATA   C*CHARGE NUMBER:  "CB"*
 RCHB     DATA   C*PROJECT NUMBER: "CB"*
 RCHC     CON    0           ERROR RETRY COUNT
 VCH      SPACE  4,20 
**        VCH - VALIDATE CHARGE AND PROJECT NUMBERS.
* 
*         ENTRY  (X2) = 0 IF TO VALIDATE DEFAULT CHARGE.
*                (CGN) = CHARGE NUMBER IF NOT DEFAULT CHARGE. 
*                (PRN- PRN+1) = PROJECT NUMBER IF NOT DEFAULT CHARGE. 
* 
*         EXIT   TO *EPF* IF NO ERROR.
*                (B6) = MESSAGE ADDRESS IF ERROR. 
*                CHARGE AND PROJECT NUMBERS DISPLAYED IN DAYFILE IF NO
*                  ERROR. 
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 4, 5, 6, 7. 
*                B - 2, 6.
* 
*         CALLS  BAB, CHG, EPF, GDC, SNM. 
* 
*         MACROS MESSAGE. 
  
  
 VCH      SUBR               ENTRY/EXIT 
          NZ     X2,VCH2     IF NOT TO VALIDATE DEFAULT CHARGE
          RJ     GDC         GET DEFAULT CHARGE AND PROJECT 
          SA3    UCRN 
          SA5    UPJ1 
          SA4    UPJ2 
          NZ     X3,VCH1     IF DEFAULT CHARGE NUMBER PRESENT 
          SB6    ERDN        * DEFAULT CHARGE NULL.*
          SA1    SSJ=+AACS   CHECK *CCNR* PRIVILEGE 
          LX1    59-7 
          PL     X1,VCHX     IF USER NAME REQUIRES CHARGE COMMAND 
          MESSAGE  B6,,R     ISSUE DEFAULT CHARGE MESSAGE 
          EQ     EPF         EXIT TO PROCESS PROLOGUES
  
 VCH1     SB6    ERDC        * ERROR IN DEFAULT CHARGE.*
          ZR     X5,VCHX     IF DEFAULT PROJECT NOT PRESENT 
          BX6    X3          SET CHARGE NUMBER
          BX7    X5          SET PROJECT NUMBER WORD 1
          SA6    CGN
          SA7    PRN
          BX6    X4          SET PROJECT NUMBER WORD 2
          SA6    A7+B1
          SX2    B1          SET DEFAULT CHARGE 
          EQ     VCH4        VALIDATE CHARGE
  
 VCH2     SA1    SSJ=+AACS   CHECK RESTRICTION TO DEFAULT CHARGE
          LX1    59-22
          NG     X1,VCH3     IF NOT RESTRICTED TO DEFAULT CHARGE
          RJ     GDC         GET DEFAULT CHARGE AND PROJECT 
          SB6    ERRD        * CHARGE RESTRICTED TO DEFAULT.* 
          SA1    CGN
          SA2    UCRN 
          BX1    X1-X2
          NZ     X1,VCHX     IF NOT DEFAULT CHARGE NUMBER 
          SA1    PRN
          SA3    UPJ1 
          SA2    A1+B1
          SA4    A3+B1
          BX1    X1-X3
          BX2    X2-X4
          NZ     X1,VCHX     IF NOT DEFAULT PROJECT NUMBER
          NZ     X2,VCHX     IF NOT DEFAULT PROJECT NUMBER
 VCH3     SX2    0           SET NOT DEFAULT CHARGE 
 VCH4     SA3    SSJ=+UIDS   VALIDATE CHARGE AND PROJECT NUMBERS
          RJ     VCN
          NZ     B6,VCHX     IF ERROR 
          SA2    B5+PPNW     READ PROJECT PROLOGUE FILE NAME
          SA5    PRST        READ PROLOGUE/EPILOGUE STATUS
          SB6    ERPC        * PROLOGUE AND SHELL CONFLICT.*
          MX0    42 
          MX7    -2 
          BX6    X0*X2
          LX5    59-57
          ZR     X6,VCH5     IF NO PROJECT PROLOGUE DEFINED 
          NG     X5,VCHX     IF PROLOGUE AND SHELL CONFLICT 
          SA3    B5+PPUW     READ PROJECT PROLOGUE USER NAME
          SA4    B5+PPPW     READ PROJECT PROLOGUE PASSWORD 
          BX7    -X7*X2 
          ERRNZ  CRPT-CCPT-1 CODE DEPENDS ON VALUE
          ERRNZ  CAPT-CRPT-1 CODE DEPENDS ON VALUE
          SX7    X7+CCPT     SET TERMINATION OPTION 
          BX6    X6+X7
          SA6    PPF         SET PROJECT PROLOGUE FILE NAME 
          BX6    X0*X3
          BX7    X0*X4
          SA6    PPF+1       SET PROJECT PROLOGUE USER NAME 
          SA7    PPF+2       SET PROJECT PROLOGUE PASSWORD
 VCH5     SA2    B5+PENW
          BX2    X0*X2
          ZR     X2,VCH6     IF NO PROJECT EPILOGUE DEFINED 
          SB6    EREC        * EPILOGUE AND SHELL CONFLICT.*
          NG     X5,VCHX     IF EPILOGUE AND SHELL CONFLICT 
          SX1    B1          SET EPILOGUE PENDING FLAG
          SX6    B1+B1
          LX1    21 
          BX6    X6+X1
          SA6    PRC
 VCH6     SA1    CGN         SET CHARGE NUMBER
          SB5    VCHA        SET MESSAGE ADDRESS
          SB2    1R?
          RJ     SNM
          SA1    PRN         SET PROJECT NUMBER WORD 1
          SB2    1R!
          RJ     SNM
          SA1    PRN+1       SET PROJECT NUMBER WORD 2
          SB2    1R+
          RJ     SNM
          MESSAGE  VCHA,,R   ISSUE CHARGE MESSAGE 
 VCH7     RJ     BAB         BEGIN ACCOUNT BLOCK
          EQ     EPF         PROCESS PROLOGUES
  
  
 VCHA     DATA   50H CHARGE = ??????????, PROJECT = !!!!!!!!!!++++++++
          DATA   3L++.
          TITLE  SUBROUTINES. 
 ABT      SPACE  4,15 
**        ABT - ISSUE ERROR MESSAGE AND ABORT.
* 
*         ENTRY  (B6) = ERROR MESSAGE ADDRESS.
*                (TJEF) = TERMINATE JOB FLAG. 
* 
*         EXIT   TO *TRJ* IF TO TERMINATE ON ERROR. 
* 
*         USES   X - 1, 2.
*                A - 1, 2.
* 
*         CALLS  TER, TRJ.
* 
*         MACROS ABORT, MESSAGE.
  
  
 ABT      BSS    0           ENTRY
          MESSAGE  B6,,R     ISSUE ERROR MESSAGE
          SA1    TJEF 
          SA2    TRIF 
          NZ     X1,TRJ      IF TERMINATE ON ERROR
          ZR     X2,ABT1     IF NO TERMINAL INTERACTION 
          MESSAGE  =0,1,R    CLEAR *MS1W* ERROR MESSAGE 
 ABT1     RJ     TER         PERFORM TERMINATION
          ABORT 
 END      SPACE  4,15 
**        END - NORMAL END. 
* 
*         ENTRY  (EXER) = EXTERNAL ERROR CODE.
* 
*         EXIT   TO *RSE* IF EXTERNAL ERROR.
* 
*         USES   X - 1. 
*                A - 1. 
* 
*         CALLS  RSE, TER.
* 
*         MACROS ENDRUN.
  
  
 END      BSS    0           ENTRY
          SA1    EXER 
          NZ     X1,RSE      IF EXTERNAL ERROR
          RJ     TER         PERFORM TERMINATION
          ENDRUN
 EXP      SPACE  4,15 
**        EXP - EXECUTE PROLOGUE OR EPILOGUE. 
* 
*         ENTRY  (B2) = ADDRESS OF PROLOGUE OR EPILOGUE CALL. 
*                (EXER) = EXTERNAL ERROR CODE.
* 
*         EXIT   TO *RSE* IF EXTERNAL ERROR.
* 
*         USES   X - 1. 
*                A - 1. 
* 
*         CALLS  RSE, TER.
* 
*         MACROS MEMORY, SYSTEM, WRITER.
  
  
 EXP      BSS    0           ENTRY
          WRITER F,R
          SA1    EXER 
          NZ     X1,RSE      IF EXTERNAL ERROR
          RJ     TER         PERFORM TERMINATION
          MEMORY CM,,R,CCFL*100B  REQUEST STORAGE FOR *CCL* LOAD
          SA1    =C*ZZZZZG1.*  SET PROCEDURE CALL 
          BX6    X1 
          SA6    CCDR 
          REPRIEVE  RPB,SETUP,0  CLEAR REPRIEVE PROCESSING
          SYSTEM LDR,R,EXPA  LOAD *CCL* *BEGIN* PROCESSOR 
  
  
 EXPA     VFD    42/5LBEGIN,18/0  *LDR* CALL BLOCK
          VFD    6/0,6/0,2/0,3/0,1/1,1/1,4/0,1/0,18/0,18/0
 ICA      SPACE  4,10 
**        ICA - ISSUE COMMAND TO DAYFILE AND ABORT. 
* 
*         ENTRY  (B6) = ERROR MESSAGE ADDRESS.
* 
*         EXIT   TO *ABT*.
* 
*         MACROS MESSAGE. 
  
  
 ICA      BSS    0           ENTRY
          MESSAGE  CCDR      ISSUE COMMAND TO DAYFILE 
          EQ     ABT         ABORT
 RPV      SPACE  4,20 
**        RPV - PROCESS REPRIEVE. 
* 
*         ENTRY  (TRIA) = TERMINAL INTERRUPT ADDRESS IF .NE. 0. 
* 
*         EXIT   TO POINT OF INTERRUPT IN INTERRUPT HANDLER MODE IF NO
*                  TERMINAL INTERRUPT ADDRESS AND NOT USER BREAK. 
*                TO POINT OF INTERRUPT WITH INTERRUPT ENABLED IF NO 
*                  TERMINAL INTERRUPT ADDRESS AND USER BREAK. 
*                TO *RSE* IN INTERRUPT HANDLER MODE IF TERMINAL 
*                  INTERRUPT ADDRESS SPECIFIED AND NOT USER BREAK.
*                TO INTERRUPT ADDRESS WITH INTERRUPT ENABLED IF ADDRESS 
*                  SPECIFIED AND USER BREAK.
*                (EXER) = ERROR CODE IF NOT USER BREAK. 
* 
*         USES   X - 0, 1, 2, 3, 6, 7.
*                A - 1, 2, 6, 7.
*                B - 2. 
* 
*         MACROS REPRIEVE.
  
  
 RPV      BSS    0           ENTRY
          SA1    RPB+/COMSRPV/OSEF
          SA2    TRIA 
          MX0    -12
          BX6    -X0*X1      ISOLATE ERROR CODE 
          SB2    X6-TIET
          ZR     B2,RPV1     IF USER BREAK ONE
          SB2    X6-TAET
 RPV1     NZ     X2,RPV2     IF INTERRUPT ADDRESS SPECIFIED 
          ZR     B2,RPV3     IF USER BREAK
          SA6    EXER        SET ERROR CODE 
          REPRIEVE  RPB,IRESUME,RPMS  RESUME EXECUTION
  
 RPV2     NZ     B2,RSE      IF NOT USER BREAK
          SA1    RPB+/COMSRPV/EXPA
          MX0    18 
          LX0    -6 
          LX2    36 
          SX7    B0 
          BX6    -X0*X1      SET INTERRUPT ADDRESS
          BX6    X6+X2
          SA6    A1 
          SA7    RPB+/COMSRPV/ITIO  CLEAR TERMINAL INPUT
          SA7    RPB+/COMSRPV/PRAR  CLEAR PENDING RA+1 REQUEST
          SA1    I           READ INPUT FET POINTERS
          SA2    A1+B1
          SX3    B1 
          LX0    -36
          BX6    X1+X3       SET COMPLETE 
          BX7    X0*X2
          SA6    A1          WRITE FIRST
          SA7    A2+B1       SET IN = FIRST 
          SA7    A7+B1       SET OUT = FIRST
          SA1    O           READ OUTPUT FET POINTERS 
          SA2    A1+B1
          BX6    X1+X3       SET COMPLETE 
          BX7    X0*X2
          SA7    A2+B1       SET IN = FIRST 
          SA7    A7+B1       SET OUT = FIRST
 RPV3     REPRIEVE  RPB,RESUME,RPMS  RESUME EXECUTION 
 RSE      SPACE  4,10 
**        RSE - RESET EXTERNAL ERROR. 
* 
*         ENTRY  (TJEF) = TERMINATE JOB FLAG. 
* 
*         EXIT   ERROR FLAG RESET AND JOB ABORTED.
* 
*         USES   X - 1. 
*                A - 1. 
* 
*         MACROS REPRIEVE.
  
  
 RSE      BSS    0           ENTRY
          SA1    TJEF 
          NZ     X1,TRJ      IF TERMINATE ON ERROR
          RJ     TER         PERFORM TERMINATION
          REPRIEVE RPB,RESET,0   RESET ERROR FLAG 
 STI      SPACE  4,15 
**        STI - SET TERMINAL INTERACTION PARAMETERS.
* 
*         EXIT   (TRIF) .NE. 0 IF FILE *INPUT* ASSIGNED TO TERMINAL.
*                (ACSF) .NE. 0 IF *INPUT* ASSIGNED TO TERMINAL AND
*                  *ASCII* CHARACTER SET MODE SET.
*                OUTPUT FILE *ZZZZZG0* ASSIGNED TO TERMINAL, NORMAL 
*                  MODE SET, AND PROMPT DISABLED IF *INPUT* ASSIGNED
*                  TO TERMINAL. 
* 
*         USES   X - 1, 2, 7. 
*                A - 1, 7.
* 
*         CALLS  STF. 
* 
*         MACROS CSET, PROMPT, REQUEST, RETURN, SETFS, TSTATUS. 
  
  
 STI      SUBR               ENTRY/EXIT 
          SX2    I           CHECK *INPUT* FILE ASSIGNMENT
          RJ     STF
          NZ     X6,STIX     IF NOT ASSIGNED TO TERMINAL
          SX7    1           SET TERMINAL INTERACTION FLAG
          SA7    TRIF 
          RETURN O,R
          REQUEST  O,U,N     ASSIGN TERMINAL OUTPUT FILE
          SETFS  O,SSST      SET SSJ= FILE STATUS 
          PROMPT OFF         DISABLE TERMINAL PROMPT
          TSTATUS  SBUF      GET TERMINAL CHARACTER SET 
          SA1    SBUF+B1
          SX7    B1 
          LX1    59-2 
          PL     X1,STIX     IF NOT *ASCII* MODE
          SA7    ACSF        SET *ASCII* MODE FLAG
          CSET   NORMAL      CLEAR *ASCII* MODE 
          EQ     STIX        EXIT 
 TER      SPACE  4,15 
**        TER - TERMINATION PROCESSING. 
* 
*         ENTRY  (ACSF) .NE. 0 IF CHARACTER SET TO BE RESET.
*                (PRCF) = PROLOGUE/EPILOGUE REQUEST FLAGS.
* 
*         EXIT   TERMINAL CHARACTER SET RESET IF NECESSARY. 
*                PROLOGUE/EPILOGUE CONTROLS MODIFIED IF REQUEST FLAGS 
*                  SET. 
* 
*         USES   X - 1. 
*                A - 1. 
* 
*         MACROS CSET.
  
  
 TER      SUBR               ENTRY/EXIT 
          SA1    ACSF 
          ZR     X1,TER1     IF NOT *ASCII* MODE ON ENTRY 
          CSET   ASCII       RESET *ASCII* MODE 
 TER1     SA1    PRC
          SX1    X1 
          ZR     X1,TERX     IF NO CONTROLS TO SET
          SX1    A1          SET STATUS WORD ADDRESS
          SX2    104B        SET PROLOGUE/EPILOGUE CONTROLS FUNCTION
          RJ     CPM= 
          EQ     TERX        RETURN 
 TRJ      SPACE  4,10 
**        TRJ - TERMINATE JOB.
* 
*         USES   X - 1, 2.
* 
*         CALLS  CPM=.
* 
*         MACROS ENCSF, ENDRUN, RETURN, SETJOB. 
  
  
 TRJ      BSS    0           ENTRY
          SETJOB TRJA        SET JOB TERMINATION
          SX1    APN         SET APPLICATION NAME 
          SX2    132B        SET LOGOUT FUNCTION
          RJ     CPM= 
          RETURN F,R         CLEAR COMMANDS 
          ENCSF  F
          ENDRUN
  
  
 TRJA     VFD    60/0        SETJOB PARAMETERS
          VFD    36/0,12/2RTJ,12/0
          SPACE  4,10 
*         COMMON DECKS. 
  
  
*CALL     COMCCIO 
*CALL     COMCCPM 
*CALL     COMCLFM 
*CALL     COMCPFM 
*CALL     COMCPOP 
*CALL     COMCMVE 
*CALL     COMCRDC 
*CALL     COMCRDW 
*CALL     COMCSNM 
*CALL     COMCSTF 
*CALL     COMCSYS 
*CALL     COMCUSB 
*CALL     COMCWTC 
*CALL     COMCWTW 
          SPACE  4,10 
*         ERROR MESSAGES. 
  
  
 ERDC     DATA   C* ERROR IN DEFAULT CHARGE.* 
 ERDN     DATA   C* DEFAULT CHARGE NULL.* 
 ERFI     DATA   C* FORMAT ERROR IN INPUT.* 
 ERIL     DATA   C* INPUT ERROR LIMIT.* 
 EREC     DATA   C* EPILOGUE AND SHELL CONFLICT.* 
 ERPC     DATA   C* PROLOGUE AND SHELL CONFLICT.* 
 ERRD     DATA   C* CHARGE RESTRICTED TO DEFAULT.*
  
  
          USE    LITERALS    FLUSH OUT LITERALS 
  
  
          LIST   X,F
*CALL     COMCCHG 
          LIST   *
          TITLE  BUFFER ALLOCATION. 
*         BUFFERS.
* 
*         NOTE - THESE BUFFERS OVERLAY BOTH THE BUFFERS IN *COMCCHG*
*                AND THE REMAINING ROUTINES IN *VALEX*. 
  
  
 FBUF     BSSN   BUFL        PROLOGUE/EPILOGUE FILE BUFFER
 IBUF     BSSN   BUFL        INPUT FILE BUFFER
 OBUF     BSSN   BUFL        OUTPUT FILE BUFFER 
 SBUF     BSSN   ARBS        SCRATCH BUFFER 
 ENDBUF   BSSN   0           END OF BUFFERS 
 END      BSSN
          TITLE  OVERLAID SUBROUTINES.
 GPR      SPACE  4,10 
**        GPR - GET PROLOGUE/EPILOGUE STATUS. 
* 
*         EXIT   (PRST) = PROLOGUE AND EPILOGUE STATUS FLAGS. 
* 
*         USES   X - 1, 2.
* 
*         CALLS  CPM=.
  
  
 GPR      SUBR               ENTRY/EXIT 
          SX2    131B        SET FUNCTION CODE
          SX1    PRST        SET STATUS WORD ADDRESS
          RJ     CPM=        GET PROLOGUE/EPILOGUE STATUS 
          EQ     GPRX        RETURN 
 PRS      SPACE  4,10 
**        PRS - PRESET. 
* 
*         MACROS REPRIEVE.
  
  
 PRS      SUBR               ENTRY/EXIT 
          NE     B1,B0,PRSX  IF PRESET ALREADY PERFORMED
          SB1    1
          REPRIEVE  RPB,SETUP,RPMS  SET REPRIEVE PARAMETERS 
          EQ     PRSX        RETURN 
 SCA      SPACE  4,15 
**        SCA - SET COMMAND ARGUMENTS.
* 
*         ENTRY  (A0) = ADDRESS OF ARGUMENT TABLE.
*                (B3) = ADDRESS OF SECURE ARGUMENT TABLE IF .GT. 0. 
* 
*         EXIT   COMMAND ISSUED TO DAYFILE. 
*                TO *ABT* IF ARGUMENT ERROR.
* 
*         USES   X - 1, 5, 6. 
*                A - 5, 6.
*                B - 2, 3, 4, 6.
* 
*         CALLS  ABT, ARM, POP, RSP, USB. 
* 
*         MACROS MESSAGE. 
  
  
 SCA      SUBR               ENTRY/EXIT 
          SB2    CCDR        UNPACK COMMAND 
          RJ     USB
          ZR     B3,SCA1     IF NO SECURE ARGUMENTS 
          SA4    A0+         SET ARGUMENT TABLE ADDRESS 
          SA5    CCDR        SET COMMAND ADDRESS
          SB6    B3          SET SECURE ARGUMENT TABLE ADDRESS
          SB2    B0          SET NO PARAMETERS TO SKIP
          RJ     RSP         REMOVE SECURE PARAMETERS 
 SCA1     MESSAGE  CCDR      ISSUE COMMAND TO DAYFILE 
          SB6    USBB        SET STRING BUFFER ADDRESS
          RJ     POP
          NZ     X6,SCA2     IF NO LEADING *$* OR */* 
          RJ     POP         SKIP KEYWORD 
 SCA2     SB3    A0          SET ARGUMENT TABLE ADDRESS 
          SB4    SCAA        SET ASSEMBLY ADDRESS 
          SB2    B0          SET ARGUMENT TABLE LENGTH
 SCA3     SA1    A0+B2
          SB2    B2+B1       INCREMENT ARGUMENT COUNT 
          NZ     X1,SCA3     IF NOT END OF TABLE
          RJ     CPA         CONVERT POSITIONAL ARGUMENTS 
          NG     B5,SCA4     IF ARGUMENT ERROR
          PL     X1,SCAX     IF NO ARGUMENTS PROCESSED
          SX6    B5          SET END OF STRING
          SA6    USBC 
          SB3    A0          SET ARGUMENT TABLE ADDRESS 
          SB6    SCAA        SET BUFFER ADDRESS 
          RJ     ARM         PROCESS ARGUMENTS
          ZR     X1,SCAX     IF NO ARGUMENT ERROR 
 SCA4     SB6    ERAR        * ERROR IN ARGUMENTS.* 
          EQ     ABT         ABORT
  
  
 SCAA     BSS    87          STRING BUFFER
 VUN      SPACE  4,15 
**        VUN - VALIDATE USER NAME. 
* 
*         EXIT   TO *ABT* IF ERROR. 
*                TO *RSE* IF ERROR IN VALIDATION. 
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 5, 6, 7.
*                B - 2, 5, 6. 
* 
*         CALLS  CMI, COD, SNM. 
* 
*         MACROS EDATE, GETFLC, MESSAGE, MOVE, VALID. 
  
  
 VUN      SUBR               ENTRY/EXIT 
  
*         VALIDATE USER NAME, PASSWORD, FAMILY NAME.
  
          SA1    UPSW        SET SPECIAL USER NAMES FLAG
          SX6    10B
          BX6    X1+X6
          SA6    A1 
          VALID  UNAM 
          SA2    EXER 
          SA1    UFAM 
          SX0    70B
          NZ     X2,RSE      IF ERROR IN VALIDATION 
          BX0    X0*X1
          ZR     X0,VUN1     IF NO ERROR CODE RETURNED
          SX2    X0-10B 
          SB6    ERCR        * CHARGE COMMAND REQUIRED.*
          ZR     X2,ABT      IF CHARGE COMMAND REQUIRED 
          SX2    X0-20B 
          SB6    ERSD        * SECONDARY USER COMMANDS DISABLED.* 
          ZR     X2,ABT      IF SECONDARY USER COMMANDS DISABLED
          SX2    X0-30B 
          SB6    ERAF        * ALTERNATE FAMILY NOT ALLOWED.* 
          ZR     X2,ABT      IF ALTERNATE FAMILY NOT ALLOWED
          SB6    ERAU        * ALTERNATE USER NAME NOT ALLOWED.*
          EQ     ABT         ABORT
  
 VUN1     SX6    1           SET DEFAULT CHARGE PRESENT 
          SA6    DFCF 
  
*         VALIDATE JOB COMMAND PARAMETERS.
  
          LX1    59-0 
          MX6    -12
          NG     X1,VUN2     IF NOT FIRST USER COMMAND
          SA1    JOPR 
          LX1    -24
          BX1    -X6*X1      JOB ORIGIN TYPE
          SX1    X1-SYOT
          ZR     X1,VUN2     IF SYSTEM ORIGIN 
          SX6    B1+         SET TERMINATE ON ERROR 
          SA6    TJEF 
  
*         VALIDATE JOB COMMAND CM FIELD LENGTH. 
  
          SA1    UALMW       GET CM VALIDATION LIMIT
          LX1    -18
          RJ     CMI         CONVERT CM VALIDATION LIMIT
          BX5    X1          SAVE CM VALIDATION LIMIT 
          GETFLC ,VUNE       GET EM FIELD LENGTH CONTROL WORD 
          SA3    VUNE 
          MX0    -12
          LX3    36          GET MAXFL (EXTENDED MEMORY)
          BX3    -X0*X3 
          ZR     X3,VUN2     IF NO EXTENDED MEMORY FL REQUESTED 
          NG     X5,VUN2     IF CM VALIDATION UNLIMITED 
          SX2    MCMX/100B
          IX6    X5-X2
          SB6    EREM        * EXTENDED MEMORY MINIMUM CM NOT ...*
          NG     X6,ABT      IF NOT VALIDATED FOR AT LEAST *MCMX* 
  
*         MOVE ACCOUNT WORDS TO *SSJ=* AREA.
  
 VUN2     MOVE   3,UALMW,(SSJ=+ALMS)
          SA1    UNAM 
          BX6    X1 
          SA6    SSJ=+UIDS
  
*         ISSUE ACCOUNTING MESSAGES.
  
          SA5    UFAM 
          SA1    =4HABUN
          SB5    VUNA        SET MESSAGE ADDRESS
          LX5    59-0 
          PL     X5,VUN3     IF FIRST *USER* COMMAND
          SA1    =4HACUN
 VUN3     SB2    1R?
          RJ     SNM         SET MESSAGE IDENTIFIER 
          SA1    UNAM        GET USER NAME
          MX0    42 
          BX1    X0*X1
          SB2    1R!
          RJ     SNM         SET USER NAME
          SA1    UFAM        GET FAMILY NAME
          BX1    X0*X1
          SB2    1R+
          RJ     SNM         SET FAMILY NAME
          SA1    UTRN        GET TERMINAL NAME
          BX1    X0*X1
          SB2    1R&
          RJ     SNM         SET TERMINAL NAME
          MESSAGE  VUNA,5    ISSUE USER MESSAGE TO ACCOUNT FILE 
          NG     X5,VUN4     IF NOT FIRST *USER* COMMAND
          SA1    UFAM        GET SERVICE CLASS
          MX0    -6 
          AX1    12 
          SX3    10          SET WORD NUMBER
          BX1    -X0*X1 
          BX4    X1 
          SX6    X3 
          IX3    X1/X3
          SA2    VUND+X3     READ SERVICE CLASS WORD
          IX3    X3*X6
          IX4    X4-X3
          SX3    6           SET SHIFT COUNT
          IX4    X3*X4
          SB2    X4 
          MX0    6
          LX2    X2,B2       GET SERVICE CLASS CHARACTER
          BX1    X0*X2
          SB5    VUNB        SET MESSAGE ADDRESS
          SB2    1R?
          RJ     SNM         SET SERVICE CLASS
          MESSAGE  VUNB,5    ISSUE SERVICE CLASS TO ACCOUNT FILE
          MESSAGE  VUNB,3    ISSUE SERVICE CLASS TO USER DAYFILE
          SA1    UCRN 
          ZR     X1,VUN4     IF NO CHARGE NUMBER
          SB5    VUNC        SET DEFAULT CHARGE MESSAGE ADDRESS 
          SB2    1R?
          RJ     SNM         SET CHARGE NUMBER
          SA1    UPJ1        READ FIRST PART OF PROJECT NUMBER
          SB2    1R!
          RJ     SNM         SET PROJECT NUMBER 
          SA1    UPJ2        READ SECOND PART OF PROJECT NUMBER 
          SB2    1R+
          RJ     SNM         SET PROJECT NUMBER 
          MESSAGE  VUNC,5    ISSUE DEFAULT CHARGE TO ACCOUNT FILE 
  
*         ISSUE PASSWORD EXPIRATION MESSAGE.
  
 VUN4     SA1    UPSW 
          MX0    -18
          LX1    -24
          BX1    -X0*X1 
          ZR     X1,VUN6     IF NO PASSWORD EXPIRATION DATE 
          EDATE  X1          CONVERT EXPIRATION DATE
          BX1    X6 
          SB5    VUNF 
          SB2    1R!
          RJ     SNM         SET EXPIRATION DATE IN MESSAGE 
          MESSAGE  B5,3      * YOUR PASSWORD EXPIRES AT ...*
  
*         SET SYSTEM AND USER PROLOGUE PARAMETERS.
  
 VUN6     NG     X5,VUNX     IF NOT FIRST *USER* COMMAND
          SA1    UPRO 
          MX7    42 
          BX7    X1*X7       SET USER PROLOGUE FILE NAME
          SA7    UPF
          BX1    X1-X7
          AX1    12 
          ZR     X1,VUNX     IF NO SYSTEM PROLOGUE DEFINED
          SX0    X1-SSPMN 
          RJ     COD         CONVERT PROLOGUE INDEX 
          SB2    B2-6 
          MX6    6
          ZR     B2,VUN7     IF ONE DIGIT 
          MX6    12 
 VUN7     SA1    =4LPROC     SET SYSTEM PROLOGUE NAME 
          SX2    CCPT        SET CLEAR CONTROLS TERMINATION OPTION
          NG     X0,VUN8     IF NO LOGOUT ON SYSTEM PROLOGUE ABORT
          SX2    LAPT        SET LOGOUT ON ABORT TERMINATION OPTION 
 VUN8     BX4    X6*X4
          LX4    -24
          BX7    X1+X4
          BX7    X7+X2
          SA7    SPF
          EQ     VUNX        RETURN 
  
  
*         ACCOUNT MESSAGE TEMPLATES.
  
 VUNA     DATA   C*????, !!!!!!!, +++++++, &&&&&&&.*
 VUNB     DATA   C*ABSC,  ?.* 
 VUNC     DATA   C*ABIC, ??????????, !!!!!!!!!!++++++++++.* 
  
 VUND     DATA   0H"NMDS"    SERVICE CLASS IDENTIFIERS
  
 VUNE     CON    0           CM FIELD LENGTH CONTROL WORD 
  
*         PASSWORD EXPIRATION WARNING MESSAGE.
  
 VUNF     DATA   50H YOUR PASSWORD EXPIRES AT 00.00.00 ON!!!!!!!!!! 
          CON    0
          SPACE  4,10 
*         OVERLAID COMMON DECKS.
  
  
 CMI$     SET    1           ASSEMBLE *CMI* 
 TLI$     SET    1           ASSEMBLE *TLI* 
*CALL     COMCARM 
*CALL     COMCCDD 
*CALL     COMCCOD 
*CALL     COMCCPA 
*CALL     COMCCVI 
*CALL     COMCEDT 
*CALL     COMCRSP 
          SPACE  4,10 
*         OVERLAID ERROR MESSAGES.
  
  
 ERAF     DATA   C* ALTERNATE FAMILY NOT ALLOWED.*
 ERAR     DATA   C* ERROR IN ARGUMENTS.*
 ERAU     DATA   C* ALTERNATE USER NAME NOT ALLOWED.* 
 ERCN     DATA   C* COMMAND NOT ALLOWED IN PROLOGUE/EPILOGUE.*
 ERCR     DATA   C* CHARGE COMMAND REQUIRED.* 
 EREF     DATA   C* PROJECT EPILOGUE NOT FOUND.*
 EREM     DATA   C* EXTENDED MEMORY MINIMUM CM NOT VALIDATED.*
 ERIC     DATA   C* INCORRECT COMMAND.* 
 ERNU     DATA   C* NO USER COMMAND EXECUTED.*
 ERPF     DATA   C* ??????? PROLOGUE NOT FOUND.*
 ERPL     DATA   C* ??????? PROLOGUE FILE NOT LOCAL.* 
 ERSD     DATA   C* SECONDARY USER COMMANDS DISABLED.*
 ERTL     DATA   C* TL NOT VALIDATED.*
          SPACE  4,10 
 CHGFL    MAX    *+4,CHGL+4,ENDBUF+4
 RFL=     EQU    CHGFL
  
          ERRNG  AFFL*100B-RFL=  FIELD LENGTH EXCEEDS MAXIMUM 
          END 
