MODVAL
          IDENT  MODVAL,ORIG
          ABS 
          SST    DSSL,PRFE,SCLL 
          SYSCOM B1 
          ENTRY  MODVAL 
          ENTRY  CHVAL
          ENTRY  GENVAL 
          ENTRY  LIMITS 
          ENTRY  PASSWOR
          ENTRY  UPROC
          ENTRY  SDM= 
          ENTRY  RFL= 
          ENTRY  SSJ= 
          LIST   F
*COMMENT  MODVAL - USER VALIDATION FILE MANAGER.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          TITLE  MODVAL - VALIDATION FILE MANAGER.
          SPACE  4,10 
***       MODVAL - USER VALIDATION FILE MANAGER.
*         E.J. FEESER        70/10/09.
*         C.J. MATULE        70/10/09.
*         R.P. ROHRBOUGH     72/09/28.  REWRITE.
*         R. A. JAPS.        74/12/16.  MODIFICATION. 
*         J. L. LARSON.      74/12/16.  MODIFICATION. 
*         C. A. LACEY.       77/01/28.
*         J. L. LARSON.      83/02/17.  RESTRUCTURE.
          SPACE  4,10 
***       *MODVAL* PROVIDES CREATION, MODIFICATION, AND DISPLAYS FOR
*         THE SYSTEM VALIDATION FILE.  THIS FILE CONTAINS BASIC 
*         INFORMATION NECESSARY TO VALIDATE A USER-S ACCESS TO THE
*         SYSTEM, AND PROVIDES SOME CONTROLS ON SYSTEM RESOURCE USAGE.
*         MORE COMPREHENSIVE MONITORING OF RESOURCES CAN BE ACHIEVED
*         BY USING AN ADDITIONAL *USER PROFILE* VALIDATION FILE.  FOR 
*         MORE INFORMATION, REFER TO *USER PROFILE CONTROL*.
* 
*         A MECHANISM EXISTS WITHIN *MODVAL* WHICH ALLOWS IT TO 
*         BE ASSEMBLED IN DIFFERENT WAYS BY USING THE 
*         *DEFINE *MODIFY* DIRECTIVE AND ASSIGNING THE
*         SYMBOL, CUE$, THE VALUE CORRESPONDING TO THE
*         DESIRED CUSTOMIZED USER ENVIRONMENT OPTION. 
* 
*         AT THIS TIME, GIVING CUE$ A VALUE OF 2 CAUSES 
*         ASSEMBLY OF CODE REQUIRED FOR CD2000 INSTALLATIONS. 
* 
*         IN THE FUTURE, *MODVAL* CAN BE CHANGED TO ASSEMBLE
*         IN YET OTHER WAYS DEPENDING ON THE REQUIREMENTS OF
*         EACH CUSTOMIZED USER ENVIRONMENT.  THIS CAN BE
*         ACCOMPLISHED BY MODIFYING THE VALID COMMAND LIST IN 
*         THE *CUESHEL* DECK AND BY ASSIGNING A VALUE OF 3, 4,
*         ETC. TO CUE$ AND ADDING THE REQUIRED CONDITIONAL CODE 
*         TO *MODVAL*.
* 
*IF EQ,CUE$,2 
 CUE$     EQU    2
*ELSE 
 CUE$     EQU    1
*ENDIF
          SPACE  4,10 
***       COMMAND FORMAT. 
          SPACE  4,10 
***       MODVAL (P1=F1,P2=F2,...,PN=FN) -DIRECTIVES FOR *Z* OPTION-
* 
* 
*         WHERE P1,...,PN CAN BE THE FOLLOWING -
* 
*         I  =   INPUT DATA FOR OP=C OR OP=U OPTIONS. 
*                DEFAULT - *INPUT*. 
* 
*         L  =   LIST FILE. 
*                DEFAULT - *OUTPUT*.
* 
*         P  =   USER VALIDATION FILE.
*                DEFAULT - *VALIDUS*. 
* 
*         N  =   NEW OR REFORMATTED VALIDATION FILE.
*                DEFAULT - *NEWVAL*.
* 
*         S  =   SOURCE FILE FOR OP=S.
*                DEFAULT - *SOURCE*.
* 
*         U  =   FILE TO OBTAIN AVAILABLE USER INDICES FROM FOR 
*                UPDATE OPTION.  FILE MUST BE CREATED BY PREVIOUS 
*                *MODVAL* RUN.
*                DEFAULT - *VALINDS*. 
* 
*         FM =   FAMILY NAME IF OTHER THAN SYSTEM DEFAULT.
*                LEGAL ONLY FROM SYSTEM ORIGIN. 
* 
*         D  =   IF SPECIFIED, *MODVAL* WILL NOT ABORT ON DIRECTIVE 
*                ERRORS.  EQUIVALENCING NOT ALLOWED.
* 
*         LO =   LIST OPTIONS.  WHICH CAN BE ANY OF THE FOLLOWING - 
*                E = LIST ERRORS ONLY (OP = C, U, OR Z).
*                A = SORT BY USER NAME (OP = L).
*                N = SORT BY USER INDEX (OP = L). 
*                L = CATALOG LOCAL FILE (OP = L). 
*                DEFAULT - *A*. 
*                ALTERNATE DEFAULT - *EN*.
* 
*         OP =   OPTION(S) WHICH CAN BE ANY OF THE FOLLOWING -
*                C = CREATE, PROCESS INPUT FILE AND CREATE A VALIDATION 
*                    FILE.  MUST OCCUR ALONE. 
*                U = UPDATE, UPDATE FILE SPECIFIED BY *P* KEYWORD WITH
*                    DATA ON INPUT FILE.  SETS *NORERUN* ON JOB.
*                R = REFORMAT, RESTRUCTURE THE FILE SPECIFIED BY *P*
*                    KEYWORD TO FILE SPECIFIED BY *N* KEYWORD.
*                    IF JOB ORIGIN IS SYSTEM, ALL FILES UNDER USER
*                    INDICES WHICH WERE USED UNDER THE OLD *VALIDUS*
*                    FILE AND ARE NO LONGER USED WILL BE PURGED.
*                    APPLIES ONLY TO INDICES 1 THROUGH *AUIMX*. 
*                S = RETURN THE VALIDATION FILE SPECIFIED BY THE *P*
*                    KEYWORD TO SOURCE FORMAT ON THE FILE SPECIFIED BY
*                    THE *S* KEYWORD. 
*                K = K-DISPLAY OPTION, ALL OTHER OPTIONS ARE CLEARED, 
*                    AND INSTRUCTIONS MUST BE ENTERED VIA THE 
*                    K-DISPLAY. 
*                Z = COMMAND UPDATE OPTION.  PROCESS THE DIRECTIVES 
*                    FOLLOWING THE TERMINATOR ON THE *MODVAL* 
*                    COMMAND.  ALL OTHER OPTIONS ARE CLEARED. 
*                    SETS *NORERUN* ON JOB. 
*                L = LIST OPTION.  LIST VALIDATION FILE ENTRIES BY
*                    USER NAME OR USER INDEX (SEE *LO* KEYWORD).
*                    USER NAME, USER INDEX, CREATION AND LAST 
*                    MODIFICATION DATES WILL BE LISTED.  MUST OCCUR 
*                    ALONE. 
*                THE OPTIONS *C*, *U*, *R*, AND *S* REQUIRE THE USER
*                TO PROVIDE HIS OWN FILES.  *OP=URS* IS VALID.
* 
*         FA =   FORCE ATTACH OF *VALIDUS* AND *VALINDS* FOR *S*, *R*,
*                AND *U* OPTIONS (MUST BE SYSTEM ORIGIN JOB). 
* 
*         CV =   CONVERSION OPTIONS.  WHICH CAN BE ANY COMBINATION
*                OF THE FOLLOWING - 
*                A = OPTION TO CONVERT FROM PRE-NOS 2.0 
*                    TO NOS 2.2 *VALIDUS*.
*                    DURING CREATION RUN, *TC=STANDARD* 
*                    INPUT DIRECTIVE WILL BE CONVERTED TO 
*                    *TC=NORMAL*. 
*                C = OPTION TO CONVERT FROM PRE-NOS 2.3 *VALIDUS* 
*                    TO NOS 2.3 *VALIDUS*.
*                    DURING CREATION RUN, *AW=NUL* INPUT DIRECTIVE
*                    WILL BE CONVERTED TO *AW=NUL*, *AW=CNRD*, GIVING 
*                    CHARGE NOT RESTRICTED TO DEFAULT PERMISSION. 
*                D = OPTION TO CONVERT PRE-NOS 2.3 *VALIDUS* TO 
*                    NOS 2.3. 
*                    DURING CREATION RUN, *AW=NUL* INPUT DIRECTIVE
*                    WILL BE CONVERTED TO *AW=NUL*, *AW=COPR*, GIVING 
*                    OVERRIDE PASSWORD RANDOMIZATION PERMISSION.
*                F = OPTION TO CONVERT FROM PRE-NOS 2.2 TO NOS 2.2
*                    *VALIDUS*. 
*                    DURING CREATION RUN, *AW=NUL* INPUT DIRECTIVE
*                    WILL BE CONVERTED TO *AW=NUL*, *AW=CSAF*, GIVING 
*                    ALTERNATE FAMILY SPECIFICATION PERMISSION. 
*                G = OPTION TO CONVERT FROM PRE-NOS 2.5.1 *VALIDUS* 
*                    TO NOS 2.5.1 *VALIDUS*.
*                    DURING CREATION RUN, *AW=NUL* INPUT DIRECTIVE
*                    WILL BE CONVERTED TO *AW=NUL*, *AW=COPI*, GIVING 
*                    OMIT PERSONAL IDENTIFICATION ENTRY PERMISSION. 
*                H = OPTION TO CONVERT FROM PRE-NOS 2.5.1 *VALIDUS* 
*                    TO NOS 2.5.1 *VALIDUS*.
*                    DURING CREATION RUN, *AW=NUL* INPUT DIRECTIVE
*                    WILL BE CONVERTED TO *AW=NUL*, *AW=CACA*, GIVING 
*                    ALLOWED CONCURRENT ACCESS PERMISSION.
*                J = OPTION TO CONVERT FROM PRE-NOS 2.5.1 *VALIDUS* 
*                    TO NOS 2.5.1 *VALIDUS*.
*                    DURING CREATION RUN, *AP=IAF* INPUT DIRECTIVE
*                    WILL BE CONVERTED TO *AP=IAF*, *AP=VEIAF*, GIVING
*                    PERMISSION FOR BOTH APPLICATIONS, WHICH IS 
*                    EQUIVALENT TO *AP=IAF* IN PRE-NOS 2.5.1 SYSTEMS. 
*                K = OPTION TO CONVERT FROM PRE-NOS LEVEL 2.7.3 L780
*                    *VALIDUS* TO NOS LEVEL 2.7.3 L780 *VALIDUS*. 
*                    DURING CREATION RUN, *AW=NUL* INPUT DIRECTIVE WILL 
*                    BE CONVERTED TO *AW=NUL*, *AW=CSAU*, *AW=CRAU* TO
*                    ALLOW ALTERNATE USER NAME ON SECONDARY *USER*
*                    COMMANDS AND ON ROUTED INPUT FILE *USER* COMMANDS. 
*                    ALSO, *AW=CSAF* WILL BE CONVERTED TO *AW=CSAF*,
*                    *AW=CRAF* TO ALLOW ALTERNATE FAMILY ON BOTH
*                    SECONDARY *USER* COMMANDS AND ON ROUTED INPUT FILE 
*                    *USER* COMMANDS, WHICH IS EQUIVALENT TO *AW=CSAF*
*                    ON PRE-NOS LEVEL 2.7.3 SYSTEMS.
*                    IF *CV=F* IS SPECIFIED WITH *CV=K*, *AW=CRAU* WILL 
*                    BE GENERATED BY THE *AW=NUL* DIRECTIVE.
* 
*         SI =   WHEN SPECIFIED, INDICATES THAT THE INPUT FOR A CREATE
*                RUN (*OP=C* OPTION) WAS GENERATED BY A PREVIOUS
*                SOURCE RUN (*OP=S* OPTION).  THE AUTOMATIC CREATION
*                OF THE SYSTEM, LIBRARY, MSF CATALOG, AND APPLICATION 
*                USER NAMES IS SUPPRESSED.  LEGAL ONLY
*                WITH *OP=C* OPTION.  CANNOT BE EQUIVALENCED. 
*                THE *SI* PARAMETER SHOULD NOT BE USED WHEN INITIALLY 
*                CREATING A NOS 2.2 VALIDATION FILE SINCE SPECIAL 
*                USER NAMES NEED ADDITIONAL SECURITY IDENTIFIERS
*                PRESET BY *MODVAL*.
* 
*         RP =   WHEN SPECIFIED INDICATES THAT PASSWORDS ARE NOT
*                REQUIRED.  CAN ONLY BE SELECTED WITH THE *OP=C* OPTION 
*                AND SHOULD BE USED ONLY WHEN THE *INPUT* FILE IS THE 
*                FILE GENERATED BY A PREVIOUS *OP=S* RUN IN WHICH THE 
*                OLD USER VALIDATION FILE CONTAINED PASSWORDS OF LENGTH 
*                LESS THAN THE MINIMUM REQUIRED.
* 
*         IF NO PARAMETERS ARE SUPPLIED ON THE COMMAND AND
*         ORIGIN TYPE IS SYSTEM, THE *K* OPTION IS SELECTED.
*         OTHERWISE, DEFAULT FOR *OP* IS *U*. 
* 
*         UNDER *K*, *Z*, AND *L* OPTIONS, THE SYSTEM VALIDATION
*         FILE IS MANIPULATED.  *K*, *Z*, AND *L* REQUIRE SYSTEM
*         ORIGIN TYPE TO RUN.  APPLIES TO *L* ONLY WHEN *L* LIST OPTION 
*         IS NOT SPECIFIED. 
          SPACE  4,10 
***       GENVAL,FM=FAMILY. 
* 
*         CREATE VALIDATION FILE ON A FAMILY THAT DOES NOT CURRENTLY
*         HAVE ONE DEFINED.  VALID ONLY FROM SYSTEM ORIGIN. 
* 
*         FM =   FAMILY, IF NOT SYSTEM DEFAULT. 
          SPACE  4,10 
***       PASSWOR(OLDPW,NEWPW,PT=X,XD=YYMMDD,XT=NNNN) 
* 
*         CHANGE USER PASSWORD *OLDPW* TO *NEWPW*.
* 
*         *PT* - SPECIFY WHICH PASSWORD TO CHANGE.
*                B - BATCH PASSWORD.
*                I - INTERACTIVE PASSWORD.
*                IB OR BI - BOTH BATCH AND INTERACTIVE PASSWORDS. 
*         *XD* - SET EXPIRATION DATE TO YYMMDD. 
*                YY = YEAR
*                MM = MONTH 
*                DD = DAY.
*         *XT* - SET EXPIRATION DATE TO (CURRENT DATE + NNNN).
*                NNNN - DAYS MUST BE .GE. 0 AND .LE. 4095 (7777B).
*                ZERO SETS PASSWORD EXPIRING IMMEDIATELY. 
*                4095 OR 7777B OR SPECIAL CHARACTER * SETS
*                NON-EXPIRING PASSWORD. 
* 
*         THE *XD* AND *XT* PARAMETERS MAY NOT BE SPECIFIED TOGETHER. 
* 
*         THE OLD AND NEW PASSWORDS MUST BE SPECIFIED TO CHANGE THE 
*         EXPIRATION DATE.
* 
*         THE *PT* PARAMETER MAY BE USED TO SPECIFY WHICH PASSWORD
*         (INTERACTIVE, BATCH, OR BOTH) TO CHANGE.  *PT=IB* MAY NOT BE
*         SELECTED IF PASSWORD RANDOMIZATION IS SET.  IF *PT=IB* IS 
*         SELECTED BOTH THE OLD BATCH AND INTERACTIVE PASSWORDS MUST
*         MATCH.  IF THE *PT* PARAMETER IS NOT SPECIFIED, *PASSWOR* 
*         WILL CHANGE THE PASSWORD CORRESPONDING TO THE JOB ORIGIN TYPE 
*         EXCEPT IF *COMSACC* CONSTANT *DEPT* IS SET TO ZERO, IN WHICH
*         CASE BOTH PASSWORDS WILL BE CHANGED.
* 
*         IF PASSWORD RANDOMIZATION IS REQUIRED, THE INTERACTIVE AND
*         BATCH PASSWORDS CAN ONLY BE CHANGED FROM A JOB WITH *IAOT*
*         ORIGIN TYPE.
* 
*         USER PREVIOUSLY MUST HAVE EITHER
*                1. LOGGED IN ON A TERMINAL.
*                2. ISSUED A USER COMMAND.
* 
*         TO PROVIDE A VALIDATED USER NAME TO CHANGE PASSWORD.
*         THE NEW PASSWORD ENTERED MUST BE AT LEAST *RPWL*
*         CHARACTERS IN LENGTH. 
* 
*         IF THE *PASSWOR* COMMAND IS ENTERED WITHOUT ANY 
*         PARAMETERS, SECURE ENTRY OF PASSWORDS WILL BE PROCESSED.
*         IF PASSWORD RANDOMIZATION IS REQUIRED, THE USER MUST SPECIFY
*         AT LEAST TWO CHARACTERS FOR THE NON-RANDOMIZED PORTION OF THE 
*         NEW PASSWORD.  THE SYSTEM WILL GENERATE AND DISPLAY RANDOM
*         ALPHANUMERIC CHARACTERS WHICH ARE APPENDED TO THE END OF THE
*         USER-SPECIFIED PORTION OF THE NEW PASSWORD AND MUST BE
*         ENTERED AS PART OF THE NEW PASSWORD.
          SPACE  4,10 
***       LIMITS,L=LFN. 
* 
* 
*         WRITE VALIDATION PARAMETERS TO *LFN* FILE OR THE DEFAULT
*         *OUTPUT* FILE.
          SPACE  4,10 
***       UPROC (FN=LFN)
*         UPROC,LFN.
* 
* 
*         ALLOW THE USER TO ENTER THE USER PROLOGUE FILE NAME *LFN* 
*         INTO THE VALIDATION FILE. THE USER PROLOGUE FILE WILL BE
*         EXECUTED DURING PRIMARY CHARGE PROCESSING.
* 
*         USER PREVIOUSLY MUST HAVE EITHER
*                1. LOGGED IN ON A TERMINAL.
*                2. ISSUED A USER COMMAND.
* 
*         TO PROVIDE A VALIDATED USER NAME TO CREATE OR CHANGE USER 
*         PROLOGUE FILE NAME. 
* 
*         THE USER PROLOGUE FILE NAME WILL BE CLEARED IF NO PARAMETER 
*         OR A ZERO PARAMETER IS SPECIFIED. 
          SPACE  4,10 
***       CHVAL,DI=DATA,...,DI=DATA.
* 
* 
*         ALLOW THE USER TO REDEFINE CERTAIN VALIDATION DATA. 
*         *DI* IS THE DATA IDENTIFIER FOR THE VALIDATION DATA TO BE 
*         CHANGED.  *DATA* IS THE NEW VALUE FOR THE INFORMATION.
* 
*         ALLOWED DATA IDENTIFIERS ARE -
* 
*         UC     USER DEFAULT SERVICE CLASS 
          SPACE  4,10 
***       INPUT DATA. 
* 
* 
*         EACH NEW USER NAME ENTRY MUST BEGIN WITH A SLASH
*         (/) IN COLUMN 1 AND IS FOLLOWED BY THE USER NAME. 
*         THE USER NAME CONSISTS OF ONE TO SEVEN ALPHANUMERIC 
*         CHARACTERS (* ALSO ALLOWED), TERMINATED BY A SEPARATOR. 
*         ALL DATA FOR A USER NAME ENTRY IS FREE FORMAT THROUGH 
*         COLUMN 72 (ALL BLANKS IGNORED), HOWEVER,
*         A DIRECTIVE CANNOT BE SPLIT BETWEEN 
*         COMMANDS OR LINES.  A DIRECTIVE CONSISTS OF AN IDENTIFIER 
*         AND A DATA FIELD SEPARATED BY AN *=* (EVEN IF DATA FIELD
*         IS NULL).  THE USER NAME AND EACH DIRECTIVE MUST BE 
*         SEPARATED BY A SPECIAL CHARACTER (ANY EXCEPT */*, *=*,
*         COLON AND BLANK), OR END-OF-LINE. 
*         AN ASTERISK (*) CAN BE USED TO SEPARATE ALL DIRECTIVES
*         EXCEPT USER NAME, CHARGE NUMBER, AND PROJECT NUMBER.
*         ALL DATA RELATIVE TO A USER NAME MUST APPEAR IN THE 
*         USER NAME RECORD. 
* 
*         EXAMPLE INPUT STREAM -
* 
*         /USERNAM
*           PW=SAFE 
*           TL=77B
*           MT=2
*           NF=6
*           MS=53B
*           AW=CLPF,AW=CCNR 
*         / -ETC.-
* 
*         POST-RADICES MAY BE USED TO SPECIFY BASE FOR NUMERIC DATA.
*                D - DECIMAL. 
*                B - OCTAL. 
*         DEFAULT IS DECIMAL. 
* 
* 
*         DATA IDENTIFIERS ARE AS FOLLOWS - 
* 
*         PW  =  PASSWORD.  MANDATORY WITH THE CREATE (*OP=C*) OPTION 
*                UNLESS THE *RP* PARAMETER IS SELECTED OR *RPWL* = 0. 
*                WILL SET BOTH BATCH AND INTERACTIVE PASSWORD.  THE 
*                ASSOCIATED PASSWORD EXPIRATION DATES WILL BE SET TO
*                THE DEFAULT WHEN CREATING A NEW USER.
*                            *RPWL* TO 7 CHARACTERS IN LENGTH.
* 
*         PB =   PASSWORD BATCH.  ESTABLISHES THE BATCH PASSWORD TO BE
*                USED FOR BATCH AND SYSTEM ORIGIN JOBS.  BATCH
*                PASSWORD EXPIRATION DATE WILL BE SET TO THE
*                DEFAULT WHEN CREATING A NEW USER.
*                            *RPWL* TO 7 CHARACTERS IN LENGTH.
* 
*         PI =   PASSWORD INTERACTIVE.  ESTABLISHES THE INTERACTIVE 
*                PASSWORD TO BE USED FOR INTERACTIVE JOBS.  INTERACTIVE 
*                PASSWORD EXPIRATION DATE WILL BE SET TO THE
*                DEFAULT WHEN CREATING A NEW USER.
*                            *RPWL* TO 7 CHARACTERS IN LENGTH.
* 
*         EB =   ENCRYPTED BATCH PASSWORD.
*                OCTAL REPRESENTATION OF PREVIOUSLY ENCRYPTED PASSWORD
*                TO BE USED FOR BATCH AND SYSTEM ORIGIN JOBS. 
*                            14 OCTAL DIGITS.  NO RADIX ALLOWED.
* 
*         EI =   ENCRYPTED INTERACTIVE PASSWORD.
*                OCTAL REPRESENTATION OF PREVIOUSLY ENCRYPTED PASSWORD
*                TO BE USED FOR INTERACTIVE JOBS. 
*                            14 OCTAL DIGITS.  NO RADIX ALLOWED.
* 
*         XD =   EXPIRATION DATE.  ESTABLISHES THE PASSWORD EXPIRATION
*                DATE FOR BATCH AND INTERACTIVE PASSWORDS.
*                            6 NUMERIC CHARACTERS OF THE FORM YYMMDD. 
*                            SPECIAL CHARACTER * SETS NON-EXPIRING. 
*                            DEFAULT VALUE IS SITE DEFINED. 
* 
*         XB =   BATCH EXPIRATION DATE.  ESTABLISHES THE BATCH PASSWORD 
*                EXPIRATION DATE FOR BATCH AND SYSTEM ORIGIN JOBS.
*                            6 NUMERIC CHARACTERS OF THE FORM YYMMDD. 
*                            SPECIAL CHARACTER * SETS NON-EXPIRING. 
*                            DEFAULT VALUE IS SITE DEFINED. 
* 
*         XI =   INTERACTIVE EXPIRATION DATE.  ESTABLISHES THE
*                INTERACTIVE PASSWORD EXPIRATION DATE FOR 
*                INTERACTIVE JOBS.
*                            6 NUMERIC CHARACTERS OF THE FORM YYMMDD. 
*                            SPECIAL CHARACTER * SETS NON-EXPIRING. 
*                            DEFAULT VALUE IS SITE DEFINED. 
* 
*         XT =   EXPIRATION DATE BY TERM.  ADDS THE TERM VALUE TO THE 
*                CURRENT DATE TO CALCULATE THE BATCH AND INTERACTIVE
*                PASSWORD EXPIRATION DATE.
*                            1-4 NUMERIC DIGITS.
*                            VALUES RANGE 0-4095 DECIMAL 0-7777B OCTAL. 
*                            DECIMAL BASE ASSUMED UNLESS POST RADIX *B* 
*                                  IS SPECIFIED.
*                            ZERO SETS PASSWORD IMMEDIATELY EXPIRING. 
*                            4095, 7777B SETS NON-EXPIRING PASSWORD.
*                            SPECIAL CHARACTER * SETS NON-EXPIRING. 
*                            DEFAULT VALUE IS SITE DEFINED. 
* 
*         XTB =  BATCH EXPIRATION DATE BY TERM.  ADDS THE TERM VALUE TO 
*                THE CURRENT DATE TO CALCULATE THE BATCH PASSWORD 
*                EXPIRATION DATE. 
*                            SAME PROPERTIES AS *XT*. 
*                            DEFAULT VALUE IS SITE DEFINED. 
* 
*         XTI =  INTERACTIVE EXPIRATION DATE BY TERM.  ADDS THE TERM
*                VALUE TO THE CURRENT DATE TO CALCULATE THE 
*                INTERACTIVE EXPIRATION DATE. 
*                            SAME PROPERTIES AS *XT*. 
*                            DEFAULT VALUE IS SITE DEFINED. 
* 
*         SAV =  SECURITY ACCESS VALIDATION PRIVILEGES.  BITS 48-59 
*                IN WORD *ASVW* ALLOW VALIDATION PRIVILEGES.
*                            3-4 ALPHABETIC DIGITS. 
*                THE FOLLOWING TWO DATA FIELDS SET OR CLEAR ALL BITS -
*                    *ALL* = SET. 
*                    *NUL* = CLEAR. 
*                OTHER DATA FIELDS ARE RECOGNIZED WHICH TOGGLE
*                SPECIFIC BITS -
*                   FIELD    BIT   FUNCTION 
*                   *CSAP* = 59 - SECURITY ADMINISTRATOR PRIVILEGES.
*                   *COLD* = 58 - EXECUTE ON-LINE DIAGNOSTICS.
*                   *CPWX* = 57 - ASSIGN PASSWORD EXPIRATION TERM.
*                   *CFPX* = 56 - ASSIGN PERMANENT FILE EXPIRATION
*                                 DATE OR TERM. 
*                   *CLJL* = 55 - LOWER JOB ACCESS LEVEL. 
*                   *CLFL* = 54 - LOWER FILE ACCESS LEVEL.
*                   *CWLF* = 53 - WRITE TO OR EXTEND A LOWER LEVEL
*                                 FILE. 
*                   *CULT* = 52   WRITE UNLABELED MAGNETIC TAPES. 
*                NO SECURITY ACCESS VALIDATIONS ARE SELECTED BY 
*                DEFAULT. 
* 
*         SAL =  SECURITY ACCESS LEVEL VALIDATION. BITS 36-47 IN
*                WORD *ASVW* ALLOW ACCESS LEVEL PRIVILEGES. 
*                            1-7 ALPHANUMERIC CHARACTERS. 
*                THE FOLLOWING TWO DATA FIELDS SET OR CLEAR ALL BITS -
*                    *ALL* = SET. 
*                    *NUL* = CLEAR. 
*                OTHER DATA FIELDS RECOGNIZED WHICH TOGGLE SPECIFIC 
*                BITS ARE SITE DEFINED MICROS WHICH ARE LOCATED IN
*                *COMSMLS*. 
*                LEVEL 0 SECURITY ACCESS LEVEL (MICRO DEFINED IN
*                *COMSMLS*) IS SELECTED BY DEFAULT IF NO
*                *SAL* DIRECTIVE IS ENTERED WHEN CREATING A NEW 
*                USER NAME (THE DEFAULT SELECTION IS CLEARED
*                IF AN *SAL* DIRECTIVE IS ENTERED). 
* 
*         SAC =  SECURITY ACCESS CATEGORY VALIDATION.  BITS 0-31 IN 
*                WORD *ASVW* ALLOW ACCESS CATEGORY PRIVILEGES.
*                            1-7 ALPHANUMERIC CHARACTERS. 
*                THE FOLLOWING TWO DATA FIELDS SET OR CLEAR ALL BITS -
*                    *ALL* = SET. 
*                    *NUL* = CLEAR. 
*                OTHER DATA FIELDS RECOGNIZED WHICH TOGGLE SPECIFIC 
*                BITS ARE SITE DEFINED MICROS WHICH ARE LOCATED IN
*                *COMSMLS*. 
*                NO SECURITY ACCESS CATEGORIES ARE SELECTED BY
*                DEFAULT. 
* 
*         UI  =  USER INDEX.  NEXT AVAILABLE INDEX WILL BE ASSIGNED IF
*                NOT SPECIFIED.  NOT ALLOWED FROM UPDATE OR K-DISPLAY 
*                OPTIONS.  VALUES WILL BE CHECKED FOR DUPLICATION 
*                ACROSS USER NAMES. 
*                            1-6 NUMERIC DIGITS + RADIX.
*                            1 ENTRY PER USER RECORD. 
*                            MAXIMUM VALUE IS 377777B.
* 
*         FUI =  FORCE USER INDEX.  SIMILAR TO *UI*.  LEGAL ONLY FROM 
*                UPDATE OR K-DISPLAY OPTIONS.  VALUES WILL NOT BE 
*                CHECKED FOR DUPLICATION. 
*                            1-6 NUMERIC DIGITS + RADIX.
*                            1 ENTRY PER USER RECORD. 
*                            MAXIMUM VALUE IS 377777B.
* 
*         PID =  PERSONAL IDENTIFICATION. 
*                            1-20 ALPHANUMERIC CHARACTERS.
*                            1 ENTRY PER USER RECORD. 
*                            NULL = NO PERSONAL IDENTIFICATION. 
* 
*         SP  =  SYSTEM PROLOGUE FILE INDEX.  IDENTIFIES THE SYSTEM 
*                PROLOGUE FILE TO CALL DURING PRIMARY CHARGE PROCESS- 
*                ING.  THE SYSTEM PROLOGUE MAY BE A PROCEDURE OR
*                BINARY.  THE SYSTEM PROLOGUE FILE NAME IS OBTAINED 
*                BY APPENDING THE DISPLAY CODE EQUIVALENT OF THE
*                SYSTEM PROLOGUE FILE NAME INDEX (*SP*) ONTO THE
*                WORD *PROC* AS *PROCXX*. 
*                            1-2 NUMERIC DIGITS + RADIX.
*                            DEFAULT VALUE OF 0 = NO SYSTEM PROLOGUE
*                            REQUIRED.
*                            MAXIMUM VALUE OF 77B.
*                            1 ENTRY PER USER RECORD. 
* 
*         UP  =  USER PROLOGUE FILE.  IDENTIFIES THE DEFAULT USER 
*                PROLOGUE FILE NAME TO CALL DURING PRIMARY CHARGE 
*                PROCESSING.  THE USER PROLOGUE MAY BE A PROCEDURE
*                OR BINARY. 
*                            1-7 ALPHANUMERIC CHARACTER FILE NAME.
*                            DEFAULT VALUE OF NULL = NO USER PROLOGUE 
*                            REQUIRED.
*                            1 ENTRY PER USER RECORD. 
* 
*         SH  =  DEFAULT SHELL PROGRAM NAME.  IDENTIFIES THE USER 
*                SCREENING PROGRAM TO BE USED.
*                            1-7 ALPHANUMERIC CHARACTER PROGRAM NAME. 
*                            1 ENTRY PER RECORD.
*                            NULL = NO DEFAULT PROGRAM TO CALL. 
* 
*         MT  =  MAXIMUM NUMBER OF MAGNETIC TAPES ALLOWED.
*                            1 NUMERIC DIGIT. 
*                            DEFAULT VALUE OF 0.
*                            MAXIMUM VALUE OF 7 GIVES UNLIMITED MT. 
*                            1 ENTRY PER USER RECORD. 
* 
*         RP  =  MAXIMUM NUMBER OF REMOVABLE DISK PACKS.
*                            1 NUMERIC DIGIT. 
*                            DEFAULT VALUE OF 0.
*                            MAXIMUM VALUE OF 7 GIVES UNLIMITED *RP*. 
*                            1 ENTRY PER USER RECORD. 
* 
*         TL  =  RANGE INDEX REPRESENTING MAXIMUM CENTRAL PROCESSOR 
*                TIME.  FORMULA FOR ACTUAL VALUE (IN UNITS OF 10B 
*                SECONDS) IS  (INDEX * 100B) + KTLI.
*                            1-2 NUMERIC DIGITS + RADIX.
*                            DEFAULT VALUE OF 0.
*                            MAXIMUM VALUE OF 77B GIVES UNLIMITED *TL*. 
*                            1 ENTRY PER USER RECORD. 
* 
*         CM  =  RANGE INDEX REPRESENTING MAXIMUM CENTRAL MEMORY. 
*                FORMULA FOR ACTUAL VALUE (IN UNITS OF 100B WORDS) IS 
*                (INDEX * 40B) + KCMI.
*                            1-2 NUMERIC DIGITS + RADIX.
*                            DEFAULT VALUE OF 15B.
*                            MAXIMUM VALUE OF 77B GIVES UNLIMITED *CM*. 
*                            1 ENTRY PER USER RECORD. 
* 
*         DT  =  RANGE INDEX REPRESENTING MAXIMUM NUMBER OF JOBS THAT 
*                CAN BE DETACHED.  FORMULA FOR ACTUAL VALUE IS
*                (INDEX + KDTI).
*                            1-2 NUMERIC DIGITS + RADIX.
*                            DEFAULT VALUE OF 0.
*                            MAXIMUM VALUE OF 77B GIVES UNLIMITED *DT*. 
*                            1 ENTRY PER USER RECORD. 
* 
*         MS  =  RANGE INDEX REPRESENTING MAXIMUM NUMBER OF MASS
*                STORAGE PRU-S.  FORMULA FOR ACTUAL VALUE IS
*                (INDEX * 10000B) + KMSI. 
*                            1-2 NUMERIC DIGITS + RADIX.
*                            DEFAULT VALUE OF 1.
*                            MAXIMUM VALUE OF 77B GIVES UNLIMITED *MS*. 
*                            1 ENTRY PER USER RECORD. 
* 
*         SC  =  SECURITY COUNT.  THIS COUNT SIGNIFIES THE NUMBER OF
*                SECURITY VIOLATIONS THE USER HAS LEFT BEFORE BEING 
*                DENIED ACCESS TO THE SYSTEM. 
*                            1 - 2 NUMERIC DIGITS + RADIX.
*                            1 ENTRY PER USER RECORD. 
*                            MAXIMUM VALUE OF 77B GIVES 
*                            UNLIMITED VALUE. 
* 
*         FC  =  RANGE INDEX REPRESENTING MAXIMUM NUMBER OF INDIRECT
*                ACCESS PERMANENT FILES.  AN EQUIVALENCE TABLE IN *FCI* 
*                ROUTINE OF *COMCCVI* IS USED TO OBTAIN THE ACTUAL
*                VALUE. 
*                            1 NUMERIC DIGIT. 
*                            DEFAULT OF 0 USES JOB ORIGIN CONTROL.
*                            MAXIMUM VALUE OF 7 GIVES UNLIMITED *FC*. 
*                            1 ENTRY PER USER RECORD. 
* 
*         CS  =  RANGE INDEX REPRESENTING MAXIMUM CUMMULATIVE SIZE FOR
*                ALL INDIRECT ACCESS FILES.  AN EQUIVALENCE TABLE IN
*                *CSI* ROUTINE OF *COMCCVI* IS USED TO OBTAIN THE 
*                ACTUAL VALUE.
*                            1 NUMERIC DIGIT. 
*                            DEFAULT OF 0 USES JOB ORIGIN CONTROL.
*                            MAXIMUM VALUE OF 7 GIVES UNLIMITED *CS*. 
*                            1 ENTRY PER USER RECORD. 
* 
*         FS  =  RANGE INDEX REPRESENTING MAXIMUM FILE SIZE FOR ANY 
*                INDIVIDUAL INDIRECT ACCESS PERMANENT FILE. 
*                AN EQUIVALENCE TABLE IN *FSI* ROUTINE OF *COMCCVI* IS
*                USED TO OBTAIN THE ACTUAL VALUE. 
*                            1 NUMERIC DIGIT. 
*                            DEFAULT OF 0 USES JOB ORIGIN CONTROL.
*                            MAXIMUM VALUE OF 7 GIVES UNLIMITED *FS*. 
*                            1 ENTRY PER USER RECORD. 
* 
*         PX  =  TRANSMISSION.  TERMINAL FULL OR HALF DUPLEX MODE.
*                            4 ALPHANUMERIC CHARACTERS. 
*                            1 ENTRY PER USER RECORD. 
*                THE FOLLOWING VALUES ARE AVAILABLE - 
*                     *FULL*. 
*                     *HALF*. 
* 
*         RO  =  RUBOUT COUNT.  NUMBER OF RUBOUT CHARACTERS ASSOCIATED
*                WITH USERS TERMINAL.  37B = USE SYSTEM DEFAULT FOR 
*                TERMINAL TYPE. 
*                            1-2 NUMERIC DIGITS + RADIX.
*                            1 ENTRY PER USER RECORD. 
*                            MAXIMUM VALUE IS 37B.
* 
*         PA  =  TERMINAL PARITY. 
*                            3-4 ALPHANUMERIC DIGITS. 
*                            1 ENTRY PER USER RECORD. 
*                THE FOLLOWING VALUES ARE AVAILABLE - 
*                     *EVEN*. 
*                     *ODD*.
* 
*         TT =  TERMINAL TYPE.
*                            3-6 ALPHANUMERIC DIGITS. 
*                            1 ENTRY PER USER RECORD. 
*                THE FOLLOWING VALUES ARE AVAILABLE - 
*                     *TTY*.
*                     *713*.
*                     *COR*.
*                     *CORAPL*. 
*                     *MEMAPL*. 
*                     *BLKEDT*. 
* 
*         TC  =  TERMINAL CHARACTER SET.
*                            5-6 ALPHABETIC CHARACTERS. 
*                            1 ENTRY PER USER RECORD. 
*                THE FOLLOWING VALUES ARE AVAILABLE - 
*                                 *STANDARD*. 
*                                 *ASCII*.
* 
*         IS  =  TERMINAL INITIAL SUBSYSTEM.
*                            4-8 ALPHABETIC CHARACTERS. 
*                            1 ENTRY PER USER RECORD. 
*                THE FOLLOWING VALUES ARE AVAILABLE - 
*                                 *NULL*. 
*                                 *BASIC*.
*                                 *FORTRAN*.
*                                 *FTNTS*.
*                                 *EXECUTE*.
*                                 *BATCH*.
*                                 *ACCESS*. 
* 
*         PN  =  DEFAULT PROJECT NUMBER.
*                            1-20 ALPHANUMERIC CHARACTERS.
*                            1 ENTRY PER USER RECORD. 
*                            * ALLOWED. 
*                            NULL = NO DEFAULT PROJECT NUMBER.
* 
*         CN  =  DEFAULT CHARGE NUMBER. 
*                            1-10 ALPHANUMERIC CHARACTERS.
*                            1 ENTRY PER USER RECORD. 
*                            * ALLOWED. 
*                            NULL = NO DEFAULT CHARGE NUMBER. 
* 
*         DB  =  RANGE INDEX REPRESENTING MAXIMUM NUMBER OF CONCURRENT
*                DEFERRED BATCH JOBS.  FORMULA FOR ACTUAL VALUE IS
*                (2 ** INDEX).
*                EXCEPTION - INDEX OF 0 GIVES VALUE OF 0, NOT 1.
*                            1 NUMERIC DIGIT. 
*                            DEFAULT VALUE OF 0.
*                            MAXIMUM VALUE OF 7 GIVES UNLIMITED *DB*. 
*                            1 ENTRY PER USER RECORD. 
* 
*         EC  =  RANGE INDEX REPRESENTING MAXIMUM EXTENDED MEMORY.
*                FORMULA FOR ACTUAL VALUE (IN 1000B WORD BLOCKS) IS 
*                (INDEX * 20B) + KECI.
*                            1-2 NUMERIC DIGITS + RADIX.
*                            DEFAULT VALUE OF 0.
*                            MAXIMUM VALUE OF 77B GIVES UNLIMITED *EC*. 
*                            1 ENTRY PER USER RECORD. 
* 
*         SL  =  RANGE INDEX REPRESENTING THE MAXIMUM SRUS. 
*                FORMULA FOR ACTUAL VALUE IS  ((((INDEX**2) * 10B)
*                + KSLI) * 10B).
*                            1-2 NUMERIC DIGITS + RADIX.
*                            DEFAULT VALUE OF 0.
*                            VALUE OF 73B OR MORE GIVES UNLIMITED *SL*. 
*                            1 ENTRY PER USER RECORD. 
* 
*         LP  =  RANGE INDEX REPRESENTING MAXIMUM NUMBER OF LINES THAT
*                CAN BE PRINTED FROM DISPOSED PRINT FILE. 
*                FORMULA FOR ACTUAL VALUE IS  (INDEX * 2000B) + KLPI. 
*                            1-2 NUMERIC DIGITS + RADIX.
*                            DEFAULT VALUE OF 0.
*                            MAXIMUM VALUE OF 77B GIVES UNLIMITED *LP*. 
*                            1 ENTRY PER USER RECORD. 
* 
*         CP  =  RANGE INDEX REPRESENTING MAXIMUM NUMBER OF CARDS THAT
*                CAN BE PUNCHED FROM DISPOSED PUNCH FILE. 
*                FORMULA FOR ACTUAL VALUE IS  (INDEX * 100B) + KCPI.
*                            1-2 NUMERIC DIGITS + RADIX.
*                            DEFAULT VALUE OF 0.
*                            MAXIMUM VALUE OF 77B GIVES UNLIMITED *CP*. 
*                            1 ENTRY PER USER RECORD. 
* 
*         PT  =  RANGE INDEX REPRESENTING MAXIMUM NUMBER OF UNITS THAT
*                CAN BE PLOTTED FROM DISPOSED PLOT FILE.
*                FORMULA FOR ACTUAL VALUE IS (INDEX * 2000B) + KPTI.
*                            1-2 NUMERIC DIGITS + RADIX.
*                            DEFAULT VALUE OF 0.
*                            MAXIMUM VALUE OF 77B GIVES UNLIMITED *PT*. 
*                            1 ENTRY PER USER RECORD. 
* 
*         DS  =  RANGE INDEX REPRESENTING MAXIMUM FILE SIZE FOR ANY 
*                INDIVIDUAL DIRECT ACCESS PERMANENT FILE. 
*                AN EQUIVALENCE TABLE IN *DSI* ROUTINE OF *COMCCVI* IS
*                USED TO OBTAIN THE ACTUAL VALUE. 
*                            1 NUMERIC DIGIT. 
*                            DEFAULT OF 0 USES JOB ORIGIN CONTROL.
*                            MAXIMUM VALUE OF 7 GIVES UNLIMITED *DS*. 
*                            1 ENTRY PER USER RECORD. 
* 
*         DF  =  RANGE INDEX REPRESENTING MAXIMUM NUMBER OF MESSAGE 
*                REQUESTS THAT MAY BE ISSUED TO THE SYSTEM AND/OR 
*                JOB DAYFILES.  FORMULA FOR ACTUAL VALUE IS 
*                (INDEX * 100B) + KDFI. 
*                            1-2 NUMERIC DIGITS + RADIX.
*                            DEFAULT VALUE OF 34B.
*                            MAXIMUM VALUE OF 77B GIVES UNLIMITED *DF*. 
*                            1 ENTRY PER USER RECORD. 
* 
*         CC  =  RANGE INDEX REPRESENTING MAXIMUM NUMBER OF BATCH 
*                COMMANDS THAT CAN BE PROCESSED.
*                FORMULA FOR ACTUAL VALUE IS  (INDEX * 100B) + KCCI.
*                            1-2 NUMERIC DIGITS + RADIX.
*                            DEFAULT VALUE OF 34B.
*                            MAXIMUM VALUE OF 77B GIVES UNLIMITED *CC*. 
*                            1 ENTRY PER USER RECORD. 
* 
*         RL  =  SET RESOURCE LIMITS TO MAXIMUM VALUES.  THE
*                ONLY VALID VALUE FOR THIS DIRECTIVE IS *ALL*.
*                THIS DIRECTIVE CAN BE USED AT ANY TIME DURING
*                A CREATION OR UPDATE OF THE USER RECORD.  THE
*                VALUES SET CAN BE CHANGED BY SUBSEQUENT DIRECTIVES.
*                THE FOLLOWING LIMITS ARE SET - 
* 
*                PT - UNITS PLOTTED.
*                MT - MAGNETIC TAPES. 
*                RP - REMOVABLE PACKS.
*                DB - DEFERRED BATCH JOBS.
*                DT - DETACHED JOBS.
*                TL - TIME LIMIT. 
*                SL - SRU LIMIT.
*                CM - CM FIELD LENGTH.
*                EC - EXTENDED MEMORY FIELD LENGTH. 
*                LP - LINES PRINTED.
*                CP - CARDS PUNCHED.
*                DS - DIRECT ACCESS PERMANENT FILE SIZE.
*                FC - PERMANENT FILE COUNT. 
*                CS - CUMULATIVE INDIRECT ACCESS PERMANENT FILE SIZE. 
*                FS - INDIRECT ACCESS PERMANENT FILE SIZE.
*                DF - DAYFILE MESSAGES. 
*                CC - COMMANDS. 
*                MS - MASS STORAGE PRU-S. 
* 
*         AW  =  ACCESS WORD.  BITS IN THE ACCESS WORD *AACW* ALLOW 
*                PRIVILEGES FOR THE USER. 
*                            3-4 ALPHABETIC DIGITS. 
*                THE FOLLOWING TWO DATA FIELDS SET OR CLEAR ALL BITS -
*                    *ALL* = SET. 
*                    *NUL* = CLEAR. 
*                OTHER DATA FIELDS ARE RECOGNIZED WHICH TOGGLE
*                SPECIFIC BITS -
*                   FIELD   BIT  FUNCTION 
*                   *CPWC* = 0 - ALLOW USER TO CHANGE PASSWORD. 
*                   *CTPC* = 1 - ALLOW PRIVILEGED TERMINAL COMMANDS.
*                   *CLPF* = 2 - ALLOW WRITES TO DIRECT ACCESS (LARGE)
*                                PERMANENT FILES. 
*                   *CSPF* = 3 - ALLOW WRITES TO INDIRECT ACCESS(SMALL) 
*                                PERMANENT FILES. 
*                   *CSOJ* = 4 - ALLOW SYSTEM ORIGIN TYPE PRIVILEGES. 
*                                IF SYSTEM IS IN *DEBUG* MODE.
*                   *CASF* = 5 - ALLOW ACCESS TO SYSTEM FILES (E.G. 
*                                LIBRARY TYPE FILES). 
*                   *CAND* = 6 - ALLOW USER ASSIGNMENT OF NON-
*                                ALLOCATABLE DEVICES. 
*                   *CCNR* = 7 - ALLOW USE OF SYSTEM WITHOUT ENTRY OF 
*                                VALID CHARGE AND PROJECT NUMBERS.
*                   *CSRP* = 8 - ALLOW REMOVABLE DEVICE COMMANDS. 
*                   *CSTP* = 9 - ALLOW SPECIAL TRANSACTION PRIVILEGES.
*                   *CTIM* = 10 - ALLOW NO TERMINAL TIME OUT. 
*                   *CUCP* = 11 - ALLOW USER CP (UCP) PRIVILEGES. 
*                   *CSAP* = 12 - ALLOW SPECIAL ACCOUNTING PRIVILEGES.
*                   *CBIO* = 13 - ALLOW *BATCHIO* SUBSYSTEM PRIVILEGES. 
*                   *CPRT* = 14 - ALLOW ECS *PROTECT* PRIVILEGES. 
*                   *CPLK* = 15 - ALLOW THE USER TO TRANSFER
*                                 PERMANENT FILES BETWEEN HOSTS.
*                   *CQLK* = 16 - ALLOW THE USER TO TRANSFER
*                                 QUEUED FILES BETWEEN HOSTS. 
*                   *CUST* = 17 - ALLOW THE USER TO SPECIFY LID-S ON
*                                 THE JOB AND *ROUTE* COMMANDS. 
*                   *CNVE* = 18 - ALLOW ACCESS TO THE NVE SUBSYSTEM.
*                   *CMNT* = 19 - ALLOW THE USER MAINTENANCE
*                                 PRIVILEGES. 
*                   *CNOP* = 20 - ALLOW NPU OPERATOR PRIVILEGE. 
*                   *CSAF* = 21 - ALLOW ALTERNATE FAMILY ON SECONDARY 
*                                 *USER* COMMANDS.
*                   *CNRD* = 22 - ALLOW THE USER TO SPECIFY A CHARGE
*                                 AND PROJECT NUMBER OTHER THAN THE 
*                                 DEFAULT.
*                   *COPR* = 23 - ALLOW THE USER TO ENTER A PASSWORD
*                                 WITHOUT RANDOMIZATION.
*                   *CLTD* = 24 - ALLOW USER TO SPECIFY PERMANENT FILE
*                                 RESIDENCE AS *LOCKED TO DISK* (PR=L). 
*                   *COPI* = 25 - OMIT PERSONAL ID ENTRY. 
*                   *CACA* = 26 - ALLOW CONCURRENT ACCESS.
*                   *CPAM* = 27 - ALLOW THE USER PRIVILEGED ANALYST 
*                                 OPERATIONS IF PRIVILEGED ANALYST
*                                 MODE IS ENABLED.
*                   *CSAU* = 28 - ALLOW ALTERNATE USER NAME ON
*                                 SECONDARY *USER* COMMANDS.
*                   *CRAU* = 29 - ALLOW ALTERNATE USER NAME ON ROUTED 
*                                 INPUT FILE *USER* COMMANDS. 
*                   *CRAF* = 30 - ALLOW ALTERNATE FAMILY ON ROUTED
*                                 INPUT FILE *USER* COMMANDS. 
*                            31-47 - RESERVED FOR SYSTEM USE. 
*                            48 - RESERVED FOR INSTALLATION (BIT 48). 
*                            49 - RESERVED FOR INSTALLATION (BIT 49). 
*                            50 - RESERVED FOR INSTALLATION (BIT 50). 
*                            51 - RESERVED FOR INSTALLATION (BIT 51). 
*                            52 - RESERVED FOR INSTALLATION (BIT 52). 
*                            53 - RESERVED FOR INSTALLATION (BIT 53). 
*                            54 - RESERVED FOR INSTALLATION (BIT 54). 
*                            55 - RESERVED FOR INSTALLATION (BIT 55). 
*                            56 - RESERVED FOR INSTALLATION (BIT 56). 
*                            57 - RESERVED FOR INSTALLATION (BIT 57). 
*                            58 - RESERVED FOR INSTALLATION (BIT 58). 
*                            59 - RESERVED FOR INSTALLATION (BIT 59). 
* 
*                THE FOLLOWING BITS ARE SET BY DEFAULT -
*                   *CPWC*
*                   *CLPF*
*                   *CSPF*
*                   *CCNR*
*                   *CSAF*
*                   *CNRD*
*                   *COPR*
*                   *COPI*
*                   *CACA*
*                   *CSAU*
*                   *CRAU*
*                   *CRAF*
*                THESE BITS ARE ASSUMED TO BE SET BEFORE ANY
*                IDENTIFIERS ARE ENTERED.  THESE BITS ARE CLEARED 
*                WHEN THE FIRST *AW* DIRECTIVE IS ENTERED.
* 
*         AP  =  APPLICATION PERMISSION.  BITS IN THE APPLICATION 
*                VALIDATION WORD *AAVW* ALLOW USER ACCESS TO
*                APPLICATIONS.
*                THE FOLLOWING TWO DATA FIELDS SET OR CLEAR ALL BITS -
*                    *ALL* = SET. 
*                    *NUL* = CLEAR. 
*                OTHER DATA FIELDS ARE RECOGNIZED WHICH TOGGLE
*                SPECIFIC BITS -
*                   FIELD     BIT  FUNCTION 
*                   *IAF*      0 - ALLOW USER ACCESS TO *IAF*.
*                   *RBF*      1 - ALLOW USER ACCESS TO *RBF*.
*                   *TAF*      2 - ALLOW USER ACCESS TO *TAF*.
*                   *MCS*      3 - ALLOW USER ACCESS TO *MCS*.
*                   *TVF*      4 - ALLOW USER ACCESS TO *TVF*.
*                   *CS*       5 - ALLOW USER ACCESS TO *CS*. 
*                   *CYBIS*    6 - ALLOW USER ACCESS TO *CYBIS*.
*                   *ITF*      7 - ALLOW USER ACCESS TO *ITF*.
*                   *TLF*      8 - ALLOW USER ACCESS TO *TLF*.
*                   *NJF*      9 - ALLOW USER ACCESS TO *NJF*.
*                   *NETOU*   10 - ALLOW USER ACCESS TO VARIOUS CDCNET
*                                  APPLICATIONS.
*                   *PSU*     11 - ALLOW USER ACCESS TO *PSU* 
*                   *AP1*     12 - ALLOW LOCAL APPLICATION 1 ACCESS.
*                   *AP2*     13 - ALLOW LOCAL APPLICATION 2 ACCESS.
*                   *AP3*     14 - ALLOW LOCAL APPLICATION 3 ACCESS.
*                   *VEIAF*   15 - ALLOW USER ACCESS TO *VEIAF*.
*                   *NPF*     16 - ALLOW USER ACCESS TO *NPF*.
*                   *TCF*     17 - ALLOW USER ACCESS TO *TCF*.
*                   *AP4*     18 - ALLOW LOCAL APPLICATION 4 ACCESS.
*                   *AP5*     19 - ALLOW LOCAL APPLICATION 5 ACCESS.
*                   *AP6*     20 - ALLOW LOCAL APPLICATION 6 ACCESS.
*                   *ATF*     21 - ALLOW USER ACCESS TO *ATF*.
*                NO APPLICATION PERMISSIONS ARE SELECTED BY DEFAULT.
* 
*         AL =   APPLICATION ACCESS LEVEL IS REQUIRED FOR 
*                APPLICATION TO APPLICATION CONNECTION. 
*                IT IDENTIFIES THE ACCESS LEVEL WHICH WILL PERMIT 
*                SYSTEM ORIGIN CPU PROGRAM TO INITIATE A SUBSYSTEM. 
*                            1-2 NUMERIC DIGITS.
*                            DEFAULT VALUE IS 0.
*                            MAXIMUM VALUE IS 17B.
*                            1 ENTRY PER RECORD.
* 
*         SO  =  SHELL PROGRAM PERMISSIONS OPTION.  CERTAIN BITS
*                IDENTIFY WHICH TYPE OF PRIVILEGES ARE ALLOWED FOR A
*                USER.
*                     *NUL* PARAMETER CLEARS ALL BITS.
*                THE FOLLOWING PARAMETERS WILL TOGGLE SPECIFIC BITS - 
*                   FIELD  BIT   FUNCTION 
*                   *ATBM*  0    CLEAR SHELL PROGRAM IF SCREENING 
*                                PROGRAM ABORTS.
*                   *LFID*  1    LOCAL FILE LOAD OF SHELL PROGRAM 
*                                ALLOWED. 
*                   *GLID*  2    GLOBAL LIBRARY LOAD OF SHELL PROGRAM 
*                                ALLOWED. 
*                   *SLID*  3    SYSTEM LIBRARY LOAD OF SHELL PROGRAM 
*                                ALLOWED. 
*                   *TCSM*  4    MONITOR COMMANDS DIRECTLY FROM 
*                                TERMINAL INPUT.
*                   *BCSM*  5    MONITOR COMMANDS OUTSIDE CCL LOOP. 
*                   *CCLM*  6    MONITOR COMMANDS INSIDE CCL LOOP.
*                SHELL PROGRAM PERMISSIONS *SLID* AND *BCSM*
*                ARE SELECTED BY DEFAULT IF NO *SO* DIRECTIVE 
*                IS ENTERED WHEN CREATING A NEW USER NAME 
*                (THE DEFAULT SELECTION IS CLEARED IF AN *SO* 
*                DIRECTIVE IS ENTERED). 
* 
*         UC  =  USER DEFAULT SERVICE CLASS.  FORMAT IS *OTSC* WHERE
*                *OT* IS THE TWO CHARACTER DISPLAY CODE MNEMONIC FOR
*                ORIGIN TYPE AND *SC* IS THE TWO CHARACTER DISPLAY
*                CODE MNEMONIC FOR THE USER DEFAULT SERVICE CLASS 
*                SELECTED FOR THAT ORIGIN TYPE. 
*                *OT* IS REQUIRED.  THE DEFAULT *SC* FOR EACH ORIGIN
*                TYPE IS
*                ORIGIN   SERVICE CLASS 
*                BC            BC 
*                RB OR EI      RB 
*                IA OR TX      TS 
*                1 ENTRY FOR EACH ORIGIN TYPE PER USER RECORD.
* 
*         VM  =  SERVICE CLASS VALIDATION MASK. 
*                            TWO CHARACTER DISPLAY CODE SERVICE CLASS 
*                            MNEMONIC OR *ALL* OR *NUL*.
*                            DEFAULT IS DETERMINED BY *UC* DIRECTIVE. 
*                            1 ENTRY PER USER RECORD. 
*                SERVICE CLASS VALIDATION FOR BATCH (BC), REMOTE
*                BATCH (RB) AND INTERACTIVE (TS) WILL BE SELECTED 
*                BY DEFAULT IF NO *VM* DIRECTIVE IS ENTERED 
*                WHEN CREATING A NEW USER NAME.  IF A *VM* DIRECTIVE IS 
*                ENTERED, THE DEFAULT SERVICE CLASS VALIDATIONS ARE SET 
*                IN ADDITION TO THOSE SPECIFIED BY THE *VM* DIRECTIVE.
* 
*         DAC =  DELETE USER NAME.  DELETE THIS USER NAME 
*                FROM VALIDATION FILE.  ALL OTHER DATA IDENTIFIERS ARE
*                IGNORED.  LEGAL ONLY IN UPDATE OR K-DISPLAY OPTIONS. 
*                THE USER NAME RUNNING *MODVAL* CANNOT BE DELETED.
*                            1 ENTRY PER USER RECORD. 
          SPACE  4,10 
***       DAYFILE ERROR MESSAGES. 
* 
* 
*         * CANNOT CHANGE BOTH PASSWORDS AT ONCE.* - *PASSWOR* ONLY. -
*                THE OLD BATCH AND INTERACTIVE PASSWORDS WERE NOT THE 
*                SAME.
* 
*         * DATA BASE ERROR.* - A CONTROL WORD IN THE VALIDATION FILE 
*                IS IN ERROR.  IF PROBLEM PERSISTS, CONSULT AN ANALYST. 
*                MESSAGE ISSUED BY *SFS* OVERLAY. 
* 
*         * LEVEL-0 DATA BASE ERROR.* - THE LEVEL-0 BLOCK ON THE
*                VALIDATION FILE WAS NOT PRESENT (GUARANTEE THAT THE
*                FILE CONTAINS AT LEAST ONE USER NAME) OR IT
*                CONTAINED AN INCORRECT CONTROL WORD (CONSULT AN
*                ANALYST).
* 
*         * LEVEL-2 DATA BASE ERROR.* - A STRUCTURAL ERROR WAS
*                DETECTED IN A LEVEL-2 BLOCK OF THE VALIDATION FILE.
*                CONSULT AN ANALYST.
* 
*         * SYSTEM ERROR.* - INDICATES AN INTERNAL MALFUNCTION DUE TO 
*                EITHER SOFTWARE OR HARDWARE.  CONSULT AN ANALYST 
*                IMMEDIATELY. 
* 
*         * ERROR IN CHVAL ARGUMENTS.* - INCORRECT KEYWORD WAS
*                SPECIFIED ON COMMAND OR TOO MANY CHARACTERS WERE 
*                SPECIFIED ON THE *UC* PARAMETER.  CORRECT AND RETRY. 
* 
*         * ERROR IN GENVAL ARGUMENTS.* - INCORRECT PARAMETER WAS 
*                SPECIFIED ON *GENVAL* COMMAND.  CORRECT AND RETRY. 
* 
*         * ERROR IN LIMITS ARGUMENTS.* - INCORRECT PARAMETER 
*                WAS SPECIFIED ON THE *LIMITS* COMMAND. 
*                CORRECT AND RERUN. 
* 
*         * ERROR IN MODVAL ARGUMENTS.* - INCORRECT COMMAND 
*                ARGUMENTS.  CORRECT AND RERUN. 
* 
*         * ERROR IN PASSWOR ARGUMENTS.* - INCORRECT NUMBER OF
*                PARAMETERS OR INCORRECT PARAMETERS WERE SPECIFIED
*                ON THE *PASSWOR* COMMAND.  CORRECT AND RERUN.
* 
*         * ERROR IN UPROC ARGUMENTS.* - INCORRECT COMMAND
*                ARGUMENTS.  CORRECT AND RERUN. 
* 
*         * FILE NAME CONFLICT - LFN.* - SPECIFIED FILE NAME USED 
*                FOR MORE THAN ONE PURPOSE. 
* 
*         * FM NOT LEGAL FAMILY.* - INCORRECT FAMILY NAME SPECIFIED 
*                WITH *FM* PARAMETER. 
* 
*         * GENVAL ABORTED.* - CONTROL POINT ERROR FLAG IS SET. 
*                CONSULT DAYFILE FOR REASON.
* 
*         * MODVAL ABORTED.* - CONTROL POINT ERROR FLAG IS SET. 
*                CONSULT DAYFILE LISTING FOR REASON.
* 
*         * DIRECTIVE ERRORS.* - ERRORS WERE ENCOUNTERED ON THE INPUT 
*                FILE FOR EITHER CREATE OR UPDATE MODES.  CONSULT THE 
*                OUTPUT FILE FOR SPECIFIC ERRORS. 
* 
*         * INCORRECT COMMAND.* - USER IS NOT PERMITTED TO CHANGE 
*                PASSWORD AND MUST ACQUIRE SUCH VALIDATION.  CAN ALSO 
*                INDICATE THAT NO USER COMMAND HAS BEEN ISSUED
*                PRIOR TO *CHVAL*, *LIMITS*, *PASSWOR* OR 
*                *UPROC* COMMANDS.
* 
*         * USER ACCESS NOT VALID.* - WHEN SYSTEM IS IN SECURE
*                MODE, CALLER MUST HAVE SECURITY ADMINISTRATOR
*                PRIVILEGE TO ATTACH SYSTEM VALIDATION FILE FOR 
*                *MODVAL* UPDATE, REFORMAT, SOURCE, OR LIST OPTION. 
*                *GENVAL* MUST BE CALLED FROM A SYSTEM ORIGIN JOB.
* 
*         * *INPUT* NOT ASSIGNED TO TERMINAL.* - *PASSWOR* ONLY. -
*                THE FILE *INPUT* MUST BE ASSIGNED TO A TERMINAL
*                IF PASSWORD RANDOMIZATION IS REQUIRED. 
* 
*         * INCORRECT SERVICE CLASS.* - THE SERVICE CLASS SELECTED
*                FOR THE *UC* PARAMETER ON THE *CHVAL* COMMAND IS 
*                NOT VALID FOR THE USER.
* 
*         * UNDEFINED ORIGIN TYPE. - THE ORIGIN TYPE SELECTED FOR 
*                THE *UC* PARAMETER ON THE *CHVAL* COMMAND IS NOT 
*                A RECOGNIZED ORIGIN TYPE.
* 
*         * UNDEFINED SERVICE CLASS.* - THE SERVICE CLASS SELECTED
*                FOR THE *UC* PARAMETER ON THE *CHVAL* COMMAND IS 
*                NOT A RECOGNIZED SERVICE CLASS.
* 
*         * INCORRECT PASSWORD.* - PASSWOR ONLY. - CAN INDICATE ANY 
*                OF THE FOLLOWING CONDITIONS: 
*                1. OLD PASSWORD NOT FOUND. 
*                2. THE NEW PASSWORD CONTAINED AN INCORRECT CHARACTER 
*                   (SECURE ENTRY ONLY).
*                3. THE NEW PASSWORD WAS GREATER THAN SEVEN CHARACTERS
*                   (SECURE ENTRY ONLY).
* 
*         * PASSWORD RANDOMIZATION NOT PERMITTED FROM BATCH.* - 
*                *PASSWOR* ONLY.- THE *PASSWOR* COMMAND MAY ONLY BE 
*                ENTERED FROM AN INTERACTIVE JOB IF PASSWORD RANDOM-
*                IZATION IS REQUIRED. 
* 
*         * PASSWORD TOO LONG.* - *PASSWOR* ONLY. - THE NEW PASSWORD
*                WAS MORE THAN 7 CHARACTERS WITH THE RANDOMIZATION
*                CHARACTERS APPENDED. 
* 
*         * PASSWORD TOO SHORT.* - ONE OF THE FOLLOWING CONDITIONS
*                OCCURRED - 
*                - THE NEW PASSWORD ENTERED WAS NOT AT LEAST *RPWL* 
*                  CHARACTERS IN LENGTH.
*                - THE USER HAS PASSWORD RANDOMIZATION REQUIRED AND 
*                  DID NOT SPECIFY AT LEAST 2 CHARACTERS FOR THE NEW
*                  PASSWORD.
* 
*         * SECURE PASSWORD ENTRY REQUIRED.* - NO PARAMETERS MAY BE 
*                ENTERED ON THE *PASSWOR* COMMAND IF PASSWORD 
*                RANDOMIZATION IS REQUIRED. 
* 
*         * VALIDATION FILE BUSY - TRY AGAIN LATER.* - THE
*                VALIDATION FILE COULD NOT BE ATTACHED BY *UPROC*,
*                *CHVAL* OR *PASSWOR*.
* 
*         * VERIFICATION ERROR. PASSWORD NOT CHANGED.* -
*                *PASSWOR* ONLY. - PASSWORD WAS ENTERED INCORRECTLY 
*                WHEN VERIFICATION OF THE NEW PASSWORD WAS REQUESTED. 
* 
*         * PASSWORD EXPIRATION CHANGE INCORRECT.* - EXPIRATION DATE
*                OR EXPIRATION TERM VALUE IS INCORRECT ON *PASSWOR* 
*                COMMAND OR USER IS NOT ALLOWED TO CHANGE PASSWORD
*                EXPIRATION DATE. 
* 
*         * SECURITY ADMINISTRATOR EXPIRATION CHANGE INCORRECT.* - A
*                USER WITH SECURITY ADMINISTRATOR PRIVILEGES IS NOT 
*                ALLOWED TO CHANGE THE EXPIRATION DATE. 
* 
*         * VALINDS READ ERROR.* - A READ OPERATION ON *VALINDS* DID
*                NOT COMPLETE.  FILE MAY NOT BE LOCAL AS REQUIRED 
*                FOR THE CURRENT OPTION.
          SPACE  4,10 
***       ACCOUNT FILE MESSAGES.
* 
* 
*         *MUPW.* - INDICATES A USER CHANGE OF THE USER-S 
*                PASSWORD.
* 
*         *MUPX.* - INDICATES A USER CHANGE OF THE USER-S 
*                PASSWORD EXPIRATION DATE.
* 
*         *MVCU, IFAMILY, IUSERNM, MFAMILY, MUSERNM.* 
*         *MVDU, IFAMILY, IUSERNM, MFAMILY, MUSERNM.* 
*         *MVUU, IFAMILY, IUSERNM, MFAMILY, MUSERNM.* 
*                ISSUED WHEN A USER NAME IN A FAST-ATTACHED VALIDATION
*                FILE IS CREATED (*MVCU*), DELETED (*MVDU*), OR UPDATED 
*                (*MVUU*).
* 
*                IFAMILY     FAMILY NAME OF USER ISSUING COMMAND. 
*                IUSERNM     USER NAME OF USER ISSUING COMMAND. 
*                MFAMILY     FAMILY NAME OF VALIDATION FILE BEING 
*                            MODIFIED.
*                MUSERNM     USER NAME BEING MODIFIED.
          SPACE  4,10 
***       ERROR MESSAGES TO OUTPUT FILE OR K-DISPLAY. 
* 
*                CORRECTIVE ACTION IS GOVERNED BY THE SEVERITY OF THE 
*                ERRORS.  THE JOB MAY BE RERUN OR THE NEW VALIDATION
*                FILE CORRECTED AT THE USERS DISCRETION.
* 
*         **** CANNOT ALTER XD/XT OF *CSAP*.
*                THE BATCH AND INTERACTIVE PASSWORD EXPIRATION DATES
*                FOR A SECURITY ADMINISTRATOR ARE FORCED TO BE
*                NON-EXPIRING AND CANNOT BE OVERRIDDEN BY AN INPUT
*                DIRECTIVE. 
*         THAT USER ENTRY IS DISREGARDED.  (FROM
*         K-DISPLAY, ONLY THAT LINE OF INPUT IS DISREGARDED.) 
* 
*         **** CANNOT ALTER SEC. COUNT OF *CSAP*. 
*                THE SECURITY COUNT FOR A SECURITY ADMINISTRATOR
*                IS FORCED TO BE UNLIMITED AND CANNOT BE OVERRIDDEN 
*                BY AN INPUT DIRECTIVE. 
*         THAT USER ENTRY IS DISREGARDED.  (FROM K-DISPLAY, ONLY
*         THAT LINE OF INPUT IS DISREGARDED.) 
* 
*         **** CANNOT DELETE *CSAP* PRIVILEGE.
*                THE USER NAME RUNNING *MODVAL* UPDATE CANNOT DELETE
*                ITS OWN SECURITY ADMINISTRATOR PRIVILEGE.
*         THAT USER ENTRY IS DISREGARDED.  (FROM
*         K-DISPLAY, ONLY THAT LINE OF INPUT IS DISREGARDED.) 
* 
*         **** CANNOT DELETE USER RUNNING MODVAL. 
*                THE USER NAME RUNNING *MODVAL* UPDATE CANNOT 
*                DELETE ITS OWN USER NAME FROM THE VALIDATION FILE. 
*         THAT USER ENTRY IS DISREGARDED.  (FROM
*         K-DISPLAY, ONLY THAT LINE OF INPUT IS DISREGARDED.) 
* 
*         **** ERROR IN USER NAME.
*                INCORRECT DATA WAS ENCOUNTERED WHERE USER NAME 
*                WAS EXPECTED.
*         THAT USER ENTRY IS DISREGARDED AND *MODVAL* 
*         SKIPS TO THE NEXT USER ENTRY. 
* 
*         **** DUPLICATE USER NAME. 
*                THAT USER NAME HAS BEEN ENTERED PREVIOUSLY.
*                OCCURS ONLY FROM CREATE RUN. 
*         THE FIRST ENTRY IS USED.
* 
*         **** ERROR IN IDENTIFIER. 
*                INCORRECT PARAMETER IDENTIFIER ENCOUNTERED.
*         THAT USER ENTRY IS DISREGARDED.  (FROM
*         K-DISPLAY, ONLY THAT LINE OF INPUT IS DISREGARDED.) 
* 
*         **** ERROR IN NUMERIC DATA. 
*                CAN INDICATE ANY OF THE FOLLOWING CONDITIONS - 
*                1. NUMERIC DATA NOT NUMERIC. 
*                2. DATA EXCEEDS MAXIMUM. 
*                3. NO DATA PRESENT.
*         THAT USER ENTRY IS DISREGARDED.  (FROM
*         K-DISPLAY, ONLY THAT LINE OF INPUT IS DISREGARDED.) 
* 
*         **** ERROR IN ALPHANUMERIC DATA.
*                CAN INDICATE - 
*                1. NO DATA PRESENT.
*                2. DATA FOR *AW* IDENTIFIER UNRECOGNIZED.
*                3. NUMBER OF CHARACTERS EXCEEDS MAXIMUM ALLOWED. 
*         THAT USER ENTRY IS DISREGARDED.  (FROM
*         K-DISPLAY, ONLY THAT LINE OF INPUT IS DISREGARDED.) 
* 
*         **** INCORRECT ORIGIN TYPE. 
*                AN INCORRECT ORIGIN TYPE WAS SPECIFIED ON THE
*                *UC* DIRECTIVE.
*         THAT USER ENTRY IS DISREGARDED.  (FROM K-DISPLAY, 
*         ONLY THE *UC* DIRECTIVE IS IGNORED.)
* 
*         **** INCORRECT SERVICE CLASS. 
*                AN INCORRECT SERVICE CLASS WAS SPECIFIED ON THE
*                *UC* OR *VM* DIRECTIVE.
*         THAT USER ENTRY IS DISREGARDED.  (FROM K-DISPLAY, 
*         ONLY THE DIRECTIVE IS IGNORED.) 
* 
*         ****   USER NAME   NOT FOUND. 
*                AN ATTEMPT WAS MADE TO DELETE (OR INQUIRE OR UPDATE
*                FROM K-DISPLAY) A NON-EXISTENT USER NAME.
*         THAT USER ENTRY IS DISREGARDED.  (FROM K-DISPLAY, 
*         ONLY THAT LINE OF INPUT IS DISREGARDED.)
* 
*         **** USER INDEX PREVIOUSLY DEFINED. 
*                NO MORE THAN ONE USER NAME CAN BE ASSIGNED TO ANY
*                USER INDEX WITH THE *UI* KEYWORD.
*         THAT USER ENTRY IS DISREGARDED. 
*         (FROM K-DISPLAY, ONLY THAT LINE OF INPUT IS DISREGARDED.) 
* 
*         **** NO USER INDICES AVAILABLE. 
*                NO MORE USER INDICES ARE AVAILABLE FOR AUTOMATIC 
*                ASSIGNMENT.  THE *FUI* DIRECTIVE MUST BE USED TO 
*                SPECIFY USER INDICES.
*         THAT USER ENTRY IS DISREGARDED.  (FROM
*         K-DISPLAY, ONLY THAT LINE OF INPUT IS DISREGARDED.) 
* 
*         **** OBSOLETE DIRECTIVE IGNORED.
*                WARNING MESSAGE INDICATING INPUT DIRECTIVE 
*                IS NO LONGER MEANINGFUL AND WAS IGNORED. 
*                ISSUED FOR *AB* ANSWERBACK INPUT DIRECTIVE,
*                *NF* NUMBER OF LOCAL FILES INPUT DIRECTIVE, AND
*                *OF* NUMBER OF DISPOSED OUTPUT FILES INPUT DIRECTIVE.
* 
*         **** INCORRECT PASSWORD.
*                THE PASSWORD ENCOUNTERED WAS NOT AT LEAST *RPWL* 
*                CHARACTERS IN LENGTH.
*         THAT USER ENTRY IS DISREGARDED. (FROM 
*         K-DISPLAY ONLY THAT LINE OF INPUT IS DISREGARDED.)
* 
*         **** PASSWORD REQUIRED. 
*                A PASSWORD WAS NOT ENCOUNTERED FOR THE USER
*                NAME BEING CREATED.
*         THAT USER ENTRY IS DISREGARDED. (FROM 
*         K-DISPLAY ONLY THAT LINE OF INPUT IS DISREGARDED.)
* 
*         **** INCORRECT PASSWORD IGNORED.
*                THE PASSWORD ENCOUNTERED WAS NOT AT LEAST *RPWL* 
*                CHARACTERS IN LENGTH.
*         THIS WILL ONLY OCCUR ON AN UPDATE RUN AND THE UPDATE OF THE 
*         EXISTING USER NAME IS MADE WITHOUT THE PASSWORD CHANGE. 
* 
*         **** UPDATE NOT ALLOWED BY INQUIRE. 
*                ENTRY OF UPDATE DIRECTIVES IS REJECTED DURING
*                K-DISPLAY INQUIRE OF A USER NAME.
*         THAT INPUT DIRECTIVE FROM THE K-DISPLAY IS IGNORED. 
* 
*         **** PASSWORDS UPDATED. 
*                INFORMATIVE MESSAGE ISSUED TO K-DISPLAY AFTER AN 
*                OPERATOR HAS ENTERED THE *PW* DIRECTIVE, 
*                INDICATING THAT THE BATCH AND THE INTERACTIVE
*                PASSWORDS HAVE BEEN UPDATED. 
* 
*         **** BATCH PASSWORD UPDATED.
*                INFORMATIVE MESSAGE ISSUED TO K-DISPLAY AFTER AN 
*                OPERATOR HAS ENTERED THE *PB* DIRECTIVE, 
*                INDICATING THAT THE BATCH PASSWORD HAS BEEN UPDATED. 
* 
*         **** INTERACTIVE PASSWORD UPDATED.
*                INFORMATIVE MESSAGE ISSUED TO K-DISPLAY AFTER AN 
*                OPERATOR HAS ENTERED THE *PI* DIRECTIVE, 
*                INDICATING THAT THE INTERACTIVE PASSWORD HAS BEEN
*                UPDATED. 
          SPACE  4,10 
***       INFORMATIVE MESSAGES. 
* 
* 
*         * CREATION COMPLETE.* - SELF EXPLANATORY. 
* 
*         * UPDATE COMPLETE.* - SELF EXPLANATORY. 
* 
*         * UPROC COMPLETE.* - SELF EXPLANATORY.
* 
*         * REFORMAT COMPLETE.* - SELF EXPLANATORY. 
* 
*         * CONVERSION TO SOURCE COMPLETE.* - SELF EXPLANATORY. 
* 
*         * INQUIRY COMPLETE.* - SELF EXPLANATORY.
* 
*         * CATALOG COMPLETE.* - SELF EXPLANATORY.
* 
*         * CHECK OUTPUT FOR WARNING MESSAGES.* - NO DIRECTIVE
*                ERRORS WERE ENCOUNTERED, BUT SOME INPUT
*                DIRECTIVES RECEIVED WARNING MESSAGES.
* 
*         * LEVEL-1 INDEX BLOCKS LINKED.* - 
*                IF USER FILE CAN BE REFORMATTED TO ELIMINATE BLOCK 
*                LINKAGE, SEARCHES WILL BE FASTER - 
*                1. FOR USER NAMES RESIDING IN LINKED BLOCKS. 
*                2. FOR NON-EXISTENT USER NAMES WHICH WOULD HAVE
*                   RESIDED IN LINKED BLOCKS. 
* 
*         * NNNNNN USER INDICES PURGED.* - ALL PERMANENT FILES
*                FOR NNNNNN USER INDICES WERE PURGED UNDER THE
*                REFORMAT OPTION.  SYSTEM ORIGIN ONLY.
* 
*         * CREATING USER   * - 
*         * UPDATING USER   * - 
*                NAMED OPERATION IS IN PROGRESS FOR *USER*. 
* 
*         * WAITING FOR VALIDATION FILE.* - THE JOB IS IN TIMED/EVENT 
*                ROLLOUT AFTER *UPROC*, *PASSWOR* OR *CHVAL* FOUND
*                THE VALIDATION FILE BUSY.
          SPACE  4,10 
***       K-DISPLAY OPERATOR MESSAGES.
* 
*                IN ADDITION TO OUTPUT FILE AND INFORMATIVE MESSAGES
*                THAT NORMALLY OCCUR DURING AN UPDATE RUN, THE
*                FOLLOWING MESSAGES CAN APPEAR UNDER THE K-DISPLAY -
* 
*         **** FORMAT ERROR.
*                ENTRY IS UNRECOGNIZABLE. 
*         THAT LINE OF INPUT IS DISREGARDED.
* 
*         ****   USER NAME   ALREADY EXISTS.
*                AN ATTEMPT WAS MADE TO CREATE AN EXISTING USER NAME. 
*         THAT LINE OF INPUT IS DISREGARDED.
* 
*         *INQUIRING USER   * 
*         * DELETING USER   * 
*                THE NAMED OPERATION IS IN PROGRESS FOR *USER*. 
* 
*         *USER      CREATED.*
*         *USER      UPDATED.*
*         *USER     INQUIRED.*
*         *USER      DELETED.*
*                THE NAMED OPERATION HAS BEEN COMPLETED FOR *USER*. 
          SPACE  4,10 
**        NOTES.
* 
* 
*         WHILE *MODVAL* HAS THE VALIDATION FILE ATTACHED, *0AV* WILL 
*         BE UNABLE TO DECREMENT A USER-S SECURITY COUNT. 
          SPACE  4,10 
**        PROGRAMMING CONSIDERATIONS. 
* 
* 
*         TO DEFINE NEW OR ALTER EXISTING FIELDS AND/OR DIRECTIVES
*         IN *MODVAL*, THE FOLLOWING ITEMS SHOULD BE REVIEWED - 
* 
*         1.  DATA FIELD DEFINITION AND DOCUMENTATION IN *COMSACC*. 
*         2.  DIRECTIVE DOCUMENTATION IN *MODVAL*.
*         3.  *TINE* TABLE ENTRY FOR INPUT PROCESSING OF DIRECTIVES.
*         4.  ALTERNATE TABLE OF DATA VALUES IF APPLICABLE
*             (SUCH AS *TPAI*, *TPXI*, ETC.). 
*         5.  *TODV* TABLE OF DEFAULT VALUES FOR USER RECORD BLOCK. 
*         6.  *TFR* TABLE ENTRY FOR SOURCE, K-DISPLAY, AND
*             *LIMITS* PROCESSING OF DATA FIELD.
*         7.  *TMBS* TABLE ENTRY FOR CONVERSION TO SOURCE.
*         8.  ENTRY IN K-DISPLAY BUFFER AREA. 
*         9.  *LIMITS* OUTPUT MESSAGES. 
*         10. INPUT DIRECTIVE PROCESSING ROUTINE (SUCH AS 
*             *AAD*, *ACW*, *AND*, ETC.) WITH ASSOCIATED ENTRY
*             IN *TOPS* TABLE.
*         11. SOURCE CONVERSION ROUTINE (SUCH AS *AOC*, *CON*,
*             *CPS*, ETC.). 
*         12. ANY NEW OUTPUT ERROR MESSAGES (DEFINED AFTER
*             SUBROUTINE *IDE*) AND DOCUMENTATION.
* 
*         IF A NEW PERMISSION BIT OR DIRECTIVE IS BEING DEFINED 
*         (SIMILAR TO *AW*, *AP*, ETC.), THE FOLLOWING ITEMS
*         SHOULD ALSO BE CHECKED -
* 
*         1.  TABLE OF BIT DEFINITIONS (SUCH AS *TAWI*, *TRTP*, 
*             *TNAV* IN *COMTNAP*, ETC.). 
*         2.  TABLE OF *LIMITS* MESSAGE ADDRESSES CORRESPONDING TO
*             BIT DEFINITIONS (SUCH AS *ALP*, *APP*, ETC.). 
*         3.  ENTRY IN *TPCW* TABLE FOR *ACW* ROUTINE.
*         4.  ENTRY IN *TPCS* TABLE FOR *CPS* ROUTINE.
*         5.  ENTRY IN *TAPL* TABLE FOR *PLM* ROUTINE.
          TITLE  PROGRAM EQUIVALENCES.
 COMMON   SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMCMAC 
*CALL     COMCCMD 
*CALL     COMCDCM 
*CALL     COMCDCP 
*CALL     COMCMTM 
*CALL     COMSLFD 
*CALL     COMSMLS 
*CALL     COMSSFM 
*CALL     COMSPFM 
*CALL     COMSPRD 
*CALL     COMSSFS 
*CALL     COMSSSD 
*CALL     COMSSSJ 
*CALL     COMSTCM 
          LIST   X
*CALL     COMSACC 
          LIST   -X 
          TITLE  MACRO DEFINITIONS
 APLW     SPACE  4,10 
**        APLW - ALLOWED PERMISSIONS LIMITS PARAMETER WORD. 
* 
*         APLW   TBP,TLM,LHR,UBO
* 
*         ENTRY  TBP = TABLE OF BIT POSITIONS.
*                TLM = TABLE OF LIMITS MESSAGES.
*                LHR = LIMITS HEADER MESSAGE. 
*                UBO = USER BLOCK OFFSET FOR PERMISSION DATA WORD.
  
  
          PURGMAC  APLW 
  
 APLW     MACRO  TBP,TLM,LHR,UBO
          VFD    18/TBP-1,18/TLM-1,12/LHR,6/UBO,6/TLM_L 
 APLW     ENDM
 DTCS     SPACE  4,10 
**        DTCS - DEFINE TABLE FOR PERMISSION CONVERSION TO SOURCE.
* 
*         DTCS   SA,UBO,TPI,LBP,FBP 
* 
*         ENTRY  SA  = SOURCE ENTRY ADDRESS.
*                UBO = USER BLOCK OFFSET OF VALIDATION WORD.
*                TPI = TABLE OF VALIDATION PERMISSION IDENTIFIERS.
*                LBP = LAST BIT POSITION + 1. 
*                FBP = FIRST BIT POSITION.
  
  
          PURGMAC  DTCS 
  
 DTCS     MACRO  SA,UBO,TPI,LBP,FBP 
          VFD    18/SA,6/UBO,6/0,18/TPI,6/LBP,6/FBP 
 DTCS     ENDM
 DTPC     SPACE  4,15 
**        DTPC - DEFINE TABLE OF PERMISSION CONTROL WORDS.
* 
*         DTPC   ID,TPB,NB,SHF,(OPT)
* 
*         ENTRY  ID  = DIRECTIVE IDENTIFIER.
*                TPB = FWA TABLE OF PERMISSION IDENTIFIERS. 
*                NB  = NUMBER OF PERMISSION BITS. 
*                SHF = SHIFT FOR MASK.
*                OPT = OPTION LIST. 
*                            ALL = *ID=ALL* DIRECTIVE ALLOWED.
*                            NUL = *ID=NUL* DIRECTIVE ALLOWED.
*                            SPF = SPACE FILL PERMISSION IDENTIFIER.
  
  
          PURGMAC  DTPC 
  
 DTPC     MACRO  ID,TPB,NB,SHF,(OPT)
          LOCAL  OP,OPB 
 OPB      SET    0
 .A       IFC    NE,$_OPT$$ 
 .B       ECHO   ,OP=(OPT)
          IFC    EQ,$_OP$ALL$,1 
 OPB      SET    OPB+4
          IFC    EQ,$_OP$NUL$,1 
 OPB      SET    OPB+2
          IFC    EQ,$_OP$SPF$,1 
 OPB      SET    OPB+1
 .B       ENDD
 .A       ENDIF 
          VFD    18/0L_ID,12/OPB,6/SHF,6/NB,18/TPB
 DTPC     ENDM
 DTPS     SPACE  4,10 
**        DTPS - DEFINE TABLE OF INPUT PROCESSING SUBROUTINES.
* 
*         DTPS   PROC,(OPT) 
* 
*         ENTRY  PROC = PROCESSOR ADDRESS.
*                OPT = OPTION LIST. 
*                            ASK = ASTERISK ALLOWED IN IDENTIFIER.
*                            DCC = VALIDATE WITH DEFAULT CHARACTER
*                                  COUNT (10D). 
  
  
          PURGMAC  DTPS 
  
 DTPS     MACRO  PROC,OPT 
          LOCAL  OP,OPB 
 OPB      SET    0
 .A       IFC    NE,$_OPT$$ 
 .B       ECHO   ,OP=(OPT)
          IFC    EQ,$_OP$ASK$,1 
 OPB      SET    OPB+4000B
          IFC    EQ,$_OP$DCC$,1 
 OPB      SET    OPB+2000B
 .B       ENDD
 .A       ENDIF 
          VFD    12/OPB,30/0,18/PROC
 DTPS     ENDM
 TFRW1    SPACE  4,20 
**        TFRW1 - DEFINE WORD 1 OF A *TFR* ENTRY. 
* 
*         TFRW1  UBO,SB,NB,UAV,APR,(OPT)
* 
*         ENTRY  UBO  - USER BLOCK OFFSET.
*                SB   - STARTING BIT NUMBER.
*                NB   - NUMBER OF BITS IN FIELD.
*                UAV  - UNLIMITED ACCESS VALUE. 
*                       .EQ. ZERO IF NO UNLIMITED ACCESS. 
*                APR  - ADDRESS OF PROCESSING ROUTINE.
*                OPT  - OPTION LIST.
*                            CTE = CONTINUATION TABLE ENTRY 
*                                  (MULTIPLE WORD DATA).
*                            DCV = CONVERT INDEX TO DECIMAL ACTUAL
*                                  VALUE VIA CONVERSION PROCESSOR, FOR
*                                  LIMITS AND EXTRA K-DISPLAY FIELDS. 
*                            LJD = LEFT JUSTIFY DATA FOR PROCESSING 
*                                  ROUTINE. 
*                            MWR = MULTIPLE WORD RESULT.  *UAV* FIELD 
*                                  CONTAINS NUMBER OF CHARACTERS
*                                  IN RESULT. 
*                            OCV = CONVERT INDEX TO OCTAL ACTUAL
*                                  VALUE VIA CONVERSION PROCESSOR FOR 
*                                  LIMITS AND EXTRA K-DISPLAY FIELDS. 
*                            RJA = RIGHT JUSTIFY LIMITS FIELD AFTER 
*                                  CONVERSION.
*                            USD = PUT *SYSTEM* RATHER THAN *UNLIMITED* 
*                                  IN K-DISPLAY AND LIMITS FIELD. 
*                            ZSD = ENTER *SYSTEM* IN K-DISPLAY AND
*                                  LIMITS FIELDS IF ZERO VALUE. 
  
  
          PURGMAC  TFRW1
  
 TFRW1    MACRO  UBO,SB,NB,UAV,APR,OPT
          LOCAL  CV,FL,OP 
 CV       SET    0
 FL       SET    0
 .A       IFC    NE,$_OPT$$ 
 .B       ECHO   ,OP=(OPT)
          IFC    EQ,$_OP$CTE$,1 
 FL       SET    FL+4000B 
          IFC    EQ,$_OP$DCV$,1 
 CV       SET    2
          IFC    EQ,$_OP$OCV$,1 
 CV       SET    1
          IFC    EQ,$_OP$RJA$,1 
 FL       SET    FL+2000B 
          IFC    EQ,$_OP$USD$,1 
 FL       SET    FL+1000B 
          IFC    EQ,$_OP$ZSD$,1 
 FL       SET    FL+400B
          IFC    EQ,$_OP$LJD$,1 
 FL       SET    FL+200B
          IFC    EQ,$_OP$MWR$,1 
 FL       SET    FL+100B
 .B       ENDD
 .A       ENDIF 
          VFD    6/UBO,6/SB,6/NB,6/UAV,12/FL,6/CV,18/APR
 TFRW1    ENDM
 TFRW2    SPACE  4,15 
**        TFRW2 - DEFINE WORD 2 OF A *TFR* ENTRY. 
* 
*         TFRW2  LMA,KDA,SOA
* 
*         ENTRY  LMA = LIMITS MESSAGE ADDRESS IF NONZERO. 
*                      DATA STORED AT *LMA*+5 (ACTUAL VALUE IF INDEX
*                      CONVERSION SPECIFIED).  CONTINUATION ENTRY DATA
*                      STORED AT *LMA*+4 AND *LMA*+5. 
*                KDA = K-DISPLAY ENTRY ADDRESS IF NONZERO.
*                      DATA STORED AT *KDA*.  CONTINUATION ENTRY DATA 
*                      STORED AT *KDA*+1.  ACTUAL VALUE CONVERTED FROM
*                      INDEX STORED AT *KDA*+1. 
*                SOA = SOURCE MESSAGE ADDRESS IF NONZERO. 
*                      DATA STORED AT *SOA*+1.  CONTINUATION ENTRY
*                      DATA STORED AT *SOA*+2.
  
  
          PURGMAC  TFRW2
 TFRW2    MACRO  LMA,KDA,SOA
          VFD    6/0,18/LMA,18/KDA,18/SOA 
 TFRW2    ENDM
 TFRW3    SPACE  4,10 
**        TFRW3 - DEFINE WORD 3 OF A *TFR* ENTRY. 
* 
*         TFRW3  CVP,SHF,ABA,HDR
* 
*         ENTRY  CVP = ADDRESS OF CONVERSION PROCESSOR TO CONVERT 
*                      INDEX TO ACTUAL VALUE. 
*                SHF = SHIFT TO APPLY TO ACTUAL VALUE AFTER *CVP*.
*                ABA = ALTERNATE BLOCK ADDRESS IF NONZERO.
*                      FIELD VALUE IS USED AS INDEX INTO *ABA* TABLE TO 
*                      GET ACTUAL VALUE.
*                HDR = HEADER MESSAGE ADDRESS IF NONZERO. 
  
  
          PURGMAC  TFRW3
  
 TFRW3    MACRO  CVP,SHF,ABA,HDR
          VFD    6/SHF,18/CVP,18/ABA,18/HDR 
 TFRW3    ENDM
 DEFAW    SPACE  4,10 
**        DEFAW - DEFINE *LIMITS* MESSAGE FOR A BIT IN
*         ASSOCIATED WORD.
* 
*         DEFAW  AN,AD
* 
*         ENTRY  AN - ALLOWED PERMISSION/USER TYPE/APPLICATION NAME.
*                AD - ADDRESS OF *LIMITS* MESSAGE.
* 
*         EXIT   A *VFD* DEFINED IN THE CORRECT FORMAT. 
  
  
          PURGMAC  DEFAW
  
 DEFAW    MACRO  AN,AD
          LOCAL  MAN
 MAN      MICRO  1,7,$AN$ 
          VFD    42/0L"MAN",18/AD 
 DEFAW    ENDM
 SCLASS   SPACE  4,15 
**        SCLASS - DEFINE SERVICE CLASS TABLE.
* 
*         SCLASS NM,MN,DF,ST,TX 
* 
*         ENTRY  *NM* = SERVICE CLASS NAME. 
*                *MN* = TWO CHARACTER MNEMONIC. 
*                *DF* = DAYFILE MESSAGE CHARACTER.
*                *ST* = SHORT TEXT FOR *QFTLIST*. 
*                *TX* = TEXT OF SERVICE CLASS NAME FOR BANNER PAGE. 
* 
*         NOTE - THE CALL TO *COMSSCD* MUST FOLLOW THE DEFINITION OF
*                THIS MACRO.
  
  
          PURGMAC  SCLASS 
  
 SCLASS   MACRO  NM,MN,DF,ST,TX 
 .SCL     RMT 
 .A       IFLT   NM,12D 
 NM     VFD    24/0,24/0,12/MN_MK  TX 
 .A       ELSE
 NM     VFD    24/0,24/MN_MK,12/0  TX 
 .A       ENDIF 
 .SCL     RMT 
 .SCL1    RMT 
 .B       IFC    NE,$NM$SSSC$ 
 NM     VFD    42/0L_MN,6/1R_DF,12/*     TX 
 .B       ELSE
 NM     VFD    42/-0,18/*           TX
 .B       ENDIF 
 .SCL1    RMT 
 .C       IFC    NE,$NM$SSSC$ 
 .SCL2    RMT 
 USC_DF  DATA   C*  _TX_ (_MN_)*
 .SCL2    RMT 
 .C       ENDIF 
 .SCL3    RMT 
 .D       IFC    NE,$NM$SSSC$ 
 NM     DEFAW  MN,USC_DF
 .D       ELSE
 NM     DATA   -1 
 .D       ENDIF 
 .SCL3    RMT 
 SCLASS   ENDM
  
  
 SCL$     EQU    0           ONLY PROCESS CLASSES WITH JCB-S
*CALL     COMSSCD 
          TITLE  PROGRAM EQUIVALENCES.
**        GENERAL EQUATES.
  
  
 .APBC    EQU    ANLC/3 
 .APBE    EQU    ANLC-.APBC  ENTRIES/ PARTIAL BLOCK 
 APBW     EQU    .APBE*ANWE  USER NAME PARTIAL BLOCK LENGTH 
 OV       EQU    0           OVERLAY TYPE 
 SDM=     EQU    *           SUPPRESS DAYFILE MESSAGE 
          SPACE  4,10 
**        EQUATES FOR COMCCVI.
  
 CCI$     EQU    1           COMMAND CONVERSION 
 CMI$     EQU    1           CM FIELD LENGTH CONVERSION 
 CPI$     EQU    1           CARDS PUNCHED CONVERSION 
 DBI$     EQU    1           DEFERRED BATCH JOB CONVERSION
 DFI$     EQU    1           DAYFILE MESSAGE CONVERSION 
 ECI$     EQU    1           EXTENDED MEMORY FIELD LENGTH CONVERSION
 LPI$     EQU    1           LINES PRINTED CONVERSION 
 DTI$     EQU    1           DETACHED JOB CONVERSION
 MSI$     EQU    1           MASS STORAGE PRUS CONVERSION 
 PTI$     EQU    1           UNITS PLOTTED CONVERSION 
 SLI$     EQU    1           SRU LIMIT CONVERSION 
 TLI$     EQU    1           TIME LIMIT CONVERSION
 CSI$     EQU    1           CUMULATIVE FILE SPACE CONVERSION 
 DSI$     EQU    1           DIRECT ACCESS FILE SIZE CONVERSION 
 FSI$     EQU    1           INDIRECT ACCESS FILE SIZE CONVERSION 
 FCI$     EQU    1           FILE COUNT CONVERSION
 BLENGTHS SPACE  4,10 
**        BUFFER LENGTHS. 
  
  
 CBUFL    EQU    5           CHARACTER BUFFER LENGTH
 IBUFL    EQU    1001B       INPUT
 OBUFL    EQU    301B        OUTPUT 
 VBUFL    EQU    301B        MODVAL 
          TITLE  MANAGED TABLE AND DIRECT CELL INITIALIZATION.
 DIRECT   SPACE  4,10 
**        DIRECT CELLS. 
  
  
 ORIG     EQU    DIRC 
          IDIRC              INITIALIZE DIRECT CELLS
 POINTERS SPACE  4,10 
**        MANAGED TABLE POINTERS. 
  
  
          ITAB   ANWE,ANWE,ARBS,2  INITIALIZE TABLES
  
          ORG    TFBL        TABLE OF FULL BLOCK LENGTHS
          CON    ABLI 
          CON    ABLI 
          CON    ABLB 
  
          ORG    TPBL        TABLE OF PARTIAL BLOCK LENGTHS 
          CON    APBW 
          CON    APBW 
          CON    ABLB 
  
          ORG    CTAB        TABLE OF ENTRY WORD COUNTS 
          CON    C.TAB0 
          CON    C.TAB1 
          CON    C.TAB2 
          CON    C.TAB3 
  
          ORG    STAB        TABLE OF COMPARE WORD COUNTS FOR SEARCH
          CON    AINW 
          CON    AINW 
          CON    AINW 
          CON    1
  
          ORG    CWL0        CONTROL WORDS
          VFD    12/0,12/0,12/ANWE,12/0,12/3
          VFD    12/1,12/0,12/ANWE,12/0,12/3
          VFD    12/2,12/0,12/ARBS,12/0,12/3
  
          ORG    ML          TABLE MEMORY LIMIT 
          CON    RFL=        CURRENT FIELD LENGTH 
          ORG    F.TEND 
          CON    RFL=-C.TAB2 INITIAL TABLE LIMIT
  
          ORG    KD          K-DISPLAY CONTROL WORD 
          CON    KIA
  
          ORG    M2          MESSAGE AREA TO BE CLEARED 
          CON    MSGB 
  
          ORG    LP          LIST PROCESSOR 
          CON    LID
          TITLE  DATA AREA. 
 FETS     SPACE  4,10 
**        FILE ENVIRONMENT TABLES.
  
  
          ORG    OVLA 
 I        BSS    0
 INPUT    FILEC  IBUF,IBUFL,(FET=8) 
  
 O        BSS    0
 OUTPUT   FILEC  OBUF,OBUFL,(FET=8),EPR 
  
 N        BSS    0
 NEWVAL   RFILEB NBUF,VBUFL,(FET=8) 
  
 P        BSS    0
 "APFN"   RFILEB PBUF,VBUFL,(PFN="APFN")
  
 S        BSS    0
 SOURCE   FILEC  IBUF,IBUFL,(FET=8) 
  
 U        BSS    0
 "AUFN"   FILEB  NBUF,VBUFL,(PFN="AUFN")
 WORKING  SPACE  4,10 
**        WORKING STORAGE.
  
  
 AN       CON    0,0         USER NAME
 CA       BITCON (*)         USER NAME SPECIAL CHARACTER
 CK       CON    63B         SIMULATE *BITCON* FOR + , - , ( AND )
 CS       BITCON ( )         CHARACTERS SUPPRESSED ON INPUT 
 DB       CON    0           DEBUG FLAG 
 EF       CON    0           ERROR FLAG 
                               0 = CONTINUE NORMAL PROCESSING 
                               ELSE PREVENT FILE ENTRIES
 EL       CON    0           SET INDICATES LIST ERRORS ONLY 
 EMSF     CON    0           DIRECTIVE ERROR FLAG 
 GENF     CON    0           *GENVAL* FLAG
 PSWF     CON    0           *PASSWOR* FLAG 
 WMSF     CON    0           WARNING MESSAGE FLAG 
 LMFG     CON    0           *LIMITS* FLAG -
                             = -1 = *LIMITS* ENTRY POINT. 
                             =  0 = NO LIMITS OPTION SELECTED.
 LO       CON    0           CATALOG LIST ORDER -  0 = BY USER NAME 
                                                  42 = BY USER INDEX
 OPTION   CON    0           OPTIONS FROM COMMAND 
 OPWR     CON    0           OVERRIDE PASSWORD RANDOMIZATION FLAG 
 OF       DATA   0           TERMINAL ASSIGNED TO THE OUTPUT FILE 
 RAND     CON    0           RANDOM ADDRESS OF NEXT EMPTY DATA RECORD 
 RAPF     CON    0           SYSTEM FILE ATTACHED 
 TSTATUS  BSSZ   2           TSTATUS REQUEST
 UF       CON    0           UPDATE FILE INDICATOR
 UUFG     CON    0           USER NAME UPDATE FLAG
 FA       CON    0           FORCE ATTACH OF VALIDUS AND VALINDS FLAG 
 FN       CON    -1          ALTERNATE FAMILY NAME
 CVA      CON    0           CONVERSION *A* OPTION
 CVC      CON    0           CONVERSION *C* OPTION
 CVD      CON    0           CONVERSION *D* OPTION
 CVF      CON    0           CONVERSION *F* OPTION
 CVG      CON    0           CONVERSION *G* OPTION
 CVH      CON    0           CONVERSION *H* OPTION
 CVJ      CON    0           CONVERSION *J* OPTION
 CVK      CON    0           CONVERSION *K* OPTION
 RP       CON    0           ALLOW PASSWORDS LESS THEN MINIMUM LENGTH 
 SI       CON    0           SOURCE INPUT FLAG
 UPFG     CON    0           *UPROC* FLAG 
 UPFN     CON    0           USER PROLOGUE FILE NAME
 CHFG     CON    0           *CHVAL* FLAG 
 LPPG     CON    0           LINES PER PAGE 
 TANB     SPACE  4,10 
**        TANB - SCRATCH BLOCK FOR USER RECORD ASSEMBLY.
  
  
 TANB     BSS    ARBS 
          SPACE  4,10 
**        DAYFILE MESSAGES. 
  
  
 DMAB     DATA   C* MODVAL ABORTED.*
 DMCA     DATA   C* ERROR IN CHVAL ARGUMENTS.*
 DMCC     DATA   C* CREATION COMPLETE.* 
 DMCM     DATA   C* INCORRECT COMMAND.* 
 DMCO     DATA   C* CHECK OUTPUT FOR WARNING MESSAGES.* 
 DMCP     DATA   C* CANNOT CHANGE BOTH PASSWORDS AT ONCE.*
 DMDE     DATA   C* DIRECTIVE ERRORS.*
 DMFC     DATA   C* FILE NAME CONFLICT - XXXXXXX.*
 DMFM     DATA   C* FM NOT LEGAL FAMILY.* 
 DMGA     DATA   C* ERROR IN GENVAL ARGUMENTS.* 
 DMGV     DATA   C* GENVAL ABORTED.*
 DMIA     DATA   C* USER ACCESS NOT VALID.* 
 DMIC     DATA   C* INQUIRY COMPLETE.*
 DMIN     DATA   C/ *INPUT* NOT ASSIGNED TO TERMINAL./
 DMIP     DATA   C* INCORRECT PASSWORD.*
 DMLA     DATA   C* ERROR IN LIMITS ARGUMENTS.* 
 DMLC     DATA   C* CATALOG COMPLETE.*
 DML0     DATA   C* LEVEL-0 DATA BASE ERROR.* 
 DML1     DATA   C* LEVEL-1 INDEX BLOCKS LINKED.* 
 DML2     DATA   C* LEVEL-2 DATA BASE ERROR.* 
 DMMA     DATA   C* ERROR IN MODVAL ARGUMENTS.* 
 DMOT     DATA   C* UNDEFINED ORIGIN TYPE.* 
 DMPA     DATA   C* ERROR IN PASSWOR ARGUMENTS.*
 DMPB     DATA   C* PASSWORD RANDOMIZATION NOT PERMITTED FROM BATCH.* 
 DMTL     DATA   C* PASSWORD TOO LONG.* 
 DMPE     DATA   C* PASSWORD EXPIRATION CHANGE INCORRECT.*
 DMPS     DATA   C* PASSWORD TOO SHORT.*
 DMRC     DATA   C* REFORMAT COMPLETE.* 
 DMSA     DATA   C* SECURITY ADMINISTRATOR XD/XT CHANGE NOT VALID.* 
 DMSC     DATA   C* CONVERSION TO SOURCE COMPLETE.* 
 DMSE     DATA   C* SYSTEM ERROR.*
 DMSP     DATA   C* SECURE PASSWORD ENTRY REQUIRED.*
 DMUA     DATA   C* ERROR IN UPROC ARGUMENTS.*
 DMUC     DATA   C* UPDATE COMPLETE.* 
 DMUP     DATA   C* UPROC COMPLETE.*
 DMUS     DATA   C* UNDEFINED SERVICE CLASS.* 
 DMVB     DATA   C* VALIDATION FILE BUSY - TRY AGAIN LATER.*
 DMVE     DATA   C* VERIFICATION ERROR. PASSWORD NOT CHANGED.*
 DMVC     DATA   C* INCORRECT SERVICE CLASS.* 
 DMVR     DATA   C* "AUFN" READ ERROR.* 
 DMWV     DATA   C* WAITING FOR VALIDATION FILE.* 
 DMXP     DATA   C* ZZZZZZ USER INDICES PURGED.*
          SPACE  4,10 
**        ACCOUNT FILE MESSAGES.
  
  
 AMPW     DATA   C*MUPW.* 
 AMPX     DATA   C*MUPX.* 
 TAWI     SPACE  4,10 
**        TAWI - TABLE OF ACCESS WORD IDENTIFIERS.
* 
*         EACH ENTRY CORRESPONDS TO A BIT IN THE ACCESS CONTROL WORD
*         WHICH CAN BE TOGGLED BY INPUT DIRECTIVE.
* 
*         FORMAT - 42/ IDENTIFIER, 18/ BIT POSITION 
  
  
 TAWI     BSS    0
          LOC    0
          CON    0LCPWC+*    USER PASSWORD CHANGE 
          CON    0LCTPC+*    TERMINAL PRIVILEGED COMMANDS 
          CON    0LCLPF+*    WRITE LARGE PERMANENT FILES
          CON    0LCSPF+*    WRITE SMALL PERMANENT FILES
          CON    0LCSOJ+*    SPECIAL PRIVILEGES UNDER *DEBUG* MODE
          CON    0LCASF+*    ACCESS SYSTEM FILES
          CON    0LCAND+*    ASSIGN NON-ALLOCATABLE EQUIPMENT 
          CON    0LCCNR+*    USE SYSTEM WITHOUT CHARGE NUMBER 
          CON    0LCSRP+*    MOUNT REMOVABLE DEVICES
          CON    0LCSTP+*    USE SPECIAL TRANSACTION PRIVILEGES 
          CON    0LCTIM+*    FOR TERMINAL TIME OUT
          CON    0LCUCP+*    USER CONTROL POINT (UCP) PRIVILEGES
          CON    0LCSAP+*    SPECIAL ACCOUNTING PRIVILEGES
          CON    0LCBIO+*    *BATCHIO* SUBSYSTEM PRIVILEGES 
          CON    0LCPRT+*    EXTENDED MEMORY *PROTECT* PRIVILEGES 
          CON    0LCPLK+*    TRANSFER PERMANENT FILES BETWEEN HOSTS 
          CON    0LCQLK+*    TRANSFER QUEUED FILES BETWEEN HOSTS
          CON    0LCUST+*    SPECIFY LID-S ON JOB AND *ROUTE* COMMANDS
          CON    0LCNVE+*    NVE SUBSYSTEM PRIVILEGES 
          CON    0LCMNT+*    ALLOW MAINTENANCE PRIVILEGES 
          CON    0LCNOP+*    NPU OPERATOR PRIVILEGE 
          CON    0LCSAF+*    ALLOW SEC. *USER* COMMAND ALTERNATE FAMILY 
          CON    0LCNRD+*    USE NON-DEFAULT CHARGE/PROJECT NUMBER
          CON    0LCOPR+*    ENTER NON-RANDOMIZED PASSWORD
          CON    0LCLTD+*    SPECIFY PF RESIDENCE AS *LOCKED TO DISK* 
          CON    0LCOPI+*    OMIT PERSONAL IDENTIFICATION ENTRY 
          CON    0LCACA+*    ALLOW CONCURRENT ACCESS
          CON    0LCPAM+*    ALLOW PRIVILEGED ANALYST OPERATIONS
          CON    0LCSAU+*    ALLOW SEC. *USER* COMMAND ALTERNATE USER 
          CON    0LCRAU+*    ALLOW ROUTE WITH *USER* COMMAND ALT. USER
          CON    0LCRAF+*    ALLOW ROUTE WITH *USER* COMMAND ALT. FAM.
  
*         DEFINE INSTALLATION PERMISSIONS.
  
          LOC    48D
          CON    -1          RESERVED FOR INSTALLATION (BIT 48) 
          CON    -1          RESERVED FOR INSTALLATION (BIT 49) 
          CON    -1          RESERVED FOR INSTALLATION (BIT 50) 
          CON    -1          RESERVED FOR INSTALLATION (BIT 51) 
          CON    -1          RESERVED FOR INSTALLATION (BIT 52) 
          CON    -1          RESERVED FOR INSTALLATION (BIT 53) 
          CON    -1          RESERVED FOR INSTALLATION (BIT 54) 
          CON    -1          RESERVED FOR INSTALLATION (BIT 55) 
          CON    -1          RESERVED FOR INSTALLATION (BIT 56) 
          CON    -1          RESERVED FOR INSTALLATION (BIT 57) 
          CON    -1          RESERVED FOR INSTALLATION (BIT 58) 
          CON    -1          RESERVED FOR INSTALLATION (BIT 59) 
          LOC    *O 
          CON    0           END OF TABLE 
  
 TRTP     SPACE  4,10 
**        TRTP - TABLE OF REMOTE TERMINAL ACCESS PERMISSIONS. 
* 
*         EACH ENTRY CORRESPONDS TO A BIT IN THE
*         SHELL CONTROL WORD *ASHN* WHICH CAN BE TOGGLED
*         BY AN INPUT DIRECTIVE.
* 
*         FORMAT - 42/IDENTIFIER,18/BIT POSITION
  
  
 TRTP     BSS    0
          LOC    0
          CON    0LCCLM+*    MONITOR COMMANDS INSIDE CCL LOOP 
          CON    0LBCSM+*    MONITOR COMMANDS OUTSIDE CCL LOOP
          CON    0LTCSM+*    MONITOR COMMANDS FROM TERMINAL 
          CON    0LSLID+*    SYSTEM LIBRARY SHELL PROGRAM 
          CON    0LGLID+*    GLOBAL LIBRARY SHELL PROGRAM 
          CON    0LLFID+*    LOCAL LIBRARY SHELL PROGRAM
          CON    0LABTM+*    CLEAR SHELL PROGRAM IF ABORT 
 TRTPL    BSS    0
          LOC    *O 
          CON    0           END OF TABLE 
 TSCV     SPACE  4,10 
**        TSCV - TABLE OF SERVICE CLASS VALIDATION BITS.
* 
*         EACH ENTRY DEFINES THE VALIDATION MASK BIT FOR THE
*         CORRESPONDING SERVICE CLASS.
* 
*         FORMAT - 24/ 0, 36/ MASK BIT
  
  
 TSCV     BSS    0
          LOC    0
          VFD    60/-1              NOT USED
          LIST   G
 .SCL     HERE
          LIST   *
          LOC    *O 
          CON    0           END OF TABLE 
 TSVM     SPACE  4,10 
**        TSVM - TABLE OF SERVICE CLASS VALIDATION MASK IDENTIFIERS.
* 
*         EACH ENTRY CORRESPONDS TO A BIT IN THE SERVICE CLASS
*         VALIDATION MASK IN *ASCV* WHICH CAN BE TOGGLED BY AN
*         INPUT DIRECTIVE.
* 
*T        42/IDENTIFIER, 6/SUFFIX, 12/BIT POSITION
  
  
 TSVM     BSS    0
          LOC    0
          VFD    42/-0,18/*                NOT USED 
          LIST   G
 .SCL1    HERE
          LIST   *
          LOC    *O 
 TSVML    EQU    *-TSVM      TABLE LENGTH 
          CON    0           END OF TABLE 
 TOSC     SPACE  4,10 
**        TOSC - TABLE OF ORIGIN TYPES WITH DEFINED USER DEFAULT
*                SERVICE CLASSES. 
* 
*T        12/OT,12/DSC,18/0,18/LMA
*         OT     ORIGIN TYPE. 
*         DSC    DEFAULT SERVICE CLASS FOR ORIGIN TYPE. 
*         LMA    LIMITS MESSAGE ADDRESS.
  
  
 TOSC     BSS    0
          LOC    0
          CON    -1          NOT ALLOWED
 BCOT     DEFAW  BCBC,UDBC   BATCH
 RBOT     DEFAW  RBRB,USRB   REMOTE BATCH 
 IAOT     DEFAW  IATS,USTX   INTERACTIVE
          CON    -1          RESERVED FOR CDC 
          CON    -1          RESERVED FOR INSTALLATIONS 
          LOC    *O 
 TOSCL    EQU    *-TOSC      NUMBER OF USER DEFAULT SERVICE CLASSES 
          CON    0           END OF TABLE 
 TSOT     SPACE  4,10 
**        TSOT - TABLE OF OTHER ORIGIN TYPE MNEMONICS SUPPORTED.
* 
*         SEE *TOSC* DESCRIPTION. 
  
  
 TSOT     BSS    0
          LOC    0
          CON    -1 
          CON    -1 
 EIOT     DEFAW  EIRB,USRB   REMOTE BATCH 
 TXOT     DEFAW  TXTS,USTX   INTERACTIVE
          LOC    *O 
          CON    0
 TAPV     SPACE  4,10 
**        TAPV - TABLE OF SECURITY PRIVILEGE VALIDATION BITS. 
* 
*         EACH ENTRY CORRESPONDS TO A BIT IN THE MULTI-LEVEL SECURITY 
*         VALIDATION WORD WHICH CAN BE TOGGLED BY AN INPUT DIRECTIVE. 
* 
*         FORMAT - 42/IDENTIFIER,18/BIT POSITION. 
  
  
 TAPV     BSS    0
          LOC    52 
 TAPVS    BSS    0
          CON    0LCULT+*    WRITE UNLABELED MAGNETIC TAPES 
          CON    0LCWLF+*    WRITE TO A LOWER LEVEL FILE
          CON    0LCLFL+*    LOWER FILE ACCESS LEVEL
          CON    0LCLJL+*    LOWER JOB ACCESS LEVEL 
          CON    0LCFPX+*    ASSIGN PERMANENT FILE EXPIRATION DATE
          CON    0LCPWX+*    ASSIGN USER PASSWORD EXPIRATION DATE 
          CON    0LCOLD+*    EXECUTE ON-LINE DIAGNOSTICS
          CON    0LCSAP+*    SECURITY ADMINISTRATOR PRIVILEGES
 TAPVL    BSS    0
          LOC    *O 
          CON    0           END OF TABLE 
 TALB     SPACE  4,10 
**        TALB - TABLE OF ACCESS LEVEL BITS.
* 
*T        42/ AL, 18/ N 
* 
*         AL     ACCESS LEVEL NAME DEFINED IN *COMSMLS*.
*         N      POSITION OF CORRESPONDING BIT IN VALIDATION FILE WORD. 
  
  
 TALB     BSS    0           TABLE OF ACCESS LEVEL BITS 
          LOC    36 
          VFD    42/0L"ALM0",18/36   ACCESS LEVEL 0 
          VFD    42/0L"ALM1",18/37   ACCESS LEVEL 1 
          VFD    42/0L"ALM2",18/38   ACCESS LEVEL 2 
          VFD    42/0L"ALM3",18/39   ACCESS LEVEL 3 
          VFD    42/0L"ALM4",18/40   ACCESS LEVEL 4 
          VFD    42/0L"ALM5",18/41   ACCESS LEVEL 5 
          VFD    42/0L"ALM6",18/42   ACCESS LEVEL 6 
          VFD    42/0L"ALM7",18/43   ACCESS LEVEL 7 
 TALBS    BSS    0
          LOC    *O 
 TALBL    EQU    *-TALB      SIZE OF TABLE
          CON    0           END OF ACCESS LEVEL TABLE
 TACC     SPACE  4,10 
**        TACC - TABLE OF ACCESS CATEGORY BITS. 
* 
*T        42/ AC, 18/ N 
* 
*         AC     ACCESS CATEGORY NAME (DEFINED IN *COMSMLS*). 
*         N      POSITION OF CORRESPONDING BIT IN VALIDATION FILE WORD. 
  
  
 TACC     BSS    0
          LOC    0
          CON    0L"ACM00"+*  ACCESS CATEGORY 00
          CON    0L"ACM01"+*  ACCESS CATEGORY 01
          CON    0L"ACM02"+*  ACCESS CATEGORY 02
          CON    0L"ACM03"+*  ACCESS CATEGORY 03
          CON    0L"ACM04"+*  ACCESS CATEGORY 04
          CON    0L"ACM05"+*  ACCESS CATEGORY 05
          CON    0L"ACM06"+*  ACCESS CATEGORY 06
          CON    0L"ACM07"+*  ACCESS CATEGORY 07
          CON    0L"ACM08"+*  ACCESS CATEGORY 08
          CON    0L"ACM09"+*  ACCESS CATEGORY 09
          CON    0L"ACM10"+*  ACCESS CATEGORY 10
          CON    0L"ACM11"+*  ACCESS CATEGORY 11
          CON    0L"ACM12"+*  ACCESS CATEGORY 12
          CON    0L"ACM13"+*  ACCESS CATEGORY 13
          CON    0L"ACM14"+*  ACCESS CATEGORY 14
          CON    0L"ACM15"+*  ACCESS CATEGORY 15
          CON    0L"ACM16"+*  ACCESS CATEGORY 16
          CON    0L"ACM17"+*  ACCESS CATEGORY 17
          CON    0L"ACM18"+*  ACCESS CATEGORY 18
          CON    0L"ACM19"+*  ACCESS CATEGORY 19
          CON    0L"ACM20"+*  ACCESS CATEGORY 20
          CON    0L"ACM21"+*  ACCESS CATEGORY 21
          CON    0L"ACM22"+*  ACCESS CATEGORY 22
          CON    0L"ACM23"+*  ACCESS CATEGORY 23
          CON    0L"ACM24"+*  ACCESS CATEGORY 24
          CON    0L"ACM25"+*  ACCESS CATEGORY 25
          CON    0L"ACM26"+*  ACCESS CATEGORY 26
          CON    0L"ACM27"+*  ACCESS CATEGORY 27
          CON    0L"ACM28"+*  ACCESS CATEGORY 28
          CON    0L"ACM29"+*  ACCESS CATEGORY 29
          CON    0L"ACM30"+*  ACCESS CATEGORY 30
          CON    0L"ACM31"+*  ACCESS CATEGORY 31
 TACCS    BSS    0
          LOC    *O 
 TACCL    EQU    *-TACC      SIZE OF TABLE
          CON    0           END OF ACCESS CATEGORY TABLE 
          SPACE  4,10 
          LIST   X
 TNAP$    EQU    1           IGNORE APPLICATION SYNONYM TABLE 
*CALL,COMTNAP 
          LIST   *
 TPAI     SPACE  4,10 
          TITLE  DATA DEFINITIONS.
**        TPAI - TABLE OF TERMINAL PARITY IDENTIFIERS.
  
  
 TPAI     INDEX  CON,APAMX+1,( -* ) 
          INDEX  ,APAE+1,( 0LEVEN ) 
          INDEX  ,APAO+1,( 0LODD )
          CON    0
 TPXI     SPACE  4,10 
**        TPXI - TABLE OF TERMINAL TRANSMISSION MODES.
  
  
 TPXI     INDEX  CON,APXMX+1,( -* ) 
          INDEX  ,APXH+1,( 0LHALF ) 
          INDEX  ,APXF+1,( 0LFULL ) 
          CON    0
 TTTI     SPACE  4,10 
**        TTTI - TABLE OF TERMINAL TYPES. 
  
  
 TTTI     INDEX  CON,ATTMX+1,( -* ) 
          INDEX  ,ATTY+1,( 0LTTY )
          INDEX  ,ATT7+1,( 0L713 )
          INDEX  ,ATTCO+1,( 0LCOR ) 
          INDEX  ,ATTCA+1,( 0LCORAPL )
          INDEX  ,ATTMA+1,( 0LMEMAPL )
          INDEX  ,ATTE+1,( 0LBLKEDT ) 
          CON    0
 TTCI     SPACE  4,10 
**        TTCI - TABLE OF TERMINAL CHARACTER SETS.
  
 TTCI     INDEX  CON,ATCMX+1,( -* ) 
          INDEX  ,ATCN+1,( 0LNORMAL ) 
          INDEX  ,ATCA+1,( 0LASCII )
          CON    0
 TISI     SPACE  4,10 
**        TISI - TABLE OF TERMINAL INITIAL SUBSYSTEMS.
  
 TISI     INDEX  CON,AISMX+1,( -* ) 
          INDEX  ,AISNUL+1,( 0LNULL ) 
          INDEX  ,AISBAS+1,( 0LBASIC )
          INDEX  ,AISFOR+1,( 0LFORTRAN )
          INDEX  ,AISFTN+1,( 0LFTNTS )
          INDEX  ,AISEXE+1,( 0LEXECUTE )
          INDEX  ,AISBAT+1,( 0LBATCH )
          INDEX  ,AISACC+1,( 0LACCESS ) 
          CON    0
 OPTIONS  SPACE  4,10 
****      IN ADDITION TO THE OPTIONS DEFINED IN *COMSSFS*, THE
*         FOLLOWING OPTIONS WILL BE RECOGNIZED -
  
  
 ZOPT     EQU    6           PASSWORD 
 LOPT     EQU    7           LIST 
  
****
 OPTIONS  SPACE  4,10 
**        OPTION BIT POSITIONS. 
  
  
 OPTMIC   DECMIC KOPT 
 KOPTB    EQU    1S"OPTMIC" 
 OPTMIC   DECMIC UOPT 
 UOPTB    EQU    1S"OPTMIC" 
 OPTMIC   DECMIC ROPT 
 ROPTB    EQU    1S"OPTMIC" 
 OPTMIC   DECMIC SOPT 
 SOPTB    EQU    1S"OPTMIC" 
 OPTMIC   DECMIC IOPT 
 IOPTB    EQU    1S"OPTMIC" 
 OPTMIC   DECMIC ZOPT 
 ZOPTB    EQU    1S"OPTMIC" 
 DEFAULT  SPACE  4,10 
****      DEFAULT USER RECORD BLOCK VALUES. 
  
  
 DALP     EQU    0           NUMBER OF LINES PRINTED
 DACP     EQU    0           NUMBER OF CARDS PUNCHED
 DAPT     EQU    0           NUMBER OF UNITS PLOTTED
 DACC     EQU    34B         NUMBER OF COMMANDS 
 DADF     EQU    34B         NUMBER OF MSG CALLS
 DASP     EQU    0           SYSTEM PROLOGUE FILE INDEX 
 DAPAL    EQU    0           APPLICATION ACCESS LEVEL 
 DASL     EQU    0           SRU LIMIT
 DADS     EQU    0           DIRECT FILE SIZE 
 DAMT     EQU    0           NUMBER OF MAGNETIC TAPES 
 DARP     EQU    0           NUMBER OF REMOVABLE PACKS
 DAMS     EQU    1           NUMBER OF MASS STORAGE PRUS
 DADT     EQU    0           NUMBER OF DETACHED JOBS
 DADB     EQU    0           NUMBER OF DEFERRED BATCH JOBS
 DACM     EQU    15B         FIELD LENGTH / 100B
 DAEC     EQU    0           EXTENDED MEMORY FIELD LENGTH / 100B
 DATL     EQU    0           TIME LIMIT 
 DAFC     EQU    0           FILE COUNT 
 DACS     EQU    0           CUMULATIVE FILE SIZE 
 DAFS     EQU    0           INDIRECT FILE SIZE 
 DASC     EQU    50B         SECURITY COUNT 
 DAPA     EQU    0           PARITY 
 DARO     EQU    AROSY       RUBOUTS
 DAPX     EQU    0           PLEX 
 DATT     EQU    0           TERMINAL TYPE
 DATC     EQU    0           TERMINAL CHARACTER SET 
 DAIS     EQU    0           TERMINAL INITIAL SUBSYSTEM 
 DALD     EQU    1           ACCESS LEVEL VALIDATION  (LEVEL 0) 
 DACV     EQU    0           ACCESS CATEGORY VALIDATION 
  
 DCPWC    EQU    1           PASS WORD CONTROL
 DCTPC    EQU    0           TERMINAL PRIVILEGED COMMAND SET
 DCLPF    EQU    1           WRITE TO LARGE PERMANENT FILES 
 DCSPF    EQU    1           WRITE TO SHORT PERMANENT FILES 
 DCASF    EQU    0           ACCESS SYSTEM FILES
 DCSOJ    EQU    0           SYSTEM ORIGIN PRIVILEGES IN DEBUG MODE 
 DCAND    EQU    0           ASSIGN NON-ALLOCATABLE EQUIPMENT 
 DCCNR    EQU    1           USE SYSTEM WITHOUT USER PROFILE VALIDATION 
 DCSRP    EQU    0           MOUNT REMOVABLE DEVICES
 DCSTP    EQU    0           ALLOW SPECIAL TRANSACTION PRIVILEGES 
 DCTIM    EQU    0           TIME OUT 
 DCUCP    EQU    0           USER CONTROL POINT (UCP) PRIVILEGES
 DCSAP    EQU    0           ALLOW SPECIAL ACCOUNTING PRIVILEGES
 DCBIO    EQU    0           ALLOW *BATCHIO* SUBSYSTEM PRIVILEGES 
 DCPRT    EQU    0           ALLOW EXTENDED MEMORY *PROTECT* PRIVILEGES 
 DCNVE    EQU    0           ALLOW NVE SUBSYSTEM PRIVILEGES 
 DINAP    EQU    0           INSTALLATION APPLICATION PERMISSIONS 
 DAPRP    EQU    0           APPLICATION RESERVED PERMISSIONS 
 DCPLK    EQU    0           TRANSFER PERMANENT FILES BETWEEN HOSTS 
 DCQLK    EQU    0           TRANSFER QUEUED FILES BETWEEN HOSTS
 DCUST    EQU    0           SPECIFY LID-S ON JOB AND *ROUTE* COMMANDS
 DCMNT    EQU    0           ALLOW MAINTENANCE PRIVILEGES 
 DCNOP    EQU    0           ALLOW NPU OPERATOR PRIVILEGE 
 DCSAF    EQU    1           ALLOW SEC. *USER* COMMAND ALTERNATE FAMILY 
 DCNRD    EQU    1           USE NON-DEFAULT CHARGE/PROJECT 
 DCOPR    EQU    1           ENTER NON-RANDOMIZED PASSWORD
 DCLTD    EQU    0           MAY SPECIFY PF RESIDENCE *LOCKED TO DISK*
 DCOPI    EQU    1           USER CAN OMIT PERSONAL IDENTIFICATION
 DCACA    EQU    1           ALLOW CONCURRENT ACCESS
 DCPAM    EQU    0           DISALLOW PRIVILEGED ANALYST OPERATIONS 
 DCSAU    EQU    1           ALLOW SEC. *USER* COMMAND ALTERNATE USER 
 DCRAU    EQU    1           ALLOW ROUTE WITH *USER* COMMAND ALT. USER
 DCRAF    EQU    1           ALLOW ROUTE WITH *USER* COMMAND ALT. FAM.
                             RESERVED FOR INSTALLATION (BIT 48) 
                             RESERVED FOR INSTALLATION (BIT 49) 
                             RESERVED FOR INSTALLATION (BIT 50) 
                             RESERVED FOR INSTALLATION (BIT 51) 
                             RESERVED FOR INSTALLATION (BIT 52) 
                             RESERVED FOR INSTALLATION (BIT 53) 
                             RESERVED FOR INSTALLATION (BIT 54) 
                             RESERVED FOR INSTALLATION (BIT 55) 
                             RESERVED FOR INSTALLATION (BIT 56) 
                             RESERVED FOR INSTALLATION (BIT 57) 
                             RESERVED FOR INSTALLATION (BIT 58) 
                             RESERVED FOR INSTALLATION (BIT 59) 
  
 DABTM    EQU    0           CLEAR SHELL PROGRAM IF ABORT 
 DLFID    EQU    0           SHELL PROGRAM LOCAL FILE 
 DGLID    EQU    0           SHELL PROGRAM GLOBAL LIBRARY 
 DSLID    EQU    1           SHELL PROGARM SYSTEM LIBRARY 
 DTCSM    EQU    0           MONITOR COMMANDS FROM TERMINAL 
 DBCSM    EQU    1           MONITOR COMMANDS OUTSIDE CCL LOOP
 DCCLM    EQU    0           MONITOR COMMANDS INSIDE CCL LOOP 
 DCPSA    EQU    0           SECURITY ADMINISTRATOR PRIVILEGES
 DCOLD    EQU    0           EXECUTE ON-LINE DIAGNOSTICS
 DCPWX    EQU    0           ASSIGN USER PASSWORD EXPIRATION DATE 
 DCFPX    EQU    0           ASSIGN PF PASSWORD/PERMIT EXPIRATION DATE
 DCLJL    EQU    0           LOWER JOB ACCESS LEVEL 
 DCLFL    EQU    0           LOWER FILE ACCESS LEVEL
 DCWLF    EQU    0           WRITE TO A LOWER LEVEL FILE
 DCULT    EQU    0           WRITE UNLABELED MAGNETIC TAPES 
 DTXSC    EQU    1RT         INTERACTIVE USER DEFAULT SERVICE CLASS 
 DRBSC    EQU    1RR         REMOTE BATCH USER DEFAULT SERVICE CLASS
 DBCSC    EQU    1RB         BATCH USER DEFAULT SERVICE CLASS 
 DSCVM    EQU    BCMK+RBMK+TSMK  SERVICE CLASS VALIDATION MASK
****
 TODV     SPACE  4,10 
**        TODV - TABLE OF DEFAULT VALUES FOR USER RECORD BLOCK. 
  
  
 TODV     BSSZ   ARBS 
  
          ORG    TODV+APRN
          VFD    42/0        USER PROLOGUE FILE NAME
          VFD    6/DASP      SYSTEM PROLOGUE FILE INDEX 
          VFD    6/DAPAL     APPLICATION ACCESS LEVEL 
          VFD    5/0         RESERVED 
          VFD    1/0         ALTERNATE USER PROLOGUE INFO PRESENT 
  
          ORG    TODV+ASHN
          VFD    42/0        SHELL PROGRAM NAME 
          VFD    11/0        RESERVED 
          VFD    1/DABTM     CLEAR SHELL PROGRAM IF ABORT 
          VFD    1/DLFID     LOCAL LOAD OF SHELL PROGRAM
          VFD    1/DGLID     GLOBAL LIBRARY SHELL PROGRAM 
          VFD    1/DSLID     SYSTEM LIBRARY SHELL PROGRAM 
          VFD    1/DTCSM     MONITOR COMMANDS FROM TERMINAL 
          VFD    1/DBCSM     MONITOR COMMANDS OUTSIDE CCL LOOP
          VFD    1/DCCLM     MONITOR COMMANDS INSIDE CCL LOOP 
  
          ORG    TODV+ASVW
          VFD    1/DCPSA     SECURITY ADMINISTRATOR PRIVILEGES
          VFD    1/DCOLD     EXECUTE ON-LINE DIAGNOSTICS
          VFD    1/DCPWX     ASSIGN USER PASSWORD EXPIRATION DATE 
          VFD    1/DCFPX     ASSIGN PF PASSWORD/PERMIT EXPIRATION DATE
          VFD    1/DCLJL     LOWER JOB ACCESS LEVEL 
          VFD    1/DCLFL     LOWER FILE ACCESS LEVEL
          VFD    1/DCWLF     WRITE TO A LOWER LEVEL FILE
          VFD    1/DCULT     WRITE UNLABELED MAGNETIC TAPES 
          VFD    4/0         RESERVED 
          VFD    4/0         RESERVED 
          VFD    8/DALD      ACCESS LEVEL VALIDATION
          VFD    4/0         RESERVED 
          VFD    32/DACV     ACCESS CATEGORY VALIDATION 
  
          ORG    TODV+AHMT
          VFD    6/0         RESERVED 
          VFD    6/DAPT      UNITS PLOTTED
          VFD    3/DAMT      MAGNETIC TAPES 
          VFD    3/DARP      REMOVABLE PACKS
          VFD    3/DADB      DEFERRED BATCH 
          VFD    3/0         RESERVED 
          VFD    6/DATL      TIME LIMIT 
          VFD    6/DASL      SRU LIMIT
          VFD    6/DACM      CM FIELD LENGTH
          VFD    6/DAEC      EXTENDED MEMORY FIELD LENGTH 
          VFD    6/DALP      LINES PRINTED
          VFD    6/DACP      CARDS PUNCHED
  
          ORG    TODV+AHDS
          VFD    3/DADS      DIRECT ACCESS FILE SIZE
          VFD    3/DAFC      FILE COUNT 
          VFD    3/DACS      CUMULATIVE FILE SIZE 
          VFD    3/DAFS      INDIRECT ACCESS FILE SIZE
          VFD    6/DASC      SECURITY COUNT 
          VFD    18/0        RESERVED 
          VFD    6/DADT      DETACHED JOBS
          VFD    6/DADF      MSG CALLS
          VFD    6/DACC      COMMAND STATMENTS
          VFD    6/DAMS      MASS STORAGE PRUS
  
          ORG    TODV+AAWC   ACCESS CONTROL 
          VFD    1/0         RESERVED FOR INSTALLATION (BIT 59) 
          VFD    1/0         RESERVED FOR INSTALLATION (BIT 58) 
          VFD    1/0         RESERVED FOR INSTALLATION (BIT 57) 
          VFD    1/0         RESERVED FOR INSTALLATION (BIT 56) 
          VFD    1/0         RESERVED FOR INSTALLATION (BIT 55) 
          VFD    1/0         RESERVED FOR INSTALLATION (BIT 54) 
          VFD    1/0         RESERVED FOR INSTALLATION (BIT 53) 
          VFD    1/0         RESERVED FOR INSTALLATION (BIT 52) 
          VFD    1/0         RESERVED FOR INSTALLATION (BIT 51) 
          VFD    1/0         RESERVED FOR INSTALLATION (BIT 50) 
          VFD    1/0         RESERVED FOR INSTALLATION (BIT 49) 
          VFD    1/0         RESERVED FOR INSTALLATION (BIT 48) 
          VFD    17/0        RESERVED FOR CDC 
          VFD    1/DCRAF     ALLOW ROUTE WITH *USER* COMMAND ALT. FAM.
          VFD    1/DCRAU     ALLOW ROUTE WITH *USER* COMMAND ALT. USER
          VFD    1/DCSAU     ALLOW SEC. *USER* COMMAND ALTERNATE USER 
          VFD    1/DCPAM     ALLOW PRIVILEGED ANALYST OPERATIONS
          VFD    1/DCACA     ALLOW CONCURRENT ACCESS
          VFD    1/DCOPI     USER CAN OMIT PERSONAL IDENTIFICATION
          VFD    1/DCLTD     MAY SPECIFY PF RESIDENCE *LOCKED TO DISK*
          VFD    1/DCOPR     ENTER NON-RANDOMIZED PASSWORD
          VFD    1/DCNRD     CHARGE NOT RESTRICTED TO DEFAULT 
          VFD    1/DCSAF     ALLOW SEC. *USER* COMMAND ALTERNATE FAMILY 
          VFD    1/DCNOP     ALLOW NPU OPERATOR PRIVILEGE 
          VFD    1/DCMNT     ALLOW MAINTENANCE PRIVILEGES 
          VFD    1/DCNVE     NVE SUBSYSTEM ACCESS 
  
          VFD    1/DCUST     SPECIFY LID-S ON JOB AND *ROUTE* COMMANDS
          VFD    1/DCQLK     TRANSFER QUEUED FILES BETWEEN HOSTS
          VFD    1/DCPLK     TRANSFER PERMANENT FILES BETWEEN HOSTS 
          VFD    1/DCPRT     ECS *PROTECT* PRIVILEGES 
          VFD    1/DCBIO     *BATCHIO* SUBSYSTEM PRIVILEGES 
          VFD    1/DCSAP     SPECIAL ACCOUNTING PRIVILEGES
          VFD    1/DCUCP     USER CONTROL POINT PRIVILEGES
          VFD    1/DCTIM     TERMINAL TIME OUT
          VFD    1/DCSTP     SPECIAL TRANSACTION PRIVILEGES 
          VFD    1/DCSRP     REMOVABLE PACK COMMANDS
          VFD    1/DCCNR     PROFILE VALIDATION UNNEEDED
          VFD    1/DCAND     ASSIGN NON-ALLOCATABLE EQUIPMENT 
          VFD    1/DCASF     ACCESS SYSTEM FILES
          VFD    1/DCSOJ     SPECIAL PRIVILEGES UNDER DEBUG MODE
          VFD    1/DCSPF     SMALL PERMANENT FILES
          VFD    1/DCLPF     LARGE PERMANENT FILES
          VFD    1/DCTPC     PRIVILEGED COMMANDS
          VFD    1/DCPWC     PASSWORD CHANGE
  
          ORG    TODV+ASCV
          VFD    24/0        NOT USED 
          VFD    36/DSCVM    SERVICE CLASS VALIDATION MASK
  
          ORG    TODV+ATPA
          VFD    1/DAPA      PARITY 
          VFD    5/DARO      RUBOUTS
          VFD    1/DAPX      PLEX 
          VFD    5/DATT      TERMINAL TYPE
          VFD    1/DATC      TERMINAL CHARACTER SET 
          VFD    5/DAIS      INITIAL SUBSYSTEM
          VFD    42/0        CREATION DATE/MODIFICATION DATE
  
          ORG    TODV+ASC1
          VFD    6/0         RESERVED FOR CDC 
          VFD    6/DBCSC     BATCH USER DEFAULT SERVICE CLASS 
          VFD    6/DRBSC     REMOTE BATCH USER DEFAULT SERVICE CLASS
          VFD    6/DTXSC     INTERACTIVE USER DEFAULT SERVICE CLASS 
          VFD    6/0         RESERVED FOR CDC 
          VFD    6/0         RESERVED FOR INSTALLATIONS 
          VFD    24/0        NOT USED 
  
          ORG    TODV+AAVW   APPLICATION VALIDATIONS
          VFD    12/0        INITIAL APPLICATION CONTROL
          VFD    12/DINAP    INSTALLATION APPLICATION PERMISSIONS 
          VFD    12/0        RESERVED FOR CDC 
          VFD    24/DAPRP    APPLICATION PERMISSIONS
  
          ORG    TODV+APID
          VFD    60/0        PERSONAL IDENTIFICATION PART 1 
          VFD    60/0        PERSONAL IDENTIFICATION PART 2 
  
          NOREF  .DARBS 
 .DARBS   MAX    AHMT,AHDS,ATPA,AAWC,ASHN,APRN,ASCV,ASC1,AAVW 
          ERRNG  ARBS-.DARBS
          ORG    TODV+ARBS
 TINE     SPACE  4,10 
**        TINE - TABLE OF INPUT ENTRIES.  ONE WORD ENTRIES -
* 
*T        18/ I  ,18/ M  ,6/ U  ,6/ S  ,6/ F  ,6/ P 
* 
*         I      IDENTIFICATION TAG.
*         M      MAXIMUM VALUE. 
*         U      UPPER BIT OF FIELD.
*         S      FIELD SIZE.
*         F      FIRST WORD ADDRESS OF FIELD. 
*         P      PROCESSOR INDEX. 
* 
*         ALL ENTRIES IN THIS TABLE PRECEDING THE *RL* ENTRY WILL BE
*         SET TO THE MAXIMUM VALUE BY THE *RL* DIRECTIVE.  ALL OTHER
*         ENTRIES SHOULD FOLLOW THE *RL* ENTRY. 
  
  
 TINE     BSS    0
          INENT  PT,=77B,53,6,AHPT,PND       UNITS PLOTTED
          INENT  MT,=7,47,3,AHMT,PND         MAGNETIC TAPES 
          INENT  RP,=7,44,3,AHRP,PND         REMOVABLE PACKS
          INENT  DB,=7,41,3,AHDB,PND         DEFERRED BATCH 
          INENT  DT,=77B,23,6,AHDT,PND       DETACHED JOBS
          INENT  TL,=77B,35,6,AHTL,PND       TIME LIMIT 
          INENT  SL,=77B,29,6,AHSL,PND       SRU LIMIT
          INENT  CM,=77B,23,6,AHCM,PND       CM FIELD LENGTH
          INENT  EC,=77B,17,6,AHEC,PND       ECS FIELD LENGTH 
          INENT  LP,=77B,11,6,AHLP,PND       LINES PRINTED
          INENT  CP,=77B,5,6,AHCP,PND        CARDS PUNCHED
          INENT  DS,=7,59,3,AHDS,PND         DIRECT ACCESS FILE SIZE
          INENT  FC,=7,56,3,AHFC,PND         PERMANENT FILE COUNT 
          INENT  CS,=7,53,3,AHCS,PND         CUMULATIVE FILE SIZE 
          INENT  FS,=7,50,3,AHFS,PND         INDIRECT FILE SIZE 
          INENT  DF,=77B,17,6,AHDF,PND       MSG CALLS
          INENT  CC,=77B,11,6,AHCC,PND       COMMANDS 
          INENT  MS,=77B,5,6,AHMS,PND        MASS STORAGE PRUS
          INENT  RL,=3,0,0,0,PMX             MAXIMUM RESOURCE LIMITS
  
          INENT  PW,=7,59,42,APSW,PPW        PASSWORD 
          INENT  XT,APXV,17,18,APSW,PTE      EXPIRATION TERM
          INENT  XD,=6,17,18,APSW,PED        EXPIRATION DATE
          INENT  PB,=7,59,42,APSW,PPW        BATCH PASSWORD 
          INENT  PI,=7,59,42,APWI,PPW        INTERACTIVE PASSWORD 
          INENT  EB,=14,59,42,APSW,PEP       ENCRYPTED BATCH PW 
          INENT  EI,=14,59,42,APWI,PEP       ENCRYPTED INTERACTIVE PW 
          INENT  XB,=6,17,18,APSW,PED        BATCH PASSWORD EXPIRATION
          INENT  XI,=6,17,18,APWI,PED        INTERACTIVE PW EXPIRATION
          INENT  XTB,APXV,17,18,APSW,PTE     BATCH EXPIRATION TERM
          INENT  XTI,APXV,17,18,APWI,PTE     INTERACTIVE EXPIRATION 
          INENT  PID,=20,59,60,APID,PIW      PERSONAL IDENTIFICATION
          INENT  SAL,=7,47,12,ASVW,PPC       SECURITY ACCESS LEVELS 
          INENT  SAV,=4,59,12,ASVW,PAV       SECURITY ACCESS PRIVILEGES 
          INENT  SAC,=7,35,36,ASVW,PPC       SECURITY ACCESS CATEGORIES 
          INENT  AB,0,59,60,0,POB            ANSWERBACK CODE
          INENT  SP,=77B,17,6,APRN,PND       SYSTEM PROLOGUE INDEX
          INENT  UP,=7,59,42,APRN,PAD        USER PROLOGUE FILE NAME
          INENT  AL,=17B,11,6,APRN,PND       APPLICATION ACCESS LEVEL 
          INENT  NF,0,38,3,0,POB             LOCAL FILES
          INENT  OF,0,20,3,0,POB             DISPOSED OUTPUT
          INENT  SC,=77B,47,6,AHSC,PND       SECURITY COUNT 
          INENT  PA,TPAI,59,1,ATPA,PEA       PARITY 
          INENT  RO,=37B,58,5,ATRO,PND       RUBOUTS
          INENT  PX,TPXI,53,1,ATPX,PEA       PLEX 
          INENT  TT,TTTI,52,5,ATTT,PEA       TERMINAL TYPE
          INENT  TC,TTCI,47,1,ATTC,PEA       CHARACTER SET
          INENT  IS,TISI,46,5,ATIS,PEA       INITIAL SUBSYSTEM
 CUE$     IFEQ   CUE$,2 
          INENT  SH,=7,59,42,ASHN,POB        SHELL PROGRAM NAME 
          INENT  SO,=4,6,7,ASHN,POB          SHELL PROGRAM OPTIONS
 CUE$     ELSE
          INENT  SH,=7,59,42,ASHN,PAD        SHELL PROGRAM NAME 
          INENT  SO,=4,6,7,ASHN,PPC          SHELL PROGRAM OPTIONS
 CUE$     ENDIF 
          INENT  UC,=4,42,6,ASC1,PDS         USER DEFAULT SERVICE CLASS 
          INENT  VM,=3,35,36,ASCV,PPC        VALIDATION MASK
          INENT  AW,=4,59,60,AAWC,PPC        ACCESS WORD
          INENT  AP,=7,ALAB,NNAB,AAVW,PPC    APPLICATION PERMISSIONS
          INENT  PN,=20,59,60,APJN,PPN       PROJECT NUMBER 
          INENT  CN,=10,59,60,ACGN,PCN       CHARGE NUMBER
 FUIW     INENT  FUI,=377777B,17,18,AUIN,PUI FORCE USER INDEX 
          INENT  DAC,=7,,,,PDA               DELETE USER
          CON    0
  
 UIIW     INENT  UI,=377777B,17,18,AUIN,PUI  USER INDEX 
 APXV     CON    APXL        MAXIMUM TERM VALUE 
 TKDE     SPACE  4,10 
**        TKDE - TABLE OF K-DISPLAY ENTRIES.
  
  
 TKDE     VFD    42/0LDROP,18/-2
          VFD    42/0LEND,18/-4 
          VFD    42/0LSTOP,18/-5
          VFD    42/1L+,18/-1R+ 
          VFD    42/1L-,18/-1R- 
          VFD    42/1L(,18/-1R( 
          VFD    42/1L),18/-1R) 
          CON    0
  
 LITL     DATA   10H1LIMITS FO
 USRN     DATA   02LR 
 FAM      DATA   03LFM/ 
          DATA   10H
 TODT     DATA   10H
 TOTM     DATA   10H
          DATA   0
          SPACE  4,10 
**        *LIMITS* OUTPUT MESSAGES. 
  
  
 LMMX     DATA   C* MAXIMUM NUMBER OF -*
 LMMT     DATA   50H  MAGNETIC TAPE UNITS THAT MAY BE ASSIGNED........
          DATA   0,0
 LMRP     DATA   50H  REMOVABLE AUXILIARY DEVICES THAT MAY BE ASSIGNED
          DATA   0,0
 LMTL     DATA   50H  CPU SECONDS ALLOWED FOR EACH JOB STEP...........
          DATA   0,0
 LMCM     DATA   50H  CENTRAL MEMORY WORDS ALLOWED/100B...............
          DATA   0,0
 LMEC     DATA   50H  EXTENDED MEMORY WORDS ALLOWED/1000B.............
          DATA   0,0
 LMDT     DATA   50H  JOBS THAT CAN BE DETACHED.......................
          DATA   0,0
 LMDB     DATA   50H  DEFERRED BATCH FILES............................
          DATA   0,0
 LMFC     DATA   50H  PERMANENT FILES ALLOWED IN YOUR CATALOG.........
          DATA   0,0
 LMCS     DATA   50H  PRUS AVAILABLE FOR ALL INDIRECT FILES...........
          DATA   0,0
 LMFS     DATA   50H  PRUS AVAILABLE FOR ANY ONE INDIRECT FILE........
          DATA   0,0
 LMDS     DATA   50H  PRUS AVAILABLE FOR ANY ONE DIRECT FILE..........
          DATA   0,0
 LMMS     DATA   50H  PRUS AVAILABLE PER JOB..........................
          DATA   0,0
 LMDF     DATA   50H  MESSAGES THAT MAY BE ISSUED TO THE DAYFILES.....
          DATA   0,0
 LMCC     DATA   50H  BATCH COMMANDS THAT MAY BE PROCESSED............
          DATA   0,0
 LMCP     DATA   50H  CARDS THAT MAY BE PUNCHED PER FILE..............
          DATA   0,0
 LMPT     DATA   50H  LINES THAT MAY BE PLOTTED PER FILE..............
          DATA   0,0
 LMLP     DATA   50H  LINES THAT MAY BE PRINTED PER FILE..............
          DATA   0,0
 LMSL     DATA   50H  SRUS ALLOWED PER JOB............................
          DATA   0,0
 LMAL     DATA   50H  APPLICATION ACCESS LEVEL........................
          DATA   0,0
 LMCHA    DATA   C* OTHER CHARACTERISTICS -*
 LMUI     DATA   50H  USER INDEX......................................
          DATA   0,0
 LMXB     DATA   50H  BATCH PASSWORD EXPIRATION DATE..................
          DATA   0,0
 LMXI     DATA   50H  INTERACTIVE PASSWORD EXPIRATION DATE............
          DATA   0,0
 LMCN     DATA   50H  DEFAULT CHARGE NUMBER ASSIGNED..................
          DATA   0,0
 LMPN     DATA   50H  DEFAULT PROJECT NUMBER ASSIGNED.................
          DATA   0,0
 LMSP     DATA   50H  SYSTEM PROLOGUE.................................
          DATA   0,0
 LMUP     DATA   50H  USER PROLOGUE...................................
          DATA   0,0
 LMSN     DATA   50H  SHELL PROGRAM THAT IS EXECUTED..................
          DATA   0,0
 LMIS     DATA   50H  INTERACTIVE SUBSYSTEM...........................
          DATA   0,0
 LMTC     DATA   50H  INTERACTIVE CHARACTER SET MODE..................
          DATA   0,0
 LMPA     DATA   50H  TERMINAL PARITY.................................
          DATA   0,0
 LMRO     DATA   50H  RUBOUT CHARACTERS REQUIRED FOR CARRIAGE RETURN..
          DATA   0,0
 LMPX     DATA   50H  TRANSMISSION MODE...............................
          DATA   0,0
 LMTT     DATA   50H  TERMINAL TYPE...................................
          DATA   0,0
  
 ALLW     DATA   C* THE FOLLOWING ARE VALID USER PERMISSIONS -* 
 ALPS     DATA   C*  CHANGE YOUR PASSWORD*
 ALPT     DATA   C*  USE PRIVILEGED INTERACTIVE COMMANDS* 
 ALDA     DATA   C*  CREATE DIRECT ACCESS FILES*
 ALIA     DATA   C*  CREATE INDIRECT ACCESS FILES*
 ALSY     DATA   C*  HAVE SYSTEM ORIGIN PRIVILEGES* 
 ALLF     DATA   C*  ACCESS/CREATE LIBRARY FILES* 
 ALMT     DATA   C*  ASSIGN MAGNETIC TAPES* 
 ALDC     DATA   C*  ACCESS SYSTEM WITHOUT SUPPLYING CHARGE/PROJECT NUMB
,ER*
 ALAD     DATA   C*  ACCESS OR CREATE FILES ON AUXILIARY DEVICES* 
 ALTF     DATA   C*  ACCESS TRANSACTION FUNCTIONS FOR LIBRARY UPDATES*
 ALTO     DATA   C*  HAVE UNLIMITED TERMINAL CONNECT TIME WITHOUT TIMEOU
,T* 
 ALCP     DATA   C*  USE SYSTEM CONTROL POINT FACILITY* 
 ALAP     DATA   C*  HAVE SPECIAL ACCOUNTING PRIVILEGES*
 ALBP     DATA   C*  USE BATCHIO SUBSYSTEM PRIVILEGES*
 ALPR     DATA   C*  USE THE PROTECT COMMAND* 
 ALPF     DATA   C*  TRANSFER PERMANENT FILES BETWEEN HOSTS*
 ALQF     DATA   C*  TRANSFER QUEUED FILES BETWEEN HOSTS* 
 ALST     DATA   C+  SPECIFY LID-S ON JOB AND *ROUTE* COMMANDS+ 
 ALNV     DATA   C*  USE THE NVE SUBSYSTEM* 
 ALRT     DATA   C*  ALLOW MAINTENANCE PRIVILEGES*
 ALNO     DATA   C*  ALLOW NPU OPERATOR PRIVILEGE*
 ALSF     DATA   C*  ALLOW ALTERNATE FAMILY ON SECONDARY USER COMMAND*
 ALCN     DATA   C*  CHARGE NOT RESTRICTED TO DEFAULT*
 ALNP     DATA   C*  DEFINE NON-RANDOMIZED LOGIN PASSWORD*
 ALLT     DATA   C/  ALLOW *LOCKED TO DISK* FILE RESIDENCE./
 ALPI     DATA   C*  ACCESS SYSTEM WITHOUT SUPPLYING PERSONAL ID* 
 ALCI     DATA   C*  ALLOWED MULTIPLE CONCURRENT LOGINS*
 ALAM     DATA   C*  ALLOW PRIVILEGED ANALYST OPERATIONS* 
 ALSU     DATA   C*  ALLOW ALTERNATE USER NAME ON SECONDARY USER COMMAND
,*
 ALRU     DATA   C*  ALLOW ALTERNATE USER NAME ON ROUTED INPUT FILE USER
, COMMAND*
 ALRF     DATA   C*  ALLOW ALTERNATE FAMILY ON ROUTED INPUT FILE USER CO
,MMAND* 
  
                             RESERVED FOR INSTALLATION (BIT 48) 
                             RESERVED FOR INSTALLATION (BIT 49) 
                             RESERVED FOR INSTALLATION (BIT 50) 
                             RESERVED FOR INSTALLATION (BIT 51) 
                             RESERVED FOR INSTALLATION (BIT 52) 
                             RESERVED FOR INSTALLATION (BIT 53) 
                             RESERVED FOR INSTALLATION (BIT 54) 
                             RESERVED FOR INSTALLATION (BIT 55) 
                             RESERVED FOR INSTALLATION (BIT 56) 
                             RESERVED FOR INSTALLATION (BIT 57) 
                             RESERVED FOR INSTALLATION (BIT 58) 
                             RESERVED FOR INSTALLATION (BIT 59) 
  
 APPH     DATA   C* THE FOLLOWING ARE VALID APPLICATIONS -* 
 AIAF     DATA   C*  INTERACTIVE FACILITY (IAF)*
 ARBF     DATA   C*  REMOTE BATCH FACILITY (RBF)* 
 ATAF     DATA   C*  TRANSACTION FACILITY (TAF)*
 AMCS     DATA   C*  MESSAGE CONTROL SYSTEM (MCS)*
 ATVF     DATA   C*  TERMINAL VERIFICATION FACILITY (TVF)*
 ACS      DATA   C*  COMMUNICATIONS SUPERVISOR (CS)*
 APLA     DATA   C*  CYBIS TUTORIAL APPLICATION (CYBIS)*
 AITF     DATA   C*  INTERACTIVE TRANSFER FACILITY (ITF)* 
 ATLF     DATA   C*  TIELINE FACILITY (TLF)*
 ANJF     DATA   C*  NETWORK JOB ENTRY FACILITY (NJF)*
 ANOU     DATA   C*  CDCNET NETWORK OPERATOR UTILITY (NETOU)* 
 APSU     DATA   C*  PRINTER SUPPORT UTILITY (PSU)* 
 TAP1     DATA   C*  LOCAL APPLICATION 1 ("AP1")* 
 TAP2     DATA   C*  LOCAL APPLICATION 2 ("AP2")* 
 TAP3     DATA   C*  LOCAL APPLICATION 3 ("AP3")* 
 AVIF     DATA   C*  NOS/VE INTERACTIVE FACILITY (VEIAF)* 
 ANPF     DATA   C*  NETWORK PASSTHRU FACILITY (NPF)* 
 ATCF     DATA   C*  TERMINAL CLUSTER FACILITY (TCF)* 
 TAP4     DATA   C*  LOCAL APPLICATION 4 ("AP4")* 
 TAP5     DATA   C*  LOCAL APPLICATION 5 ("AP5")* 
 TAP6     DATA   C*  LOCAL APPLICATION 6 ("AP6")* 
 AATF     DATA   C*  AUTOMATIC TAPE FACILITY (ATF)* 
  
 RMFP     DATA   C* THE FOLLOWING ARE VALID SHELL PERMISSIONS -*
 RMFB     DATA   C*  CLEAR SHELL PROCESSING IF SCREENING PROGRAM ABORT* 
 RTLF     DATA   C*  LOCAL FILE LOAD OF SHELL PROGRAM*
 RTGL     DATA   C*  GLOBAL LIBRARY LOAD OF SHELL PROGRAM*
 RTSL     DATA   C*  SYSTEM LIBRARY LOAD OF SHELL PROGRAM*
 RTTC     DATA   C*  PROCESS COMMANDS FROM TERMINAL INPUT*
 RTBC     DATA   C*  PROCESS COMMANDS OUTSIDE CCL PROCEDURE*
 RTCC     DATA   C*  PROCESS COMMANDS INSIDE CCL PROCEDURE* 
 AAPP     DATA   C* THE FOLLOWING ARE VALID SECURITY PERMISSIONS -* 
 APLT     DATA   C*  WRITE UNLABELED MAGNETIC TAPES*
 APLF     DATA   C*  WRITE TO OR EXTEND A LOWER LEVEL FILE* 
 APFL     DATA   C*  LOWER (DOWNGRADE) FILE ACCESS LEVEL* 
 APJL     DATA   C*  LOWER (DOWNGRADE) JOB ACCESS LEVEL*
 APFP     DATA   C*  ASSIGN PERMANENT FILE EXPIRATION DATE OR TERM* 
 APED     DATA   C*  ASSIGN USER PASSWORD EXPIRATION DATE OR TERM*
 APLD     DATA   C*  EXECUTE ON-LINE DIAGNOSTICS* 
 APAP     DATA   C*  PERMITTED SECURITY ADMINISTRATOR PRIVILEGES* 
 ALVA     DATA   C* THE FOLLOWING ARE VALID SECURITY ACCESS LEVELS -* 
 ALVB     DATA   C*  ACCESS LEVEL "ALM0"* 
 ALVC     DATA   C*  ACCESS LEVEL "ALM1"* 
 ALVD     DATA   C*  ACCESS LEVEL "ALM2"* 
 ALVE     DATA   C*  ACCESS LEVEL "ALM3"* 
 ALVF     DATA   C*  ACCESS LEVEL "ALM4"* 
 ALVG     DATA   C*  ACCESS LEVEL "ALM5"* 
 ALVH     DATA   C*  ACCESS LEVEL "ALM6"* 
 ALVI     DATA   C*  ACCESS LEVEL "ALM7"* 
 VCAT     DATA C* THE FOLLOWING ARE VALID SECURITY ACCESS CATEGORIES -* 
 AC00     DATA   C*  ACCESS CATEGORY "ACM00"* 
 AC01     DATA   C*  ACCESS CATEGORY "ACM01"* 
 AC02     DATA   C*  ACCESS CATEGORY "ACM02"* 
 AC03     DATA   C*  ACCESS CATEGORY "ACM03"* 
 AC04     DATA   C*  ACCESS CATEGORY "ACM04"* 
 AC05     DATA   C*  ACCESS CATEGORY "ACM05"* 
 AC06     DATA   C*  ACCESS CATEGORY "ACM06"* 
 AC07     DATA   C*  ACCESS CATEGORY "ACM07"* 
 AC08     DATA   C*  ACCESS CATEGORY "ACM08"* 
 AC09     DATA   C*  ACCESS CATEGORY "ACM09"* 
 AC10     DATA   C*  ACCESS CATEGORY "ACM10"* 
 AC11     DATA   C*  ACCESS CATEGORY "ACM11"* 
 AC12     DATA   C*  ACCESS CATEGORY "ACM12"* 
 AC13     DATA   C*  ACCESS CATEGORY "ACM13"* 
 AC14     DATA   C*  ACCESS CATEGORY "ACM14"* 
 AC15     DATA   C*  ACCESS CATEGORY "ACM15"* 
 AC16     DATA   C*  ACCESS CATEGORY "ACM16"* 
 AC17     DATA   C*  ACCESS CATEGORY "ACM17"* 
 AC18     DATA   C*  ACCESS CATEGORY "ACM18"* 
 AC19     DATA   C*  ACCESS CATEGORY "ACM19"* 
 AC20     DATA   C*  ACCESS CATEGORY "ACM20"* 
 AC21     DATA   C*  ACCESS CATEGORY "ACM21"* 
 AC22     DATA   C*  ACCESS CATEGORY "ACM22"* 
 AC23     DATA   C*  ACCESS CATEGORY "ACM23"* 
 AC24     DATA   C*  ACCESS CATEGORY "ACM24"* 
 AC25     DATA   C*  ACCESS CATEGORY "ACM25"* 
 AC26     DATA   C*  ACCESS CATEGORY "ACM26"* 
 AC27     DATA   C*  ACCESS CATEGORY "ACM27"* 
 AC28     DATA   C*  ACCESS CATEGORY "ACM28"* 
 AC29     DATA   C*  ACCESS CATEGORY "ACM29"* 
 AC30     DATA   C*  ACCESS CATEGORY "ACM30"* 
 AC31     DATA   C*  ACCESS CATEGORY "ACM31"* 
 USVM     DATA   C* THE FOLLOWING ARE ALLOWED SERVICE CLASSES -*
          LIST   G
 .SCL2    HERE
          LIST   *
 USUD     DATA   C* THE USER DEFAULT SERVICE CLASS* 
 UDBC     DATA   50H  FOR BATCH ORIGIN IS.............................
          DATA   0,0
 USRB     DATA   50H  FOR REMOTE BATCH ORIGIN IS......................
          DATA   0,0
 USTX     DATA   50H  FOR INTERACTIVE ORIGIN IS.......................
          DATA   0,0
 TFR      SPACE  4,10 
**        TFR - TABLE TO FORMAT RECORD FOR SOURCE, K-DISPLAY, AND 
*         LIMITS PROCESSING.
  
  
 TFR      BSS    0
 TFEB     TFRW1  APSW,18,42,14,AOC,(LJD,MWR)    BATCH PASSWORD
          TFRW2  0,0,TMEB 
          TFRW3 
 TFEI     TFRW1  APWI,18,42,14,AOC,(LJD,MWR)    INTERACTIVE PASSWORD
          TFRW2  0,0,TMEI 
          TFRW3 
 TFXB     TFRW1  APXB,0,18,0,DAT                BATCH EXPIRATION
          TFRW2  LMXB,DSXB,TMXB 
          TFRW3 
 TFXI     TFRW1  APXI,0,18,0,DAT                INTERACTIVE EXPIRATION
          TFRW2  LMXI,DSXI,TMXI 
          TFRW3 
 TFSC     TFRW1  AHSC,42,6,77B,CON              SECURITY COUNT
          TFRW2  0,DSSE,TMSC
          TFRW3 
 TFMT     TFRW1  AHMT,45,3,7,CDD                MAGNETIC TAPES
          TFRW2  LMMT,DSMT,TMMT 
          TFRW3  ,,,LMMX
 TFRP     TFRW1  AHRP,42,3,7,CDD                REMOVABLE PACKS 
          TFRW2  LMRP,DSRP,TMRP 
          TFRW3 
 TFTL     TFRW1  AHTL,30,6,77B,CON,(DCV)        TIME LIMIT
          TFRW2  LMTL,DSTL,TMTL 
          TFRW3  TLI,3
 TFCM     TFRW1  AHCM,18,6,77B,CON,(OCV)        CENTRAL MEMORY
          TFRW2  LMCM,DSCM,TMCM 
          TFRW3  CMI
 TFEC     TFRW1  AHEC,12,6,77B,CON,(OCV)        EXTENDED CORE STORAGE 
          TFRW2  LMEC,DSEC,TMEC 
          TFRW3  ECI
 TFDT     TFRW1  AHDT,18,6,77B,CON,(DCV)        DETACHED JOBS 
          TFRW2  LMDT,DSDT,TMDT 
          TFRW3  DTI
 TFDB     TFRW1  AHDB,39,3,7,CDD,(DCV)          DEFERRED BATCH
          TFRW2  LMDB,DSDB,TMDB 
          TFRW3  DBI
 TFFC     TFRW1  AHFC,54,3,7,CDD,(DCV,ZSD)      NUMBER OF LOCAL FILES 
          TFRW2  LMFC,DSFC,TMFC 
          TFRW3  FCI
 TFFS     TFRW1  AHFS,48,3,7,CDD,(DCV,ZSD)      INDIRECT FILE SECTORS 
          TFRW2  LMFS,DSFS,TMFS 
          TFRW3  FSI
 TFDS     TFRW1  AHDS,57,3,7,CDD,(DCV,ZSD)      DIRECT FILE SECTORS 
          TFRW2  LMDS,DSDS,TMDS 
          TFRW3  DSI
 TFCS     TFRW1  AHCS,51,3,7,CDD,(DCV,ZSD)      CUMULATIVE SECTORS
          TFRW2  LMCS,DSCS,TMCS 
          TFRW3  CSI
 TFMS     TFRW1  AHMS,0,6,77B,CON,(DCV)         MASS STORAGE
          TFRW2  LMMS,DSMS,TMMS 
          TFRW3  MSI
 TFDF     TFRW1  AHDF,12,6,77B,CON,(DCV)        DAYFILE MESSAGES
          TFRW2  LMDF,DSDF,TMDF 
          TFRW3  DFI
 TFCC     TFRW1  AHCC,6,6,77B,CON,(DCV)         COMMANDS
          TFRW2  LMCC,DSCC,TMCC 
          TFRW3  CCI
 TFCP     TFRW1  AHCP,0,6,77B,CON,(DCV)         CARDS PUNCHED 
          TFRW2  LMCP,DSCP,TMCP 
          TFRW3  CPI
 TFPT     TFRW1  AHMT,48,6,77B,CON,(DCV)        PLOTTED LINES 
          TFRW2  LMPT,DSPT,TMPT 
          TFRW3  PTI
 TFLP     TFRW1  AHLP,6,6,77B,CON,(DCV)         LINES PRINTED 
          TFRW2  LMLP,DSLP,TMLP 
          TFRW3  LPI
 TFSL     TFRW1  AHSL,24,6,73B,CON,(DCV)
          TFRW2  LMSL,DSSL,TMSL 
          TFRW3  SLI,3
 TFUI     TFRW1  AUIN,0,18,0,CON                USER INDEX
          TFRW2  LMUI,DSUI,TMUI 
          TFRW3  ,,,LMCHA 
 TFDC     TFRW1  ACGN,0,60,0,SFN,(LJD,RJA)      DEFAULT CHARGE
          TFRW2  LMCN,DSCN,TMCN 
          TFRW3 
 TFDP1    TFRW1  APJN,0,60,0,SFN,(LJD,RJA)      DEFAULT PROJECT (1) 
          TFRW2  LMPN,DSPN,TMPN 
          TFRW3 
 TFDP2    TFRW1  APJ1,0,60,0,SFN,(CTE,LJD,RJA)  DEFAULT PROJECT (2) 
          TFRW2 
          TFRW3 
 TFUD1    TFRW1  APID,0,60,0,SFN,(LJD)          PERSONAL ID (1) 
          TFRW2  0,DSUD,TMUD
          TFRW3 
 TFUD2    TFRW1  API2,0,60,0,SFN,(CTE,LJD)      PERSONAL ID (2) 
          TFRW2 
          TFRW3 
 TFSP     TFRW1  APRN,12,6,0,CON                SYSTEM PROLOGUE INDEX 
          TFRW2  LMSP,DSSP,TMSP 
          TFRW3 
 TFUP     TFRW1  APRN,18,42,0,SFN,(LJD,RJA)     USER PROLOGUE FILE
          TFRW2  LMUP,DSUP,TMUP 
          TFRW3 
 TFAL     TFRW1  APRN,6,6,17B,CON               APPLICATION LEVEL 
          TFRW2  LMAL,DSPL,TMAL 
          TFRW3 
 TFSH     TFRW1  ASHN,18,42,0,SFN,(LJD,RJA)     SHELL PROGRAM NAME
          TFRW2  LMSN,DSSN,TMSH 
          TFRW3 
 TFSO     TFRW1  ASHN,0,7,0,CON                 SHELL PROGRAM OPTIONS 
          TFRW2  0,DSSH,0 
          TFRW3 
 TFIS     TFRW1  ATIS,42,5,0,SFN,(LJD,RJA)      INITIAL SUBSYSTEM 
          TFRW2  LMIS,DSIS,TMIS 
          TFRW3  ,,TISI 
 TFTC     TFRW1  ATTC,47,1,0,SFN,(LJD,RJA)      CHARACTER SET 
          TFRW2  LMTC,DSTC,TMTC 
          TFRW3  ,,TTCI 
 TFPA     TFRW1  ATPA,59,1,0,SFN,(LJD,RJA)      TERMINAL PARITY 
          TFRW2  LMPA,DSPA,TMPA 
          TFRW3  ,,TPAI 
 TFRO     TFRW1  ATRO,54,5,AROSY,CDD,(USD)      RUBOUT CHARACTERS 
          TFRW2  LMRO,DSRO,TMRO 
          TFRW3 
 TFPX     TFRW1  ATPX,53,1,0,SFN,(LJD,RJA)      TRANSMISSION MODE 
          TFRW2  LMPX,DSPX,TMPX 
          TFRW3  ,,TPXI 
 TFTT     TFRW1  ATTT,48,5,0,SFN,(LJD,RJA)      TERMINAL TYPE 
          TFRW2  LMTT,DSTT,TMTT 
          TFRW3  ,,TTTI 
 TFAV     TFRW1  ASAV,48,12,0,CON               SECURITY PRIVILEGES 
          TFRW2  0,DSAV,9 
          TFRW3 
 TFLV     TFRW1  ASVW,36,12,0,CON               ACCESS LEVELS 
          TFRW2  0,DSLV,0 
          TFRW3 
 TFAC     TFRW1  ASAC,0,36,12,AOC,(LJD,MWR)     ACCESS CATEGORIES 
          TFRW2  0,DSAC,0 
          TFRW3 
 TFVM     TFRW1  ASCV,0,36,0,CON                SERVICE CLASS MASK
          TFRW2  0,DSVM,0 
          TFRW3 
 TFUC     TFRW1  ASC1,24,30,0,CSC               DEFAULT SERVICE CLASS 
          TFRW2  0,DSUC,TMUC
          TFRW3 
 TFWC     TFRW1  AAWC,0,60,20,AOC,(LJD,MWR)     ACCESS WORD 
          TFRW2  0,DSAW,0 
          TFRW3 
          CON    0           END OF TABLE 
 ALP      SPACE  4,10 
**        TABLE OF ALLOWED PERMISSIONS. 
* 
*         NOTE -
*         THIS TABLE IS DEPENDENT ON THE ORDER OF *TAWI*. 
  
 ALP      BSS    0
          DEFAW  CPWC,ALPS
          DEFAW  CTPC,ALPT
          DEFAW  CLPF,ALDA
          DEFAW  CSPF,ALIA
          DEFAW  CSOJ,ALSY
          DEFAW  CASF,ALLF
          DEFAW  CAND,ALMT
          DEFAW  CCNR,ALDC
          DEFAW  CSRP,ALAD
          DEFAW  CSTP,ALTF
          DEFAW  CTIM,ALTO
          DEFAW  CUCP,ALCP
          DEFAW  CSAP,ALAP
          DEFAW  CBIO,ALBP
          DEFAW  CPRT,ALPR
          DEFAW  CPLK,ALPF
          DEFAW  CQLK,ALQF
          DEFAW  CUST,ALST
          DEFAW  CNVE,ALNV
          DEFAW  CMNT,ALRT
          DEFAW  CNOP,ALNO
          DEFAW  CSAF,ALSF
          DEFAW  CNRD,ALCN
          DEFAW  COPR,ALNP
          DEFAW  CLTD,ALLT
          DEFAW  COPI,ALPI
          DEFAW  CACA,ALCI
          DEFAW  CPAM,ALAM
          DEFAW  CSAU,ALSU
          DEFAW  CRAU,ALRU
          DEFAW  CRAF,ALRF
  
*         DEFINE INSTALLATION PERMISSIONS.
  
          CON    -1          RESERVED FOR INSTALLATION (BIT 48) 
          CON    -1          RESERVED FOR INSTALLATION (BIT 49) 
          CON    -1          RESERVED FOR INSTALLATION (BIT 50) 
          CON    -1          RESERVED FOR INSTALLATION (BIT 51) 
          CON    -1          RESERVED FOR INSTALLATION (BIT 52) 
          CON    -1          RESERVED FOR INSTALLATION (BIT 53) 
          CON    -1          RESERVED FOR INSTALLATION (BIT 54) 
          CON    -1          RESERVED FOR INSTALLATION (BIT 55) 
          CON    -1          RESERVED FOR INSTALLATION (BIT 56) 
          CON    -1          RESERVED FOR INSTALLATION (BIT 57) 
          CON    -1          RESERVED FOR INSTALLATION (BIT 58) 
          CON    -1          RESERVED FOR INSTALLATION (BIT 59) 
          DATA   0           END OF TABLE 
 ALPL     EQU    60D         FORCE LENGTH FOR *APLW* MACRO
          SPACE  4,10 
**        TABLE OF REMOTE TERMINAL ACCESS PERMISSIONS.
* 
*         NOTE -
*         THIS TABLE IS DEPENDENT ON THE ORDER OF *TRTP*. 
  
  
 ASP      BSS    0
          DEFAW  CCLM,RTCC
          DEFAW  BCSM,RTBC
          DEFAW  TCSM,RTTC
          DEFAW  SLID,RTSL
          DEFAW  GLID,RTGL
          DEFAW  LFID,RTLF
          DEFAW  ABTM,RMFB
 ASPL     EQU    *-ASP       TABLE LENGTH 
          DATA   0           END OF TABLE 
 APP      SPACE  4,10 
**        TABLE OF APPLICATION GRANTED. 
* 
*         NOTE -
*         THIS TABLE IS DEPENDENT ON THE ORDER OF *TNAV*. 
  
 APP      BSS    0
          DEFAW  IAF,AIAF 
          DEFAW  RBF,ARBF 
          DEFAW  TAF,ATAF 
          DEFAW  MCS,AMCS 
          DEFAW  TVF,ATVF 
          DEFAW  CS,ACS 
          DEFAW  CYBIS,APLA 
          DEFAW  ITF,AITF 
          DEFAW  TLF,ATLF 
          DEFAW  NJF,ANJF 
          DEFAW  NETOU,ANOU 
          DEFAW  PSU,APSU 
          DEFAW  "AP1",TAP1 
          DEFAW  "AP2",TAP2 
          DEFAW  "AP3",TAP3 
          DEFAW  VEIAF,AVIF 
          DEFAW  NPF,ANPF 
          DEFAW  TCF,ATCF 
          DEFAW  "AP4",TAP4 
          DEFAW  "AP5",TAP5 
          DEFAW  "AP6",TAP6 
          DEFAW  ATF,AATF 
 APPL     EQU    *-APP       TABLE LENGTH 
          DATA   0           END OF TABLE 
          ERRNZ  APPL-TNAVL  TABLE LENGTHS DO NOT AGREE 
 SCL      SPACE  4,10 
**        TABLE OF SERVICE CLASS TYPES. 
* 
*         NOTE -
*         THIS TABLE IS DEPENDENT ON THE ORDER OF *TSVM*. 
  
 SCL      BSS    0
          LOC    0
          DATA   -1          NOT USED 
          LIST   G
 .SCL3    HERE
          LIST   *
          LOC    *O 
 SCLL     EQU    *-SCL       TABLE LENGTH 
          DATA   0           END OF TABLE 
 APV      SPACE  4,10 
**        TABLE OF SECURITY PRIVILEGE VALIDATION BITS.
* 
*         NOTE -
*         THIS TABLE IS DEPENDENT ON THE ORDER OF *TAPV*
  
 APV      BSS    0
          DEFAW  CULT,APLT
          DEFAW  CWLF,APLF
          DEFAW  CLFL,APFL
          DEFAW  CLJL,APJL
          DEFAW  CFPX,APFP
          DEFAW  CPWX,APED
          DEFAW  COLD,APLD
          DEFAW  CSAP,APAP
 APVL     EQU    *-APV       TABLE LENGTH 
          CON   0            END OF TABLE 
 ALV      SPACE  4,10 
**        TABLE OF SECURITY ACCESS LEVEL VALIDATIONS. 
* 
*         NOTE -
*         THIS TABLE IS DEPENDENT ON THE ORDER OF *TALV*. 
  
  
 ALV      BSS    0
          DEFAW  "ALM0",ALVB
          DEFAW  "ALM1",ALVC
          DEFAW  "ALM2",ALVD
          DEFAW  "ALM3",ALVE
          DEFAW  "ALM4",ALVF
          DEFAW  "ALM5",ALVG
          DEFAW  "ALM6",ALVH
          DEFAW  "ALM7",ALVI
 ALVL     EQU    *-ALV       TABLE LENGTH 
          CON    0           END OF TABLE 
 CAT      SPACE  4,10 
**        TABLE OF ACCESS CATEGORY VALIDATIONS. 
* 
*         NOTE -
*         THIS TABLE IS DEPENDENT ON THE ORDER OF *TACC*. 
  
  
 CAT      BSS    0
          DEFAW  "ACM00",AC00 
          DEFAW  "ACM01",AC01 
          DEFAW  "ACM02",AC02 
          DEFAW  "ACM03",AC03 
          DEFAW  "ACM04",AC04 
          DEFAW  "ACM05",AC05 
          DEFAW  "ACM06",AC06 
          DEFAW  "ACM07",AC07 
          DEFAW  "ACM08",AC08 
          DEFAW  "ACM09",AC09 
          DEFAW  "ACM10",AC10 
          DEFAW  "ACM11",AC11 
          DEFAW  "ACM12",AC12 
          DEFAW  "ACM13",AC13 
          DEFAW  "ACM14",AC14 
          DEFAW  "ACM15",AC15 
          DEFAW  "ACM16",AC16 
          DEFAW  "ACM17",AC17 
          DEFAW  "ACM18",AC18 
          DEFAW  "ACM19",AC19 
          DEFAW  "ACM20",AC20 
          DEFAW  "ACM21",AC21 
          DEFAW  "ACM22",AC22 
          DEFAW  "ACM23",AC23 
          DEFAW  "ACM24",AC24 
          DEFAW  "ACM25",AC25 
          DEFAW  "ACM26",AC26 
          DEFAW  "ACM27",AC27 
          DEFAW  "ACM28",AC28 
          DEFAW  "ACM29",AC29 
          DEFAW  "ACM30",AC30 
          DEFAW  "ACM31",AC31 
 CATL     EQU    *-CAT       TABLE LENGTH 
          CON    0           END OF TABLE 
 TMBS     SPACE  4,10 
**        TMBS - TABLE FOR MAP BACK TO SOURCE.
  
  
 TMBS     BSS    0
          DIS    ,*/USERNUM  ,* 
 TMUI     DIS    ,*     UI =           ,* 
 TMMT     DIS    ,*     MT =           ,* 
 TMRP     DIS    ,*     RP =           ,* 
 TMTL     DIS    ,*     TL =           ,* 
 TMCM     DIS    ,*     CM =           ,* 
 TMDB     DIS    ,*     DB =           ,* 
 TMFC     DIS    ,*     FC =           ,* 
 TMCS     DIS    ,*     CS =           ,* 
 TMFS     DIS    ,*     FS =           ,* 
 TMPA     DIS    ,*     PA =           ,* 
 TMRO     DIS    ,*     RO =           ,* 
 TMPX     DIS    ,*     PX =           ,* 
 TMTT     DIS    ,*     TT =           ,* 
 TMTC     DIS    ,*     TC =           ,* 
 TMIS     DIS    ,*     IS =           ,* 
 TMMS     DIS    ,*     MS =           ,* 
 TMDF     DIS    ,*     DF =           ,* 
 TMCC     DIS    ,*     CC =           ,* 
 TMCP     DIS    ,*     CP =           ,* 
 TMLP     DIS    ,*     LP =           ,* 
 TMPT     DIS    ,*     PT =           ,* 
 TMEC     DIS    ,*     EC =           ,* 
 TMSL     DIS    ,*     SL =           ,* 
 TMCN     DIS    ,*     CN =           ,* 
 TMPN     DIS    ,*     PN =                     ,* 
 TMUD     DIS    ,*    PID =                     ,* 
 TMDS     DIS    ,*     DS =           ,* 
 TMSC     DIS    ,*     SC =           ,* 
 TMDT     DIS    ,*     DT =           ,* 
 TMSP     DIS    ,*     SP =           ,* 
 TMUP     DIS    ,*     UP =           ,* 
 TMSH     DIS    ,*     SH =           ,* 
 TMAL     DIS    ,*     AL =           ,* 
 TMEB     DIS    ,*     EB =                     ,* 
 TMXB     DIS    ,*     XB =           ,* 
 TMEI     DIS    ,*     EI =                     ,* 
 TMXI     DIS    ,*     XI =           ,* 
 TMBSL    EQU    *-TMBS      TABLE LENGTH 
 TMUC     DIS    ,*     UC =           ,* 
 TMAW     DIS    ,*     AW =  NUL      ,* 
 TMAP     DIS    ,*     AP =  NUL      ,* 
 TMSO     DIS    ,*     SO =  NUL      ,* 
 TMLV     DIS    ,*    SAL =  NUL      ,* 
 TMAV     DIS    ,*    SAV =  NUL      ,* 
 TMAC     DIS    ,*    SAC =  NUL      ,* 
 TMVM     DIS    ,*     VM =  NUL      ,* 
          TITLE  MAIN ROUTINES. 
 MOD      SPACE  4,10 
**        MOD - PROCESS NORMAL CALL.
  
  
 MOD      SA3    OPTION      CHECK COMMAND OPTIONS
          SA4    OP 
          ZR     X3,MOD2     IF ALL OPTIONS PROCESSED 
          SB2    X4+
+         LX3    -1 
          SB2    B2+B1
          PL     X3,*        IF OPTION NOT REQUESTED
          SX6    X3          CLEAR OPTION PROCESSED 
          SA2    B2+TOFP     SET PROCESSOR
          SA6    A3 
          SX7    B2 
          SB7    X2 
          SA7    A4          SET CURRENT OPTION 
          BX7    X7-X7       CLEAR MANAGED TABLE INFORMATION
          SB2    RA3+1-L.TAB0 
          SA7    L.TAB0 
 MOD0     SA7    A7+B1
          SB2    B2-B1
          NZ     B2,MOD0     IF MORE WORDS TO CLEAR 
          SX3    X2-OVLA     CHECK TABLE ENTRY
          SX2    DMSE        * SYSTEM ERROR.* 
          NG     B7,ABT      IF INCORRECT PROCESSOR ADDRESS 
          JP     B7          EXECUTE PROCESSOR
  
 MOD1     RJ     SUI         SAVE ASSIGNED USER INDICES 
 MOD2     SA3    EMSF        CHECK ERROR FLAG 
          SX2    DMDE        * DIRECTIVE ERRORS.* 
          ZR     X3,MOD3     IF NO ERRORS 
          SA1    DB          CHECK DEBUG FLAG 
          ZR     X1,ABT      IF NOT SET 
          BX6    X2          SET MESSAGE
          SA6    MODA 
 MOD3     SA3    RAPF        CHECK SYSTEM FILE ATTACHED 
          ZR     X3,MOD4     IF NOT ATTACHED
          RETURN U
          RECALL N
          RETURN P
 MOD4     SA1    GENF 
          ZR     X1,MOD4.1   IF NOT *GENVAL*
          RETURN P
          RETURN U
 MOD4.1   SA1    MODA 
          ZR     X1,MOD5     IF NO MESSAGE
          MESSAGE  X1,3      ISSUE COMPLETION MESSAGE 
          SA3    EMSF 
          NZ     X3,MOD5     IF DIRECTIVE ERRORS
          SA1    WMSF 
          ZR     X1,MOD5     IF NO WARNING MESSAGES 
          MESSAGE  DMCO,3    * CHECK OUTPUT FOR WARNING MESSAGES.*
 MOD5     RJ     COB         CHECK OUTPUT BUFFER
          RJ     CAF         CHECK ALTERNATE FAMILY 
          ENDRUN
  
  
 MODA     CON    DMUC        ADDRESS OF COMPLETION MESSAGE
 TOFP     SPACE  4,10 
**        TOFP - TABLE OF FUNCTION PROCESSORS.
  
  
 TOFP     INDEX  CON,LOPT+1,( * ) 
          INDEX  ,KOPT,( PUD )  K-DISPLAY 
          INDEX  ,COPT,( PID )  CREATE
          INDEX  ,UOPT,( PUD )  UPDATE
          INDEX  ,ROPT,( PRF )  REFORMAT
          INDEX  ,SOPT,( PCS )  CHANGE TO SOURCE
          INDEX  ,IOPT,( PIO )  INQUIRE 
          INDEX  ,ZOPT,( PUD )  UPDATE (WITH COMMAND DIRECTIVES)
          INDEX  ,LOPT,( PLO )  LIST
          EJECT 
 CHV      SPACE  4,10 
**        CHV - CHANGE VALIDATION.
  
  
 CHV      RECALL P
          RECALL N
          SA1    P           SWITCH FETS
          BX6    X1 
          SX0    A1 
          SA6    N
          SX1    AN          SET PRIMARY BLOCK
          FUNC   SPBT 
          SX2    DMSE        * SYSTEM ERROR.* 
          NZ     X6,ABT      IF ERROR 
          BX6    X4 
          NZ     X4,ABT      IF NOT FOUND 
          SA6    RDBA        ENTRY FOUND FLAG 
          RJ     RDB         SET DATA BLOCK 
          NZ     X1,ABT      IF NO DATA BLOCK 
  
*         PROCESS COMMAND PARAMETERS. 
  
 CHV1     SA3    CHVA        GET TABLE INDEX
          SB4    X3 
          SB7    TCPVL       SET TABLE LIMIT
 CHV2     EQ     B4,B7,CHV3  IF END OF PARAMETERS 
          SA5    TCPV+B4
          SA1    A5+1 
          SB4    B4+TCPVE    INCREMENT TABLE INDEX
          ZR     X5,CHV2     IF NOT SELECTED
          SX6    B4          SAVE TABLE INDEX 
          SA6    A3 
          SB7    X1 
          RJ     ICE         EXECUTE PROCESSOR
          EQ     CHV1        PROCESS NEXT PARAMETER 
  
 CHV3     SX7    B1+
          SA7    UUFG        FLAG USER NAME UPDATE
          RJ     FFA
          EQ     PUD2        COMPLETE CHANGE
  
 CHVA     CON    0           TABLE INDEX
 TCPV     SPACE  4,10 
**        TCPV - TABLE OF COMMAND PARAMETER VALUES. 
* 
*         EACH ENTRY IS TWO WORDS IN LENGTH.  FORMAT -
*         60/  VALUE ENTERED FOR DIRECTIVE
*         60/  PROCESSOR ADDRESS
  
  
 TCPV     BSS    0
 CHVB     CON    0           *UC* PARAMETER 
          CON    ADS         ASSEMBLE *UC* PARAMETER
 TCPVE    EQU    *-TCPV      ENTRY LENGTH 
 TCPVL    EQU    *-TCPV      TABLE LENGTH 
 PSW      SPACE  4,10 
**        PSW - CHANGE PASSWORD.
  
  
 PSW      RECALL P
          RECALL N
          SA1    P           SWITCH FETS
          BX6    X1 
          SX0    A1 
          SA6    N
          SX1    AN          SET PRIMARY BLOCK
          FUNC   SPBT 
          SX2    DMSE        * SYSTEM ERROR.* 
          NZ     X6,ABT      IF ERROR 
          BX6    X4 
          NZ     X4,ABT      IF NO HIT
          SA6    RDBA        ENTRY FOUND FLAG 
          RJ     RDB         SET DATA BLOCK 
          NZ     X1,ABT      IF NO DATA BLOCK 
          SA1    OLDPW
          MX0    42 
          SX2    X1 
          NZ     X2,PSW1     IF NO PASSWORD CHANGE
          SA3    PWIX        GET PASSWORD INDEX INTO DATA BLOCK 
          SA4    NEWPW
          NZ     X3,PSW0     IF CHANGING ONLY ONE PASSWORD
          SA3    TANB+APWI   CHECK OLD PASSWORDS
          SA2    TANB+APSW
          BX3    X3-X2
          BX3    X0*X3
          SX2    DMCP        * CANNOT CHANGE BOTH PASSWORDS AT ONCE.* 
          NZ     X3,ABT      IF OLD PASSWORDS NOT IDENTICAL 
          SA3    TANB+APWI   CHANGE INTERACTIVE PASSWORD
          BX7    -X0*X3 
          BX7    X7+X4
          SA7    A3+
          SX3    APSW        CHANGE BATCH PASSWORD
 PSW0     SA3    TANB+X3
          BX7    -X0*X3 
          BX3    X0*X3
          BX3    X1-X3
          BX7    X7+X4
          SX2    DMIP        * INCORRECT PASSWORD.* 
          SA7    A3          SWITCH PASSWORDS 
          NZ     X3,ABT      IF OLD PASSWORD INCORRECT
          MESSAGE  AMPW,5,R  PASSWORD CHANGE MESSAGE TO ACCOUNT FILE
 PSW1     SA1    XDATE
          BX6    X1 
          SA4    TANB+ASVW
          PL     X1,PSW2     IF EXPIRATION DATE SPECIFIED 
          NG     X4,PSW4     IF SECURITY ADMINISTRATOR
          SA2    PD 
          SX1    APXT-7777B 
          SX6    B0+
          ZR     X1,PSW3     IF NON-EXPIRING DEFAULT EXPIRATION TERM
          SX1    APXT        DEFAULT EXPIRATION TERM
          RJ     ADT         ADD EXPIRATION TERM TO CURRENT DATE
          EQ     PSW3        ENTER NEW EXPIRATION DATE
  
 PSW2     SX2    DMSA        * SEC ADMIN XD/XT CHANGE NOT VALID.* 
          NG     X4,ABT      IF SECURITY ADMINISTRATOR
          SX2    DMPE        * PASSWORD EXPIRATION CHANGE INCORRECT.* 
          LX4    59-57
          PL     X4,ABT      IF EXPIRATION DATE CHANGE NOT ALLOWED
 PSW3     SA3    PWIX        GET PASSWORD INDEX INTO DATA BLOCK 
          NZ     X3,PSW3.1   IF ONLY CHANGING ONE EXPIRATION DATE 
          SA3    TANB+APXI   CHANGE INTERACTIVE EXPIRATION DATE 
          BX3    X0*X3
          BX7    X3+X6       ENTER NEW EXPIRATION DATE
          SA7    A3 
          SX3    APXB        SET TO CHANGE BATCH EXPIRATION DATE
 PSW3.1   SA3    TANB+X3
          BX3    X0*X3
          BX7    X3+X6       ENTER NEW EXPIRATION DATE
          SA7    A3 
          SA1    XDATE
          NG     X1,PSW4     IF EXPIRATION DATE NOT SPECIFIED 
          MESSAGE  AMPX,5,R  EXPIRATION DATE CHANGE MESSAGE 
 PSW4     SX7    B1+         INDICATE NO SERVICE CLASS VALIDATION 
          SA7    CHFG 
          SA7    UUFG        FLAG USER NAME UPDATE
          RJ     FFA         FINISH USER UPDATE 
          EQ     PUD2        COMPLETE CHANGE
  
  
 OLDPW    CON    1           OLD PASSWORD (ENCRYPTED) 
 NEWPW    CON    1           NEW PASSWORD (ENCRYPTED) 
 XDATE    CON    -1          EXPIRATION DATE (PACKED) 
 PWIX     CON    APSW        PASSWORD INDEX INTO DATA BLOCK 
 UPR      EJECT 
 UPR      SPACE  4,10 
**        UPR - PROCESS USER PROLOGUE FILE NAME.
  
  
 UPR      RECALL P
          RECALL N
          SA1    P           SWITCH FETS
          BX6    X1 
          SX0    A1 
          SA6    N
          SX1    AN          SET PRIMARY BLOCK
          FUNC   SPBT 
          SX2    DMSE        * SYSTEM ERROR.* 
          NZ     X6,ABT      IF ERROR 
          BX6    X4 
          NZ     X4,ABT      IF NO HIT
          SA6    RDBA        ENTRY FOUND FLAG 
          RJ     RDB         SET DATA BLOCK 
          NZ     X1,ABT      IF NO DATA BLOCK 
          SA1    UPFN        GET USER PROLOGUE FILE NAME
          SA3    TANB+APRN
          MX0    42 
          BX6    X0*X1
          BX3    -X0*X3 
          BX7    X3+X6       MERGE *UP* AND *SP*
          SA7    A3 
          MX0    -6 
 UPR1     LX6    6           CHECK FILE NAME FOR INCORRECT CHARACTER
          BX3    -X0*X6 
          ZR     X3,UPR2     IF FILE NAME CHECK COMPLETE
          SX3    X3-1R+ 
          NG     X3,UPR1     IF VALID CHARACTER 
          SX2    DMMA        * ERROR IN MODVAL ARGUMENTS.*
          EQ     ABT         ABORT
  
 UPR2     SX7    B1+         INDICATE NO SERVICE CLASS VALIDATION 
          SA7    CHFG 
          SA7    UUFG        FLAG USER NAME UPDATE
          RJ     FFA         FINISH USER UPDATE 
          EQ     PUD2        COMPLETE CHANGE
          TITLE  PROCESS COMMAND OPTIONS. 
 PID      SPACE  4,15 
**        PID - PROCESS INPUT DATA FOR CREATE.  (OP = C). 
* 
*         EXIT   1. TO MAIN ROUTINE IF NO OVERFLOW. 
*                2. TO UPDATE PROCESSOR IF TABLE OVERFLOW.
* 
*         USES   X - 0, 1, 2, 5, 6, 7.
*                A - 1, 2, 6, 7.
* 
*         CALLS  DIP, WDB.
* 
*         MACROS FUNC, SETFS. 
  
  
 PID      BSS    0           ENTRY
          SX6    B1+         SET CREATE MODE FOR WRITE
          SA6    CZ 
          SA6    FFAD        INDICATE CREATION RUN
          RJ     DIP         DIRECTIVE INPUT PROCESSOR
          RJ     WDB         WRITE UNFILLED DATA BLOCK
          SX5    N           BUILD VALIDUS FILE DIRECTORIES 
          SA1    RAND 
          BX0    X1 
          LX0    60-24
          FUNC   BLDT 
          SETFS  N,0
          SA2    TV          CHECK FOR TABLE OVERFLOW 
          SX6    DMCC        * CREATION COMPLETE.*
          SA6    MODA 
          ZR     X2,MOD1     IF NONE
          MX7    0           CLEAR OVERFLOW 
          SA7    A2 
          SA7    CZ          CLEAR CREATE MODE FOR WRITE
          EQ     PUD1        ENTER UPDATE MODE
 PUD      SPACE  4,20 
**        PUD - PROCESS UPDATE DATA.  (OP = U, K, OR Z).
* 
*         EXIT   TO MAIN ROUTINE FOR NEXT OPTION. 
*                NOTE - IF MANY USER NAMES ARE CREATED IN THIS MODE,
*                       LEVEL-1 LINKAGE CAN BE EXTENSIVE AND THEREFORE
*                       MAKE THIS RUN AND EVERY OTHER SEARCH OF THE 
*                       FILE MODIFIED VERY INEFFICIENT.  THIS MODE CAN
*                       BE ENTERED FROM A *CREATE* RUN IF TABLE 
*                       OVERFLOW OCCURS IN WHICH CASE EXTENSIVE LEVEL-1 
*                       LINKAGE IS QUITE LIKELY.
*                       * ANY FILE WHERE LEVEL-1 LINKAGE HAS OCCURED
*                       SHOULD BE REFORMATTED TO ATTEMPT REMOVAL OF THE 
*                       LINKAGE. *
* 
*         USES   X - 0, 1, 2, 5, 6, 7.
*                A - 1, 2, 6, 7.
*                B - 2. 
* 
*         CALLS  DIP, SUI.
* 
*         MACROS FUNC, NORERUN, RECALL. 
  
  
 PUD      BSS    0           ENTRY
          RECALL P
          RECALL N
          SA1    N           SET FILES FOR UPDATE OPTION
          SA2    P
          BX6    X1 
          LX7    X2 
          SA6    PUDA 
          SA7    A1+
          SA2    OP          CHECK OPTION 
          ZR     X2,PUD1     IF K-DISPLAY 
          NORERUN            PREVENT JOB RERUN
 PUD1     SX6    B1+         SET UPDATE INDICATORS
          SA6    UF 
          SA6    ABTA 
          RJ     DIP         DIRECTIVE INPUT PROCESSOR
 PUD2     SX5    N           UPDATE VALIDUS DIRECTORY 
          SA1    RAND 
          SB2    60-24
          LX6    X1,B2
          SX0    X5 
          FUNC   UDDT 
          RJ     SUI         SAVE USER INDICES
          SA1    OP 
          NZ     X1,PUD3     IF NOT K-DISPLAY 
          ERRNZ  KOPT        CODE DEPENDS ON VALUE OF K-DISPLAY OPTION
          CONSOLE  X1        CLEAR K-DISPLAY
 PUD3     RECALL N
          SA1    PUDA        RESTORE FET NAMES
          ZR     X1,MOD      EXIT IF NO SWAP MADE 
          BX6    X1 
          SA6    N
          EQ     MOD         EXIT TO MAIN ROUTINE 
  
  
 PUDA     CON    0           *N* FILE NAME HOLD 
 PRF      SPACE  4,10 
**        PRF - PROCESS REFORMAT.  (OP = R).
* 
*         EXIT   TO MAIN ROUTINE FOR NEXT OPTION. 
* 
*         USES   X - 0, 1, 2, 3, 5, 6, 7. 
*                A - 0, 1, 2, 3, 6, 7.
*                B - 2, 5, 7. 
* 
*         CALLS  CDD, CLN, COD, FFA, GNB, PCE, SNM, SUI, WDB. 
* 
*         MACROS EVICT, FUNC, MESSAGE, READ, READO, 
*                REWIND, SETFS, SETUI, WRITEC, WRITER.
  
  
 PRF      BSS    0           ENTRY
          SX6    DMRC        * REFORMAT COMPLETE.*
          SA6    MODA        SET COMPLETION MESSAGE 
          EVICT  N           INITIALIZE NEW FILE
          SX0    9           RESERVE 1ST LEVEL 0 PLUS 8 SECTORS 
 PRF1     WRITER N,R
          SX0    X0-1 
          NZ     X0,PRF1     IF MORE SECTORS TO RESERVE 
          SETFS  N,0
          SX6    B1          SET INITIAL CALL 
          MX7    0           CLEAR UPDATE MODE
          SA7    UF 
          SA7    TAUI+TAUIL-1  CLEAR AVAILABLE USER INDICES 
          SB7    TAUIL-1
 PRF2     SA7    A7-B1
          SB7    B7-B1
          NZ     B7,PRF2     IF NOT ALL CLEAR 
          SX7    PNET        SET PARAMETERS FOR *GNB* 
          SA7    GNBA 
 PRF3     RJ     GNB         GET NEXT USER BLOCK
          ZR     X6,PRF4     IF END OF USER ENTRIES 
          SX6    -B1         FLAG REFORMAT
          SA6    UUFG 
          RJ     FFA         FINISH USER NAME 
          BX6    X6-X6       NOT INITIAL CALL 
          EQ     PRF3        LOOP FOR NEXT USER NAME
  
 PRF4     RJ     WDB         DUMP REMAINING DATA RECORDS
          SA0    B1          RESET BLOCK ADDRESSES
          SX7    B1+
          MX6    0
          SA7    CZ          SET CREATE FLAG FOR WRITE
          SA6    L.TAB0      CLEAR TABLE 0
          SA6    RA0+1       CLEAR LEVEL-0 LINK 
          SX5    N
          FUNC   RBAT 
          SA0    B0+         SORT TABLE 
          FUNC   STBT 
          SA1    RAND        WRITE LEVEL-0 DIRECTORY
          SB2    60-24
          SX5    N
          LX0    X1,B2
          FUNC   WTBT 
  
*         PURGE DELETED USER INDICES. 
  
          SA1    OT          CHECK ORIGIN TYPE
          NZ     X1,MOD      IF NOT SYSTEM ORIGIN 
          REWIND U
          READ   U
 PRF5     SA1    PRFC        CHECK INDEX
          SX1    X1-AUIMX+1 
          PL     X1,PRF7     IF NONE LEFT 
          SA2    PRFB        SHIFT COUNT
          SA1    PRFA        DELETED INDICES
          NZ     X2,PRF6     IF PERTINENT DATA PRESENT
          SX7    60          RESET SHIFT COUNT
          SA7    A2+
          READO  U           UI,S FROM FILE 
          SA2    PRFD        WORD INDEX 
          SA1    X2+TAUI     UI,S USED AFTER REFORMAT 
          SX7    X2+1 
          BX1    -X1*X6      UI,S TO BE PURGED
          SA7    A2 
 PRF6     LX6    X1,B1
          SA2    PRFC        UI 
          SA3    A2-B1       SHIFT COUNT
          SA6    A3-B1       NEW UI,S FOR PURGE 
          SX7    X3-1        UPDATE SHIFT COUNT 
          SX6    X2+B1       UPDATE CURRENT UI
          SA7    A3 
          SA6    A2 
          PL     X1,PRF5     IF NO PURGE
          SETUI  X6 
          SX1    B1          CHECK LINE COUNT 
          RJ     CLN
          SA1    PRFC        DUMP UI TO OUTPUT
          RJ     COD
          SA1    PRFE+1 
          MX0    -36
          BX6    -X0*X6 
          BX1    X0*X1
          BX6    X1+X6
          SA6    A1 
          WRITEC O,A1-B1
          RJ     PCE         PURGE CATALOG ENTRIES
          SA1    PRFF 
          SX6    X1+B1
          SA6    A1 
          EQ     PRF5        LOOP 
  
 PRF7     SA1    PRFF        CHECK USER INDICES PURGED
          ZR     X1,MOD      IF NO USER INDICES PURGED
          RJ     CDD         CONVERT COUNT TO DISPLAY 
          SB2    1RZ
          SB5    DMXP 
          BX1    X4 
          RJ     SNM         ENTER VALUE IN MESSAGE 
          MESSAGE  DMXP,3,R  * NNNNNN USER INDICES PURGED.* 
          SX1    3
          RJ     CLN
          WRITEC O,(=1L ) 
          WRITEC O,(=1L ) 
          WRITEC O,DMXP      * NNNNNN USER INDICES PURGED.* 
          SETUI  SYUI 
          RJ     SUI         SAVE NEW USER INDICES
          EQ     MOD         EXIT TO MAIN ROUTINE 
  
  
 PRFA     CON    0           DELETED USER INDICES (FOR PURGE) 
 PRFB     CON    0           SHIFT COUNT
 PRFC     CON    0           LAST USER INDEX
 PRFD     CON    0           *TAUI* INDEX 
  
 PRFE     DIS    ,*   USER INDEX *
          DIS    ,*B PURGED.* 
 PRFF     CON    0           COUNT OF USER INDICES PURGED 
 PCS      SPACE  4,10 
**        PCS - PROCESS CHANGE TO SOURCE.  (OP = S).
* 
*         EXIT   TO MAIN ROUTINE FOR NEXT OPTION. 
* 
*         USES   X - 1, 6, 7. 
*                A - 1, 6, 7. 
* 
*         CALLS  CDS, CSD, CPS, GNB, SRD. 
* 
*         MACROS SETFS, WRITER, WRITEW. 
  
  
 PCS      BSS    0           ENTRY
          SX6    B1          SET INITIAL CALL 
          MX7    0           CLEAR UPDATE MODE
          SA7    UF 
          SX7    PNAT        SET PARAMETERS FOR *GNB* 
          MX1    1
          BX7    X7+X1
          SA7    GNBA 
 PCS1     RJ     GNB         GET NEXT USER BLOCK
          ZR     X6,PCS2     IF END OF USER ENTRIES 
          RJ     SRD         SET RECORD DATA
          SA1    TMXB+1 
          RJ     CDS         GET BATCH PASSWORD EXPIRATION
          SA1    TMXI+1 
          RJ     CDS         GET INTERACTIVE PASSWORD EXPIRATION DATE 
          WRITEW S,TMBS,TMBSL 
          RJ     CSD         CONVERT SERVICE CLASS DIRECTIVES 
          RJ     CPS         CONVERT PERMISSIONS TO SOURCE
          BX6    X6-X6       NOT INITIAL CALL 
          EQ     PCS1        LOOP FOR NEXT BLOCK
  
 PCS2     WRITER S
          SETFS  S,0
          SX6    DMSC        * CONVERSION TO SOURCE COMPLETE.*
          SA6    MODA 
          EQ     MOD         EXIT TO MAIN ROUTINE 
 PIO      SPACE  4,10 
**        PIO - PROCESS LIMITS. 
* 
*         EXIT   TO *ABT* IF ERROR. 
* 
*         USES   X - 0, 1, 2, 6.
*                A - 1, 2, 6. 
* 
*         CALLS  PLM, RDB, SRD. 
* 
*         MACROS FUNC, RECALL.
  
  
 PIO      BSS    0           ENTRY
          RECALL P
          RECALL N
          SA1    P           SWITCH FETS
          BX6    X1 
          SX0    A1 
          SA6    N
          SA2    SSJ=+UIDS   SET USER NAME
          MX6    42 
          BX6    X6*X2
          SX1    AN 
          SA6    X1 
          FUNC   SPBT        FIND FILE ENTRY
          NZ     X6,ABT      IF ERROR 
          SX2    DMSE        * SYSTEM ERROR.* 
          BX6    X4 
          NZ     X4,ABT      IF NO HIT
          SA6    RDBA        ENTRY FOUND FLAG 
          RJ     RDB         READ DATA BLOCK
          NZ     X1,ABT      IF ERROR 
          RJ     SRD         WRITE USER LIMIT DATA TO OUTPUT
          SA1    TANB+ACCD
          LX6    X1 
          SA6    TANB+1 
          RJ     PLM         PRINT *LIMITS* MESSAGES
          SX6    DMIC        * INQUIRY COMPLETE.* 
          SA6    MODA 
          EQ     MOD2        EXIT PROGRAM 
 PLO      SPACE  4,10 
**        PLO - PROCESS LIST OPTION.  (OP = L). 
* 
*         EXIT   TO MAIN ROUTINE. 
* 
*         USES   A - ALL. 
*                B - 2. 
*                X - ALL. 
* 
*         CALLS  GNB, WCE.
* 
*         MACROS ADDWRD, FUNC, READ, READW, RENAME, 
*                RETURN, REWIND, WRITER, WRITEW.
  
  
 PLO      BSS    0           ENTRY
          SX6    B1+         SET INITIAL CALL 
          SX7    PNAT        SET PARAMETERS FOR *GNB* 
          MX1    1
          BX7    X7+X1
          SA7    GNBA 
 PLO1     RJ     GNB         GET NEXT USER BLOCK
          ZR     X6,PLO6     IF END OF USER ENTRIES 
          SA2    LO          SET CATALOG INFORMATION IN TABLE 
          SA1    TANB 
          SB2    X2 
          LX1    X1,B2       SET ORDER OF LIST
          ADDWRD TAB3,X1
          SA1    TANB+ACCD
          ADDWRD TAB3,X1
          SA1    TV          CHECK OVERFLOW 
          SX6    B0+
          ZR     X1,PLO1     IF NO OVERFLOW 
          SA6    A1 
          BX6    X1 
 PLO6     SA6    PLOA 
          REWIND N
          READ   N
          SA0    TAB3        SORT TABLE 
          FUNC   STBT 
  
*         MERGE TABLE TO FILE.
  
          SX0    B0+         CLEAR CURRENT ENTRY
 PLO7     READW  N,TANB,C.TAB3
 PLO8     SA2    F.TAB3      COMPARE ENTRIES
          SA3    L.TAB3 
          SA4    TANB 
          IX3    X0-X3       (X3) = +, END-OF-TABLE 
          IX2    X2+X0
          SA5    X2 
          NZ     X1,PLO12    IF EOR ON FILE 
          PL     X3,PLO11    IF END OF TABLE
          NG     X4,PLO9     IF NEGATIVE FILE ENTRY 
          PL     X5,PLO10    IF SAME SIGN 
          EQ     PLO11       WRITE FILE ENTRY 
  
 PLO9     PL     X5,PLO12    IF OPPOSITE SIGNS
 PLO10    IX6    X5-X4
          NG     X6,PLO12    IF FILE ENTRY .GT. TABLE ENTRY 
 PLO11    WRITEW S,A4,C.TAB3 WRITE FILE ENTRY 
          EQ     PLO7        CONTINUE MERGE 
  
 PLO12    PL     X3,PLO13    IF END OF MERGE
          SA0    X1          SAVE EOR STATUS
          WRITEW S,X2,C.TAB3 WRITE TABLE ENTRY
          SX1    A0          RESTORE EOR STATUS 
          SX0    X0+C.TAB3
          EQ     PLO8        CONTINUE MERGE 
  
 PLO13    WRITER S,R
          SA5    S
          RENAME A5,N        SWITCH FILES 
          BX6    X5          RESTORE FILE NAME
          SA6    A5 
          SA1    PLOA        CHECK OVERFLOW 
          SX6    B0+         CLEAR TABLE
          SA6    L.TAB3 
          NZ     X1,PLO1     IF OVERFLOW, GET NEXT ENTRY
          REWIND N
          READ   N
 PLO14    READW  N,TANB,C.TAB3  GET NEXT ENTRY
          NZ     X1,PLO15    IF EOR 
          SA2    LO          RESTORE USER AND USER INDEX
          SA1    TANB 
          BX2    -X2
          SB2    X2+60
          LX6    X1,B2
          SA6    A1 
          RJ     WCE         WRITE CATALOG ENTRY
          EQ     PLO14       LOOP 
  
 PLO15    SX6    DMLC        * CATALOG COMPLETE.* 
          SA6    MODA 
          RETURN N
          EQ     MOD2        RETURN 
  
  
 PLOA     CON    0           OVERFLOW FLAG
          TITLE  DIRECTIVE PROCESSORS.
 AAD      SPACE  4,10 
**        AAD - ASSEMBLE ALPHANUMERIC DATA. 
* 
*         ENTRY  (DF - DF+4) = *M*, *U*, *S*, *F*, *I*
*                PARAMETERS FROM *TINE* TABLE.
*                (X5) = (CBUF) = ASSEMBLED DATA.
* 
*         EXIT   (X6) = DATA TO BE STORED IN *TANB*.
*                (B3) = 0.
* 
*         USES   A - 3. 
*                B - 2, 3.
*                X - 3, 6.
  
  
 AAD      SUBR               ENTRY/EXIT 
          SA3    DF          RIGHT JUSTIFY DATA FIELD 
          LX3    1
          SB2    X3 
          SB3    B2+B2
          SB2    B2+B3
          LX6    X5,B2
          SB3    B0 
          EQ     AADX        RETURN 
 AAN      SPACE  4,15 
**        AAN - ASSEMBLE USER NAME. 
* 
*         ENTRY  STRING BUFFER FILLED.
* 
*         EXIT   (X1) .NE. 0, IF ENTRY TERMINATION. 
*                (X6) = USER NAME, IF NONZERO.
*                (B3) = 0.
*                (AN) = LEFT JUSTIFIED USER NAME. 
* 
*         ERROR  (B3) = ERROR MESSAGE ADDRESS.
* 
*         USES   X - 1, 2, 4, 6.
*                A - 1, 2, 6. 
*                B - 3, 5.
* 
*         CALLS  ACI. 
  
  
 AAN      SUBR               ENTRY/EXIT 
          SA2    CS          ASSEMBLE CHARACTERS
          SA1    CA          ACCEPT -*- IN NUMBER 
          BX6    X2          SUPPRESSION MASK 
          RJ     ACI         ASSEMBLE CHARACTERS
          SA1    ET          SET ENTRY TERMINATION
          ZR     B6,AAN1     IF ERROR 
          SB5    B5-1R= 
          SA2    CBUF        GET DATA 
          BX6    X2 
          SB3    B0 
          ZR     X2,AAN1     IF NULL USER NAME
          ZR     B5,AAN1     IF INCORRECT SEPARATOR 
          SA6    AN          STORE
          SX4    X4-AINC-1
          NG     X4,AANX     IF SEVEN CHARACTERS OR LESS
 AAN1     SB3    ERAN        **** ERROR IN USER NAME. 
          EQ     AANX        RETURN 
 AAV      SPACE  4,20 
**        AAV - ASSEMBLE SECURITY VALIDATION PRIVILEGES.
* 
*         ENTRY  (DF - DF+4) = *M*, *U*, *S*, *F*, *I*
*                PARAMETERS FROM *TINE* TABLE.
*                (X5) = (CBUF) = ASSEMBLED DATA.
* 
*         EXIT   (B3) .LT. 0. 
* 
*         ERROR  (B3) = ERROR MESSAGE ADDRESS.
* 
*         USES   A - 1, 2, 6, 7.
*                B - 3. 
*                X - 0, 1, 2, 6, 7. 
* 
*         CALLS  ACW, CUN.
  
  
 AAV      SUBR               ENTRY/EXIT 
          SA1    DF+3        VALIDATION FILE WORD 
          SA2    X1+TANB     VALIDATION FILE ENTRY
          BX7    X2 
          SA7    AAVA        SAVE CURRENT FILE ENTRY
          RJ     ACW         ASSEMBLE CONTROL WORD
          GT     B3,AAVX     IF ERROR 
          SA1    AAVA 
          NG     X7,AAV1     IF *CSAP* BIT SET
          PL     X1,AAVX     IF *CSAP* BIT NOT SET
          RJ     CUN         CHECK USER NAMES 
          NZ     X1,AAVX     IF USER NAMES DO NOT MATCH 
          SB3    ERSP        **** CANNOT DELETE *CSAP* PRIVILEGE. 
          SA1    AAVA 
          BX6    X1 
          SA2    DF+3        VALIDATION FILE WORD 
          SA6    X2+TANB     RETURN OLD PRIVILEGES
          EQ     AAVX        RETURN 
  
*         SET NON-EXPIRING PASSWORD AND UNLIMITED SECURITY COUNT
*         FOR SECURITY ADMINISTRATOR. 
  
 AAV1     MX0    42 
          SA1    APXB+TANB   BATCH EXPIRATION DATE
          BX7    X0*X1
          SA7    A1          SET BATCH EXPIRATION DATE
          SA1    APXI+TANB   INTERACTIVE EXPIRATION DATE
          BX7    X0*X1
          SA7    A1          SET INTERACTIVE EXPIRATION DATE
          SA1    AHDS+TANB   SET UNLIMITED SECURITY COUNT 
          MX0    6
          LX0    47-59
          BX6    -X0*X1 
          BX6    X0+X1
          SA6    A1 
          EQ     AAVX        RETURN 
  
  
 AAVA     CON    0           OLD VALIDATION PRIVILEGES
 ACN      SPACE  4,15 
**        ACN - ASSEMBLE CHARGE NUMBER. 
* 
*         ENTRY  (DF - DF+4) = *M*, *U*, *S*, *F*, *I* PARAMETERS 
*                FROM *TINE* TABLE. 
*                (X5) = (CBUF) = ASSEMBLED DATA.
* 
*         EXIT   (B3) .LT. 0. 
* 
*         USES   X - 6. 
*                A - 6. 
*                B - 3. 
  
  
 ACN      SUBR               ENTRY/EXIT 
          BX6    X5          MOVE ASSEMBLED DATA
          SA6    TANB+ACGN
          SB3    -B1
          EQ     ACNX        RETURN 
 ACW      SPACE  4,15 
**        ACW - ASSEMBLE PERMISSION CONTROL WORD. 
* 
*         ENTRY  (DF - DF+4) = *M*, *U*, *S*, *F*, *I*
*                PARAMETERS FROM *TINE* TABLE.
*                (X5) = (CBUF) = ASSEMBLED DATA.
*                (PCDW) = PERMISSION CONTROL FOR DEFAULT USE. 
* 
*         EXIT   (X7) = NEW PERMISSION CONTROL WORD.
*                (B3) .LT. 0 IF NO ERROR. 
*                     = ERROR MESSAGE ADDRESS IF ERROR. 
* 
*         USES   X - 1, 2, 3, 4, 7. 
*                A - 0, 1, 2, 3, 4, 7.
*                B - 2, 3, 4. 
* 
*         CALLS  CDP, SFN, SPB, STB.
  
  
 ACW      SUBR               ENTRY/EXIT 
          SA1    DF+4        SEARCH FOR DIRECTIVE IDENTIFIER
          SB2    TPCW 
          MX2    18 
          RJ     STB         SEARCH TABLE 
          SX2    DMSE        * SYSTEM ERROR.* 
          ZR     X3,ABT      IF DIRECTIVE IDENTIFIER NOT FOUND
          SB3    ERAD        * ERROR IN ALPHANUMERIC DATA.* 
          ZR     X5,ACWX     IF NO PARAMETER VALUE
          SA0    A3          SAVE TABLE ENTRY ADDRESS 
          SB4    X3          FWA TABLE PERMISSION IDENTIFIERS 
          LX3    59-30
          BX1    X5 
          PL     X3,ACW1     IF NOT BLANK-FILLED TABLE
          RJ     SFN         SPACE FILL NAME
          BX1    X6 
 ACW1     SA2    DF+3        VALIDATION FILE WORD 
          SA4    X2+TANB     VALIDATION FILE ENTRY
          SA2    =3LALL 
          SA3    A0 
          BX2    X2-X5
          NZ     X2,ACW3     IF NOT *ALL* 
          LX3    59-32
          PL     X3,ACW7     IF *ALL* NOT ALLOWED 
          RJ     CDP         CLEAR DEFAULT PERMISSION BITS
          SB3    -B1         SET NO ERROR 
 ACW2     SA1    B4          SET ALL DEFINED PERMISSION BITS
          SB4    B4+B1
          ZR     X1,ACW7     IF END OF TABLE
          MX2    42 
          BX7    X2*X1
          BX7    X2-X7
          ZR     X7,ACW2     IF BIT NOT USED
          MX2    -6 
          BX1    -X2*X1 
          SB2    X1          SET PERMISSION BIT 
          SX2    B1 
          LX2    B2 
          BX4    X4+X2
          EQ     ACW2        CONTINUE SETTING DEFINED BITS
  
 ACW3     SX2    A0-TPCW-PCAP 
          NZ     X2,ACW3.0   IF NOT *AAVW* UPDATE 
          SA2    =3LIAF 
          BX2    X2-X5
          NZ     X2,ACW3.0   IF NOT *IAF* 
          SA2    CVJ
          ZR     X2,ACW6     IF *J* CONVERSION NOT SPECIFIED
          RJ     SPB         SET *IAF* PERMISSION BIT 
          SA1    =7HVEIAF 
          EQ     ACW6        SET *VEIAF* PERMISSION BIT 
  
 ACW3.0   SX2    A0-TPCW-PCAW 
          NZ     X2,ACW3.1   IF NOT *AACW* UPDATE 
          SA2    =4LCSAF
          BX2    X2-X5
          NZ     X2,ACW3.1   IF NOT *CSAF*
          SA2    CVK
          ZR     X2,ACW6     IF *K* CONVERSION NOT SPECIFIED
          RJ     SPB         SET *CSAF* PERMISSION BIT
          SA1    =4LCRAF
          EQ     ACW6        SET *CRAF* PERMISSION BIT
  
 ACW3.1   SA2    =3LNUL 
          BX2    X2-X5
          NZ     X2,ACW6     IF NOT *NUL* 
          LX3    59-31
          PL     X3,ACW7     IF *NUL* NOT ALLOWED 
          RJ     CDP         CLEAR DEFAULT PERMISSION BITS
          SB3    -B1         SET NO ERROR 
          SX1    A0-TPCW-PCAW 
          NZ     X1,ACW7     IF NOT *AACW* UPDATE 
          SA1    CVC
          ZR     X1,ACW4     IF *C* CONVERSION NOT SPECIFIED
          SA1    =4LCNRD
          RJ     SPB         SET PERMISSION BIT 
          PL     B3,ACW7     IF ERROR 
 ACW4     SA1    CVD
          ZR     X1,ACW5     IF *D* CONVERSION NOT SPECIFIED
          SA1    =4LCOPR
          RJ     SPB         SET PERMISSION BIT 
          PL     B3,ACW7     IF ERROR 
 ACW5     SA1    CVF
          ZR     X1,ACW5.1   IF *F* CONVERSION NOT SPECIFIED
          SA1    =4LCSAF
          RJ     SPB         SET PERMISSION BIT 
          PL     B3,ACW7     IF ERROR 
          SA1    CVK
          ZR     X1,ACW5.1   IF *K* CONVERSION NOT SPECIFIED
          SA1    =4LCRAF
          RJ     SPB         SET PERMISSION BIT 
          PL     B3,ACW7     IF ERROR 
 ACW5.1   SA1    CVG
          ZR     X1,ACW5.2   IF *G* CONVERSION NOT SPECIFIED
          SA1    =4LCOPI
          RJ     SPB         SET PERMISSION BIT 
          PL     B3,ACW7     IF ERROR 
 ACW5.2   SA1    CVH
          ZR     X1,ACW5.3   IF *H* CONVERSION NOT SPECIFIED
          SA1    =4LCACA
          RJ     SPB         SET PERMISSION BIT 
          PL     B3,ACW7     IF ERROR 
 ACW5.3   SA1    CVK
          ZR     X1,ACW7     IF *K* CONVERSION NOT SPECIFIED
          SA1    =4LCSAU
          RJ     SPB         SET PERMISSION BIT 
          PL     B3,ACW7     IF ERROR 
          SA1    =4LCRAU
 ACW6     RJ     SPB         SET PERMISSION BIT 
 ACW7     BX7    X4          WRITE PERMISSION CONTROL WORD
          SA7    A4 
          EQ     ACWX        RETURN 
 PCDW     SPACE  4,10 
**        PCDW - PERMISSION BIT WORD TO CONTROL USE OF DEFAULT. 
* 
*         BITS APPLY TO PERMISSION CONTROL DIRECTIVES DEFINED 
*         BY POSITION IN *TPCW* (BIT 0 = TABLE ENTRY 0, 
*         BIT 1 = TABLE ENTRY 1, ETC.).  BIT CLEAR IMPLIES
*         FIRST OCCURANCE OF DIRECTIVE WILL CLEAR DEFAULT 
*         SELECTION.  BIT SET IMPLIES DIRECTIVE SHOULD TOGGLE 
*         SPECIFIED BIT ONLY. 
  
  
 PCDM     EQU    0           PERMISSION CONTROL DEFAULT MASK
  
 PCDW     CON    PCDM        PERMISSION CONTROL DEFAULT WORD
 TPCW     SPACE  4,15 
**        TPCW - TABLE OF PERMISSION CONTROL WORDS. 
* 
*T        18/ID,12/OPT,6/SHF,6/NB,18/TPB
*         ID     DIRECTIVE IDENTIFIER.
*         OPT    OPTIONS = 9/0, 1/ALL, 1/NUL, 1/SPF.
*                ALL = SET IF *ID=ALL* DIRECTIVE ALLOWED. 
*                NUL = SET IF *ID=NUL* DIRECTIVE ALLOWED. 
*                SPF = SET IF SPACE FILL NEEDED FOR PERMISSION
*                      IDENTIFIER.
*         SHF    SHIFT FOR MASK.
*         NB     NUMBER OF PERMISSION BITS. 
*         TPB    FWA TABLE OF PERMISSION IDENTIFIERS. 
  
  
 TPCW     BSS    0
          LOC    0
 PCAW     DTPC   AW,TAWI,60D,0,(ALL,NUL)             ACCESS WORD
 PCAP     DTPC   AP,TNAV,NNAB,ALAB+1,(ALL,NUL,SPF)   APPLICATIONS 
          DTPC   SO,TRTP,TRTPL,TRTPL,(NUL)           SHELL PROGRAM
          DTPC   SAV,TAPV,TAPVL-TAPVS,0,(ALL,NUL)    SECURITY CONTROL 
          DTPC   SAL,TALB,TALBL,TALBS,(ALL,NUL)      ACCESS LEVEL 
          DTPC   SAC,TACC,TACCL,TACCS,(ALL,NUL)      ACCESS CATEGORIES
          DTPC   VM,TSVM,TSVML,TSVML,(ALL,NUL)       SERVICE CLASS
          LOC    *O 
 TPCWL    EQU    *-TPCW      TABLE LENGTH 
          CON    0           END OF TABLE 
 ADS      SPACE  4,15 
**        ADS - ASSEMBLE USER DEFAULT SERVICE CLASS.
* 
*         ENTRY  (CBUF) = ASSEMBED CHARACTERS FOR INPUT DIRECTIVE.
*                (CHVB) = DATA IF *CHVAL* COMMAND.
* 
*         EXIT   USER DEFAULT SERVICE CLASS IN *TANB* ALTERED.
*                (B3) .LT. 0. 
* 
*         ERROR  (B3) = ERROR MESSAGE ADDRESS, IF PROCESSING
*                INPUT DIRECTIVE. 
*                IF *CHVAL* COMMAND, EXIT TO *ABT* WITH (X2) = ERROR
*                MESSAGE ADDRESS. 
* 
*         USES   X - 0, 1, 2, 3, 4, 5, 6. 
*                A - 1, 2, 4, 5, 6. 
*                B - 2, 3, 4, 5.
* 
*         CALLS  STB. 
  
  
 ADS      SUBR               ENTRY/EXIT 
          SB3    CBUF        SET ADDRESS OF DATA
          SA1    CHFG 
          ZR     X1,ADS1     IF NOT *CHVAL* COMMAND 
          SB3    CHVB        SET ADDRESS OF DATA
          MX0    -36
          SA1    B3+         CHECK NUMBER OF CHARACTERS 
          BX3    -X0*X1 
          SX2    DMCA        * ERROR IN CHVAL ARGUMENTS.* 
          NZ     X3,ABT      IF TOO MANY CHARACTERS 
 ADS1     SA1    B3          CHECK FOR VALID ORIGIN TYPE
          MX2    12 
          SB2    TOSC 
          BX1    X2*X1
          RJ     STB         SEARCH FOR VALID ORIGIN TYPE 
          SB4    A3-TOSC     SET ORIGIN TYPE INDEX
          NZ     X3,ADS2     IF FOUND 
          SB2    TSOT 
          RJ     STB         SEARCH FOR VALID ORIGIN TYPE 
          SB4    A3-TSOT     SET ORIGIN TYPE INDEX
          NZ     X3,ADS2     IF FOUND 
          SX2    DMOT        * UNDEFINED ORIGIN TYPE.*
          SA1    CHFG 
          NZ     X1,ABT      IF *CHVAL* COMMAND 
          SB3    EROT        **** INCORRECT ORIGIN TYPE.
          EQ     ADSX        RETURN 
  
 ADS2     SB4    B4+B4       CALCULATE SHIFT FOR ORIGIN TYPE
          SB2    B4+B4
          SB4    B4+B2
          SA1    B3          CHECK FOR VALID SERVICE CLASS
          LX1    12 
          BX1    X2*X1
          NZ     X1,ADS3     IF SERVICE CLASS SPECIFIED 
          LX3    12 
          BX1    X2*X3       USE DEFAULT SERVICE CLASS FOR ORIGIN 
 ADS3     SB2    TSVM 
          RJ     STB         SEARCH FOR VALID SERVICE CLASS 
          NZ     X3,ADS4     IF FOUND 
          SX2    DMUS        * UNDEFINED SERVICE CLASS.*
          SA1    CHFG 
          NZ     X1,ABT      IF *CHVAL* COMMAND 
          SB3    ERSC        **** INCORRECT SERVICE CLASS.
          EQ     ADSX        RETURN 
  
 ADS4     SA4    TANB+ASCV   GET VALIDATION WORD
          SA1    CHFG 
          ZR     X1,ADS5     IF NOT *CHVAL* COMMAND 
          SB5    A3-TSVM     CHECK IF USER VALIDATED
          SA5    TSCV+B5
          BX1    X4*X5
          SX2    DMVC        * INCORRECT SERVICE CLASS.*
          ZR     X1,ABT      IF NOT VALIDATED 
 ADS5     MX0    6           SET NEW USER DEFAULT 
          SA4    TANB+ASC1
          LX3    -18
          BX3    X0*X3       GET SUFFIX FOR SERVICE CLASS 
          LX4    B4 
          SB4    -B4         RESET SHIFT COUNT
          SB4    B4+60
          BX4    -X0*X4 
          BX6    X4+X3
          LX6    B4 
          SA6    A4 
          SB3    -B1         SET NO ERROR, DATA ALREADY SET IN FIELD
          EQ     ADSX        RETURN 
 AEA      SPACE  4,15 
**        AEA - ASSEMBLE EQUIVALENCED ARGUMENTS.
* 
*         ENTRY  (DF - DF+4) = *M*, *U*, *S*, *F*, *I*
*                PARAMETERS FROM *TINE* TABLE.
*                (X5) = (CBUF) = ASSEMBLED DATA.
* 
*         EXIT   (B3) = 0.
* 
*         USES   A - 1, 2.
*                B - 2, 3.
*                X - 1, 2, 6. 
* 
*         CALLS  STB. 
  
  
 AEA      SUBR               ENTRY/ EXIT
          SA1    DF 
          BX1    -X1
          SB2    X1+B1
          MX2    60 
          BX1    X5 
          RJ     STB         SEARCH FOR IDENTIFIER
          SB3    ERAD        **** ERROR IN ALPHANUMERIC DATA. 
          ZR     X3,AEAX     IF NOT FOUND 
          SA2    DF          SET EQUIVALENCED VALUE 
          SX6    A3-B1
          IX6    X2+X6
          SB3    B0          SET DATA FIELD 
          EQ     AEAX        RETURN 
 AEP      SPACE  4,15 
**        AEP - ASSEMBLE ENCRYPTED PASSWORD.
* 
*         ENTRY  (DF - DF+4) = *M*, *U*, *S*, *F*, *I*
*                PARAMETERS FROM *TINE* TABLE.
*                (X5) = (CBUF) = ASSEMBLED DATA.
*                (X1) = 0 IF EXACT CHARACTER COUNT ASSEMBLED. 
* 
*         EXIT   (X6) = DATA TO BE STORED IN *TANB*.
*                (B3) = 0.
* 
*         ERROR  (B3) = ERROR MESSAGE ADDRESS.
* 
*         USES   A - 5. 
*                B - 3, 4.
*                X - 0, 2, 3, 5, 6. 
  
  
 AEP      SUBR               ENTRY/EXIT 
          SB4    10 
          SB3    ERND        **** ERROR IN NUMERIC DATA.
          NZ     X1,AEPX     IF NOT EXACT CHARACTER COUNT 
          MX0    -6 
          BX6    X6-X6
 AEP1     LX5    6
          BX2    -X0*X5 
          SX3    X2-1R0 
          NG     X3,AEPX     IF ALPHA CHARACTER 
          SX2    X2-1R8 
          PL     X2,AEPX     IF NOT OCTAL DIGIT 
          LX6    3
          BX6    X6+X3
          SB4    B4-B1
          NZ     B4,AEP1     IF MORE CHARACTERS TO PROCESS
          SA5    A5+B1       GET SECOND WORD TO BE PROCESSED
          SB4    4
          SX2    A5-CBUF-1
          ZR     X2,AEP1     IF SECOND WORD TO BE PROCESSED 
          SB3    B0 
          EQ     AEPX        RETURN 
 AMX      SPACE  4,15 
**        AMX - ASSEMBLE MAXIMUM RESOURCE LIMITS. 
* 
*         ENTRY  (X5) = (CBUF) = ASSEMBLED DATA.
* 
*         EXIT   ALL RESOURCE LIMITS SET TO MAXIMUM VALUES. 
*                (B3) = -1, IF NO ERROR.
*                (B3) = ERROR MESSAGE ADDRESS IF *ALL* NOT SPECIFIED. 
* 
*         USES   X - 0, 1, 2, 5, 6, 7.
*                A - 1, 5, 6, 7.
*                B - 3. 
* 
*         MACROS FUNC.
  
  
 AMX      SUBR               ENTRY/EXIT 
          SA1    =3LALL 
          BX2    X5-X1
          SA5    TINE-1      INITIALIZE TABLE SEARCH
          SB3    ERAD        **** ERROR IN ALPHANUMERIC DATA. 
          NZ     X2,AMXX     IF *ALL* NOT ENTERED 
          SB3    -1 
 AMX1     SA5    A5+B1       GET NEXT TABLE ENTRY 
          MX0    18 
          SA1    =2LRL
          BX2    X0*X5
          BX2    X1-X2
          ZR     X2,AMXX     IF END OF ENTRIES TO PROCESS 
          LX5    36 
          BX6    -X0*X5      ADDRESS OF MAXIMUM VALUE 
          SA2    X6 
          BX6    X2          MAXIMUM VALUE
          MX0    -6 
          LX5    6
          BX7    -X0*X5      UPPER BIT OF FIELD 
          SA7    DF+1 
          LX5    6
          BX7    -X0*X5      SIZE OF FIELD
          SA7    A7+B1
          LX5    6
          BX7    -X0*X5      FIRST WORD ADDRESS OF FIELD
          SA7    A7+B1
          SX3    TANB 
          FUNC   SDFT        SET DATA IN FIELD
          EQ     AMX1        CHECK NEXT ENTRY 
 AND      SPACE  4,20 
**        AND - ASSEMBLE NUMERIC DATA.
* 
*         ENTRY  (DF - DF+4) = *M*, *U*, *S*, *F*, *I*
*                PARAMETERS FROM *TINE* TABLE.
*                (X5) = (CBUF) = ASSEMBLED DATA.
* 
*         EXIT   (X6) = DATA TO BE STORED IN *TANB*.
*                (B3) = 0.
* 
*         ERROR  (B3) = ERROR MESSAGE ADDRESS.
* 
*         USES   A - 1. 
*                B - 3, 7.
*                X - 1. 
* 
*         CALLS  DXB. 
  
  
 AND      SUBR               ENTRY/EXIT 
          SB7    B1          BASE DECIMAL 
          RJ     DXB         CONVERT DIGITS 
          NZ     X4,AND1     IF ERROR IN ASSEMBLY 
          SA1    DF          GET MAXIMUM VALUE
          SB3    B0 
          ZR     X1,ANDX     IF INFINITE
          IX1    X1-X6
          PL     X1,ANDX     IF WITHIN MAXIMUM
 AND1     SB3    ERND        **** ERROR IN NUMERIC DATA.
          EQ     ANDX        RETURN 
 API      SPACE  4,15 
**        API - ASSEMBLE PERSONAL IDENTIFICATION. 
* 
*         ENTRY  (DF - DF+4) = *M*, *U*, *S*, *F*, *I*
*                PARAMETERS FROM *TINE* TABLE.
*                (A5) = CBUF. 
*                (X5) = (CBUF) = ASSEMBLED DATA.
* 
*         EXIT   (B3) .LT. 0. 
* 
*         USES   A - 1, 6.
*                B - 3. 
*                X - 1, 6.
  
  
 API      SUBR               ENTRY/EXIT 
          BX6    X5 
          SA6    TANB+APID
          SA1    A5+B1
          SB3    -B1
          BX6    X1 
          SA6    TANB+API2
          EQ     APIX        RETURN 
 APN      SPACE  4,15 
**        APN - ASSEMBLE PROJECT NUMBER.
* 
*         ENTRY  (DF - DF+4) = *M*, *U*, *S*, *F*, *I*
*                PARAMETERS FROM *TINE* TABLE.
*                (X5) = (CBUF) = ASSEMBLED DATA.
* 
*         EXIT   (B3) .LT. 0. 
* 
*         USES   A - 1, 6.
*                B - 3. 
*                X - 1, 6.
  
  
 APN      SUBR               ENTRY/EXIT 
          BX6    X5 
          SA6    TANB+APJN
          SA1    A5+B1
          SB3    -B1
          BX6    X1 
          SA6    TANB+APJ1
          EQ     APNX        RETURN 
 APW      SPACE  4,15 
**        APW - ASSEMBLE PASS WORD. 
* 
*         ENTRY  (DF - DF+4) = *M*, *U*, *S*, *F*, *I*
*                PARAMETERS FROM *TINE* TABLE.
*                (X5) = (CBUF) = ASSEMBLED DATA.
* 
*         EXIT   (B3) .LT. 0. 
* 
*         ERROR  (B3) = ERROR MESSAGE ADDRESS.
* 
*         USES   A - 1, 2, 3, 4, 6, 7.
*                B - 3. 
*                X - ALL. 
* 
*         CALLS  ADT, EPW, VPW. 
  
  
 APW5     SA1    OP 
          NZ     X1,APWX     IF NOT K-DISPLAY 
          SA1    DF+4 
          SB3    ERPU        **** PASSWORDS UPDATED.
          ZR     X1,APWX     IF BOTH PASSWORDS UPDATED
          LX1    12 
          SX2    X1-2RPB
          SB3    ERBU        **** BATCH PASSWORD UPDATED. 
          ZR     X2,APWX     IF ONLY BATCH PASSWORD UPDATED 
          SB3    ERIU        **** INTERACTIVE PASSWORD UPDATED. 
  
 APW      SUBR               ENTRY/ EXIT
          BX7    X5 
          RJ     VPW         VERIFY PASSWORD
          ZR     B2,APW1     IF PASSWORD IS OF REQUIRED LENGTH
          SA1    RDBA        CHECK IF OLD USER NAME 
          SB3    ERIP        **** INCORRECT PASSWORD. 
          NZ     X1,APWX     IF NEW USER NAME 
          SB3    ERPI        **** INCORRECT PASSWORD IGNORED. 
          EQ     APWX        RETURN 
  
*         ENCRYPT PASSWORD. 
  
 APW1     RJ     EPW         ENCRYPT PASSWORD 
          BX5    X6 
  
*         SAVE ENCRYPTED PASSWORD.  SET EXPIRATION DATE TO
*         DEFAULT WHEN CREATING PASSWORD FOR A NEW USER.
  
 APW2     SA3    DF+3        GET PREVIOUS VALUE 
          SA4    X3+TANB
          SX2    B0+
          SX1    APXT-7777B  DEFAULT PASSWORD EXPIRATION TERM 
          ZR     X1,APW3     IF NON-EXPIRING DEFAULT EXPIRATION TERM
          SA3    ASVW+TANB   SECURITY VALIDATION WORD 
          NG     X3,APW3     IF SECURITY ADMINISTRATOR
          SA2    PD          GET PACKED DATE
          SX1    APXT        DEFAULT PASSWORD EXPIRATION TERM 
          ZR     X1,APW3     IF NO DEFAULT EXPIRATION TERM
          RJ     ADT         ADD TERM TO DATE 
 APW3     BX6    X5+X2       COMBINE PASSWORD WITH EXPIRATION DATE
          SA6    A4+
 APW4     SA1    DF+4        FUNCTION IDENTIFIER
          SA2    =2LPW
          IX7    X1-X2
          SB3    -B1
          NZ     X7,APW5     IF NOT *PW* FUNCTION IDENTIFIER
          SA7    A1+         CLEAR FUNCTION IDENTIFIER
          SX7    APWI 
          SA7    DF+3        SET ADDRESS
          EQ     APW2        PROCESS INTERACTIVE PASSWORD 
 AED      SPACE  4,10 
**        AED - ASSEMBLE EXPIRATION DATE. 
* 
*         ENTRY  (DF - DF+4) = *M*, *U*, *S*, *F*, *I*
*                              (PARAMETERS FROM *TINE* TABLE).
*                (X5) = (CBUF) = ASSEMBLED DATA.
*                (X1) = 0 IF EXACT CHARACTER COUNT ASSEMBLED. 
* 
*         EXIT   (B3) .LT. 0. 
* 
*         ERROR  (B3) = ERROR MESSAGE ADDRESS.
* 
*         USES   X - 1, 2, 3, 6, 7. 
*                A - 1, 2, 3, 6, 7. 
*                B - 3. 
* 
*         CALLS  VDT. 
* 
*         MACROS FUNC.
  
  
 AED      SUBR               ENTRY / EXIT 
          BX2    X2-X2
          SA3    =1L*        CHECK FOR NONEXPIRING PASSWORD 
          IX6    X3-X5
          ZR     X6,AED1     IF NONEXPIRING PASSWORD
          SB3    ERND        **** ERROR IN NUMERIC DATA.
          NZ     X1,AEDX     IF NOT EXACT CHARACTER COUNT 
          BX1    X5 
          RJ     VDT         DATE TIME CHECK
          SB3    ERND        **** ERROR IN NUMERIC DATA.
          NG     X6,AEDX     IF ERROR IN CONVERSION 
          SA2    TANB+ASVW   SECURITY VALIDATION WORD 
          SB3    ERXD        **** CANNOT ALTER XD/XT OF *CSAP*
          NG     X2,AEDX     IF SECURITY ADMINISTRATOR
 AED1     SA6    AEDA        SAVE EXPIRATION DATE 
          SX3    TANB 
          FUNC   SDFT        SET DATA IN FIELD
          SA1    DF+4        FUNCTION IDENTIFIER
          SA2    =2LXD
          IX6    X1-X2
          SB3    -B1
          NZ     X6,AEDX     IF NOT *XD* IDENTIFIER 
          SA6    A1          CLEAR IDENTIFIER 
          SX7    APWI 
          SA7    DF+3        ADDRESS FOR INTERACTIVE PASSWORD 
          SA1    AEDA 
          BX6    X1 
          EQ     AED1        ALSO SET INTERACTIVE PASSWORD EXPIRATION 
  
  
 AEDA     CON    0           EXPIRATION DATE
 ASC      SPACE  4,15 
**        ASC - ASSEMBLE SECURITY COUNT.
* 
*         ENTRY  (DF - DF+4) = *M*, *U*, *S*, *F*, *I*
*                PARAMETERS FROM *TINE* TABLE.
*                (X5) = (CBUF) = ASSEMBLED DATA.
* 
*         EXIT   (X6) = DATA TO BE STORED IN TABLE. 
*                (B3) = 0.
* 
*         ERROR  (B3) = ERROR MESSAGE ADDRESS.
* 
*         CALLS  AND. 
  
 ASC      SUBR               ENTRY/EXIT 
          RJ     AND         ASSEMBLE NUMERIC DATA
          GT     B0,B3,ASCX  IF ERROR 
          SA1    ASVW+TANB
          PL     X1,ASCX     IF NOT SECURITY ADMINISTRATOR
          SB3    ERCS        **** CANNOT ALTER SEC. COUNT OF *CSAP*.
          EQ     ASCX        RETURN 
 ATE      SPACE  4,10 
**        ATE -  ASSEMBLE EXPIRATION TERM.
* 
*         ENTRY  (DF - DF+4) = *M*, *U*, *S*, *F*, *I*
*                PARAMETERS FROM *TINE* TABLE.
*                (X5) = (CBUF) = ASSEMBLED DATA.
* 
*         EXIT   (B3) .LT. 0. 
* 
*         ERROR  (B3) = ERROR MESSAGE ADDRESS.
* 
*         USES   X - 1, 2, 3, 6, 7. 
*                A - 1, 2, 6, 7.
*                B - 3, 7.
* 
*         CALLS  ADT, DXB.
* 
*         MACROS FUNC.
  
  
  
 ATE3     SB3    ERAD        **** ERROR IN NUMERIC DATA.
  
 ATE      SUBR               ENTRY/EXIT 
          SA1    =1L* 
          IX6    X1-X5
          ZR     X6,ATE1     IF NON-EXPIRING PASSWORD 
          SB7    B1          SET DECIMAL BASE 
          RJ     DXB         DISPLAY TO BINARY CONVERSION 
          NZ     X4,ATE3     IF ERROR IN CONVERSION 
          SA2    DF          MAXIMUM VALUE ALLOWED
          IX2    X2-X6
          BX1    X6 
          NG     X2,ATE3     IF VALUE OUT OF RANGE
          SX6    X6-7777B 
          ZR     X6,ATE1     IF NON-EXPIRING PASSWORD 
          SA2    TANB+ASVW   SECURITY VALIDATION PRIVILEGES 
          SB3    ERXD        **** CANNOT ALTER XD/XT OF *CSAP*
          NG     X2,ATEX     IF SECURITY ADMINISTRATOR
          SA2    PD          GET PACKED DATE
          BX6    X2 
          ZR     X1,ATE1     IF IMMEDIATELY EXPIRING PASSWORD 
          RJ     ADT         ADD TERM VALUE TO PACKED DATE
 ATE1     SX3    TANB        SET DATA FIELD 
          SA6    ATEA        SAVE EXPIRATION DATE 
          FUNC   SDFT        SET DATA IN FIELD
          SA1    DF+4        FUNCTION IDENTIFIER
          SA2    =2LXT
          IX6    X1-X2
          SB3    -B1
          NZ     X6,ATEX     IF NOT *XT* IDENTIFIER 
          SA6    A1+         CLEAR IDENTIFIER 
          SX7    APWI 
          SA7    DF+3        INTERACTIVE PASSWORD ADDRESS 
          SA2    ATEA        GET EXPIRATION DATE
          BX6    X2 
          EQ     ATE1        ALSO SET INTERACTIVE PASSWORD EXPIRATION 
  
  
 ATEA     CON    0           EXPIRATION DATE
 AUX      SPACE  4,15 
**        AUX - ASSEMBLE USER INDEX.
* 
*         EXIT   (B3) = 0.
*                (X6) = DATA TO BE STORED IN *TANB*.
* 
*         ERROR  (B3) = ERROR MESSAGE ADDRESS.
* 
*         USES   A - 2, 3.
*                B - 3. 
*                X - 0, 2, 3. 
* 
*         CALLS  AND, CUI.
  
  
 AUX1     SB3    ERND        **** ERROR IN NUMERIC DATA.
  
 AUX      SUBR               ENTRY/EXIT 
          RJ     AND         ASSEMBLE NUMERIC DATA
          GT     B3,AUXX     IF ERROR 
          ZR     X6,AUX1     IF USER INDEX ZERO 
          SA2    DF+4 
          SA3    =2LUI
          BX3    X2-X3
          NZ     X3,AUXX     IF NOT *UI* DIRECTIVE
          SA3    SI 
          NZ     X3,AUXX     IF *SI* SELECTED 
          SX0    B1          CHECK FOR DUPLICATE USER INDEX 
          RJ     CUI
          PL     X7,AUXX     IF NOT DUPLICATE 
          SB3    ERUI        **** DUPLICATE USER INDEX
          EQ     AUXX        RETURN 
 CUI      SPACE  4,20 
**        CUI - CHECK USER INDEX. 
* 
*         ENTRY  (X6) = USER INDEX. 
*                (TAUI) = ASSIGNED USER INDICES.
*                (X0) = 0, IF USER INDEX TO BE SET IN TAUI. 
*                (X0) .NE. 0, IF USER INDEX TO BE CHECKED FOR 
*                DUPLICATION. 
* 
*         EXIT   (X7) .LT. 0, IF DUPLICATE USER INDEX FOUND FOR 
*                CHECK USER INDEX REQUEST.
* 
*         USES   X - 0, 1, 2, 3, 7. 
*                A - 1, 7.
*                B - 2, 7.
  
  
 CUI      SUBR               ENTRY/ EXIT
          SX7    X6-AUIMX 
          PL     X7,CUIX     IF SPECIAL USER INDEX (SYSTEM/LIBRARY) 
          SX1    60          FIND UI BIT
          SX2    X6-1 
          IX2    X2/X1       (X2) = WORD
          SX1    60 
          BX3    X2 
          IX1    X1*X3
          IX3    X6-X1
          SB2    X3-1        (B2) = SHIFT COUNT 
          SA1    X2+TAUI
          LX7    X1,B2
          NZ     X0,CUIX     IF USER INDEX NOT TO BE SET
          MX0    1           SET USER INDEX IN TAUI 
          SB7    -60
          BX1    X0+X7
          SB2    B2+B7
          AX7    X1,B2
          SA7    A1+
          EQ     CUIX        RETURN 
 DAN      SPACE  4,15 
**        DAN - DELETE USER NAME. 
* 
*         ENTRY  (DF - DF+4) = *M*, *U*, *S*, *F*, *I*
*                PARAMETERS FROM *TINE* TABLE.
*                (X5) = (CBUF) = ASSEMBLED DATA.
* 
*         EXIT   (B3) .LT. 0. 
* 
*         ERROR  (B3) = ERROR MESSAGE ADDRESS.
* 
*         USES   A - 1, 3, 6, 7.
*                B - 3. 
*                X - 0, 1, 2, 3, 6, 7.
* 
*         CALLS  CUN. 
* 
*         MACROS MESSAGE, SEARCH. 
  
  
 DAN1     RJ     CUN         CHECK USER NAMES 
          SB3    ERDU        **** CANNOT DELETE USER RUNNING MODVAL.
          ZR     X1,DANX     IF USER NAMES MATCH
          SA3    OP          CHECK OPTION 
          SA1    EF 
          NZ     X3,DAN2     IF NOT K-DISPLAY 
          NZ     X1,DAN2     IF ERROR FLAG SET
          SA1    =10H DELETING
          BX7    X1 
          SA7    MSGA 
          MESSAGE  A7,1 
 DAN2     SX6    B1          SET DELETE FLAG
          SB3    -B1
          SA6    DANA 
  
 DAN      SUBR               ENTRY / EXIT 
          SA1    OP          CHECK OPTION 
          SX2    DMSE        * SYSTEM ERROR.* 
          SX1    X1-COPT
          ZR     X1,ABT      IF CREATE
          SB3    ERAD        **** ERROR IN ALPHANUMERIC DATA. 
          SA1    AN 
          BX2    X5-X1
          NZ     X2,DANX     IF INCORRECT USER NAME 
          MX0    42 
          SEARCH TAB1,X1,M
          NZ     X2,DAN1     IF MATCH 
          SA1    =10H NAME
          MX7    0
          BX6    X1 
          SA7    DANA 
          SA6    ERNF+2 
          SB3    ERNF        **** USER NAME NOT FOUND.
          EQ     DANX        RETURN 
  
  
 DANA     CON    0
 DIP      SPACE  4,15 
**        DIP - DIRECTIVE INPUT PROCESSOR.
* 
*         EXIT   IF END OF INPUT DIRECTIVES OR OVERFLOW.
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 5, 6, 7.
*                B - 3, 6, 7. 
* 
*         CALLS  AAN, ACI, CUN, CPR, FFA, IDE, PAG, RDB, SFN, SRD.
* 
*         MACROS FUNC, MESSAGE, MOVE, SEARCH. 
  
  
 DIP      SUBR               ENTRY/ EXIT
          SA1    ET          CHECK ENTRY TERMINATION
          NZ     X1,DIP10    IF SET (CREATE PERFORMED)
  
*         FIND NEXT -/-.
  
 DIP1     SA1    KIA         SET INITIAL SCREENS
          SX7    MSGA        CLEAR MESSAGE LINE AFTER INPUT 
          SA7    M1 
          SX7    INPA        SET KEYBOARD INPUT LINE
          SA7    IL 
          MX0    24 
          BX6    X0*X1
          SX5    DSA
          BX6    X5+X6
          SA6    A1 
          SA2    CS          SUPPRESS BLANKS
          MX1    0
          BX6    X2 
          RJ     ACI         ASSEMBLE CHARACTERS
          SB3    ERAN        **** ERROR IN USER NAME. 
          ZR     B6,DIP10    IF ENTRY TERMINATION 
          SA1    OP          CHECK OPTION 
          NZ     X1,DIP5     IF NOT K-DISPLAY 
 DIP2     SX7    B0          CLEAR COMMAND FLAGS
          MX0    42 
          SA7    DIPC 
          SA7    DIPD 
          SA7    ET 
          SA7    EF 
          SA7    DANA 
          ZR     X4,DIP1     IF NO CHARACTERS ASSEMBLED 
          SA1    CBUF 
          BX6    X1 
  
*         FIND NEXT COMMAND FROM K-DISPLAY. 
  
          SA1    DIPB-1      COMMAND TABLE
 DIP3     SA1    A1+B1
          BX2    X1*X0
          ZR     X1,DIP4     IF END OF TABLE
          BX2    X2-X6
          NZ     X2,DIP3     IF NO MATCH
          SX7    B1          SET FLAG 
          SA7    X1 
          EQ     DIP10       PROCESS USER NAME
  
 DIP4     SA1    =0LEND      CHECK FOR K-DISPLAY TERMINATION COMMANDS 
          SA2    =0LSTOP
          BX1    X1-X6
          BX2    X2-X6
          ZR     X1,DIPX     IF *END* 
          ZR     X2,DIPX     IF *STOP*
          SB3    ERFE        **** FORMAT ERROR. 
 DIP5     RJ     IDE         INPUT DATA ERROR 
          EQ     DIP1        SEARCH FOR -/- 
  
*         CLEAN UP CURRENT USER ENTRY.
  
 DIP6     SA2    OP          CHECK FOR K-DISPLAY INHIBITORS 
          NZ     X2,DIP21    IF NOT K-DISPLAY 
          SB6    B7+5 
          PL     B6,DIP7     IF NOT PAGING COMMAND
          SX3    -B7
          RJ     PAG
          EQ     DIP22       PROCESS NEXT DIRECTIVE 
  
 DIP7     SX6    2
          SB7    B7+4 
          SA6    ET 
          NG     B7,DIPX     IF *STOP*
          SA1    EF          INQUIRE ONLY FLAG
          SX6    B7 
          BX6    X1+X6
          SA6    EF          INHIBIT USER UPDATE IF *DROP*
          ZR     B7,DIP8     IF NOT *DROP*
          SA1    =10HINQUIRING
          BX6    X1 
          SA6    MSGA 
          EQ     DIP9        FINISH FORMER USER NAME
  
 DIP8     SA5    APSW+TANB   CHECK BATCH PASSWORD 
          RJ     CPR
          NZ     B3,DIP8.1   IF REQUIRED AND NOT ENTERED
          SA5    APWI+TANB   CHECK INTERACTIVE PASSWORD 
          RJ     CPR
          ZR     B3,DIP9     IF ENTERED 
 DIP8.1   RJ     IDE         PROCESS ERROR
          SA1    OP 
          ZR     X1,DIP22    IF K-DISPLAY 
 DIP9     RJ     FFA         FINISH FORMER USER ENTRY 
          SA1    TV 
          NZ     X1,DIPX     IF OVERFLOW
          SA1    MSGA+1      SET COMPLETED MESSAGE
          SA2    A1-B1
          BX6    X1 
          SA1    DIPF 
          SA6    A2 
          BX7    X1-X2
          SA7    A6+1 
 DIP10    SA2    ET 
          NG     X2,DIPX     IF EOF 
          SX2    X2-2 
          ZR     X2,DIP1     IF K-DISPLAY *END* OR *DROP* 
          SX6    B0+         CLEAR FILE POINTERS
          SA6    ET          ENTRY TERMINATION
          SA6    AN          USER NAME
          SA6    M1          RETAIN K-DISPLAY STATUS MESSAGE
          RJ     AAN         ASSEMBLE USER NAME 
          GT     B3,DIP20    IF ERROR 
          NZ     X1,DIP20    IF ENTRY TERMINATION 
          SA6    DIPA+1      SET NAME IN MESSAGES 
          BX1    X6 
          RJ     SFN
          SA6    DSAN 
          SA1    =10H CREATING  PRESET MESSAGE
          BX6    X1 
          SA6    DIPA 
          R=     X6,PCDM     CLEAR DEFAULT PERMISSION BITS IF SPECIFIED 
          SX7    B1+         INDICATE NEW USER
          SA6    PCDW 
  
*         PRESET USER NAME ENTRY. 
  
          MOVE   ARBS,TODV,TANB SET DEFAULT VALUES
          SA2    UF          CHECK MODE 
          ZR     X2,DIP17    IF NOT UPDATE
          SX1    AN          SET PRIMARY BLOCK
          SX0    N
          FUNC   SPBT 
          NZ     X6,ABT      IF ERROR, AND (X2) = MESSAGE 
          BX6    X4          SET ENTRY FOUND FLAG 
          SA6    RDBA 
          ZR     X4,DIP13    IF EXACT HIT 
          SA1    OP          CHECK K DISPLAY COMMANDS 
          SA2    DIPD        *U* K-OPTION 
          NZ     X1,DIP12    IF NOT K-DISPLAY 
          SA1    EF          *I* K-OPTION 
          SA3    DANA        *D* K-OPTION 
          BX2    X1+X2
          BX2    X2+X3
          ZR     X2,DIP12    IF NOT UPDATE ONLY 
          SB3    ERNF        **** USER NAME NOT FOUND.
 DIP11    SA1    AN          PROCESS *U* OR *C* K-COMMAND ERROR 
          RJ     SFN
          LX6    -6 
          SA6    B3+2 
          RJ     IDE
          MX4    0
          EQ     DIP2        FIND NEXT COMMAND
  
 DIP12    SA5    RAND        CHECK AVAILABLE ROOM IN CHAINED BLOCK
          ZR     X5,DIP19    IF NONE
          EQ     DIP15       READ BLOCK 
  
*         READ LEVEL-2 BLOCK TO TABLE.
  
 DIP13    SA1    OP 
          SA2    DIPC        *C* K-OPTION 
          NZ     X1,DIP14    IF NOT K-DISPLAY 
          SB3    ERFD        **** USER NAME ALREADY EXISTS. 
          NZ     X2,DIP11    IF CREATE ONLY 
 DIP14    SA2    OP          CHECK OPTION 
          SB3    ERDA        **** DUPLICATE USER NAME.
          SX2    X2-COPT
          ZR     X2,DIP21    IF CREATE
 DIP15    RJ     RDB         READ LEVEL-2 BLOCK 
          SA2    =10H UPDATING
          NZ     X1,DIP19    IF NOT EXACT HIT 
          SX6    B1+         SET USER NAME UPDATE FLAG
          SA6    UUFG 
          SA1    EF          CHECK ERROR FLAG FOR INQUIRE 
          ZR     X1,DIP16    IF NOT INQUIRE 
          SA2    =10HINQUIRING
 DIP16    BX6    X2 
          SA1    DANA        CHECK FOR *D* K-OPTION 
          SX7    B1+B1
          SA6    DIPA 
          MX6    TPCWL       PREVENT CLEARING OF PERMISSION BITS
          LX6    TPCWL
          SA6    PCDW 
          ZR     X1,DIP19    IF NOT PRESENT 
          RJ     CUN         CHECK USER NAME
          SB3    ERDU        **** CANNOT DELETE USER RUNNING MODVAL.
          ZR     X1,DIP5     IF SAME USER 
          SA7    ET          SET K-DISPLAY ENTRY TERMINATION
          SA1    =10H DELETING  SET STATUS MESSAGE
          BX6    X1 
          SA6    DIPA 
          MOVE   2,DIPA,MSGA
          EQ     DIP9        DELETE USER NAME 
  
*         CHECK DUPLICATE USER NAME.
  
 DIP17    SA1    AN 
          MX0    42 
          SEARCH TAB1,X1,M
          NZ     X2,DIP18    IF MATCH 
          SEARCH TAB2,X6,M   SEARCH FOR DUPLICATE USER IN LEVEL-2 
          ZR     X2,DIP19    IF NO MATCH
 DIP18    SB3    ERDA        **** DUPLICATE USER NAME.
          RJ     IDE
 DIP19    MESSAGE  DIPA,1    SET MESSAGES 
          MOVE   2,DIPA,MSGA
          SA1    KIA         SET DISPLAY CONTROL WORD 
          MX0    24 
          BX6    X0*X1
          SX5    DSB         SET PAGE ONE LEFT
          BX6    X5+X6
          SX5    DSG         SET PAGE ONE RIGHT 
          LX5    18 
          BX6    X5+X6
          SA6    A1+
          SX6    INPB        SET KEYBOARD INPUT LINE
          SA6    IL 
          SA1    PAGA        RESET PAGE TABLE HEADER
          LX1    30 
          MX0    42 
          BX1    X0*X1
          SX6    B1 
          BX1    X1+X6       SET PAGE ONE LEFT
          LX1    30 
          BX1    X0*X1
          BX6    X1+X6       SET PAGE ONE RIGHT 
          SA6    A1 
          EQ     DIP22       PROCESS CODE IDENTIFIERS 
  
 DIP20    SA1    OP 
          ZR     X1,DIP5     IF K-DISPLAY 
 DIP21    RJ     IDE         INPUT DATA ERROR 
          SA1    ET 
          NZ     X1,DIP8     IF ENTRY TERMINATION 
  
*         PROCESS CODE IDENTIFIERS. 
  
 DIP22    SA1    OP          CHECK OPTION 
          NZ     X1,DIP23    IF NOT K-DISPLAY 
          RJ     SRD         SET RECORD DISPLAY FOR K-DISPLAY 
 DIP23    SX0    I           SCAN FOR CODE IDENTIFIER 
          SA1    CK          ALLOW K-DISPLAY PAGING CHARACTERS
          SX3    TKDE 
          SX6    TINE 
          FUNC   SCIT 
          NZ     X1,DIP24    IF NO ERROR IN IDENTIFIER
          SB3    ERID        **** ERROR IN IDENTIFIER.
          NZ     B5,DIP25    IF SEPARATOR NOT *=* 
          MX1    0
          BX6    X6-X6
          RJ     ACI         SKIP OVER PARAMETER
          SB3    ERID        **** ERROR IN IDENTIFIER.
          SX1    B0+
          EQ     DIP25       DISPLAY ERROR
  
 DIP24    ZR     B6,DIP8     IF ENTRY TERMINATION 
          NG     B7,DIP6     IF K-DISPLAY COMMAND ENTERED 
 DIP25    SA3    OP 
          NZ     X3,DIP26    IF NOT K-DISPLAY 
          SA2    EF 
          ZR     X2,DIP26    IF NOT INQUIRE OPTION
          SB3    ERIQ        **** UPDATE NOT ALLOWED BY INQUIRE.
          EQ     DIP21       DISPLAY ERROR MESSAGE
  
 DIP26    ZR     X1,DIP21    IF ERROR IN IDENTIFIER 
          RJ     PDD         PROCESS DIRECTIVE DATA 
          GT     B3,DIP21    IF ERROR 
          SA1    ET          CHECK FOR ENTRY TERMINATION
          ZR     X1,DIP22    IF NONE
          EQ     DIP8        CLEAN UP USER NAME 
  
  
 DIPA     DIS    ,* CREATING USER.* 
 DIPB     CON    0LI+EF      K-DIPLAY OPTION TABLE
          CON    0LC+DIPC 
          CON    0LU+DIPD 
          CON    0LDEL+DANA 
          CON    0
 DIPC     CON    0           K-CREATE ONLY FLAG 
 DIPD     CON    0           K-UPDATE ONLY FLAG 
 DIPF     CON    4RING &4RED.  CONSTANT 
 IDE      SPACE  4,10 
**        IDE - INPUT DATA ERROR. 
* 
*         ENTRY  (B3) = ERROR MESSAGE ADDRESS.
* 
*         EXIT   ERROR MESSAGE WRITTEN. 
* 
*         USES   X - 1, 2, 3, 5, 6, 7.
*                A - 1, 2, 3, 6, 7. 
*                B - 2. 
* 
*         CALLS  CLN. 
* 
*         MACROS MOVE, WRITEC, WRITEH, WRITES, WRITEW.
  
  
 IDE4     SA2    KIA         GET K-DISPLAY STATUS WORD
          SX6    MSGA 
          SX3    X2-DSA 
          ZR     X3,IDE5     IF INITIAL SCREEN
          SA2    PAGA        GET MESSAGE AREA FROM PAGE TABLE 
          LX2    30 
          SB2    X2 
          SA2    A2+B2       CURRENT LEFT PAGE
          AX2    18 
          SX6    X2+         MESSAGE AREA 
          SA6    M2 
 IDE5     MOVE   4,X5,X6
  
 IDE      SUBR               ENTRY/ EXIT
          SA2    OP          CHECK OPTION 
          SX5    B3+B1
          SA1    B3          SET ERROR FLAG 
          ZR     X2,IDE4     IF K-DISPLAY 
          SA3    EF          UPDATE ERROR FLAG
          SA2    EMSF 
          BX6    X1+X3
          BX7    X1+X2
          SA6    A3 
          SA7    A2 
          NZ     X1,IDE1     IF ERROR FLAG SET
          SX6    B1+         SET WARNING MESSAGE FLAG 
          SA6    WMSF 
 IDE1     SA3    EL          CHECK ERROR LIST FLAG
          SX1    3
          ZR     X3,IDE2     IF DIRECTIVES LISTED 
          SX1    4
 IDE2     RJ     CLN         CHECK LINE AVAILABLE 
          SA1    EL          CHECK ERROR LIST FLAG
          ZR     X1,IDE3     IF DIRECTIVES LISTED 
          SA1    SB          LIST ERRONEOUS DIRECTIVE 
          SA3    SM          GET BUFFER LENGTH
          IX3    X3-X1
          WRITES O,X1-1,X3+1
 IDE3     WRITEH O,X5,4      WRITE ERROR MESSAGE
          WRITEW O,(=10H   USER   ),1 
          WRITEC O,AN,1      WRITE USER NAME
          WRITEH O,(=1H ),1 
          EQ     IDEX        RETURN 
  
  
*         ERROR MESSAGES TO OUTPUT FILE OR K-DISPLAY. 
  
 ERAN     CON    1
          DIS    4, **** ERROR IN USER NAME.
 ERDA     CON    1
          DIS    4, **** DUPLICATE USER NAME. 
 ERFD     CON    1
          DIS    4, **** USER NAME     ALREADY EXISTS.
 ERFE     CON    1
          DIS    4, **** FORMAT ERROR.
 ERID     CON    1
          DIS    4, **** ERROR IN IDENTIFIER. 
 ERIQ     CON    0
          DIS    4, **** UPDATE NOT ALLOWED BY INQUIRE. 
 ERND     CON    1
          DIS    4, **** ERROR IN NUMERIC DATA. 
 ERNF     CON    1
          DIS    4, **** USER NAME     NOT FOUND. 
 ERAD     CON    1
          DIS    4, **** ERROR IN ALPHANUMERIC DATA.
 ERUI     CON    1
          DIS    4, **** USER INDEX PREVIOUSLY DEFINED. 
 ERUN     CON    1
          DIS    4, **** NO USER INDICES AVAILABLE. 
 ERIP     CON    1
          DIS    4, **** INCORRECT PASSWORD.
 ERPI     CON    0
          DIS    4, **** INCORRECT PASSWORD IGNORED.
 ERPR     CON    1
          DIS    4, **** PASSWORD REQUIRED. 
 EROD     CON    0
 CUE$     IFEQ   CUE$,2 
          DIS    4, **** DIRECTIVE IGNORED. 
 CUE$     ELSE
          DIS    4, **** OBSOLETE DIRECTIVE IGNORED.
 CUE$     ENDIF 
 ERDU     CON    1
          DIS    4, **** CANNOT DELETE USER RUNNING MODVAL. 
 ERSP     CON    1
          DIS    4, **** CANNOT DELETE *CSAP* PRIVILEGE.
 ERXD     CON    1
          DIS    4, **** CANNOT ALTER XD/XT OF *CSAP*.
 EROT     CON    0
          DIS    4, **** INCORRECT ORIGIN TYPE. 
 ERSC     CON    0
          DIS    4, **** INCORRECT SERVICE CLASS. 
 ERPU     CON    0
          DIS    4, **** PASSWORDS UPDATED. 
 ERBU     CON    0
          DIS    4, **** BATCH PASSWORD UPDATED.
 ERIU     CON    0
          DIS    4, **** INTERACTIVE PASSWORD UPDATED.
 ERCS     CON    0
          DIS    4, **** CANNOT ALTER SEC. COUNT OF *CSAP*. 
 OBS      SPACE  4,10 
**        OBS - PROCESS OBSOLETE DIRECTIVE. 
* 
*         RETURNS ERROR STATUS TO ISSUE INFORMATIVE DIAGNOSTIC
*         MESSAGE FOR OBSOLETE DIRECTIVE. 
* 
*         EXIT   (B3) = ERROR MESSAGE ADDRESS.
  
  
 OBS      SUBR               ENTRY/EXIT 
 CUE$     IFEQ   CUE$,2 
          SB3    EROD        **** DIRECTIVE IGNORED.
 CUE$     ELSE
          SB3    EROD        **** OBSOLETE DIRECTIVE IGNORED. 
 CUE$     ENDIF 
          EQ     OBSX        RETURN 
 PAG      SPACE  4,10 
**        PAG - PAGE K-DISPLAY. 
* 
*         ENTRY  (X3) = RIGHT JUSTIFIED PAGING CHARACTER. 
* 
*         EXIT   FWA OF NEXT DISPLAY SET IN *KIA*.
*                (IL) = KEYBOARD INPUT DISPLAY LINE OF CURRENT PAGE.
* 
*         USES   X - 1, 2, 3, 4, 6. 
*                A - 1, 2, 6. 
*                B - 2. 
* 
*         CALLS  PGD. 
* 
*         MACROS PAGT.
  
  
 PAG      SUBR               ENTRY/EXIT 
          SA1    KIA
          SX2    X1-DSA 
          ZR     X2,PAGX     IF INITIAL DISPLAY 
          SX2    PAGA        SET ENTRY CONDITIONS FOR *PGD* 
          BX4    X4-X4
          LX3    54 
          SX1    KIA
          RJ     PGD         PAGE DISPLAY 
          SA2    PAGA        UPDATE INPUT LINE
          AX2    30 
          SB2    X2 
          SA2    A2+B2       CURRENT PAGE ENTRY 
          AX2    36 
          SX6    X2+
          SA6    IL 
          EQ     PAGX        RETURN 
  
  
 PAGA     PAGT   DSB,MSGB,INPB  LEFT SCREEN PAGE 1
          PAGT   DSC,MSGC,INPC  LEFT SCREEN PAGE 2
          PAGT   DSD,MSGD,INPD  LEFT SCREEN PAGE 3
          PAGT   DSE,MSGE,INPE  LEFT SCREEN PAGE 4
          PAGT   DSF,MSGF,INPF  LEFT SCREEN PAGE 5
          PAGT
          PAGT   DSG         RIGHT SCREEN PAGE 1
          PAGT   DSH         RIGHT SCREEN PAGE 2
          PAGT   DSJ         RIGHT SCREEN PAGE 3
          PAGT   *
  
 PGD      HERE               REMOTE BLOCK FROM *COMCDCP*
  
 PDD      SPACE  4,15 
**        PDD - PROCESS DIRECTIVE DATA. 
* 
*         ENTRY  (B7) = PROCESSING ROUTINE INDEX INTO *TOPS*. 
* 
*         EXIT   (B3) = 0.
* 
*         ERROR  (B3) = ERROR MESSAGE ADDRESS.
* 
*         USES   A - 0, 1, 2, 3, 5. 
*                B - 3, 5, 7. 
*                X - 1, 2, 3, 5.
* 
*         CALLS  ACI, ICE.
* 
*         MACROS FUNC.
  
  
 PDD      SUBR               ENTRY/EXIT 
          SA0    TOPS+B7     SET TABLE ENTRY ADDRESS
          SA3    A0 
          BX1    X1-X1
          PL     X3,PDD1     IF NO SPECIAL CHARACTERS 
          SA1    CA          ALLOW ASTERISK IN DATA 
 PDD1     SA2    CS          SUPPRESS BLANKS
          BX6    X2 
          RJ     ACI         ASSEMBLE DATA
          SB3    ERAD        **** ERROR IN ALPHANUMERIC DATA. 
          ZR     B6,PDDX     IF EOF OR NEW USER NAME
          SB5    B5-1R= 
          ZR     B5,PDDX     IF INCORRECT SEPARATOR 
          SA3    A0          GET *TOPS* ENTRY 
          SB7    X3          PROCESSOR ADDRESS
          SX1    10          CHECK FOR MAXIMUM OF 10 CHARACTERS 
          LX3    59-58
          NG     X3,PDD2     IF DEFAULT CHARACTER COUNT 
          SA1    DF          ALLOW ONLY *M* CHARACTERS
          ZR     X1,PDD3     IF UNLIMITED CHARACTER COUNT 
 PDD2     IX1    X1-X4
          NG     X1,PDDX     IF INCORRECT CHARACTER COUNT 
 PDD3     SA5    CBUF        GET ASSEMBLED CHARACTERS 
          RJ     ICE         EXECUTE PROCESSOR
          NZ     B3,PDDX     IF ERROR OR DATA ALREADY SET 
          SX3    TANB        SET DATA IN FIELD
          FUNC   SDFT 
          SB3    B0          NO ERROR 
          EQ     PDDX        RETURN 
 TOPS     SPACE  4,10 
**        TOPS - TABLE OF PROCESSING SUBROUTINES FOR INPUT DATA.
* 
*T        1/A,1/D,40/0,18/PROC
*         A      SET IF ASTERISK ALLOWED IN IDENTIFIER. 
*         D      SET IF VALIDATE WITH DEFAULT CHARACTER COUNT (10D).
*         PROC   INPUT DATA PROCESSING ROUTINE ADDRESS. 
  
  
 TOPS     BSS    0
          LOC    0
 PMX      DTPS   AMX            ASSEMBLE MAXIMUM RESOURCE LIMITS
 PPW      DTPS   APW            ASSEMBLE PASSWORD 
 PEP      DTPS   AEP            ASSEMBLE ENCRYPTED PASSWORD 
 PAD      DTPS   AAD            ASSEMBLE ALPHANUMERIC DATA
 POB      DTPS   OBS            PROCESS OBSOLETE DIRECTIVE
 PND      DTPS   AND,(DCC)      ASSEMBLE NUMERIC DATA 
 PUI      DTPS   AUX,(DCC)      ASSEMBLE USER INDEX 
 PPC      DTPS   ACW            ASSEMBLE PERMISSION CONTROL 
 PDA      DTPS   DAN,(ASK)      DELETE USER NAME
 PEA      DTPS   AEA,(DCC)      ASSEMBLE EQUIVALENCED ARGUMENTS 
 PCN      DTPS   ACN,(ASK)      ASSEMBLE CHARGE NUMBER
 PPN      DTPS   APN,(ASK)      ASSEMBLE PROJECT NUMBER 
 PDS      DTPS   ADS            ASSEMBLE USER DEFAULT SERVICE CLASS 
 PTE      DTPS   ATE,(ASK,DCC)  ASSEMBLE EXPIRATION TERM
 PED      DTPS   AED,(ASK)      ASSEMBLE EXPIRATION DATE
 PAV      DTPS   AAV            ASSEMBLE ACCESS PRIVILEGES
 PSC      DTPS   ASC            ASSEMBLE SECURITY COUNT 
 PIW      DTPS   API            ASSEMBLE PERSONAL IDENTIFICATION
          LOC    *O 
          TITLE  VALIDATION FILE MANIPULATION.
 FFA      SPACE  4,15 
**        FFA - FINISH FORMER USER NAME.
* 
*         ENTRY  USER NAME BLOCK ENTERED. 
*                (TANB) = DATA BLOCK INFORMATION. 
*                (UUFG) .LT. 0, IF REFORMAT OPTION. 
*                       .EQ. 0, IF USER NAME CREATE OR DELETE.
*                       .GT. 0, IF USER NAME UPDATE.
* 
*         EXIT   NO ACTION IS TAKEN IF ERRORS EXIST.  OTHERWISE - 
*                LEVEL-2 ENTRY MADE IN FILE.
*                RANDOM INDEX SET IN LEVEL-1 ENTRY (TAB1).
*                TAB2 RESET.
* 
*         USES   X - ALL. 
*                A - 1, 2, 3, 4, 5, 6, 7. 
*                B - 2, 3.
* 
*         CALLS  AUI, CUI, IAM, IDE, WDB. 
* 
*         MACROS ALLOC, MOVE, SEARCH. 
  
  
 FFA9     SA2    UF          CHECK MODE 
          SX6    B0+
          SA6    RA2
          ZR     X2,FFA10    IF NOT UPDATE
          SA6    L.TAB1      CLEAR TABLES 
          SA6    L.TAB2 
          SA6    FFAB 
 FFA10    RJ     IAM         ISSUE ACCOUNT FILE MESSAGE 
          BX6    X6-X6       CLEAR KEY LOCATIONS
          BX7    X7-X7
          SA6    CW          CONTROL WORD AREA
          SA6    A6+B1
          SA7    A6+B1
          SA6    DANA        DELETE FLAG
          SA7    EF          ERROR FLAG 
          SA6    RA2+1       LEVEL-2 LINKAGE
          SA7    DIPC        K-CREATE ONLY FLAG 
          SA6    A7+1        K-UPDATE ONLY FLAG 
          SA6    UUFG        USER NAME UPDATE FLAG
  
 FFA      SUBR               ENTRY/EXIT 
          SA3    EF          CHECK INPUT ERRORS 
          NZ     X3,FFA9     IF ERRORS
 CUE$     IFEQ   CUE$,2 
  
*         ENSURE THAT THE CORRECT SHELL PROGRAM NAME AND THE CORRECT
*         SHELL OPTIONS ARE SET FOR THE CD2000 USER ENVIRONMENT.
  
          SA1    AN          GET USER NAME
          MX0    42 
          BX1    X0*X1
          SA2    =6LCDCCHS
          BX5    X1-X2
          NZ     X5,FFA11    IF USER NAME IS NOT *CDCCHS* 
          SA1    FFAE 
          EQ     FFA13       SET *RMSHELL* AS SHELL PROGRAM NAME
  
 FFA11    SA1    TANB+AUIN   GET USER INDEX 
          MX0    -18
          BX5    -X0*X1 
          SX1    X5-AUIMX 
          PL     X1,FFA12    IF USER INDEX ABOVE *AUIMX*
          SA1    FFAF 
          EQ     FFA13       SET *CDSHELL* AS SHELL PROGRAM NAME
  
 FFA12    SA1    FFAG        SET NULL SHELL PROGRAM NAME
 FFA13    BX6    X1          SET SHELL PROGRAM NAME AND OPTIONS 
          SA6    TANB+ASHN
 CUE$     ENDIF 
          SA1    TANB+ACCN
          MX0    -18
          BX5    -X0*X1 
          SX1    X5-AUIMX 
          NG     X1,FFA0     IF USER INDEX NOT ABOVE *AUIMX*
          SA1    FFAC        SET ALL SERVICE CLASS VALIDATION FLAGS 
          BX6    X1 
          SA6    TANB+ASCV
          EQ     FFA0.5      CHECK FOR DELETES
  
*         ENSURE THAT THE VALIDATION BITS FOR THE USER DEFAULT SERVICE
*         CLASSES ARE SET IN THE VALIDATION MASK. 
  
 FFA0     SA3    CHFG 
          SA1    TANB+ASCV
          NZ     X3,FFA0.3   IF NO CHECK TO BE MADE 
          SA5    TANB+ASC1   GET SERVICE CLASS VALIDATION WORDS 
          LX5    11-59
          SA3    TOSC-1 
          MX0    6           SEARCH TABLE FOR SERVICE CLASS ENTRY 
          LX0    18 
 FFA0.1   SB7    B0          INITIALIZE TABLE INDEX 
          SA3    A3+B1
          LX5    6
          SB3    X3 
          ZR     X3,FFA0.3   IF END OF TABLE
          NG     B3,FFA0.1   IF ORIGIN TYPE NOT ALLOWED 
 FFA0.2   SA2    TSVM+B7
          ZR     X2,FFA0.1   IF END OF TABLE
          SA4    TSCV+B7     GET MASK BIT 
          SB7    B7+B1       INCREMENT TABLE INDEX
          BX3    X2-X5
          BX3    X0*X3
          NZ     X3,FFA0.2   IF NO MATCH
          BX1    X4+X1       SET BIT IN VALIDATION MASK 
          EQ     FFA0.1      PROCESS NEXT USER DEFAULT
  
 FFA0.3   SA2    UUFG 
          NZ     X2,FFA0.4   IF NOT NEW USER NAME 
          SA3    TANB+AHDT   CHECK IF *DI* SERVICE CLASS SHOULD BE SET
          MX0    -6 
          LX3    -18
          BX4    -X0*X3 
          ZR     X4,FFA0.4   IF NO DETACHED JOBS ALLOWED
          SX2    DIMK        SET *DI* SERVICE CLASS VALID 
          BX1    X1+X2
 FFA0.4   BX7    X1          UPDATE VALIDATION MASK 
          SA7    A1+
  
*         PROCESS DELETES.
  
 FFA0.5   SA1    AN          CHECK BLOCK IN LEVEL-2 TABLE 
          MX0    42 
          SEARCH TAB2,X1,M
          SA1    F.TAB2      SAVE RELATIVE POSITION IN TABLE
          BX5    X2 
          IX7    X7-X1
          SA3    DANA        CHECK DELETED USER NAME
          SA7    FFAA 
          ZR     X3,FFA2     IF NO DELETE 
          ZR     X2,FFA1     IF NO MATCH
          MX6    0           CLEAR LEVEL-2 ENTRY
          BX7    X2          SAVE USER NAME IN PASSWORD AREA
          SA6    A2 
          SA7    A2+B1
          SA1    AN 
          MX0    42 
          SEARCH TAB1,X1,M
 FFA1     BX1    X2 
          SX2    DMSE        * SYSTEM ERROR.* 
          MX6    0
          ZR     X1,ABT      IF NO MATCH
          SA6    X7+
          EQ     FFA8        COMPLETE DELETE
  
*         SET DATA BLOCK IN LEVEL-2 TABLE.
  
 FFA2     SA4    OP          CHECK OPTION 
          SX4    X4-ROPT
          SA1    TANB+AUIN   SET USER NAME AND USER INDEX 
          ZR     X4,FFA3     IF REFORMAT
          SA3    AN 
          MX0    42 
          BX1    -X0*X1 
          BX3    X0*X3
          IX6    X1+X3
          SA3    TANB+ACMD   SET LAST MOD DATE
          SA4    PD 
          BX3    X0*X3
          BX7    X3+X4
          SA7    A3 
          SA6    A1 
          NZ     X1,FFA3     IF USER INDEX ALREADY ASSIGNED 
          RJ     AUI
          NG     X0,FFA4     IF USER INDEX ASSIGNED 
          RJ     IDE
          EQ     FFA10       RETURN 
  
 FFA3     BX0    X0-X0       SET USER INDEX 
          SX6    X1 
          RJ     CUI
 FFA4     NZ     X5,FFA6     IF MATCH 
          SA2    L.TAB2 
          SX2    X2-ABLB
          NG     X2,FFA5     IF BLOCK NOT FULL
          BX6    X6-X6
          SA6    A2          CLEAR TABLE
 FFA5     ALLOC  TAB2,C.TAB2
 FFA6     SA3    FFAA        SET UPDATED BLOCK
          SA1    F.TAB2 
          IX3    X3+X1
          MOVE   ARBS,TANB,X3 
  
*         SET USER NAME.
  
          SA1    AN          SET FOR LEVEL-1 UPDATE 
          SX2    DMSE        * SYSTEM ERROR.* 
          SA3    FFAB-1 
          SB3    ARBB 
          SB2    B0+
          BX6    X1 
 FFA7     SB2    B2+B1
          SA3    A3+B1
          GT     B2,B3,ABT   IF TABLE OVERFLOWED
          NZ     X3,FFA7     IF ENTRY USED
          SA6    A3+
          EQ     B2,B3,FFA8  IF TABLE FULL
          SA1    UF          CHECK MODE 
          ZR     X1,FFA10    IF NOT UPDATE
 FFA8     RJ     WDB         WRITE DATA BLOCK 
          EQ     FFA10       RETURN 
  
  
 FFAA     CON    0           HOLD TAB2 ENTRY
 FFAB     BSSZ   ARBB+1      HOLD USER NAMES FOR RANDOM ADDRESS 
 FFAC     VFD    36/0,12/A2MK,12/A1MK  VALIDATION MASK FOR *ALL*
 FFAD     CON    0           CREATION RUN FLAG
 CUE$     IFEQ   CUE$,2 
 FFAE     VFD    42/0LRMSHELL,11/0,7/13B
 FFAF     VFD    42/0LCDSHELL,11/0,7/13B
 FFAG     VFD    42/0,11/0,7/12B
 CUE$     ENDIF 
 GAE      SPACE  4,15 
**        GAE - GET USER ENTRY. 
* 
*         ENTRY  (X4) = USER TO BE SEARCHED FOR.
*                (A0) = ADDRESS TO START SEARCH.
*                (GAEA) = ENTRY COUNT.
* 
*         EXIT   IF ENTRY FOUND.
*                TO *ABT* IF NOT. 
* 
*         USES   X - 1, 2, 3, 5, 6. 
*                A - 1, 3, 5, 6.
*                B - 3, 4, 5, 7.
  
  
 GAE3     SA3    B3+B7       MOVE LOOP
          BX6    X3 
          SA6    TANB+B7
          SB7    B7+1 
          LT     B7,B4,GAE3  IF NOT ALL MOVED 
  
 GAE      SUBR               ENTRY/ EXIT
          SA1    GAEA        GET ENTRY COUNT
          ZR     X1,GAE2     IF NO ENTRIES
          SX2    ARBS        WORDS/ ENTRY 
          SB3    A0          FWA
          SB4    X2          INCREMENT
          IX2    X2*X1       WORDS IN BLOCK 
          SB7    B0 
          SB5    X2+B3       LIMIT
          MX1    42          MASK 
          SA5    B3          FIRST WORD 
 GAE1     BX5    X1*X5
          BX6    X5-X4
          ZR     X6,GAE3     IF HIT 
          SB3    B3+B4
          SA5    B3 
          LT     B3,B5,GAE1  IF MORE TO SEARCH
 GAE2     SX2    DML2        * LEVEL-2 DATA BASE ERROR.*
          EQ     ABT
  
  
 GAEA     BSS    1           ENTRY COUNT
 GNB      SPACE  4,15 
**        GNB - GET NEXT DATA BLOCK.
* 
*         ENTRY  (X6) = 1 IF INITIAL CALL.
*                (X6) = 0 IF NOT INITIAL CALL.
*                (GNBA) = LEVEL-1 BLOCK FUNCTION IN BITS 0-17 AND 
*                BIT 59 SET IF TO CLEAR LEVEL-1 TABLE.
* 
*         EXIT   (X6) = 0 IF END OF USER ENTRIES. 
*                (TANB) = LEVEL-2 DATA BLOCK USER ENTRY.
* 
*         USES   X - 0, 1, 2, 3, 5, 6, 7. 
*                A - 0, 1, 2, 6, 7. 
*                B - 4. 
* 
*         MACROS FUNC, MESSAGE, READ, READW, RECALL.
  
  
 GNB5     SA1    AN          CHECK USER NAME
          SA2    TANB+AUIN
          MX0    42 
          BX3    X0*X2
          BX1    X1-X3
          SX6    X2 
          NZ     X1,GNB3     IF NO MATCH
          ZR     X6,GNB4     IF NO USER INDEX 
  
 GNB      SUBR               ENTRY/EXIT 
          ZR     X6,GNB2     IF NOT INITIAL CALL
          SA6    RA0+1       SET INITIAL LEVEL-0 RANDOM ADDRESS 
 GNB1     SX0    P
          SA0    B0+
          FUNC   PNAT        PICK NEXT LEVEL-0 BLOCK
          ZR     X6,GNBX     IF END OF USER ENTRIES 
          LX6    X3 
          BX7    X7-X7
          SA1    GNBA 
          SA6    RA1+1
          PL     X1,GNB2     IF NOT TO CLEAR LEVEL-1 TABLE
          SA7    L.TAB1      CLEAR LEVEL-1 TABLE
 GNB2     RECALL P
          SA1    P+1
          SX6    X1 
          SA6    A1+B1
          SA6    A6+B1
          SA0    B1 
          SX0    P
          SX5    N
          SA1    GNBA        GET LEVEL-1 BLOCK FUNCTION 
          FUNC   X1 
          ZR     X6,GNB1     IF END OF BLOCK
          RECALL P
          SA2    A3-B1       SET LEVEL-2 ENTRY USER NAME
          BX6    X2 
          SA6    AN 
          SX6    B1+         SET LEVEL-2 RANDOM ADDRESS 
          LX6    29 
          BX6    X3+X6
          SA6    P+6
          READ   P
          READW  P,CW,1 
          FUNC   CCWT        CRACK CONTROL WORD 
          SB4    B4-2 
          NZ     B4,GNB4     IF LEVEL NUMBER WRONG
          READW  P,TANB,B2-B1 
 GNB3     READW  P,TANB,ARBS
          ZR     X1,GNB5     IF TRANSFER COMPLETE 
 GNB4     MESSAGE  DML2,3    * LEVEL-2 DATA BASE ERROR.*
          EQ     GNB2        LOOP FOR NEXT BLOCK
  
  
 GNBA     CON    0           LEVEL-1 BLOCK FUNCTION AND CLEAR FLAG
 RDB      SPACE  4,15 
**        RDB - READ DATA BLOCK.
* 
*         ENTRY  (X5) = RANDOM ADDRESS OF DATA BLOCK. 
*                (RDBA) .NE. 0, IF NOT EXACT HIT. 
* 
*         EXIT   DATA BLOCK READ. 
*                USER ENTRY SET IN *TANB* IF EXACT HIT. 
*                (X1) .NE. 0, IF NOT EXACT HIT. 
*                (X2) = ERROR MESSAGE.
* 
*         USES   A - ALL. 
*                B - 4. 
*                X - 1, 2, 3, 4, 5, 6, 7. 
* 
*         CALLS  GAE. 
* 
*         MACROS ALLOC, FUNC, READ, READO, READW, RECALL. 
  
  
 RDB      SUBR               ENTRY/ EXIT
          RECALL P
          RECALL N
          SX7    B1          READ LEVEL-2 BLOCK 
          LX7    29 
          BX6    X7+X5
          BX7    X5 
          SA6    N+6
          SA7    RA2
          MX6    0
          SA6    A7+B1
          READ   N
          READO  N           GET CONTROL WORD 
          SA6    CW 
          FUNC   CCWT 
          SB4    B4-B1       CHECK LEVEL NUMBER 
          SX6    B5 
          SA6    GAEA 
          SX2    DML2        * LEVEL-2 DATA BASE ERROR.*
          NE     B1,B4,ABT   IF NOT 2 
          ALLOC  TAB2,B3
          READO  N
          READO  N
          SA2    F.TAB2 
          READW  N,X2,B3     GET BLOCK
          SX2    DML2        * LEVEL-2 DATA BASE ERROR.*
          NZ     X1,ABT      IF TRANSFER INCOMPLETE 
          SA4    AN 
          SA1    N+2         CHECK WORDS LEFT IN BUFFER 
          SA3    F.TAB2 
          SA5    A1+B1
          SA0    X3 
          BX1    X1-X5
          NZ     X1,ABT      IF WORD COUNT NOT EXACT
  
*         SET DATA BLOCK. 
  
          SA1    RDBA        CHECK HIT
          NZ     X1,RDBX     IF NOT EXACT 
          RJ     GAE         GET USER ENTRY 
          MX1    0           SET STATUS 
          EQ     RDBX        RETURN 
  
  
 RDBA     CON    1           BLOCK FOUND FLAG 
 WDB      SPACE  4,15 
**        WDB - WRITE DATA BLOCK. 
* 
*         ENTRY  (TAB2) = USER ENTRIES IN LEVEL-2 BLOCK.
*                (FFAB) = USER NAMES IN LEVEL-2 BLOCK.
* 
*         EXIT   LEVEL-2 BLOCK WRITTEN TO FILE. 
*                *TAB2*, *FFAB*, *RAND*, *RA2*, UPDATED APPROPRIATELY.
* 
*         USES   X - 0, 1, 4, 5, 6, 7.
*                A - 0, 1, 4, 5, 6, 7.
*                B - 5, 7.
* 
*         MACROS ALLOC, FUNC, MESSAGE, SEARCH.
  
  
 WDBBE    EQU    ARBB*ARBS   DATA WORDS IN FULL LEVEL-2 BLOCK 
  
 WDB8     MX6    0           CLEAR USER ENTRY 
          SA6    A4 
          SA6    FFAB        CLEAR LEVEL-1 USER NAME
 WDB9     SX6    B0+         CLEAR RANDOM ADDRESS POINTER 
          SA6    RA2+1
  
 WDB      SUBR               ENTRY/ EXIT
          SA1    L.TAB2      SET FULL BLOCK FLAG
          SX6    X1-WDBBE 
          SA6    WDBB 
          MX0    0           WRITE LEVEL-2 BLOCK
          R=     A0,TAB2
          SX5    N
          FUNC   WTBT 
  
*         UPDATE LEVEL-1. 
  
          SA4    FFAB        INITIALIZE SEARCH
 WDB1     MX0    42 
          ZR     X4,WDB4     IF NO USER NAME
          SEARCH TAB1,X4,M
          MX6    0
          SA4    A4 
          SA6    A4 
          BX6    X4 
          SA1    UF          CHECK MODE 
          SA6    WDBA 
          ZR     X1,WDB2     IF NOT UPDATE
          NZ     X2,WDB8     IF ENTRY ALREADY EXISTS EXIT 
 WDB2     SA1    F.TAB1      PRESERVE RELATIVE ADDRESS
          IX7    X7-X1
          SB7    X7 
          SB5    A4 
          NZ     X2,WDB3     IF ENTRY ALREADY EXISTS
          ALLOC  TAB1,C.TAB1
 WDB3     SA1    F.TAB1 
          SA4    WDBA 
          SA5    RA2+1
          BX6    X4 
          LX7    X5 
          SA6    B7+X1
          SA7    A6+B1
          SA4    B5+1 
          EQ     WDB1        LOOP FOR NEXT USER 
  
 WDB4     SA1    WDBB        SET CURRENT AVAILABLE DATA RECORD
          SA4    RA2+1
          MX6    0
          ZR     X1,WDB5     IF FULL
          BX6    X4 
 WDB5     SA1    DANA        CHECK DELETE 
          NZ     X1,WDB6     IF DELETE
          SA6    RAND 
 WDB6     SA1    UF          CHECK MODE 
          ZR     X1,WDBX     IF NOT UPDATE
          SA0    TAB1        TABLE NUMBER 
          FUNC   STBT        SORT TABLE 
          SA1    L.TAB1      CHECK INDEX BLOCK LINKAGE
          SX1    X1-ABLI-1
          NG     X1,WDB7     IF NO LINKAGE
          SA1    DML1        * LEVEL-1 INDEX BLOCKS LINKED.*
          ZR     X1,WDB7     IF ALREADY DISPLAYED 
          MESSAGE  A1,3,R    ISSUE MESSAGE
          SX6    B0+
          SA6    DML1 
 WDB7     R=     A0,TAB1     WRITE TABLE
          MX0    0
          SX5    N
          FUNC   WTBT 
          EQ     WDB9        CLEAR RANDOM ADDRESS AND EXIT
  
  
 WDBA     BSS    1           USER TO UPDATE 
  
 WDBB     CON    0           AVAILABLE DATA BLOCK FLAG
          TITLE  SOURCE CONVERSION SUBROUTINES. 
 ADP      SPACE  4,10 
**        ADP - ADD PARENS. 
* 
*         ENTRY  (X6) = 6 CHARACTERS, RIGHT-JUSTIFIED, TO BE
*                       ENCLOSED BY PARENS. 
* 
*         EXIT   (X7) = 6 CHARACTERS ENCLOSED BY PARENS.
* 
*         USES   X - 1, 2, 7. 
*                A - 1. 
  
  
 ADP      SUBR               ENTRY/EXIT 
          BX2    X6 
          LX2    24 
          MX1    36 
          BX2    X1*X2       ISOLATE UPPER 6 CHARACTERS 
          SA1    =4R)  (
          BX7    X1+X2       ADD PARENS 
          LX7    42          REPOSITION CHARACTERS
          EQ     ADPX        RETURN 
 AOC      SPACE  4,10 
**        AOC - ALTERNATE OCTAL CONVERSION. 
* 
*         ENTRY  (A0) = ADDRESS OF *TFR* ENTRY FIRST WORD.
*                (X1) = DATA FIELD RIGHT JUSTIFIED. 
* 
*         EXIT   (X6) = FIRST WORD OF CONVERTED NUMBER. 
*                (X7) = SECOND WORD OF CONVERTED NUMBER.
* 
*         USES   A - 2, 4.
*                B - 2, 3.
*                X - 1, 2, 4, 7.
* 
*         CALLS  WOD. 
  
  
 AOC      SUBR               ENTRY/EXIT 
          RJ     WOD
          SA4    A0          GET WORD 1 OF ENTRY
          LX4    59-30
          PL     X4,AOCX     IF NOT MULTIPLE WORD RESULT
          LX4    24-59+30 
          MX2    -6 
          BX2    -X2*X4      GET NUMBER OF CHARACTERS IN MULTIPLE WORD
          MX1    1
          SB2    X2-10
          SB2    B2+B2
          SB3    B2+B2
          SB2    B3+B2
          SB2    B2-B1
          AX1    B2 
          BX7    X1*X7       MASK OFF UNUSED CHARACTERS 
          SA2    =10H 
          BX2    -X1*X2      BLANK FILL REMAINDER OF WORD 
          BX7    X7+X2
          EQ     AOCX        RETURN 
  
 APC      SPACE  4,10 
**        APC - APPLICATION PERMISSIONS CONVERSION FOR DISPLAY. 
* 
*         ENTRY  (TANB+AAVW) = APPLICATION PERMISSION WORD. 
* 
*         EXIT   APPLICATION PERMISSION PAGE OF K-DISPLAY SET.
* 
*         USES   X - 2, 3, 4, 5, 6, 7.
*                A - 3, 4, 5, 6.
*                B - 3, 4, 5, 7.
  
  
 APC      SUBR               ENTRY/EXIT 
          SA4    TANB+AAVW   GET APPLICATION PERMISSIONS
          SB3    59 
          SA5    TNAV-1      APPLICATION BIT POSITIONS AND NAMES
          SB7    DSAP+1      INITIALIZE K-DISPLAY POINTER 
          MX2    -12
          MX7    42 
 APC1     SA5    A5+B1
          ZR     X5,APCX     IF END OF APPLICATION TABLE
          BX3    -X2*X5 
          NG     X5,APC1     IF SPARE APPLICATION BIT 
          SB5    X3          ACCESS BIT NUMBER
          SB4    B3-B5
          LX3    X4,B4       POSITION ACCESS BIT
          BX6    X7*X5       APPLICATION NAME 
          SB4    =10HOFF
          PL     X3,APC2     IF APPLICATION NOT PERMITTED 
          SB4    =10HON 
 APC2     SA6    B7+B1       SET APPLICATION NAME 
          SA3    B4 
          BX6    X3          SET ON/OFF STATUS
          SA6    B7 
          SB7    B7+3 
          EQ     APC1        PROCESS NEXT APPLICATION 
 CAV      SPACE  4,15 
**        CAV - CALCULATE ACTUAL VALUE. 
* 
*         ENTRY  (A0) = ADDRESS OF *TFR* ENTRY FIRST WORD.
*                (X1) = INDEX VALUE TO BE CONVERTED TO ACTUAL VALUE.
* 
*         EXIT   (X3) = 0 IF NO ACTUAL VALUE CONVERSION REQUIRED. 
*                ACTUAL VALUE STORED IN LIMITS MESSAGE. 
*                ACTUAL VALUE IN PARENS STORED AT K-DISPLAY ADDRESS +1. 
* 
*         USES   A - 2, 4, 5, 6, 7. 
*                B - 3, 4, 7. 
*                X - ALL. 
* 
*         CALLS  ADP, CDD, COD, ICE, INDEX CONVERSION PROCESSORS. 
  
  
 CAV      SUBR               ENTRY/EXIT 
          SA4    A0          GET 1ST WORD OF ENTRY
          MX0    -6 
          LX4    -18
          BX3    -X0*X4 
          ZR     X3,CAVX     IF NO ACTUAL VALUE CONVERSION
          SA2    A0+2        GET 3RD WORD OF ENTRY
          AX2    36 
          SB7    X2          PROCESSOR ADDRESS
          AX2    18 
          SB4    X2          SHIFT VALUE
          SB3    X3 
          LX4    59-32+18-60
          RJ     ICE         CALCULATE ACTUAL VALUE 
          SA2    =10H 
          BX6    X2 
          LX7    X2 
          PL     X4,CAV1     IF NOT ZERO SYSTEM DEFAULT CASE
          ZR     X1,CAV4     IF SYSTEM DEFAULT VALUE
 CAV1     NG     X1,CAV4     IF UNLIMITED 
          LX1    B4 
          EQ     B3,B1,CAV2  IF OCTAL CONVERSION
          RJ     CDD         CONVERT ACTUAL VALUE TO DECIMAL DISPLAY
          EQ     CAV3        ADD PARENS 
  
 CAV2     RJ     CON         CONVERT ACTUAL VALUE TO OCTAL DISPLAY
 CAV3     RJ     ADP         ADD PARENS 
          SA5    A0+B1
          AX5    36 
          ZR     X5,CAV4     IF NO LIMITS MESSAGE 
          SA6    X5+5        ENTER ACTUAL VALUE IN LIMITS MESSAGE 
 CAV4     SA5    A0+B1
          AX5    18 
          SX5    X5+
          ZR     X5,CAVX     IF NO K-DISPLAY FIELD
          SA7    X5+1 
          EQ     CAVX        RETURN 
 CDS      SPACE  4,15 
**        CDS - CONVERT DATE TO SOURCE. 
* 
*         ENTRY  (A1) = ADDRESS OF DATE.
*                (X1) = DATE IN FORM * YY/MM/DD.*.
* 
*         EXIT   DATE STORED IN FORM *YYMMDD*.
*                DATE RESET TO * IF NONEXPIRING.
* 
*         USES   X - 1, 2, 3, 6, 7. 
*                A - 2, 3, 7. 
*                B - 2. 
  
  
 CDS      SUBR               ENTRY/EXIT 
          SA2    =10H         * 
          SA3    =10H 
          BX7    X1-X3
          ZR     X7,CDS2     IF NONEXPIRING PASSWORD
          MX6    -12
          SB2    B1+B1
          BX7    X7-X7
 CDS1     LX1    18 
          BX2    -X6*X1 
          BX7    X7+X2
          LX7    12 
          SB2    B2-B1
          PL     B2,CDS1     IF MORE DATE TO EXTRACT
          SX2    2R 
          BX7    X7+X2
          LX7    12 
 CDS2     BX7    X7+X2
          SA7    A1 
          EQ     CDSX        RETURN 
 CON      SPACE  4,10 
**        CON - CONVERT OCTAL NUMBER TO DISPLAY.
* 
*         ENTRY  (X1) = OCTAL NUMBER. 
* 
*         EXIT   (X6) = OCTAL NUMBER IN DISPLAY CODE WITH POST RADIX B. 
* 
*         CALLS  COD, ISB.
  
  
 CON      SUBR               ENTRY/EXIT 
          RJ     COD         CONVERT OCTAL TO DISPLAY 
          RJ     ISB         INSERT B RADIX 
          EQ     CONX        RETURN 
 CPS      SPACE  4,15 
**        CPS - CONVERT PERMISSIONS TO SOURCE.
* 
*         EXIT   PERMISSION BITS CONVERTED AND WRITTEN TO SOURCE. 
* 
*         USES   A - 0, 2, 4, 5, 6, 7.
*                B - 2. 
*                X - 1, 2, 3, 4, 5, 6, 7. 
* 
*         CALLS  SFN, STB.
* 
*         MACROS WRITEC.
  
  
 CPS      SUBR               ENTRY/EXIT 
          SA0    TPCS-1 
 CPS1     SA0    A0+B1       GET NEXT PERMISSION WORD 
          SA1    A0 
          SA2    =3HNUL 
          ZR     X1,CPSX     IF END OF TABLE
          LX7    X1 
          BX6    X2 
          LX1    18 
          SA7    CPSA 
          SA6    X1+B1
          WRITEC S,A6-B1     INITIALIZE IDENTIFIER VALUE
 CPS2     SA5    CPSA        GET PERMISSION WORD PARAMETERS 
          MX2    6
          LX2    6
          BX1    X2*X5       NEXT BIT POSITION
          SX6    B1 
          IX7    X5+X6
          LX5    -6 
          BX3    X2*X5       LAST BIT POSITION + 1
          IX3    X1-X3
          PL     X3,CPS1     IF NO MORE BITS TO PROCESS 
          LX5    -30
          BX4    X2*X5       VALIDATION WORD OFFSET 
          SA4    TANB+X4
          SA7    A5 
          SB2    X1 
          LX6    B2 
          BX6    X6*X4
          ZR     X6,CPS2     IF BIT NOT SET 
          LX5    24 
          SB2    X5          TABLE OF PERMISSION IDENTIFIERS
          RJ     STB
          ZR     X3,CPS2     IF BIT NOT DEFINED 
          MX6    42 
          BX1    X6*X3
          RJ     SFN         SPACE FILL IDENTIFIER
          LX5    -30
          SA6    X5+B1
          WRITEC S,A6-B1     WRITE IDENTIFIER 
          EQ     CPS2        CONTINUE PERMISSION BIT CONVERSION 
  
  
 CPSA     CON    0           PERMISSION WORD PARAMETERS 
 TPCS     SPACE  4,10 
**        TPCS - TABLE OF PERMISSION BITS CONVERSION TO SOURCE. 
* 
*T        18/SA,6/UBO,6/0,18/TPI,6/LBP,6/FBP
*         SA     SOURCE ENTRY ADDRESS.
*         UBO    USER BLOCK OFFSET OF VALIDATION WORD.
*         TPI    TABLE OF VALIDATION PERMISSION IDENTIFIERS.
*         LBP    LAST BIT POSITION + 1. 
*         FBP    FIRST BIT POSITION.
  
  
 TPCS     BSS    0
          DTCS   TMAW,AAWC,TAWI,60D,0             ACCESS WORD 
          DTCS   TMAP,AAVW,TNAV,NNAB+AFAB,AFAB    APPLICATIONS
          DTCS   TMSO,ASHN,TRTP,TRTPL,0           SHELL PROGRAM 
          DTCS   TMAV,ASVW,TAPV,TAPVL,TAPVS       SECURITY VALIDATION 
          DTCS   TMLV,ASVW,TALB,TALBS,TALBS-TALBL ACCESS LEVEL
          DTCS   TMAC,ASVW,TACC,TACCL,0           ACCESS CATEGORY 
          DTCS   TMVM,ASCV,TSVM,TSVML,0           SERVICE CLASS 
          CON    0           END OF TABLE 
 CSC      SPACE  4,15 
**        CSC - CONVERT USER DEFAULT SERVICE CLASSES. 
* 
*         ENTRY  (A0) = ADDRESS OF *TFR* ENTRY FIRST WORD.
*                (X1) = DATA FIELD RIGHT JUSTIFIED. 
* 
*         EXIT   (X6) = SERVICE CLASS IDENTIFIERS.
* 
*         USES   B - 2, 3.
*                X - ALL. 
* 
*         CALLS  STB. 
  
  
 CSC      SUBR               ENTRY/EXIT 
          SB2    TSVM 
          SB3    48 
          LX5    X1 
          BX7    X7-X7
          LX5    -12
          MX2    6
          LX2    18 
 CSC1     BX1    X2*X5       EXTRACT SERVICE CLASS CHARACTER
          MX4    -12
          SX0    2R 
          ZR     X1,CSC2     IF NO VALUE DEFINED
          RJ     STB         LOCATE SERVICE CLASS CHARACTER IN TABLE
          ZR     X3,CSC2     IF NO MATCH
          LX3    12          GET 2 CHARACTER SERVICE CLASS IDENTIFIER 
          BX0    -X4*X3 
 CSC2     LX0    B3 
          BX7    X7+X0
          SB3    B3-12
          LX5    6
          PL     B3,CSC1     IF MORE ENTRIES TO PROCESS 
          BX6    X7 
          EQ     CSCX        RETURN 
 CSD      SPACE  4,15 
**        CSD - CONVERT USER DEFAULT SERVICE CLASSES TO SOURCE. 
* 
*         ENTRY  (TMUC+1) = SERVICE CLASS IDENTIFIERS.
*                (LMFG) = 0 IF NOT PROCESSING LIMITS. 
* 
*         EXIT   USER DEFAULT SERVICE CLASSES WRITTEN TO SOURCE 
*                FILE OR LIMITS OUTPUT. 
* 
*         USES   A - 1, 5, 6. 
*                X - 0, 1, 5, 6, 7. 
* 
*         CALLS  SFN. 
* 
*         MACROS WRITEC.
  
  
 CSD      SUBR               ENTRY/EXIT 
          SA1    TMUC+1      GET CONVERTED DEFAULT SERVICE CLASSES
          BX0    X1 
          SA5    TOSC 
 CSD1     SA5    A5+B1
          MX7    12 
          BX6    X7*X0
          LX0    12 
          ZR     X5,CSDX     IF END OF TABLE
          SX1    X5+
          NG     X1,CSD1     IF RESERVED ENTRY
          SA1    LMFG 
          NZ     X1,CSD2     IF PROCESSING LIMITS 
          BX7    X7*X5       GET ORIGIN TYPE
          LX6    -12
          BX1    X7+X6
          RJ     SFN         SPACE FILL IDENTIFIER
          SA6    TMUC+1 
          WRITEC S,A6-B1     WRITE DIRECTIVE TO SOURCE
          EQ     CSD1        PROCESS NEXT IDENTIFIER
  
 CSD2     SX1    1R 
          BX6    X6+X1
          LX6    -6 
          SA6    X5+5 
          WRITEC O,X5        WRITE LIMITS MESSAGE 
          EQ     CSD1        PROCESS NEXT IDENTIFIER
 DAT      SPACE  4,10 
**        DAT - CONVERT PACKED DATE TO DISPLAY. 
* 
*         ENTRY  (X1) = DATA FIELD RIGHT JUSTIFIED. 
* 
*         EXIT   (X6) = CONVERTED DATE IN FORM * YY/MM/DD.*.
* 
*         USES   A - 2. 
*                X - 2, 6.
* 
*         MACROS EDATE. 
  
  
 DAT      SUBR               ENTRY/EXIT 
          SA2    =10H 
          BX6    X2 
          ZR     X1,DATX     IF NO EXPIRATION DATE
          EDATE  X1          UNPACK DATE INTO DISPLAY 
          EQ     DATX        RETURN 
 ISB      SPACE  4,10 
**        ISB - INSERT B (RADIX). 
* 
*         ENTRY  (X6) = RIGHT JUSTIFIED DISPLAY CODE FOR OCTAL NUMBER.
* 
*         EXIT   (X6) = RIGHT JUSTIFIED DISPLAY CODE FOR OCTAL NUMBER 
*                       WITH RADIX INSERTED ON RIGHT. 
* 
*         USES   X - 0, 1, 6. 
  
  
 ISB      SUBR               ENTRY/EXIT 
          MX0    54 
          LX6    6
          SX1    1RB
          BX6    X0*X6
          BX6    X1+X6
          EQ     ISBX        RETURN 
 MRJ      SPACE  4,15 
**        MRJ - MULTIPLE WORD RIGHT JUSTIFY.
* 
*         ENTRY  (A2) = ADDRESS WHERE 2ND WORD IS STORED
*                       IN LIMITS MESSAGE.
*                (X2) = 1ST WORD, RIGHT JUSTIFIED, BLANK FILLED.
*                (X6) = 2ND WORD, RIGHT JUSTIFIED, BLANK FILLED.
* 
*         EXIT   1ST AND 2ND WORDS STORED IN LIMITS MESSAGE 
*                AFTER MULTIPLE WORD RIGHT JUSTIFICATION PROCESSED. 
* 
*         USES   A - 4, 6, 7. 
*                B - 2, 3, 4. 
*                X - 0, 2, 3, 4, 6, 7.
  
  
 MRJ2     BX7    X2          STORE 1ST WORD 
          SA7    A2 
  
 MRJ      SUBR               ENTRY/EXIT 
          SA4    =10H 
          SB2    B0 
          BX3    X6-X4
          ZR     X3,MRJ2     IF NO VALUE IN 2ND WORD
          BX7    X2 
          SA7    A2-B1
          MX0    6
          BX7    X0*X3
          NZ     X7,MRJX     IF BOTH WORDS FULL 
 MRJ1     LX0    -6 
          BX7    X0*X3
          SB2    B2+6 
          ZR     X7,MRJ1     IF BLANK CHARACTER 
          SB3    60 
          MX0    1
          SB4    B2-B1
          AX0    B4 
          SB3    B3-B2
          LX2    B3 
          BX7    X0*X2
          BX6    -X0*X6 
          BX7    X7+X6
          SA7    A2          STORE 2ND WORD 
          BX6    -X0*X2 
          BX4    X0*X4
          BX6    X6+X4
          SA6    A2-B1       STORE FIRST WORD 
          EQ     MRJX        RETURN 
 PLM      SPACE  4,15 
**        PLM - PRINT *LIMITS* MESSAGES.
* 
*         EXIT   ALL *LIMITS* MESSAGES ISSUED.
* 
*         USES   A - ALL. 
*                B - 2, 3.
*                X - ALL. 
* 
*         CALLS  CSD, SFN.
* 
*         MACROS CLOCK, DATE, GETJO, GETPFP, TSTATUS, WRITEC. 
  
  
 PLM8     WRITEC O,(=C*  *),B1  WRITE BLANK LINE
          WRITEC X2,USUD     WRITE HEADER 
          RJ     CSD         CONVERT USER DEFAULT SERVICE CLASSES 
  
 PLM      SUBR               ENTRY/EXIT 
          SA2    DSAN        GET USER NAME
          MX7    -54
          AX2    6
          SA1    USRN 
          BX7    -X7*X2 
          BX7    X1+X7
          SA7    A1 
          DATE   TODT        REQUEST DATE 
          CLOCK  TOTM        REQUEST TIME 
          GETJO  TSTATUS     GET JOB ORIGIN 
          SA1    TSTATUS
          SX1    X1-TXOT
          NZ     X1,PLM1     IF NOT *TXOT*
          TSTATUS  TSTATUS
          SA3    TSTATUS
          SA2    =0LNAMIAF
          MX1    36 
          BX3    X1*X3
          BX6    X3-X2
          NZ     X6,PLM1     IF NOT NETWORK TERMINAL
          SA6    TFPA+1      CLEAR NON-NETWORK TERMINAL LIMITS MESSAGES 
          SA6    TFRO+1 
          SA6    TFPX+1 
          SA6    TFTT+1 
 PLM1     GETPFP PLMA        REQUEST FAMILY NAME
          SA1    PLMA 
          BX6    X6-X6       CLEAR POINTERS 
          SA6    A1+B1
          SA6    A6+B1
          RJ     SFN         SPACE FILL NAME
          SA2    FAM
          LX6    59-17
          MX3    -42
          BX6    -X3*X6 
          BX6    X2+X6
          SA0    TFR         TABLE TO FORMAT RECORDS
          SA6    A2 
          SA5    OF 
          BX0    X0-X0
          ZR     X5,PLM3.1   IF OUTPUT TO TERMINAL
 PLM2     SA1    A0          GET WORD 1 OF ENTRY
          SA2    A0+B1       GET WORD 2 OF ENTRY
          ZR     X1,PLM6     IF END OF TABLE
          SA1    A2+B1       GET WORD 3 OF ENTRY
          AX2    36 
          BX0    X2 
          SA0    A1+B1       ADVANCE TABLE ENTRY
          SX5    X1 
          BX2    X0+X5
          ZR     X2,PLM2     IF NO LIMITS OR HEADER MESSAGE 
          SA2    OF 
          ZR     X2,PLM4     IF OUTPUT TO TERMINAL
          SX7    B1+
          ZR     X5,PLM3     IF NO HEADER 
          SX7    B1+B1
          ZR     X0,PLM3     IF NO LIMITS MESSAGE 
          SX7    X7+B1
 PLM3     SA2    PLMB 
          IX6    X2-X7
          SA6    A2 
          PL     X6,PLM4     IF ENOUGH ROOM ON PAGE 
          SA3    LPPG 
          SX6    X3-2 
          IX6    X6-X7
          SA6    A2 
 PLM3.1   WRITEC O,LITL      WRITE PAGE HEADER
          WRITEC X2,(=C*  *),B1  WRITE BLANK LINE 
 PLM4     ZR     X5,PLM5     IF NO HEADER MESSAGE 
          WRITEC O,(=C*  *),B1  WRITE BLANK LINE
          WRITEC X2,X5       WRITE HEADER 
 PLM5     ZR     X0,PLM2     IF NO LIMITS MESSAGE 
          WRITEC O,X0        ISSUE LIMITS MESSAGE 
          EQ     PLM2        PROCESS NEXT ENTRY 
  
*         WRITE ALLOWED PERMISSIONS LIMIT MESSAGES. 
  
 PLM6     SA2    PLMC        GET *TAPL* INDEX 
          SA1    TAPL+X2     GET ALLOWED PERMISSIONS LIMITS PARAMETERS
          ZR     X1,PLM8     IF END OF TABLE
          SX6    X2+B1
          SA6    A2 
          MX2    -6 
          BX3    -X2*X1      NUMBER OF PERMISSION BITS
          AX1    6
          BX4    -X2*X1      USER BLOCK OFFSET
          SA4    TANB+X4     GET PERMISSION BITS FROM USER BLOCK
          AX1    6
          SB2    X3-1 
          MX6    1
          AX6    B2 
          MX5    -12
          BX5    -X5*X1      LIMITS HEADER ADDRESS
          AX1    30 
          SA1    X1+B1       GET FIRST BIT POSITION 
          SB3    59 
          SB2    X1+B2
          SB2    B3-B2
          LX1    X4,B2
          BX0    X4 
          BX6    X6*X1
          NZ     X6,PLM6.1   IF ANY PERMISSIONS GRANTED 
          PL     X6,PLM6     IF NO PERMISSIONS GRANTED
 PLM6.1   WRITEC O,(=C*  *),B1  WRITE BLANK LINE
          WRITEC X2,X5       WRITE HEADER MESSAGE 
          SA1    PLMC        GET *TAPL* INDEX 
          SA1    TAPL-1+X1   GET *TAPL* ENTRY 
          AX1    24 
          SA5    X1          FWA-1 TABLE OF LIMITS MESSAGE ADDRESSES
          AX1    18 
          SA0    X1          FWA-1 TABLE OF BIT NAMES AND POSITIONS 
 PLM7     SA5    A5+B1
          SA0    A0+B1
          ZR     X5,PLM6     IF END OF MESSAGE TABLE
          NG     X5,PLM7     IF PERMISSION NOT ALLOWED
          SA3    A0 
          MX4    -12
          BX4    -X4*X3 
          SB2    X4 
          SB3    59 
          SB2    B3-B2
          LX4    X0,B2
          PL     X4,PLM7     IF PERMISSION NOT GRANTED
          WRITEC O,X5        WRITE PERMISSION MESSAGE 
          EQ     PLM7        CONTINUE PROCESSING MESSAGES 
  
  
 PLMA     CON    0           FAMILY NAME
 PLMB     CON    0           PAGE LINE COUNTER
 PLMC     CON    0           *TAPL* INDEX 
 TAPL     SPACE  4,10 
**        TAPL - TABLE OF ALLOWED PERMISSIONS LIMITS PARAMETERS.
* 
*T        18/TBP,18/TLM,12/LHR,6/UBO,6/NPB
*         TBP    FWA-1 TABLE OF BIT POSITIONS.
*         TLM    FWA-1 TABLE OF LIMITS MESSAGE ADDRESSES. 
*         LHR    LIMITS HEADER MESSAGE ADDRESS. 
*         UBO    USER BLOCK OFFSET FOR PERMISSION DATA WORD.
*         NPB    NUMBER OF PERMISSION BITS. 
  
  
 TAPL     BSS    0
          APLW   TAWI,ALP,ALLW,AAWC            ACCESS WORD
          APLW   TNAV,APP,APPH,AAVW            APPLICATIONS 
          APLW   TRTP,ASP,RMFP,ASHN            *RDF* PERMISSIONS
          APLW   TAPV,APV,AAPP,ASVW            SECURITY VALIDATIONS 
          APLW   TACC,CAT,VCAT,ASAC            ACCESS CATEGORIES
          APLW   TALB,ALV,ALVA,ASVW            ACCESS LEVELS
          APLW   TSVM,SCL,USVM,ASCV            USER SERVICE CLASS 
          CON    0           END OF TABLE 
 STB      SPACE  4,15 
**        STB - SEARCH TABLE. 
* 
*         ENTRY  (X1) = VALUE TO COMPARE. 
*                (X2) = MASK. 
*                (B2) = TABLE ADDRESS.
* 
*         EXIT   (X3) = TABLE ENTRY ON MATCH. 
*                     = 0 IF NO MATCH.
*                (A3) = ADDRESS OF MATCHING TABLE ENTRY.
* 
*         USES   X - 3, 6.
*                A - 3. 
  
  
 STB      SUBR
          SA3    B2-1 
 STB1     SA3    A3+1 
          BX6    X3-X1
          BX6    X2*X6
          ZR     X3,STBX     IF END OF TABLE
          NZ     X6,STB1     IF NOT YET MATCH 
          EQ     STBX        RETURN 
 SRD      SPACE  4,25 
**        SRD - SET RECORD DISPLAYS.
* 
*         ENTRY  *TANB* SET TO PROPER USER BLOCK. 
* 
*         EXIT   K-DISPLAY PROPERLY FORMATTED.
*                S-OPTION PROPERLY FORMATTED. 
*                VALUES ENTERED IN LIMITS MESSAGES. 
* 
*         USES   A - ALL. 
*                B - 2, 3, 4, 5, 7. 
*                X - ALL. 
* 
*         CALLS  APC, CAV, ICE, MRJ, SFN, 
*                DISPLAY CONVERSION PROCESSORS. 
* 
*         MACROS EDATE. 
  
  
 SRD16    RJ     APC         DISPLAY APPLICATION PERMISSIONS
  
 SRD      SUBR               ENTRY/EXIT 
          SA1    TANB+ACCD   SET CREATION DATE
          AX1    18 
          SX1    X1 
          EDATE  X1          UNPACK AND CONVERT DATE
          SA1    TANB+ACMD   SET LAST MODIFICATION DATE 
          SA6    DSAC1
          SX1    X1+
          EDATE  X1          UNPACK AND CONVERT DATE
          SA6    DSAU 
          SA1    AN          SET USER NAME
          SX6    1R/
          BX1    X1+X6
          LX1    -6 
          RJ     SFN
          SA6    TMBS 
          SX1    1R &1R/
          LX1    -6 
          BX6    X1-X6
          SA6    DSAN 
          SA6    DSAN1
          SA6    DSAN2
          SA6    DSAN3
          SA6    DSAN4
          SA0    TFR-3       TABLE TO FORMAT RECORD 
 SRD1     SA0    A0+3 
          SA4    A0+         GET WORD 1 OF ENTRY
          ZR     X4,SRD16    IF END OF TABLE
          SB7    X4          PROCESSOR ADDRESS
          LX4    6
          MX2    -6 
          BX1    -X2*X4      USER BLOCK OFFSET
          LX4    6
          BX3    -X2*X4      STARTING BIT NUMBER
          LX4    6
          BX2    -X2*X4      NUMBER OF BITS IN FIELD
          SA1    TANB+X1     GET DATA WORD
          MX6    1
          SB4    X2 
          SB2    B4-B1
          AX6    B2 
          SB2    60 
          SB3    X3+B4
          SB2    B2-B3
          LX1    B2 
          BX2    X6*X1
          LX1    X2,B4
          BX7    X1 
          LX4    59-31-18 
          PL     X4,SRD2     IF DATA TO BE PASSED RIGHT JUSTIFIED 
          BX1    X2          PASS DATA LEFT JUSTIFIED 
 SRD2     SA3    A0+2        GET WORD 3 OF ENTRY
          LX3    -18
          SB3    X3          ALTERNATE BLOCK ADDRESS
          ZR     B3,SRD3     IF NO ALTERNATE BLOCK
          SB3    B3+B1
          SA1    X7+B3
          BX7    X1 
 SRD3     SA7    SRDA        SAVE DATA FIELD
          RJ     ICE         EXECUTE DISPLAY FORMAT PROCESSOR 
          SA4    A0          GET WORD 1 OF ENTRY
          LX4    0-35 
          SX0    B1 
          BX0    X0*X4
          SB5    X0          CONTINUATION WORD FLAG 
          SB2    B5+B5
          SB2    B2+B5
          SB3    A0+B1
          SA5    B3-B2       GET WORD 2 OF ENTRY
          SA3    A0          GET MULTIPLE WORD RESULT FLAG
          SX2    X5 
          LX3    59-30
          AX5    18 
          LX4    24-0+35
          SA1    SRDA        GET DATA VALUE 
          MX0    -6 
          ZR     X2,SRD4     IF NO SOURCE ADDRESS 
          SB2    B1+B5
          SA6    X2+B2
          PL     X3,SRD4     IF NOT MULTIPLE WORD RESULT
          SA7    A6+B1
 SRD4     NG     X3,SRD7     IF MULTIPLE WORD RESULT
          BX2    -X0*X4      UNLIMITED VALUE
          LX4    59-33-24 
          LX0    X4,B1
          ZR     X2,SRD5     IF NO UNLIMITED VALUE
          IX2    X1-X2
          NG     X2,SRD5     IF NOT UNLIMITED 
          SA2    =9AUNLIMITED 
          BX6    X2 
          NG     X4,SRD6     IF *SYSTEM* DEFAULT TO BE DISPLAYED
 SRD5     PL     X0,SRD7     IF NOT ZERO SYSTEM DEFAULT 
          NZ     X1,SRD7     IF NOT ZERO DATA VALUE 
 SRD6     SA2    =10HSYSTEM 
          BX6    X2 
          SX4    B1          RIGHT JUSTIFY FOR LIMITS 
 SRD7     SB2    X5 
          AX5    18 
          ZR     B2,SRD10    IF NO K-DISPLAY FIELD
          BX0    X3 
          LX0    -1 
          SA6    B2+B5
          NG     X0,SRD9     IF ALREADY LEFT JUSTIFIED
          SA1    =10H 
          BX1    X1-X6
          MX0    -6 
          ZR     X1,SRD9     IF BLANK WORD
          SA6    SRDB 
 SRD8     LX6    6           LEFT JUSTIFY FIELD 
          BX2    -X0*X6 
          SX2    X2-1R
          ZR     X2,SRD8     IF BLANK CHARACTER 
          LX6    -6 
          SA6    B2+B5
          SA2    SRDB 
          BX6    X2 
 SRD9     PL     X3,SRD10    IF NOT MULTIPLE WORD RESULT
          SA7    A6+1 
 SRD10    ZR     X5,SRD15    IF NO LIMITS MESSAGE 
          SA2    X5+5        GET MULTIPLE ENTRY 1ST WORD
          LX4    59-34-59+33
          SA6    A2          STORE LIMITS VALUE 
          PL     X3,SRD11    IF NOT MULTIPLE WORD RESULT
          SA6    A2-B1
          SA7    A2 
          BX2    X6 
          LX6    X7 
 SRD11    PL     X4,SRD15    IF NO RIGHT JUSTIFY FOR LIMITS FIELD 
          SA1    =10H 
          BX1    X1-X6
          ZR     X1,SRD13    IF BLANK WORD
          MX0    -6 
 SRD12    BX7    -X0*X6      RIGHT JUSTIFY BLANK FILLED DATA
          SX7    X7-1R
          LX6    -6 
          ZR     X7,SRD12    IF BLANK 
          LX6    6
          SA6    A2          STORE RIGHT JUSTIFIED LIMITS VALUE 
 SRD13    NG     X3,SRD14    IF MULTIPLE WORD RESULT
          ZR     B5,SRD15    IF NOT CONTINUATION ENTRY
 SRD14    RJ     MRJ         RIGHT JUSTIFY MULTIPLE WORD
 SRD15    SA1    SRDA        GET DATA VALUE 
          RJ     CAV         CALCULATE ACTUAL VALUE 
          NZ     X3,SRD1     IF ACTUAL VALUE CALCULATED 
          SA1    SRDA 
          NZ     X1,SRD1     IF DATA VALUE PRESENT
          SA1    A0+B1       CLEAR LIMITS MESSAGE 
          MX6    18 
          LX6    -6 
          BX6    -X6*X1 
          SA6    A1+
          EQ     SRD1        CONTINUE RECORD FORMATTING 
  
  
 SRDA     CON    0           DATA FIELD 
 SRDB     CON    0           K-DISPLAY DATA FIELD BEFORE LEFT JUSTIFY 
          TITLE  MISCELLANEOUS ROUTINES.
 ABT      SPACE  4,10 
**        ABT - ABORT EXIT. 
  
  
 ABM      BSS    0           ENTRY
          MESSAGE  CCDR,0,R  ISSUE COMMAND TO DAYFILE 
          EQ     ABT         ABORT
  
 ABE      BSS    0           ENTRY
          SX2    DMGV        * GENVAL ABORTED.* 
          SA1    GENF 
          NZ     X1,ABT      IF *GENVAL*
          SX2    DMAB        * MODVAL ABORTED.* 
          SA1    PSWF 
          ZR     X1,ABT      IF NOT *PASSWOR* 
          SX2    DMPA        * ERROR IN PASSWOR ARGUMENTS.* 
          SA1    TSTB+1 
          AX1    54-0 
          ZR     X1,ABT      IF NOT NETWORK TERMINAL
          WRITEC O,TRMB      RESET CURSOR POSITIONING 
          SX2    DMPA        RESET ERROR MESSAGE
*         EQ     ABT         ABORT
  
 ABT      BSS    0           ENTRY
          MESSAGE  X2,3      ISSUE ERROR MESSAGE
          RJ     COB         CHECK OUTPUT BUFFER
          SA1    ABTA 
          ZR     X1,ABT1     IF UPDATE NOT PERFORMED
          RJ     SUI         SET AVAILABLE USER INDICES 
 ABT1     SA3    RAPF        CHECK SYSTEM FILE ATTACHED 
          ZR     X3,ABT2     IF NOT ATTACHED
          RETURN U
          RECALL N
          RETURN P
 ABT2     SA1    GENF 
          ZR     X1,ABT3     IF NOT *GENVAL*
          RETURN P
          RETURN U
 ABT3     RJ     CAF         CHECK ALTERNATE FAMILY 
          ABORT 
  
  
 ABTA     CON    0           SET IF UPDATE PERFORMED
 ABTB     RPVBLK ABE         *REPRIEVE* BLOCK 
 ACI      SPACE  4,20 
**        ACI - ASSEMBLE CHARACTERS INTERFACE.
* 
*         ENTRY  (X1) = BIT STRING OF CHARACTERS TO PERMIT. 
*                (X6) = BIT STRING OF CHARACTER TO SUPPRESS.
* 
*         EXIT   (CBUF - CBUF+CBUFL) = LEFT JUSTIFIED 
*                                      ASSEMBLED CHARACTERS.
*                (X4) = NUMBER OF CHARACTERS. 
*                (B5) = SEPARATOR  ( 0 IF END-OF-LINE). 
*                (B6) = 0  IF ENTRY TERMINATION.
*                (B6) .NE. 0  IF ASSEMBLY COMPLETE. 
*                (ET) = -1  IF EOF. 
*                (ET) = 1  IF */* ENTRY TERMINATION.
* 
*         USES   X - 0, 1, 2, 4, 6, 7.
*                A - 1, 2, 6, 7.
*                B - 2, 4.
* 
*         MACROS FUNC.
  
  
 ACI      SUBR               ENTRY/EXIT 
          SA6    ACIC        SAVE BIT STRING TO SUPPRESS
          BX7    X1 
          SX6    B0 
          SA7    ACIB        SAVE BIT STRING TO PERMIT
          SA6    ACIA        CLEAR CHARACTER COUNT
          SA6    ACID        CLEAR CHARACTER BUFFER INDEX 
          SB2    CBUFL-1
 ACI1     SA6    CBUF+B2     CLEAR CHARACTER BUFFER 
          SB2    B2-1 
          PL     B2,ACI1     IF CLEAR NOT COMPLETE
 ACI2     SX0    I           INPUT FET ADDRESS
          SA2    ACIC        CHARACTERS TO BE SUPPRESSED
          SA1    ACIB        CHARACTERS TO BE ALLOWED 
          BX6    X2 
          FUNC   ASCT        ASSEMBLE CHARACTERS
          SA2    ACID 
          SA6    CBUF+X2     STORE ASSEMBLED CHARACTERS 
          SA1    ACIA 
          SB4    X4-10
          IX4    X1+X4       INCREMENT CHARACTER COUNT
          NG     B4,ACIX     IF SEPARATOR ENCOUNTERED 
          BX7    X4 
          SA7    A1 
          SX7    X2-CBUFL-1 
          PL     X7,ACI2     IF BUFFER FULL 
          SX7    X2+B1
          SA7    A2          INCREMENT CHARACTER BUFFER INDEX 
          EQ     ACI2        ASSEMBLE MORE CHARACTERS 
  
  
 ACIA     BSS    1           CHARACTER COUNT
 ACIB     BSS    1           BIT STRING OF CHARACTERS TO PERMIT 
 ACIC     BSS    1           BIT STRING OF CHARACTERS TO SUPPRESS 
 ACID     BSS    1           CHARACTER BUFFER INDEX 
 ADT      SPACE  4,10 
**        ADT - ADD TERM TO CURRENT DATE. 
* 
*         ENTRY  (X1) = TERM VALUE. 
* 
*         EXIT   (X2) = (X6) = NEW PACKED DATE. 
* 
*         USES   A - 2, 7.
*                X - 2, 6, 7. 
* 
*         MACROS SYSTEM.
  
  
 ADT      SUBR               ENTRY/EXIT 
          BX7    X1          SET UP *CPM* PARAMETER WORD
          SA7    ADTA 
          SYSTEM CPM,R,A7,121B*100B  ADD TERM TO CURRENT DATE 
          SA2    A7          GET NEW PACKED DATE
          BX6    X2 
          EQ     ADTX        RETURN 
  
  
 ADTA     BSS    1           *CPM* PARAMETERS 
 AUI      SPACE  4,15 
**        AUI - ASSIGN USER INDEX.
* 
* 
*         ENTRY  NO USER INDEX IN *TANB* BLOCK. 
* 
*         EXIT   (X0) .LT. 0, IF USER INDEX SET.
*                (X0) .GE. 0, IF USER INDEX NOT SET.
*                (B3) = MESSAGE, IF USER INDEX NOT SET. 
* 
*         USES   X - 0, 1, 6, 7.
*                A - 1, 6, 7. 
*                B - 2, 3, 4, 5.
  
  
 AUI4     MX0    1           SET UI USED
          SB5    B5+B2
          BX1    X0+X1
          SB4    B4-B2
          LX6    X1,B4
          SX7    B5+B1
          SA6    A1 
          SA1    TANB+AUIN   SET INDEX IN RECORD BLOCK
          MX0    42 
          BX1    X0*X1
          BX7    X1+X7
          SA7    A1 
  
 AUI      SUBR               ENTRY/ EXIT
          SB3    AUIMX-1
          SA1    TAUI-1 
          SB5    B0 
          SB4    60          CONSTANT 60
 AUI1     SA1    A1+B1
          SB2    B0 
          GE     B5,B3,AUI3  IF ALL ASSIGNED
 AUI2     PL     X1,AUI4     IF UI FREE 
          LX1    1
          SB2    B2+B1
          LT     B2,B4,AUI2  IF MORE TO CHECK 
          SB5    B5+B4
          EQ     AUI1        LOOP FOR NEXT WORD 
  
 AUI3     SX0    B0+         SET ERROR
          SB3    ERUN        **** NO USER INDICES AVAILABLE.
          EQ     AUIX        RETURN 
 CDP      SPACE  4,15 
**        CDP - CLEAR DEFAULT PERMISSION BITS.
* 
*         ENTRY  (A0) = ADDRESS OF *TPCW* ENTRY.
*                (X4) = PERMISSION CONTROL WORD.
* 
*         EXIT   (X4) = NEW PERMISSION CONTROL WORD.
*                DEFAULT BITS CLEARED IN PERMISSION CONTROL WORD. 
*                PERMISSION CONTROL DEFAULT MASK BIT SET. 
* 
*         USES   X - 0, 1, 2, 3, 4, 6.
*                A - 1, 6.
*                B - 2, 3.
  
  
 CDP      SUBR               ENTRY/EXIT 
          SA1    A0 
          MX2    -6 
          LX1    -18
          BX3    -X2*X1      NUMBER OF PERMISSION BITS
          LX1    -6 
          BX2    -X2*X1      SHIFT FOR MASK 
          SB2    X3-1        MASK BITS
          SB3    X2          MASK SHIFT 
          MX0    1
          AX0    B2 
          LX0    B3 
          BX4    -X0*X4      CLEAR DEFAULT PERMISSIONS
          SB2    A0-TPCW     PREVENT ADDITIONAL CLEAR OF DEFAULT BITS 
          SA1    PCDW 
          SX2    B1 
          LX2    B2 
          BX6    X1+X2
          SA6    A1 
          EQ     CDPX        RETURN 
 CEP      SPACE  4,10 
**        CEP - CLEAR ERROR PROCESSING. 
* 
*         ENTRY  (A1) = FET ADDRESS.
* 
*         USES   X - 0, 2, 6. 
*                A - 2, 6.
  
  
 CEP      SUBR               ENTRY/EXIT 
          SA2    A1+B1       CLEAR ERROR PROCESSING BIT 
          SX0    B1 
          LX0    44 
          BX6    -X0*X2 
          SA6    A2 
          EQ     CEPX        RETURN 
 CER      SPACE  4,20 
**        CER - CHECK FOR ERROR.
* 
*         ENTRY  (A1) = FET ADDRESS.
*                (X1) = FIRST WORD OF FET.
*                (B4) = RETURN ADDRESS.  CONTROL IS RETURNED HERE 
*                       IF THE FILE IS FOUND BUSY.
* 
*         EXIT   TO (B4) AFTER WAITING FOR FILE TO BECOME AVAILABLE.
*                TO *ABE* IF ONE OF THE FOLLOWING CONDITIONS -
*                  1. AN ERROR OTHER THAN FILE BUSY WAS ENCOUNTERED.
*                  2. AN ERROR IS PRESENT AND *CER* WAS NOT CALLED FROM 
*                     *PRESET*. 
*                TO *ABT* IF AN INTERACTIVE JOB HAS MADE TEN
*                UNSUCCESSFUL ATTEMPTS TO ATTACH THE VALIDATION FILE. 
* 
*         USES   X - 0, 1, 2, 6.
*                A - 2, 6.
* 
*         MACROS MESSAGE, ROLLOUT.
  
  
 CER      SUBR               ENTRY/EXIT 
          MX0    -4          CHECK FOR ERROR
          AX1    10 
          BX0    -X0*X1 
          ZR     X0,CERX     IF NO ERROR
          SX0    X0-/ERRMSG/FBS 
          NZ     X0,ABE      IF NOT *FILE BUSY* RETURN FROM *PFM* 
          SA2    CERA 
          NZ     X2,ABE      IF NOT PRESET CALL 
          SX1    A1-U 
          ZR     X1,CER3     IF *VALINDS* REQUEST 
          SA2    CERC 
          SX6    X2-1 
          ZR     X6,CER2     IF RETRY COUNT EXCEEDED
          SA6    A2+
          MESSAGE  DMWV,2,R  * WAITING FOR VALIDATION FILE.*
          ROLLOUT  CERD      ROLLOUT FOR 5 SECONDS
          MESSAGE  (=C**),2,R 
          JP     B4          RETURN CONTROL 
  
 CER2     SA2    OT 
          SX2    X2-IAOT
          NZ     X2,CER3     IF NOT INTERACTIVE JOB 
          SX2    DMVB        * VALIDATION FILE BUSY.* 
          EQ     ABT         ABORT
  
 CER3     ROLLOUT  CERB 
          JP     B4          RETRY
  
  
 CERA     CON    0           PRESET CALL FLAG 
 CERB     CON    0           FAST ATTACH FILE BUSY TIMED/EVENT ROLLOUT
 CERC     CON    10          RETRY COUNT
 CERD     CON    5           PARAMETER WORD FOR TIMED ROLLOUT 
 CLN      SPACE  4,15 
**        CLN - CHECK LINE NUMBER.
* 
* 
*         ENTRY  (X1) = AVAILABLE LINES REQUESTED.  UPPER 30 BITS 
*                       CONTAIN LINES USED IF LESS. 
* 
*         EXIT   NEW PAGE GENERATED IF NECESSARY. 
* 
*         USES   X - 1, 2, 6, 7.
*                A - 1, 2, 6. 
* 
*         CALLS  CDD. 
* 
*         MACROS CLOCK, DATE, WRITEC, WRITEH, WRITEW. 
  
  
 CLN4     SA6    LC          SET NEW LINE COUNT 
  
 CLN      SUBR               ENTRY/EXIT 
          SA2    LC 
          IX6    X2-X1
          PL     X6,CLN4     IF ENOUGH ROOM ON PAGE 
          BX7    X1 
          AX7    30 
          ZR     X7,CLN1     IF LINES USED = LINES REQUESTED
          SX1    X1 
          IX6    X2-X7
          IX2    X2-X1
          PL     X2,CLN4     IF ENOUGH ROOM ON PAGE 
          BX1    X7 
 CLN1     BX6    -X1         SAVE LINES USED COMPLEMENTED 
          SA6    CLNB 
          DATE   DATE 
          CLOCK  TIME 
          SA1    PN          GET PAGE NUMBER
          SX6    X1+B1       INCREMENT
          SA6    A1 
          RJ     CDD         CONVERT
          LX6    6*4
          SA6    PAGE 
          WRITEW O,CLNA,1 
          WRITEW O,CCDR,8    WRITE COMMAND IN HEADER LINE 
          WRITEH O,DATE,6 
          SA1    OP          CHECK OPTION 
          SX1    X1-LOPT
          NZ     X1,CLN2     IF NOT LIST
          WRITEC O,SUBT1
          WRITEC O,SUBT2
          WRITEC O,(=1L ) 
          SA1    CLNB 
          SA2    LPPG        GET LINES PER PAGE 
          IX6    X1+X2
          SX6    X6-5 
          EQ     CLN3        CHECK OUTPUT FILE TYPE 
  
 CLN2     SA1    CLNB        SET LINES REMAINING ON PAGE
          SA2    LPPG        GET LINES PER PAGE 
          IX6    X1+X2
          SX6    X6-2 
 CLN3     SA1    OF          CHECK OUTPUT FILE TYPE 
          NZ     X1,CLN4     IF NOT A TERMINAL FILE 
          MX6    1
          BX6    -X6
          EQ     CLN4        RETURN 
  
  
 CLNA     CON    1H1         CARRIAGE CONTROL 
 CLNB     CON    0           LINES USED COMPLEMENT
  
 LC       CON    0           LINE COUNT 
 PN       CON    1           PAGE NUMBER
  
 DATE     DATA   1H          HEADER 
 TIME     DATA   1H 
          CON    0APAGE 
 PAGE     DATA   1H 
          CON    0
          CON    1L 
 SUBT1    DIS    ,* USER       USER     CREATION  LAST MOD* 
 SUBT2    DIS    ,* NAME       INDEX      DATE      DATE* 
 COB      SPACE  4,15 
**        COB - CHECK OUTPUT BUFFER.
* 
*         EXIT   OUTPUT BUFFER FLUSHED IF NECESSARY AND *SSST* STATUS 
*                REMOVED FROM OUTPUT FILE.
* 
*         USES   X - 1, 2.
*                A - 1, 2.
* 
*         MACROS SETFS, STATUS, WRITER. 
  
  
 COB      SUBR               ENTRY/ EXIT
          SA1    CLN         CHECK IF SUBROUTINE *CLN* EVER CALLED
          SA2    PLM         CHECK IF SUBROUTINE *PLM* EVER CALLED
          BX2    X1+X2
          ZR     X2,COBX     IF NO OUTPUT WRITTEN 
          WRITER O,R         FLUSH OUTPUT 
          SA1    OF 
          ZR     X1,COBX     IF TERMINAL FILE 
          STATUS O,P
          SA2    O+5         GET FNT
          MX1    -6 
          BX2    -X1*X2      GET FILE STATUS
          SX1    X2-SSST
          NZ     X1,COBX     IF PRIOR OUTPUT ID 
          SETFS  O,0         CLEAR FILE STATUS
          EQ     COBX        RETURN 
 CPR      SPACE  4,20 
**        CPR - CHECK PASSWORD REQUIREMENT. 
* 
*         ENTRY  (X5) = PASSWORD WORD FROM USER BLOCK.
*                (A5) = ADDRESS OF PASSWORD WORD. 
* 
*         EXIT   (B3) = ERROR MESSAGE ADDRESS, IF PASSWORD REQUIRED 
*                       BUT NOT ENTERED.
*                (B3) = 0, IF ENTERED OR NOT REQUIRED.
* 
*         IF NO PASSWORD IS ENTERED, AND NONE IS REQUIRED, THE
*         ENCRYPTED NULL PASSWORD AND THE DEFAULT EXPIRATION DATE 
*         WILL BE SET.
* 
*         USES   X - 0, 1, 5, 6, 7. 
*                A - 1, 7.
*                B - 2, 3.
* 
*         CALLS  ADT, EPW.
  
  
 CPR3     SB3    ERPR        **** PASSWORD REQUIRED.
  
 CPR      SUBR               ENTRY/EXIT 
          SB3    B0+         SET NO ERROR 
          MX0    42 
          BX6    X0*X5
          NZ     X6,CPRX     IF PASSWORD ENTERED
          BX6    -X0*X5 
          NZ     X6,CPR1     IF EXPIRATION DATE ENTERED 
          SX1    APXT-7777B 
          ZR     X1,CPR1     IF DEFAULT IS NON-EXPIRING 
          SX1    APXT        SET DEFAULT EXPIRATION TERM
          RJ     ADT
 CPR1     BX3    X6          SAVE EXPIRATION DATE 
          BX5    X5-X5       SET NULL PASSWORD
          RJ     EPW
          BX7    X3+X6       COMBINE PASSWORD AND EXPIRATION DATE 
          SA1    RP 
          NZ     X1,CPR2     IF NO PASSWORD REQUIRED
          SB2    RPWL 
          ZR     B2,CPR2     IF MINIMUM REQUIRED LENGTH = 0 
          SA1    RDBA 
          NZ     X1,CPR3     IF NEW USER
 CPR2     SA7    A5          SET PASSWORD AND EXPIRATION DATE 
          EQ     CPRX        RETURN 
 CSM      SPACE  4,15 
**        CSM - CHECK SECURITY MODE.
* 
*         EXIT   (X1) = 0, IF USER IS VALID.
*                (X1) .NE. 0 IF USER IS NOT VALID.  IN A SECURED
*                     SYSTEM, SECURITY ADMINISTRATOR PRIVILEGES 
*                     ARE REQUIRED. 
* 
*         USES   X - 1, 2.
*                A - 1, 2.
* 
*         MACROS GETSSM, GETUSV.
  
  
 CSM      SUBR               ENTRY/EXIT 
          GETSSM CSMA        GET SECURITY MODE
          SA1    CSMA 
          ZR     X1,CSMX     IF NOT A SECURE SYSTEM 
          GETUSV CSMB        GET VALIDATION WORD *JSCW* 
          SA2    CSMB 
          SX1    B0+
          NG     X2,CSMX     IF SECURITY ADMINISTRATOR
          SX1    B1+
          EQ     CSMX        RETURN 
  
 CSMA     CON    0           SECURITY MODE
 CSMB     CON    0           VALIDATION WORD *JSCW* 
 CUN      SPACE  4,10 
**        CUN - COMPARE USER NAMES. 
* 
*         *CUN* COMPARES THE CURRENT JOB USER NAME WITH THE 
*         USER NAME TO BE CHANGED.
* 
*         ENTRY  *TANB* BLOCK SET.
* 
*         EXIT   (X1) = 0 IF USER NAMES MATCH.
* 
*         USES   X - 0, 1, 2. 
*                A - 1, 2.
  
  
 CUN      SUBR               ENTRY/EXIT 
          SA1    SSJ=+UIDS   GET USER NAME FOR JOB
          SA2    TANB+ACCN   GET USER NAME BEING ALTERED
          MX0    42 
          BX1    X1-X2
          BX1    X0*X1       COMPARE USER NAMES 
          EQ     CUNX        RETURN 
 EPW      SPACE  4,10 
**        EPW - ENCRYPT PASSWORD. 
* 
*         ENTRY  (X5) = PASSWORD LEFT JUSTIFIED, BINARY ZERO FILLED.
* 
*         EXIT   (X6) = ENCRYPTED PASSWORD IN BITS 59-18. 
* 
*         USES   X - 1, 6.
*                A - 1, 6.
* 
*         MACROS SYSTEM.
  
  
 EPW      SUBR               ENTRY/EXIT 
          BX6    X5          SAVE PASSWORD
          SA6    EPWA 
          SYSTEM CPM,R,EPWA,122B*100B 
          SA1    EPWA        GET ENCRYPTED PASSWORD 
          BX6    X1 
          EQ     EPWX        RETURN 
  
  
 EPWA     CON    0           *CPM* PARAMETER BLOCK
 IAM      SPACE  4,20 
**        IAM - ISSUE ACCOUNT FILE MESSAGE. 
* 
*         ENTRY  (DANA) .NE. 0, IF USER NAME DELETE.
*                (UUFG) .LT. 0, IF REFORMAT OPTION. 
*                       .EQ. 0, IF USER NAME CREATE OR DELETE.
*                       .GT. 0, IF USER NAME UPDATE.
* 
*         EXIT   ACCOUNT MESSAGE ISSUED IF FAST-ATTACHED MODE.
* 
*         USES   X - 0, 1, 2, 6.
*                A - 1, 2, 6. 
*                B - 2, 5.
* 
*         CALLS  SNM. 
* 
*         MACROS MESSAGE, MOVE. 
  
  
 IAM3     MESSAGE  IAMD,5,R  ISSUE MESSAGE TO ACCOUNT FILE
  
 IAM      SUBR               ENTRY/EXIT 
          SA1    RAPF 
          ZR     X1,IAMX     IF LOCAL VALIDATION FILE 
          SA2    UUFG 
          NG     X2,IAMX     IF REFORMAT OPTION 
          SA1    EF 
          NZ     X1,IAMX     IF ERRORS
          SA2    TANB+ACCN   GET MODIFIED USER NAME 
          BX6    X2 
          SA6    IAMA+2 
          SA1    DANA        GET MODIFICATION TYPE
          SX6    B0+
          NZ     X1,IAM1     IF DELETE
          SA1    UUFG 
          SX6    X6+1 
          NZ     X1,IAM1     IF UPDATE
          SX6    X6+1 
 IAM1     SA1    X6+IAMB     SET MODIFICATION TYPE
          BX6    X1 
          SA6    IAMA+4 
          MOVE   IAMEL,IAME,IAMD  SET MESSAGE FIELDS
          SX0    4
 IAM2     NG     X0,IAM3     IF ALL FIELDS SET
          SA1    X0+IAMC     GET REPLACEMENT CHARACTER
          SB2    X1 
          SA1    X0+IAMA     GET FIELD
          MX6    42 
          BX1    X6*X1
          SB5    IAMD 
          RJ     SNM         SET NAME IN MESSAGE
          SX0    X0-1 
          EQ     IAM2        CHECK NEXT FIELD 
  
 IAMA     BSS    0           MESSAGE FIELD VALUES 
          CON    0           MODIFIED FAMILY NAME 
          BSS    1           ISSUING FAMILY NAME
          BSS    1           MODIFIED USER NAME 
          BSS    1           ISSUING USER NAME
          BSS    1           MODIFICATION TYPE
  
 IAMB     BSS    0           MESSAGE IDENTIFIERS
          DATA   4LMVDU      USER NAME DELETE 
          DATA   4LMVUU      USER NAME UPDATE 
          DATA   4LMVCU      USER NAME CREATE 
  
 IAMC     BSS    0           REPLACEMENT CHARACTERS 
          CON    1R+         MODIFIED FAMILY NAME 
          CON    1R-         ISSUING FAMILY NAME
          CON    1R=         MODIFIED USER NAME 
          CON    1R/         ISSUING USER NAME
          CON    1R$         MODIFICATION TYPE
  
 IAMD     DATA   C*$$$$, -------, ///////, +++++++, =======.* 
 IAME     DATA   C*$$$$, -------, ///////, +++++++, =======.* 
 IAMEL    EQU    *-IAME      LENGTH OF MESSAGE
 ICE      SPACE  4,10 
**        ICE - INDEXED CODE EXECUTION. 
* 
*         ENTRY  (B7) = SUBROUTINE ADDRESS. 
* 
*         EXIT   TO SUBROUTINE WITH RETURN ADDRESS SET. 
* 
*         USES   A - 2, 7.
*                X - 2, 7.
  
  
 ICE      SUBR               ENTRY/ EXIT
          SA2    ICEX        SET RETURN ADDRESS 
          BX7    X2 
          SA7    B7 
          JP     B7+1        JUMP TO SUBROUTINE 
 LID      SPACE  4,15 
**        LID - LIST INPUT DIRECTIVES.
* 
*         ENTRY  FRESH DATA IN STRING BUFFER. 
* 
*         EXIT   NEW INPUT LINE WRITTEN TO OUTPUT.
* 
*         USES   X - 1, 2, 3, 7.
*                A - 1, 2, 3, 7.
* 
*         CALLS  CLN. 
* 
*         MACROS WRITES.
  
  
 LID1     SX7    X1-1        COUNT INFORMATION SKIPPED
          SA7    A1+
  
 LID      SUBR               ENTRY/ EXIT
          SA3    OP          CHECK OPTION 
          ZR     X3,LIDX     IF K-DISPLAY 
          SA1    LIDA        SKIP PRIVILEGED INFORMATION
          SA2    EL          CHECK LIST OPTION
          NZ     X1,LID1     IF PRIVILEGED INFORMATION
          NZ     X2,LIDX     IF DIRECTIVES NOT LISTED 
          SX1    B1          CHECK FOR HEADER 
          SX2    5
          LX1    30 
          BX1    X1+X2
          RJ     CLN
          SA1    SB          SET STRING BUFFER ADDRESS
          SA3    SM          GET BUFFER LENGTH
          IX3    X3-X1
          WRITES O,X1-1,X3+1
          EQ     LIDX        RETURN 
  
  
 LIDA     CON    0           PRIVILEGED INFORMATION FLAG
 PCE      SPACE  4,15 
**        PCE - PURGE CATALOG ENTRIES.
* 
*         ENTRY  USER INDEX SET.
* 
*         EXIT   ALL CATALOG ENTRIES FOR SPECIFIC USER INDEX PURGED.
* 
*         USES   X - 0, 1, 6. 
*                A - 1, 6.
* 
*         CALLS  CEP, CER, CLN, SEP.
* 
*         MACROS CATLIST, PURGE, READW, WRITEC. 
  
  
 PCE3     SA1    I
          LX1    -10
          BX6    X6-X6
          PL     X1,PCE1     IF NOT END OF INFORMATION
          SA1    I
          SA6    A1+CFCN     CLEAR CATLIST CONTINUATION DATA ADDRESS
          RJ     CEP         CLEAR ERROR PROCESSING 
          SA1    S
          RJ     CEP         CLEAR ERROR PROCESSING 
  
 PCE      SUBR               ENTRY/ EXIT
          SA1    I
          RJ     SEP         SET ERROR PROCESSING 
          SA1    S
          RJ     SEP         SET ERROR PROCESSING 
 PCE1     CATLIST I,,,,,,IP 
          SA1    I
          RJ     CER         CHECK ERROR
 PCE2     READW  I,KBUF,NWCE
          NG     X1,PCE3     IF NO MORE FILES 
          SA1    KBUF+FCFN
          MX0    42 
          SX6    B1 
          BX1    X0*X1       GET FILE NAME
          BX6    X1+X6       SET BIT ZERO FOR PURGE CALL
          SA6    S
          BX6    X1 
          SA6    PCEA+1 
          PURGE  S,,,,,IP 
          SA1    S
          RJ     CER         CHECK ERROR
          SX1    B1 
          RJ     CLN         CHECK LINE NUMBER
          WRITEC O,PCEA      DUMP FILE NAME TO OUTPUT 
          EQ     PCE2        LOOP 
  
  
 PCEA     DATA   C*    PURGE XXXXXXX* 
 SEP      SPACE  4,10 
**        SEP - SET ERROR PROCESSING. 
* 
*         ENTRY  (A1) = FET ADDRESS.
* 
*         USES   X - 0, 2, 6. 
*                A - 2, 6.
  
  
 SEP      SUBR               ENTRY/EXIT 
          SA2    A1+B1       SET ERROR PROCESSING BIT 
          SX0    B1 
          LX0    44 
          BX6    -X0*X2 
          BX6    X0+X6
          SA6    A2 
          EQ     SEPX        RETURN 
 SUI      SPACE  4,10 
**        SUI - SAVE AVAILABLE USER INDEX TABLE.
* 
*         EXIT   USER INDICES WRITTEN TO VALINDS. 
* 
*         MACROS REWIND, SETFS, WRITER, WRITEW. 
  
  
 SUI      SUBR               ENTRY/ EXIT
          REWIND U,R
          WRITEW U,TAUI,TAUIL 
          WRITER U
          SETFS  U,0         CLEAR FILE STATUS
          EQ     SUIX        RETURN 
 SPB      SPACE  4,15 
**        SPB - SET PERMISSION BIT IN PERMISSION CONTROL WORD.
* 
*         ENTRY  (A0) = ADDRESS OF *TPCW* ENTRY.
*                (X1) = PERMISSION IDENTIFIER.
*                (X4) = PERMISSION CONTROL WORD.
* 
*         EXIT   (X4) = NEW PERMISSION CONTROL WORD.
*                (B3) .LT. 0 IF NO ERROR. 
*                     = ERROR MESSAGE ADDRESS IF ERROR. 
* 
*         USES   X - 1, 2, 3, 4.
*                A - 1, 3.
*                B - 2, 3, 4. 
* 
*         CALLS  CDP, STB.
  
  
 SPB      SUBR               ENTRY/EXIT 
          SA3    A0 
          MX2    42 
          SB2    X3 
          RJ     STB         SEARCH TABLE 
          SB3    ERAD        * ERROR IN ALPHANUMERIC DATA.* 
          ZR     X3,SPBX     IF PERMISSION IDENTIFIER NOT FOUND 
          MX2    -6 
          BX3    -X2*X3 
          SB4    X3          PERMISSION BIT NUMBER
          SB2    A0-TPCW     CHECK IF DEFAULTS TO BE CLEARED
          SA1    PCDW 
          AX1    B2 
          LX1    59-0 
          NG     X1,SPB1     IF DEFAULT BITS NOT TO BE CLEARED
          RJ     CDP         CLEAR DEFAULT PERMISSION BITS
 SPB1     SX1    B1          SET/TOGGLE PERMISSION BIT
          LX1    B4 
          BX4    X4-X1
          SB3    -1          SET NO ERROR 
          EQ     SPBX        RETURN 
 CAF      SPACE  4,15 
**        CAF - CHECK ALTERNATE FAMILY. 
* 
*         EXIT   (X6) .NE. 0, IF FAMILY NAME CHANGE NOT ALLOWED.
*                FAMILY SET TO (FN), IF (FN) .NE. -1 AND JOB IS FROM
*                SYSTEM ORIGIN. 
* 
*                ERROR TO *ABT* IF INCORRECT FAMILY.
* 
*         USES   X - 1, 2, 6. 
*                A - 1, 2, 6. 
* 
*         MACROS ENFAM. 
  
  
 CAF      SUBR               ENTRY/EXIT 
          SA1    FN 
          MX6    59 
          BX6    X1-X6
          ZR     X6,CAFX     IF FAMILY NOT SPECIFIED
          SA1    OT          CHECK FAMILY CHANGE ALLOWED
          SX6    X1-SYOT
          NZ     X6,CAFX     IF NOT SYSTEM ORIGIN 
          ENFAM  FN 
          SA1    FN 
          MX6    -18
          BX6    X6*X1       CLEAR STATUS 
          LX1    59-11
          SX2    DMFM        * FM NOT LEGAL FAMILY.*
          PL     X1,CAF1     IF FAMILY CHANGED
          MX6    59 
          SA6    A1 
          EQ     ABT         ABORT
  
 CAF1     SA6    A1          SET OLD FAMILY NAME
          BX6    X6-X6
          EQ     CAFX        RETURN 
 TOV      SPACE  4,15 
**        TOV - TABLE OVERFLOW PROCESSOR. 
* 
*         ENTRY  FROM *ATS* ONLY. 
*                (B6) = EXIT ADDRESS IN *COMCMTP* TO CONTINUE 
*                       PROCESSING. 
* 
*         EXIT   TO (B6). 
*                FIELD LENGTH INCREASED BY *FLIN* WORDS.
*                (TV) .NE. 0, IF FIELD LENGTH LIMIT REACHED.
* 
*         USES   X - 3, 4, 6. 
*                A - 3, 4, 6. 
* 
*         MACROS MEMORY.
  
  
 TOV      BSS    0           ENTRY
          SA4    FLM         MAXIMUM FIELD LENGTH 
          SA3    ML          CURRENT FIELD LENGTH 
          SX3    X3+FLIN
          IX4    X3-X4       LIMIT FIELD LENGTH 
          NG     X4,TOV1     IF ADEQUATE FIELD LENGTH 
          SX6    B1          INDICATE OVERFLOW
          SA6    TV 
 TOV1     MEMORY CM,TOVB,R,X3 
          SA3    TOVB        GET FIELD LENGTH ASSIGNED
          AX3    30 
          BX6    X3 
          SA6    ML          SET NEW FIELD LENGTH 
          SX6    X6-C.TAB2
          SA6    F.TEND      ADJUST TABLE LENGTH
          JP     B6          EXIT 
  
  
 TOVB     CON    0           FIELD LENGTH STATUS RETURN 
 VPW      SPACE  4,15 
**        VPW - VERIFY PASSWORD.
* 
*         ENTRY  (X7) = PASSWORD, LEFT JUSTIFIED. 
* 
*         EXIT   (B2) = 0 IF PASSWORD AT LEAST REQUIRED LENGTH. 
*                     = -1 IF PASSWORD NOT AT LEAST MINIMUM 
*                       REQUIRED LENGTH.
* 
*         USES   X - 0, 1, 3, 4.
*                A - 3. 
*                B - 2, 3.
  
  
 VPW      SUBR               ENTRY/EXIT 
          SB2    B0+
          SA3    RP          CHECK IF PASSWORD REQUIRED 
          SX1    RPWL-1      CHECK REQUIRED PASSWORD LENGTH 
          NZ     X3,VPWX     IF NO PASSWORD REQUIRED
          NG     X1,VPWX     IF NO PASSWORD REQUIRED
          SX4    6
          IX3    X1*X4
          MX0    1
          SB3    X3-1        BUILD MASK 
          AX0    B3 
          BX1    -X0*X7      CHECK PASSWORD 
          NZ     X1,VPWX     IF PASSWORD AT LEAST REQUIRED LENGTH 
          SB2    -B1
          EQ     VPWX        RETURN 
 WCE      SPACE  4,10 
**        WCE - WRITE CATALOG ENTRY TO OUTPUT.
* 
*         ENTRY  (TANB) = 42/USER NAME ,18/USER INDEX.
*                (TANB+1) = 24/ ,18/CREATION DATE ,18/LAST MOD DATE.
* 
*         EXIT   CATALOG INFORMATION WRITTEN TO OUTPUT FILE.
* 
*         USES   X - 0, 1, 2, 6.
*                A - 1, 2, 6. 
* 
*         CALLS  CLN, COD, SFN. 
* 
*         MACROS EDATE, WRITEC. 
  
  
 WCE      SUBR               ENTRY/EXIT 
          SA2    TANB        SET USER NAME
          MX0    42 
          BX1    X0*X2
          BX0    -X0*X2 
          RJ     SFN         SET USER NAME
          LX6    -6 
          SA6    WCEA 
          BX1    X0          SET USER INDEX 
          RJ     COD
          LX6    6*2
          SA1    TANB+1      SET CREATION DATE
          AX1    18 
          SA6    WCEB 
          SX1    X1+
          EDATE  X1 
          SA6    WCEC 
          SA1    TANB+1      SET LAST MODIFICATION DATE 
          SX1    X1 
          EDATE  X1 
          SA6    WCED 
          SX1    1
          RJ     CLN
          WRITEC O,WCEA 
          EQ     WCEX        RETURN 
  
  
 WCEA     CON    1H 
 WCEB     CON    1H 
 WCEC     CON    1H 
 WCED     CON    1H 
          CON    0
 COMMON   SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMCOVL 
*CALL     COMCPFM 
*CALL     COMCCDD 
*CALL     COMCCIO 
*CALL     COMCCOD 
*CALL     COMCCPM 
*CALL     COMCDXB 
*CALL     COMCEDT 
          LIST   X
*CALL     COMCCVI 
          LIST   -X 
*CALL     COMCLFM 
*CALL     COMCMTP 
*CALL     COMCMVE 
*CALL     COMCRDO 
*CALL     COMCRDS 
*CALL     COMCRDW 
*CALL     COMCSFN 
*CALL     COMCSYS 
*CALL     COMCWOD 
*CALL     COMCSTF 
*CALL     COMCWTC 
*CALL     COMCWTH 
*CALL     COMCWTS 
*CALL     COMCWTW 
*CALL     COMCRDC 
*CALL     COMCSNM 
*CALL     COMCVDT 
          TITLE  K-DISPLAY AREA.
 INITIAL  SPACE  4,10 
**        DISPLAY AREA DATA.
  
  
 KIA      VFD    6/4B,18/KBUF,18/0,18/DSA  CONTROL WORD 
  
 KBUF     BSSZ   8           KEYBOARD BUFFER
 KTIT     DATA   C*MODVAL.*   K-DISPLAY TITLE 
  
          NOREF  K
  
 DSA      VFD    10/0,1/0,1/0,1/0,5/0,18/KTIT,24/0  BUFFER CONTROL WORD 
  KDL 1,T,(                             MODVAL) 
  KDL 5,,("APFN") 
  KDL 18,,(CRE) 
  KDL 21,,(ATED            )
 DSCD     EQU    *-1
  KDL 41,,(UPD) 
  KDL 44,H,(ATED            ) 
 DSMD     EQU    *-1
  KDL 1,K,(INPUT DIRECTIVES ARE THE SAME AS BATCH INPUT DIRECTIVES.)
  KDL 1,H,(THE FOLLOWING DIRECTIVES ARE ALSO PROVIDED -)
  KDL 1,H,(   DIRECTIVE                      DESCRIPTION) 
  KDL 1,K,(     C,UN        CREATE OPTION.  THIS DISPLAY ONLY.) 
  KDL 1,K,(     DEL,UN      DELETE OPTION.  THIS DISPLAY ONLY.) 
  KDL 1,K,(     I,UN        INQUIRE OPTION.  THIS DISPLAY ONLY.)
  KDL 1,K,(     U,UN        UPDATE OPTION.  THIS DISPLAY ONLY.) 
  KDL 6,K,(/UN         TERMINATE INPUT FOR PRESENT USER NAME IF ANY,) 
  KDL 18,H,(UPDATE "APFN" FILE.  INITIATE ACTION ON *UN*.)
  KDL 1,H,(UN = 1-7 CHARACTER USER NAME.) 
  KDL 1,H,(K.END FROM THIS DISPLAY ENDS THE MODVAL RUN.)
 MSGA     EQU    *+1
  KDL 1,M,(                                              )
 INPA     EQU    *+1
  KDL 1,I,(                                                        )
          CON    0
 PAGE1    SPACE  4,10 
 DSB      VFD    10/0,1/0,1/0,1/0,5/0,18/KTIT,24/0  BUFFER CONTROL WORD 
  KDL 1,T,(USER            )
 DSAN     EQU    *-1
  KDL 54,T,(PAGE 1 OF 5)
  KDL 3,,(CRE)
  KDL 6,,(ATED            ) 
 DSAC1    EQU    *-1
  KDL 40,,(UPD) 
  KDL 43,H,(ATED            ) 
 DSAU     EQU    *-1
  KDL 2,H,(      CONTENTS      DESCRIPTION) 
 DSUI     EQU    *+1
  KDL 2,K,( UI =               USER INDEX (1-377777B).) 
 DSPL     EQU    *+1
  KDL 2,K,( AL =       00B     APPLICATION ACCESS LEVEL (1-17B).) 
 DSMT     EQU    *+1
  KDL 2,K,( MT =               MAGNETIC TAPES (0-7).) 
 DSRP     EQU    *+1
  KDL 2,H,( RP =               REMOVABLE PACKS (0-7).)
  KDL 2,H,(      CONTENTS      VALUE     DESCRIPTION) 
 DSCM     EQU    *+1
  KDL 2,K,( CM =       00B   ( 0000B)    CENTRAL MEMORY FL (0-77B).)
 DSEC     EQU    *+1
  KDL 2,K,( EC =       00B   ( 0000B)    EXTENDED MEMORY FL (0-77B).) 
 DSLP     EQU    *+1
  KDL 2,K,( LP =       00B   ( 00000)    LINES PRINTED (0-77B).)
 DSMS     EQU    *+1
  KDL 2,K,( MS =       00B   (000000)    MASS STORAGE PRUS (0-77B).)
 DSSL     EQU    *+1
  KDL 2,K,( SL =       00B   ( 00000)    SRU LIMIT (0-77B).)
 DSTL     EQU    *+1
  KDL 2,K,( TL =       00B   ( 00000)    TIME LIMIT (0-77B).) 
 MSGB     EQU    *+1
  KDL 1,M,(                                              )
 INPB     EQU    *+1
  KDL 1,I,(                                                        )
          CON    0           END OF DISPLAY 
 PAGE2    SPACE  4,10 
 DSC      VFD    10/0,1/0,1/0,1/0,5/0,18/KTIT,24/0  BUFFER CONTROL WORD 
  KDL 1,T,(USER            )
 DSAN1    EQU    *-1
  KDL 54,T,(PAGE 2 OF 5)
  KDL 2,H,(      CONTENTS      VALUE     DESCRIPTION) 
 DSCP     EQU    *+1
  KDL 2,K,( CP =       00B   (  0000)    CARDS PUNCHED (0-77B).)
 DSPT     EQU    *+1
  KDL 2,K,( PT =       00B   ( 00000)    UNITS PLOTTED (0-77B).)
 DSCC     EQU    *+1
  KDL 2,K,( CC =       00B   (  0000)    COMMANDS (0-77B).) 
 DSDF     EQU    *+1
  KDL 2,K,( DF =       00B   (  0000)    DAYFILE MESSAGES (0-77B).) 
 DSDB     EQU    *+1
  KDL 2,K,( DB =         0   (    00)    DEFERRED BATCH (0-7).) 
 DSDT     EQU    *+1
  KDL 2,H,( DT =       00B   ( 00000)    DETACHED JOBS (0-77B).)
 DSCS     EQU    *+1
  KDL 2,K,( CS =         0   ( 00000)    INDIRECT ACCESS FILE SPACE (0-7
,).)
 DSDS     EQU    *+1
  KDL 2,K,( DS =         0   ( 00000)    DIRECT ACCESS FILE SIZE (0-7). 
 DSFC     EQU    *+1
  KDL 2,K,( FC =         0   (    00)    PERMANENT FILE COUNT (0-7).) 
 DSFS     EQU    *+1
  KDL 2,K,( FS =         0   (    00)    INDIRECT ACCESS FILE SIZE (0-7)
,.) 
 DSAW     EQU    *+1
  KDL 2,K,( AW =                         ACCESS WORD (4 CHARACTERS).) 
 DSCN     EQU    *+1
  KDL 2,K,( CN =                         CHARGE NUMBER (1-10 CHARACTERS)
,.) 
 DSPN     EQU    *+1
  KDL 2,K,( PN =                         PROJECT NUMBER (1-20 CHARACTERS
,).)
 DSUD     EQU    *+1
  KDL 2,K,( PID =                        PERSONAL ID (0-20 CHARACTERS.).
,)
 MSGC     EQU    *+1
  KDL 1,M,(                                              )
 INPC     EQU    *+1
  KDL 1,I,(                                                        )
          CON    0
 PAGE3    SPACE  4,10 
 DSD      VFD    10/0,1/0,1/0,1/0,5/0,18/KTIT,24/0  BUFFER CONTROL WORD 
  KDL 1,T,(USER            )
 DSAN2    EQU    *-1
  KDL 54,T,(PAGE 3 OF 5)
  KDL 2,H,(      CONTENTS      DESCRIPTION) 
 DSSN     EQU    *+1
  KDL 2,K,( SH =               SHELL PROGRAM NAME (1-7 CHARACTERS).)
 DSSH     EQU    *+1
  KDL 2,K,( SO =               SHELL PROGRAM OPTIONS (4 CHARACTERS).) 
 DSSP     EQU    *+1
  KDL 2,K,( SP =               SYSTEM PROLOGUE FILE INDEX (1-77B).) 
 DSUP     EQU    *+1
  KDL 2,H,( UP =               USER PROLOGUE FILE NAME (1-7 CHARACTERS).
,)
 DSUC     EQU    *+1
  KDL 2,K,( UC =               DEFAULT SERVICE CLASS FOR ORIGIN TYPES)
  KDL 2,K,(                    BC,RB,IA (2 OR 4 CHARACTERS).) 
 DSVM     EQU    *+1
  KDL 2,H,( VM =               VALIDATION MASK (2 CHARACTERS).) 
 DSIS     EQU    *+1
  KDL 2,K,( IS =               INITIAL SUBSYSTEM (4-8 CHARACTERS).) 
 DSPA     EQU    *+1
  KDL 2,K,( PA =               TERMINAL PARITY (EVEN OR ODD).)
 DSPX     EQU    *+1
  KDL 2,K,( PX =               TRANSMISSION (FULL OR HALF).)
 DSRO     EQU    *+1
  KDL 2,K,( RO =               RUBOUTS (0-31).) 
 DSTC     EQU    *+1
  KDL 2,K,( TC =               CHARACTER SET (ASCII OR NORMAL).)
 DSTT     EQU    *+1
  KDL 2,K,( TT =               TERMINAL TYPE (3-7 CHARACTERS).) 
 MSGD     EQU    *+1
  KDL 1,M,(                                              )
 INPD     EQU    *+1
  KDL 1,I,(                                                        )
          CON    0           END OF DISPLAY 
 PAGE4    SPACE  4,10 
 DSE      VFD    10/0,1/0,1/0,1/0,5/0,18/KTIT,24/0  BUFFER CONTROL WORD 
  KDL 1,T,(USER            )
 DSAN4    EQU    *-1
  KDL 54,T,(PAGE 4 OF 5)
  KDL 2,H,(      CONTENTS       DESCRIPTION)
  KDL 2,K,(                     PASSWORDS MUST BE "OPWL"-7 CHAR.) 
 DSXB     EQU    *+1
  KDL 2,K,(XB =                 BATCH PASSWORD EXPIRATION DATE (YYMMDD).
,)
 DSXI     EQU    *+1
  KDL 2,K,(XI =                 INTERACTIVE PASSWORD EXPIRATION DATE) 
  KDL 2,H,(                     (YYMMDD).)
 DSLV     EQU    *+1
  KDL 2,K,(SAL =                SECURITY ACCESS LEVELS (1-7 CHAR).) 
 DSAV     EQU    *+1
  KDL 2,K,(SAV =                SECURITY ACCESS PRIVILEGES (4 CHAR).) 
 DSAC     EQU    *+1
  KDL 2,,(SAC =                     ) 
  KDL 23,K,(SECURITY ACCESS CATEGORIES (1-7 CHAR).) 
 DSSE     EQU    *+1
  KDL 2,K,(SC =                 SECURITY COUNT (0-77B).)
 MSGE     EQU    *+1
  KDL 1,M,(                                              )
 INPE     EQU    *+1
  KDL 1,I,(                                                        )
          CON    0           END OF DISPLAY 
 PAGE5    SPACE  4,10 
 DSF      VFD    10/0,1/0,1/0,1/0,5/0,18/KTIT,24/0  BUFFER CONTROL WORD 
  KDL 1,T,(USER            )
 DSAN3    EQU    *-1
  KDL 54,T,(PAGE 5 OF 5)
  KDL 1,H,(    STATUS    APPLICATION         STATUS    APPLICATION) 
 DSAP     EQU    *
 RNNA     SET    TNAVL+1     ROUNDED APPLICATION COUNT
          DUP    RNNA/2,1 
  KDL 1,K,(                                                       ) 
 MSGF     EQU    *+1
  KDL 1,M,(                                              )
 INPF     EQU    *+1
  KDL 1,I,(                                                        )
          CON    0           END OF DISPLAY 
 PAGE1R   SPACE  4,10 
 DSG      VFD    10/0,1/0,1/0,1/0,5/0,18/KTIT,24/0  BUFFER CONTROL WORD 
  KDL 1,T,(K DISPLAY COMMANDS)
  KDL 54,T,(PAGE 1 OF 3)
  KDL 7,K,(DROP   TERMINATE INPUT FOR ACTIVE USER.) 
  KDL 7,K,(END    COMPLETE UPDATE OR INQUIRE OF ACTIVE USER.  FROM) 
  KDL 7,K,(       INITIAL DISPLAY, END RUN.)
  KDL 7,H,(STOP   TERMINATE INPUT FOR ACTIVE USER, IF ANY.  END RUN.) 
  KDL 7,K,(/UN    TERMINATE INPUT FOR PRESENT USER NAME AND UPDATE) 
  KDL 7,K,(       "APFN" FILE.  INITIATE ACTION ON *UN*.) 
  KDL 7,K,(+      PAGE LEFT DISPLAY FORWARD.) 
  KDL 7,K,(-      PAGE LEFT DISPLAY BACKWARD.)
          CHAR   1R[,1R(
          CHAR   1R],1R)
          CODE   O
  KDL 7,K,([      PAGE RIGHT DISPLAY FORWARD.)
  KDL 7,H,(]      PAGE RIGHT DISPLAY BACKWARD.) 
          CODE   *
  KDL 1,H,(PARAMETER INPUT) 
  KDL 1,K,(   DATA ENTRY FORMAT IS OF THE FORM MT=XX,CM=XX,TL=XX, ETC.) 
  KDL 1,K,(   ALL NUMERIC FIELDS ARE ASSUMED TO BE DECIMAL UNLESS A)
  KDL 1,K,(   POSTRADIX IS SPECIFIED.  FOR EXAMPLE - 4000B) 
          CON    0           END OF DISPLAY 
 PAGE2R   SPACE  4,10 
 DSH      VFD    10/0,1/0,1/0,1/0,5/0,18/KTIT,24/0  BUFFER CONTROL WORD 
  KDL 1,T,(MODVAL IDENTIFIERS)
  KDL 54,T,(PAGE 2 OF 3)
  KDL 1,H,(AW - ACCESS WORD (LEFT FROM BIT 0))
  KDL 4,K,(CPWC,CTPC,CLPF,CSPF,CSOJ,CASF,CAND)
  KDL 4,K,(CCNR,CSRP,CSTP,CTIM,CUCP,CSAP,CBIO)
  KDL 4,K,(CPRT,CPLK,CQLK,CUST,CNVE,CMNT,CNOP)
  KDL 4,K,(CSAF,CNRD,COPR,CLTD,COPI,CACA,CPAM)
  KDL 4,K,(CSAU,CRAU,CRAF)
  KDL 1,H,(SO - REMOTE TERMINAL PROGRAM (LEFT FROM BIT 0))
  KDL 1,H,(   CCLM,BCSM,TCSM,SLID,GLID,LFID,ABTM) 
  KDL 1,H,(UC - SERVICE CLASS (LEFT FROM BIT 1))
  KDL 1,H,(   SY,BC,RB,TS,DI,NS,SS,MA,CT,I0,I1,I2,I3) 
  KDL 1,H,(SAL - SECURITY ACCESS LEVEL (LEFT FROM BIT 0)) 
  KDL 1,K,(   "ALM0","ALM1","ALM2","ALM3")
  KDL 1,K,(   "ALM4","ALM5","ALM6","ALM7")
          CON    0           END OF DISPLAY 
 PAGE3R   SPACE  4,10 
 DSJ      VFD    10/0,1/0,1/0,1/0,5/0,18/KTIT,24/0  BUFFER CONTROL WORD 
  KDL 1,T,(MODVAL IDENTIFIERS)
  KDL 54,T,(PAGE 3 OF 3)
  KDL 1,H,(SAV - SECURITY PRIVILEGE (RIGHT FROM BIT 59))
  KDL 1,H,(   CSAP,COLD,CPWX,CFPX,CLJL,CLFL,CWLF,CULT)
  KDL 1,H,(SAC - SECURITY ACCESS CATEGORY (LEFT FROM BIT 0))
  KDL 1,K,(   "ACM00","ACM01","ACM02","ACM03","ACM04","ACM05","ACM06")
  KDL 1,K,(   "ACM07","ACM08","ACM09","ACM10","ACM11","ACM12","ACM13")
  KDL 1,K,(   "ACM14","ACM15","ACM16","ACM17","ACM18","ACM19","ACM20")
  KDL 1,K,(   "ACM21","ACM22","ACM23","ACM24","ACM25","ACM26","ACM27")
  KDL 1,K,(   "ACM28","ACM29","ACM30","ACM31")
          CON    0           END OF DISPLAY 
          TITLE  DATA AREA. 
 TAUI     SPACE  4,10 
**        TAUI - TABLE OF AVAILABLE USER INDICES. 
  
  
 TAUIL    EQU    AUIMX/60+1 
 TAUI     BSSZ   TAUIL
 ACW      SPACE  4,10 
**        SSJ - TABLE OF USER ACCESS PARAMETERS.
  
  
 SSJ=     BSSZ   SSJL 
 BUFFERS  SPACE  4,10 
**        BUFFER ASSIGNMENTS. 
  
  
          USE    BUFFERS
  
 D1       SET    *
          TITLE  PRESET ROUTINES. 
 PRS      SPACE  4,10 
**        PRS - PRESET. 
  
  
**        PRESET CODE NOT OVERLAID BY *CIO* BUFFERS.
  
  
 PRS33    REWIND U           CHECK VALIDATION FILES 
          REWIND P
          READ   U
          READ   P
          READW  U,TAUI,TAUIL 
          SA3    OPTION 
          SX6    ROPTB+UOPTB
          SX2    DMVR        * VALINDS READ ERROR.* 
          BX6    X6*X3
          ZR     X6,PRS34    IF NOT *R* OR *U* OPTION 
          NZ     X1,ABT      IF READ ERROR ON *VALINDS* 
 PRS34    READO  P           SET AVAILABLE DATA BLOCK 
          MX0    12 
          BX5    X0*X6
          READO  X2 
          SX2    DML0        * LEVEL-0 DATA BASE ERROR.*
          NZ     X1,ABT      IF TRANSFER NOT COMPLETE 
          NZ     X5,ABT      IF LEVEL NUMBER WRONG
          SA6    RAND 
          AX6    18          SET K-DISPLAY CREATION DATE
          EDATE  X6 
          SA6    DSCD 
          SA1    RAND        SET K-DISPLAY MODIFICATION DATE
          SX1    X1 
          EDATE  X1 
          SA6    DSMD 
          SA1    RAND        SET PRU OF AVAILABLE DATA BLOCK
          SB2    60-24
          AX6    X1,B2
          SA6    A1 
          REWIND P
 PRS35    OVERLAY  PRSA,100B,S
          GETPFP IAMA        GET MODIFIED FAMILY NAME 
          SA2    IAMA        MODIFIED FAMILY NAME 
          SA1    SSJ=+UIDS   GET ISSUING USER NAME
          BX7    X1 
          BX6    X2 
          SA1    OT          CHECK ORIGIN TYPE
          SX1    X1-SYOT
          SA7    IAMA+3 
          NZ     X1,PRS36    IF NOT SYSTEM ORIGIN 
          SA2    FN          CHECK ALTERNATE FAMILY 
          SB2    X2+1 
          ZR     B2,PRS36    IF NO ALTERNATE FAMILY 
          BX6    X2 
 PRS36    SA6    IAMA+1 
          SA1    UPFG        CHECK USER PROLOGUE FILE NAME FLAG 
          NZ     X1,UPR      IF USER PROLOGUE FILE NAME ENTERED 
          SA1    CHFG 
          NZ     X1,CHV      IF USER VALIDATION CHANGE
          SA1    AN          CHECK PASSWORD CHANGE
          NZ     X1,PSW      IF CHANGE PASSWORD 
          EQ     MOD         EXIT TO MAIN LOOP
  
  
 PRSA     CON    0LSFS
  
  
 D        SET    *
  
**        PRESET CODE AND DATA OVERLAID BY *VALIDUS* AND *VALINDS*
*         *CIO* BUFFERS.
  
  
 CHVAL    SB1    1           ENTRY
          SX6    B1 
          SX7    B0 
          SA6    CHFG        SET *CHVAL* FLAG 
          SA6    UF          SET UPDATE MODE
          SA7    OP          SUPPRESS NORMAL OPTIONS
          SA1    SSJ=+UIDS   CHECK FOR USER NAME
          SX2    DMCM        * INCORRECT COMMAND.*
          MX0    42 
          BX1    X0*X1
          ZR     X1,ABM      IF NO USER 
          BX7    X1 
          SA7    AN 
          EQ     MODVAL      MERGE INTO *MODVAL* FLOW 
  
 LIMITS   SB1    1           ENTRY
          SX7    -B1
          LX6    -6 
          SA7    LMFG 
          SA1    SSJ=+UIDS   CHECK USER NAME
          SX2    DMCM        * INCORRECT COMMAND.*
          MX0    42 
          BX1    X0*X1
          ZR     X1,ABM      IF NO USER 
          EQ     MODVAL 
  
 PASSWOR  SB1    1           ENTRY
          SA4    TARG        FWA ARGUMENT TABLE 
          SB6    TKPR        FWA KEYWORD/POSITION TABLE 
          SA5    CCDR        FWA COMMAND BUFFER 
          SB2    B0          NO PARAMETERS TO SKIP
          RJ     RSP         REMOVE SECURE PARAMETERS 
          SX6    B1 
          SX7    B0 
          SA6    LIDA        *PASSWOR* FLAG, NO OUTPUT
          SA7    OP          SUPPRESS NORMAL OPTIONS
          SA6    UF          SET UPDATE MODE
          SA6    PSWF        SET *PASSWOR* FLAG 
          EQ     MODVAL      MERGE INTO *MODVAL* FLOW 
  
 UPROC    SB1    1           ENTRY
          SX6    B1 
          SA6    UPFG        SET *UPROC* FLAG 
          SA6    UF          SET UPDATE MODE
          SX6    B0 
          SA6    OP          SUPPRESS NORMAL OPTIONS
          SA1    SSJ=+UIDS   CHECK USER NAME
          SX2    DMCM        * INCORRECT COMMAND.*
          MX0     42
          BX1    X0*X1
          ZR     X1,ABM      IF N0 USER 
          BX7    X1 
          SA7    AN 
          EQ     MODVAL      MERGE INTO *MODVAL* FLOW 
  
 GENVAL   SB1    1           ENTRY
          SX7    1RC         SET CREATE OPTION
          LX7    -6 
          SA7    PRSB 
          SA7    GENF        SET *GENVAL* FLAG
*         EQ     MODVAL      MERGE INTO *MODVAL* FLOW 
  
 MODVAL   SB1    1           ENTRY
          REPRIEVE  ABTB,SET,237B  SET *REPRIEVE* PROCESSING
          MESSAGE  CCDR,0,R  ISSUE COMMAND TO DAYFILE 
          MX6    30          SET VALIDATED FL RETURN
          SX7    TOV         SET TABLE OVERFLOW PROCESSOR ADDRESS 
          SA6    FLM
          SA7    TO 
          MEMORY CM,A6,R,,NA
          SA1    FLM         POSITION MAXIMUM FIELD LENGTH
          LX1    30 
          SX6    X1-FLIN
          SA6    FLM
          GETPP  PRSF,LPPG,PRSF  INITIALIZE PAGE PARAMETERS 
          PDATE  PD          SET DATE 
          SA1    PD 
          AX1    18 
          BX6    X1 
          SA2    TODV+ATPA   TERMINAL PROCESSING DEFAULTS 
          BX7    X2+X1
          SA6    A1          (PD) = MODIFICATION DATE 
          LX6    18 
          BX7    X7+X6
          SA7    TODV+ACCD   DEFAULT CREATION/MODIFICATION DATES
          SA1    CCDR        SPACE FILL COMMAND 
          SB3    8
 PRS      MX0    54 
          LX6    X1 
          BX5    -X0*X1 
          SB3    B3-B1
          NZ     X5,PRS1     IF NO FILL NEEDED
          RJ     SFN
 PRS1     SA6    A1 
          SA1    A1+B1
          NZ     B3,PRS      IF NOT COMPLETE
          MX6    0
          SA6    A6+B1
          SA1    JOPR        SET ORIGIN TYPE
          SX0    7777B
          LX1    -24
          BX7    X0*X1
          SA7    OT 
          SA3    LIDA        CHECK ENTRY
          SA4    ACTR 
          SB4    X4 
          ZR     X3,PRS4     IF NOT *PASSWOR* 
          MX0    42 
          SA1    SSJ=+UIDS   SET USER NAME
          SX2    DMCM        * INCORRECT COMMAND.*
          BX1    X0*X1
          ZR     X1,ABT      IF NO USER 
          BX6    X1 
          SA6    AN 
          SA3    SSJ=+AACS   CHECK USER ALLOWED TO CHANGE PASSWORD
          LX3    59-0 
          PL     X3,ABT      IF NO PERMISSION 
          SA1    O           SET POINTER FOR TERMINAL INTERACTION 
          SA3    ARGR        OLD PASSWORD 
          BX2    X0*X1
          SX1    A1 
          BX6    X1+X2
          SA6    A3 
          SA1    SSJ=+AACS    GET PASSWORD RANDOMIZATION REQUIRED BIT 
          MX6    -1 
          AX1    23 
          BX6    -X6*X1 
          SA6    OPWR 
          SX1    X7-IAOT
          SX7    DEPT        CHECK IF CHANGING BOTH PASSWORDS 
          NZ     X1,PRS1.0   IF NOT INTERACTIVE ORIGIN
          ZR     X7,PRS1.1   IF CHANGING BOTH PASSWORDS 
          SX7    APWI        SET INDEX TO CHANGE INTERACTIVE PASSWORD 
          EQ     PRS1.1      PROCESS PARAMETERS 
  
 PRS1.0   SX2    DMPB        * RANDOMIZATION NOT PERMITTED FROM BATCH.* 
          ZR     X6,ABT      IF PASSWORD RANDOMIZATION REQUIRED 
          ZR     X7,PRS1.1   IF CHANGING BOTH PASSWORDS 
          SX7    APSW        SET INDEX TO CHANGE BATCH PASSWORD 
 PRS1.1   SA7    PWIX 
          ZR     B4,PRS3     IF SECURE ENTRY
          SX2    DMSP        * SECURE PASSWORD ENTRY REQUIRED.* 
          ZR     X6,ABT      IF PASSWORD RANDOMIZATION REQUIRED 
          EQ     B4,B1,PRS2  IF INCORRECT ARGUMENT COUNT
          SA1    A3+B1
          BX7    X0*X3
          SA7    OPW         SAVE OLD PASSWORD
          SX5    X3-1R= 
          SX3    X3-2 
          BX6    X0*X1
          IX5    X5*X3
          SA6    NPW         SAVE NEW PASSWORD
          SX4    X1-1R= 
          SX1    X1-2 
          IX4    X4*X1
          IX4    X4*X5
          ZR     X4,PRS2     IF INCORRECT SEPARATOR FOR PASSWORDS 
          SB5    TARG        *PASSWOR* ARGUMENT TABLE 
          SA4    ARGR+2      FIRST KEYWORD POSITION 
          SB4    B4-2        REMAINING PARAMETER COUNT
          RJ     ARG         PROCESS OPTIONAL PARAMETERS
          ZR     X1,PRS3.1   IF NO ARGUMENT ERROR 
 PRS2     SX2    DMPA        * ERROR IN PASSWOR ARGUMENTS.* 
          EQ     ABT         ABORT
  
 PRS3     RJ     ESP         ENTER SECURE PARAMETERS
          SA1    NPW         COMPARE NEW AND VERIFICATION PASSWORDS 
          SX2    DMVE        * VERIFICATION ERROR.* 
          SA3    A1+B1
          ERRNG  NPW-VERPW+1  CODE REQUIRES CONTIGUOUS WORDS
          BX1    X1-X3
          NZ     X1,ABT      IF VERIFICATION ERROR
 PRS3.1   SA1    XD          GET EXPIRATION DATE
          SA5    XT          GET EXPIRATION TERM
          ZR     X1,PRS3.3   IF EXPIRATION DATE NOT SPECIFIED 
          NZ     X5,PRS2     IF EXPIRATION TERM ALSO SPECIFIED
          BX2    X2-X2
          RJ     VDT         VALIDATE AND CONVERT DATE
          NG     X6,PRS3.2   IF INCORRECT DATE
          NG     X1,PRS3.2   IF DATE ALREADY EXPIRED
          SX1    APXL 
          SX2    X1-7777B 
          ZR     X2,PRS3.6   IF LIMIT IS INFINITE 
          BX3    X6 
          RJ     ADT         CALCULATE LIMIT
          IX7    X6-X3
          BX6    X3 
          PL     X7,PRS3.6   IF DATE NOT PAST LIMIT 
 PRS3.2   SX2    DMPE        * PASSWORD EXPIRATION CHANGE INCORRECT.* 
          EQ     ABT         ABORT
  
 PRS3.3   SX6    -1 
          ZR     X5,PRS3.6   IF NO EXPIRATION TERM SPECIFIED
          SA1    =1L* 
          IX6    X1-X5
          SB7    B1 
          NZ     X6,PRS3.4   IF ASTERISK NOT SPECIFIED FOR TERM 
          SX6    APXL        SET MAXIMUM VALUE
          BX1    X6 
          EQ     PRS3.5      PROCESS MAXIMUM VALUE
  
 PRS3.4   RJ     DXB         CONVERT TERM VALUE 
          NZ     X4,PRS3.2   IF CONVERSION ERROR
          SX2    APXL        MAXIMUM TERM ALLOWED 
          IX1    X2-X6
          NG     X1,PRS3.2   IF VALUE OUT OF RANGE
          BX1    X6 
 PRS3.5   SX6    X6-7777B 
          ZR     X6,PRS3.6   IF NON-EXPIRING PASSWORD 
          SA2    PD 
          BX6    X2 
          ZR     X1,PRS3.6   IF IMMEDIATELY EXPIRING PASSWORD 
          RJ     ADT         ADD TERM VALUE TO PACKED DATE
 PRS3.6   SA6    XDATE
          SA5    OPW
          SA4    NPW
          SA1    OPWR 
          NZ     X1,PRS3.7   IF PASSWORD RANDOMIZATION NOT REQUIRED 
          RJ     RPW         RANDOMIZE PASSWORD 
          SA5    OPW
          SA4    NPW
 PRS3.7   RJ     EPW         ENCRYPT OLD PASSWORD 
          SA6    OLDPW
          BX5    X4 
          MX0    -6 
 PRS3.8   LX4    6           CHECK NEW PASSWORD FOR ASTERISKS 
          BX3    -X0*X4 
          ZR     X3,PRS3.9   IF PASSWORD CHECK COMPLETE 
          SX3    X3-1R* 
          NZ     X3,PRS3.8   IF VALID CHARACTER 
          SX2    DMIP        * INCORRECT PASSWORD.* 
          EQ     ABT         ABORT
  
 PRS3.9   LX7    X5 
          RJ     VPW         VERIFY NEW PASSWORD
          SX2    DMPS        * PASSWORD TOO SHORT.* 
          NZ     B2,ABT      IF NEW PASSWORD NOT REQUIRED LENGTH
          RJ     EPW         ENCRYPT NEW PASSWORD 
          SA6    NEWPW
          SA1    PT 
          ZR     X1,PRS31    IF PASSWORD TYPE NOT SPECIFIED 
          MX2    24 
          SB2    TPTI 
          RJ     STB         SEARCH FOR VALID PASSWORD TYPE 
          SX2    DMPA        * ERROR IN PASSWOR ARGUMENTS.* 
          ZR     X3,ABT      IF INVALID PASSWORD TYPE 
          SX6    X3 
          SA6    PWIX        SET PASSWORD DATA BLOCK INDEX
          EQ     PRS31       ATTACH VALIDATION FILE 
  
 PRS4     SA5    LMFG 
          SB5    PRST        *LIMITS* ARGUMENT EQUIVALENCE TABLE
          NZ     X5,PRS6     IF *LIMITS*
          SA5    UPFG 
          ZR     X5,PRS4.1   IF NOT *UPROC* 
          SX6    DMUP        * UPROC COMPLETE.* 
          SA6    MODA 
          SX6    PRSV        *UPROC* ARGUMENT EQUIVALENCE TABLE 
          SX7    PRSVL       SET ARGUMENT TABLE LENGTH
          RJ     PKP         PROCESS KEYWORD OR POSITIONAL ARGUMENTS
          PL     X1,PRS31    IF NO ERROR
          SX2    DMUA        * ERROR IN UPROC ARGUMENTS.* 
          EQ     ABT         ABORT
  
 PRS4.1   SA5    CHFG 
          ZR     X5,PRS4.2   IF NOT *CHVAL* 
          SB5    PRSAA       *CHVAL* ARGUMENT EQUIVALENCE TABLE 
          SA4    ARGR 
          RJ     ARG         PROCESS ARGUMENTS
          SA3    CHVB 
          SX2    DMCA        * ERROR IN CHVAL ARGUMENTS.* 
          ZR     X3,ABT      IF NO PARAMETERS 
          NZ     X1,ABT      IF ERROR 
          EQ     PRS31       ATTACH VALIDATION FILE 
  
 PRS4.2   SA5    GENF 
          ZR     X5,PRS4.4   IF NOT *GENVAL*
          SX2    DMIA        * USER ACCESS NOT VALID.*
          NZ     X7,ABT      IF NOT SYSTEM ORIGIN 
          SB5    PRSAB       *GENVAL* ARGUMENT EQUIVALENCE TABLE
          SA4    ARGR 
          RJ     ARG         PROCESS ARGUMENTS
          ZR     X1,PRS4.3   IF NO ERROR
          SX2    DMGA        * ERROR IN GENVAL ARGUMENTS.*
          EQ     ABT         ABORT
  
 PRS4.3   RJ     CAF         CHECK ALTERNATE FAMILY 
          SETUI  SYUI        SET SYSTEM USER INDEX
          SA1    N           SET LOCAL FILE NAME
          BX6    X1 
          SA6    P
          SA1    P           SET ERROR PROCESSING 
          RJ     SEP
          DEFINE P,,,,,,,,,IP  DEFINE VALIDATION FILE 
          SA1    P
          RJ     CER         CHECK ERROR
          RJ     CEP         CLEAR ERROR PROCESSING 
          SA1    U           SET ERROR PROCESSING 
          RJ     SEP
          DEFINE U,,,,,,,,,IP  DEFINE USER INDEX FILE 
          SA1    U
          RJ     CER         CHECK ERROR
          RJ     CEP         CLEAR ERROR PROCESSING 
          EQ     PRS14.1     PROCESS CREATION 
  
 PRS4.4   NZ     X7,PRS5     IF NOT SYSTEM ORIGIN 
          ZR     B4,PRS12    IF NO PARAMETERS 
 PRS5     SB5    PRSE        *MODVAL* ARGUMENT EQUIVALENCE TABLE
 PRS6     SA4    ARGR        CRACK COMMAND
          RJ     ARG
          NZ     X1,PRS26    IF INCORRECT PARAMETER 
          SA5    LMFG 
          NZ     X5,PRS13    IF *LIMITS*
          SA1    PRSL        CONVERT CONVERSION OPTIONS 
          MX0    6
 PRS7     BX2    X0*X1
          LX1    6
          ZR     X2,PRS9     IF NO MORE OPTIONS 
          SA3    PRSU        CHECK OPTION TABLE 
 PRS8     ZR     X3,PRS26    IF INCORRECT OPTION
          BX4    X2-X3
          BX4    X0*X4
          SA3    A3+B1
          NZ     X4,PRS8     IF NO MATCH
          SA5    A3-B1       SET OPTION 
          LX5    -18
          SX6    X5 
          LX5    18 
          SA6    X5 
          EQ     PRS7        LOOP FOR NEXT OPTION 
  
 PRS9     SA1    CVA         CHECK IF *CV=A* SPECIFIED
          ZR     X1,PRS9.1   IF NOT SPECIFIED 
          SA1    =0LSTANDARD
          BX6    X1 
          SA6    TTCI+ATCN+1
 PRS9.1   SA1    LO          CRACK LIST OPTIONS 
          BX6    X6-X6
          MX0    6
          SA6    A1+
 PRS10    BX2    X0*X1
          LX1    6
          ZR     X2,PRS13    IF NO MORE OPTIONS 
          SA3    PRSO        CHECK OPTION TABLE 
 PRS11    ZR     X3,PRS26    IF INCORRECT OPTION
          BX4    X2-X3
          BX4    X4*X0
          SA3    A3+B1
          NZ     X4,PRS11    IF NO MATCH
          SA5    A3-B1       SET OPTION 
          LX5    -18
          SX6    X5 
          LX5    18 
          SA6    X5 
          EQ     PRS10       LOOP FOR NEXT LIST OPTION
  
*         CRACK OPTIONS.
  
 PRS12    SX7    1RK         SET K-DISPLAY OPTION 
          LX7    -6 
          SA7    PRSB 
 PRS13    RJ     CAF         CHECK ALTERNATE FAMILY 
          NZ     X6,PRS26    IF FAMILY CHANGE NOT ALLOWED 
          SX2    O           SET OUTPUT FILE TERMINAL STATUS
          RJ     STF
          NZ     X6,PRS14    IF NOT TERMINAL FILE 
          SA1    =1H         CLEAR CARRIAGE CONTROL 
          BX7    X1 
          SA7    CLNA 
          SA1    =1L         CLEAR CARRIAGE CONTROL FROM *LIMITS* TITLE 
          SA2    LITL 
          MX7    -54
          BX7    -X7*X2 
          BX7    X1+X7
          SA7    A2 
 PRS14    SA6    OF 
          WRITEW O,PRSF,X6   CONDITIONALLY WRITE FORMAT EFFECTOR
          SA1    O           SET POINTER FOR TERMINAL INTERACTION 
          MX0    42 
          BX6    X0*X1
          SX2    A1 
          BX6    X2+X6
          SA6    ARGR 
 PRS14.1  SA1    PRSB        *OP* EQUIVALENCE 
          MX0    6
          BX6    X6-X6
 PRS15    BX5    X0*X1       GET OPTION CHARACTER 
          LX1    6
          ZR     X5,PRS17    IF NO MORE OPTIONS 
          SB3    B0+
 PRS16    SA3    PRSC+B3
          ZR     X3,PRS26    IF END OF TABLE
          SB3    B3+B1
          BX2    X5-X3
          NZ     X2,PRS16    IF NOT ENTRY 
          SB3    B3-B1       SET OPTION IN CONTROL WORD 
          SX2    B1 
          LX2    X2,B3
          BX6    X6+X2
          EQ     PRS15       GET NEXT ENTRY 
  
 PRS17    SA1    LMFG 
          ZR     X1,PRS17.1  IF NOT *LIMITS*
          SX6    IOPTB
 PRS17.1  SA6    OPTION      SET OPTION CONTROL WORD
          RJ     CFN         CHECK FOR FILE NAME CONFLICT 
          ZR     X1,PRS19    IF NO FILE NAME CONFLICT 
          SB2    1RX         SET SEARCH CHARACTER 
          SB5    DMFC        * FILE NAME CONFLICT - LFN.* 
          RJ     SNM         ENTER FILE NAME IN MESSAGE 
          SX2    B5 
          EQ     ABT         PROCESS ERROR
  
 PRS19    SA2    OPTION 
          SX1    UOPTB+ROPTB+SOPTB
          LX6    X2 
          BX2    -X1*X2 
          SA3    FA 
          LX6    59-COPT
          BX4    X3+X2
          SA1    RP          CHECK FOR *RP* PARAMETER 
          CX3    X6 
          AX3    1
          NG     X6,PRS20    IF CREATE RUN
          NZ     X1,PRS26    IF *RP* SPECIFIED AND NOT CREATE RUN 
          SA1    SI          CHECK FOR *SI* PARAMETER 
          NZ     X1,PRS26    IF *SI* SPECIFIED AND NOT CREATE RUN 
          ZR     X4,PRS33    IF NO SPECIAL OPTIONS AND *FA* NOT SET 
          ZR     X2,PRS29    IF NO SPECIAL OPTIONS
          EQ     PRS22       CHECK SPECIAL OPTIONS
  
*         PROCESS SPECIAL OPTIONS.
  
 PRS20    NZ     X3,PRS26    IF CREATE NOT ALONE
          SA1    UIIW        SET *CREATE* DATA IDENTIFIERS
          MX7    0
          BX6    X1 
          SA7    FUIW+1 
          SA6    A7-1 
          SA3    SI          CHECK FOR *SI* PARAMETER 
          NZ     X3,PRS21    IF SOURCE INPUT
          SX6    PRSDN       SET NUMBER OF PRIVILEGED INPUT DIRECTIVES
          SA6    LIDA 
          WRITEW I,PRSD,PRSDL  SET DIRECTIVES IN INPUT BUFFER 
 PRS21    EVICT  N           INITIALIZE FILES 
          EVICT  U
          SX0    9           RESERVE 1ST LEVEL 0 PLUS 8 SECTORS 
 PRS21.1  WRITER N,R
          SX0    X0-1 
          NZ     X0,PRS21.1  IF MORE SECTORS TO RESERVE 
          EQ     PRS35       LOAD FILE SUPERVISOR 
  
 PRS22    LX6    COPT-IOPT
          PL     X6,PRS23    IF NOT INQUIRE OPTION
          NZ     X3,PRS26    IF INQUIRE NOT ALONE 
          SA1    P
          RJ     SEP         SET ERROR PROCESSING 
          ATTACH P,,,,RM,,,IP,MA  ATTACH *VALIDUS* FILE 
          EQ     PRS32       CHECK FOR ERROR ON ATTACH
  
 PRS23    LX6    IOPT-LOPT
          PL     X6,PRS24    IF NOT LIST OPTION 
          NZ     X3,PRS26    IF LIST NOT ALONE
          SA1    PRSP        PRESET SCRATCH FILES 
          SA2    A1+B1
          BX7    X1 
          SA7    N
          LX7    X2 
          SA7    S
          RETURN S
          RETURN N
          SA1    PRSQ 
          NZ     X1,PRS33    IF LOCAL FILE CATALOG
          EQ     PRS29       CHECK ORIGIN TYPE
  
 PRS24    LX6    LOPT-ZOPT
          PL     X6,PRS28    IF NOT COMMAND INPUT OPTION
          SB2    CCDR        GET DIRECTIVES FROM COMMAND
          RJ     USB
          SA1    B6+         SKIP TO TERMINATOR 
          SX3    4100B       SET TERMINATOR MASK
 PRS25    SB2    X1-1R9 
          AX2    X3,B2
          SA1    A1+1 
          LX2    59 
          NG     X2,PRS27    IF TERMINATOR
          NZ     X1,PRS25    IF NOT END OF COMMAND
 PRS26    SX2    DMMA        * ERROR IN MODVAL ARGUMENTS.*
          SA3    LMFG 
          ZR     X3,ABT      IF NOT *LIMITS*
          SX2    DMLA        * ERROR IN LIMITS ARGUMENTS.*
          EQ     ABT         ABORT
  
 PRS27    SB6    A1          SET STRING BUFFER
          SB7    B7-B6
          WRITES I,B6,B7+B1 
          SX6    ZOPTB
          SA6    OPTION 
          EQ     PRS29       PRESET SYSTEM FILE 
  
 PRS28    LX6    ZOPT-KOPT
          PL     X6,PRS33    IF NOT K-DISPLAY 
          SX6    KOPTB
          SA6    OPTION 
  
*         PRESET SYSTEM FILE. 
  
 PRS29    SA1    OT          CHECK ORIGIN TYPE
          SX1    X1-SYOT
          NZ     X1,PRS26    IF NOT SYSTEM ORIGIN 
          SETUI  SYUI 
          RJ     CSM         CHECK SECURITY MODE
          SX2    DMIA        * USER ACCESS NOT VALID.*
          NZ     X1,ABT      IF CALLER NOT VALID
          SA1    OPTION 
          SX2    KOPTB
          BX2    X1*X2
          ZR     X2,PRS30    IF NOT K-DISPLAY 
          SX3    PRSAC
          RJ     PRK         PRESET K-DISPLAY BUFFER
 PRS30    SA1    U
          RJ     SEP         SET ERROR PROCESSING 
          SETRNR NOROLL      PREVENT ROLLOUT
          SETPR  MVCS 
          ATTACH U,,,,W,,,IP SET AVAILABLE USER INDICES 
          SA1    U
          SB4    PRS30
          RJ     CER         CHECK ERROR
          RJ     CEP         CLEAR ERROR PROCESSING 
 PRS31    SA1    P
          RJ     SEP         SET ERROR PROCESSING 
          SETRNR NOROLL      PREVENT ROLLOUT
          SETPR  MVCS 
          ATTACH P,,,,M,,,IP,MA  INTERLOCK UPDATE 
 PRS32    SA1    P
          SB4    PRS31
          RJ     CER         CHECK ERROR
          RJ     CEP         CLEAR ERROR PROCESSING 
          SX6    1           SET SYSTEM FILES ATTACHED FLAG 
          SA6    RAPF 
          SX6    B1+
          SA6    CERA        FORCE ABORT WHEN ERROR ENCOUNTERED 
          EQ     PRS33       CHECK VALIDATION FILES 
 PRS      SPACE  4,10 
 PRSB     CON    1LU         OPTION EQUIVALENCE STRING
 PRS      SPACE  4,10 
**        OPTION TABLE. 
  
  
 PRSC     INDEX  CON,LOPT+1,( * ) 
          INDEX  ,KOPT,( 1LK )
          INDEX  ,COPT,( 1LC )
          INDEX  ,UOPT,( 1LU )
          INDEX  ,ROPT,( 1LR )
          INDEX  ,SOPT,( 1LS )
          INDEX  ,ZOPT,( 1LZ )
          INDEX  ,LOPT,( 1LL )
          CON    0
 PRS      SPACE  4,10 
 CUE$     IFEQ   CUE$,2 
 HSUI     OCTMIC HSUI 
 CUE$     ENDIF 
 SUBF0    OCTMIC SBUI 
 SUBF1    OCTMIC SBUI+1 
 SUBF2    OCTMIC SBUI+2 
 SUBF3    OCTMIC SBUI+3 
 SUBF4    OCTMIC SBUI+4 
 SUBF5    OCTMIC SBUI+5 
 SUBF6    OCTMIC SBUI+6 
 SUBF7    OCTMIC SBUI+7 
 NTUI     OCTMIC NTUI 
 PLUI     OCTMIC PLUI 
 AAUI     OCTMIC AAUI 
 IFUI     OCTMIC IFUI 
 LIUI     OCTMIC LIUI 
 SYUI     OCTMIC SYUI 
  
 PRSD     BSS    0           TABLE OF DEFAULT USER NAMES FOR *OP=C* 
          DATA   C*/SUBFAM0,UI="SUBF0"B,AW=ALL,PW=SUBFAM0,XT=0.*
          DATA   C*/SUBFAM1,UI="SUBF1"B,AW=ALL,PW=SUBFAM1,XT=0.*
          DATA   C*/SUBFAM2,UI="SUBF2"B,AW=ALL,PW=SUBFAM2,XT=0.*
          DATA   C*/SUBFAM3,UI="SUBF3"B,AW=ALL,PW=SUBFAM3,XT=0.*
          DATA   C*/SUBFAM4,UI="SUBF4"B,AW=ALL,PW=SUBFAM4,XT=0.*
          DATA   C*/SUBFAM5,UI="SUBF5"B,AW=ALL,PW=SUBFAM5,XT=0.*
          DATA   C*/SUBFAM6,UI="SUBF6"B,AW=ALL,PW=SUBFAM6,XT=0.*
          DATA   C*/SUBFAM7,UI="SUBF7"B,AW=ALL,PW=SUBFAM7,XT=0.*
          DATA   C*/NETOPS,UI="NTUI"B,AW=ALL,PW=NETOPSX,AP=ALL,RL=ALL,* 
          DATA   C*XT=0.* 
          DATA   C*/CYBISMF,UI="PLUI"B,AW=ALL,PW=CYBISMF,XT=0.* 
          DATA   C*/APPLLIB,UI="AAUI"B,AW=ALL,PW=APPLLIB,XT=0.* 
          DATA   C*/FLAWPF,UI="IFUI"B,AW=ALL,PW=FLAWPFX,XT=0.*
          DATA   C*/LIBRARY,UI="LIUI"B,AW=ALL,PW=LIBRARY,RL=ALL,XT=0.*
          DATA   C*/SYSTEMX,UI="SYUI"B,AW=ALL,PW=SYSTEMX,RL=ALL,* 
          DATA   C*SAV=ALL,SAL=ALL.*
 CUE$     IFEQ   CUE$,2 
          DATA   C*/CDCCHS,UI="HSUI"B,RL=ALL,IS=BATCH,AW=NUL,AW=CLPF,*
          DATA   C*AW=CSPF,AW=CNRD,AW=CASF,AW=CSRP,SH=RMSHELL,SO=SLID,* 
          DATA   C*SO=BCSM,SO=CCLM,AW=CAND,AW=CCNR,AW=CMNT,*
          DATA   C*AW=COPR,SAV=NUL,SAV=CULT,SAV=COLD,AP=NUL,AP=IAF,*
          DATA   C*AP=RBF,PX=HALF,TT=TTY,PA=EVEN,XT=0,PW=CDCCE,SC=10B.* 
 CUE$     ENDIF 
 PRSDL    EQU    *-PRSD      LENGTH OF INPUT DIRECTIVE BLOCK
 PRSDN    EQU    16          NUMBER OF DEFAULT USER NAME INPUT LINES
 PRS      SPACE  4,10 
**        *MODVAL* COMMAND PARAMETERS.
  
  
 PRSE     BSS    0
 I        ARG    I,I,400B    INPUT FILE 
 L        ARG    O,O         LIST FILE
 P        ARG    P,P         *VALIDUS* FILE 
 N        ARG    N,N         NEW *VALIDUS* FILE 
 S        ARG    S,S         SOURCE FILE
 U        ARG    U,U         USER INDEX FILE
 OP       ARG    PRSB,PRSB   OPTIONS
 FM       ARG    FN,FN,400B  ALTERNATE FAMILY NAME
 CV       ARG    PRSL,PRSL   CONVERSION OPTIONS 
 LO       ARG    PRSN,LO     LIST OPTIONS 
 D        ARG    -PRSN,DB    DEBUG MODE 
 FA       ARG    -PRSN,FA    FORCE FAST ATTACH FLAG 
 RP       ARG    -PRSN,RP    PASSWORD NOT REQUIRED
 SI       ARG    -PRSN,SI    SOURCE INPUT 
          CON    0           END OF TABLE 
          SPACE  4,10 
 PRSF     BSS    2           PAGE PARAMETER RESPONSE BLOCK
 PRS      SPACE  4,10 
 PRSL     CON    0           CONVERSION PARAMETERS
  
 PRSN     CON    0LEN        ALTERNATE DEFAULT LIST OPTIONS 
 PRS      SPACE  4,10 
**        LIST OPTION TABLE.
  
  
 PRSO     VFD    24/0LE,18/1,18/EL  ERRORS ONLY 
          VFD    24/0LA,18/0,18/LO  ALPHA CATALOG 
          VFD    24/0LN,18/42,18/LO NUMERIC CATALOG 
          VFD    24/0LL,18/1,18/PRSQ  LOCAL FILE CATALOG
          CON    0
 PRS      SPACE  4,10 
 PRSP     CON    0LZZZZZG1+3  SCRATCH FILE NAMES
          CON    0LZZZZZG2+3
          CON    0LSCR1+3 
 PRS      SPACE  4,10 
 PRSQ     CON    0           LOCAL FILE CATALOG FLAG
          SPACE  4,10 
**        *LIMITS* COMMAND PARAMETERS.
  
  
 PRST     BSS    0
 L        ARG    O,O         LIST FILE
          CON    0           END OF TABLE 
          SPACE  4,10 
**        CONVERSION OPTION TABLE.
  
  
 PRSU     VFD    24/0LA,18/1,18/CVA  *CV=A* CONVERSION OPTION 
          VFD    24/0LC,18/1,18/CVC  *CV=C* CONVERSION OPTION 
          VFD    24/0LD,18/1,18/CVD  *CV=D* CONVERSION OPTION 
          VFD    24/0LF,18/1,18/CVF  *CV=F* CONVERSION OPTION 
          VFD    24/0LG,18/1,18/CVG  *CV=G* CONVERSION OPTION 
          VFD    24/0LH,18/1,18/CVH  *CV=H* CONVERSION OPTION 
          VFD    24/0LJ,18/1,18/CVJ  *CV=J* CONVERSION OPTION 
          VFD    24/0LK,18/1,18/CVK  *CV=K* CONVERSION OPTION 
          CON    0           END OF TABLE 
          SPACE  4,10 
**        *UPROC* COMMAND PARAMETERS. 
  
  
 PRSV     BSS    0
 FN       ARG    UPFN,UPFN   USER PROLOGUE FILE NAME
          CON    0           END OF TABLE 
 PRSVL    EQU    *-PRSV-1    ARGUMENT TABLE LENGTH
          SPACE  4,10 
**        *CHVAL* COMMAND PARAMETERS. 
  
  
 PRSAA    BSS    0
 UC       ARG    CHVB,CHVB   USER DEFAULT SERVICE CLASS 
          CON    0           END OF TABLE 
 PRSAAL   EQU    *-PRSAA     LENGTH OF ARGUMENT TABLE 
          SPACE  4,10 
*         *GENVAL* COMMAND PARAMETERS.
  
  
 PRSAB    BSS    0
 FM       ARG    FN,FN,400B  FAMILY NAME
          CON    0           END OF TABLE 
          SPACE  4,10 
*         Y-COORDINATE TABLE. 
  
 PRSAC    KDL    *
  
 PRK      HERE               REMOTE BLOCK FROM *COMCDCP*
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMCUSB 
          SPACE  4,10 
**        PRESET SUBROUTINES AND DATA NOT OVERLAID BY INPUT AND 
*         OUTPUT CIO BUFFERS. 
 DEL      SPACE  4,15 
**        DEL - DELAY FOR A SPECIFIED PERIOD. 
* 
*         ENTRY  (X2) = DELAY PERIOD (SECONDS). 
* 
*         USES   X - 0, 1, 3. 
*                A - 1, 3.
* 
*         MACROS RECALL, RTIME. 
  
  
 DEL      SUBR               ENTRY/EXIT 
          RTIME  DELA        START CLOCK
          SA3    DELA 
          MX0    -24         ISOLATE SECONDS
          LX3    -36
          BX3    -X0*X3 
          IX3    X3+X2       CALCULATE END OF INTERVAL
 DEL1     RECALL
          RTIME  DELB        CALCULATE ELAPSED TIME 
          SA1    DELB 
          LX1    -36         ISOLATE SECONDS
          BX1    -X0*X1 
          IX1    X1-X3
          NG     X1,DEL1     IF PERIOD NOT ELAPSED
          EQ     DELX        RETURN 
  
  
 DELA     BSS    1           START TIME 
 DELB     BSS    1           CURRENT TIME 
 ESP      SPACE  4,35 
**        ESP - ENTER SECURE PASSWORDS. 
* 
*         *ESP* PROCESSES SECURELY ENTERED PASSWORDS AND
*         PASSWORD EXPIRATION DATE OR TERM VALUES.
*         IF THE *OUTPUT* FILE IS ASSIGNED TO THE TERMINAL, MESSAGES
*         WILL BE SENT TO THE TERMINAL REQUESTING EACH PASSWORD.
*         THE *INPUT* FILE WILL THEN BE READ FOR ALL PARAMETERS.
*         IF RANDOM CHARACTERS ARE TO BE APPENDED TO THE NEW PASSWORD 
*         EITHER THE INTERACTIVE OR BATCH PASSWORD MUST BE SPECIFIED. 
*         A MESSAGE WILL BE SENT TO THE TERMINAL TO REQUEST THE 
*         PASSWORD EXPIRATION DATE OR TERM IF THE USER IS 
*         PERMITTED TO CHANGE THE PASSWORD EXPIRATION.
*         FOR BATCH JOBS, FILE *INPUT* WILL BE READ FOR THE 
*         PASSWORDS AND OPTIONAL EXPIRATION DATE/TERM.
* 
*         EXIT   (OPW) = OLD PASSWORD.
*                (NPW) = NEW PASSWORD.
*                (VERPW) = VERIFICATION OF NEW PASSWORD.
*                (XD) = PASSWORD EXPIRATION DATE. 
*                (XT) = PASSWORD EXPIRATION TERM. 
*                (PWIX) = PASSWORD DATA BLOCK INDEX.
* 
*         ERROR  TO *ABT*.
* 
*         USES   X - ALL. 
*                A - 0, 1, 2, 3, 4, 6, 7. 
*                B - 2, 3, 4, 5, 6. 
* 
*         CALLS  STB, STF, USB. 
* 
*         MACROS CSET, GETUSV, MOVE, READ, READC, READO, TSTATUS, 
*         WRITE, WRITEC.
  
  
 ESP16    MX6    -30
          BX6    -X6*X7 
          NZ     X6,ESP17    IF EXPIRATION DATE SPECIFIED 
          SA7    XT          SET EXPIRATION TERM
          SA6    XD          CLEAR EXPIRATION DATE
 ESP17    NZ     X5,ESPX     IF MUX TERMINAL OR NOT TERMINAL OUTPUT 
          WRITEC O,PWOM      OVERWRITE PASSWORD 
          WRITEC O,TRMB      RESET CURSOR POSITIONING 
  
 ESP      SUBR               ENTRY/EXIT 
          TSTATUS TSTB       CHECK TERMINAL TYPE
          SX2    O           CHECK IF OUTPUT ASSIGNED TO TERMINAL 
          RJ     STF
          BX5    X6 
          NZ     X5,ESP1     IF NOT TERMINAL OUTPUT 
          SA1    TSTB+1      GET NETWORK TYPE 
          AX1    54-0 
          NZ     X1,ESP1     IF NETWORK TERMINAL
          MX5    1           SET MUX TERMINAL 
 ESP1     WRITE  O,*         PRESET WRITE FUNCTION FOR OUTPUT FILE
          SX2    I           CHECK IF INPUT ASSIGNED TO TERMINAL
          RJ     STF
          BX0    X6 
          NZ     X0,ESP3     IF INPUT NOT ASSIGNED TO TERMINAL
          CSET   NORMAL      ENSURE TERMINAL IN NORMAL MODE 
  
*         READ PASSWORD ORIGIN TYPE.
  
          SB2    X5 
          GT     B2,B0,ESP2  IF NOT TERMINAL OUTPUT 
          SA1    OPWR 
          ZR     X1,ESP1.1   IF PASSWORD RANDOMIZATION REQUIRED 
          WRITEC O,POMH      ISSUE PASSWORD TYPE MESSAGE
          EQ     ESP2        READ RESPONSE
  
 ESP1.1   WRITEC O,POMG      ISSUE PASSWORD TYPE MESSAGE
 ESP2     READ   I           READ PASSWORD ORIGIN TYPE
          READO  I
          NZ     X1,ESP4     IF NO INPUT, ASSUME INTERACTIVE
          BX1    X6          VALIDATE PASSWORD ORIGIN TYPE
          MX2    24 
          SB2    TPTI 
          RJ     STB         SEARCH TABLE 
          SX2    DMPA        * ERROR IN PASSWOR ARGUMENTS.* 
          ZR     X3,ABT      IF PASSWORD TYPE NOT FOUND 
          MX6    -18
          BX6    -X6*X3      SET PASSWORD DATA BLOCK INDEX
          SA6    PWIX 
          EQ     ESP4        PROMPT FOR PASSWORD
  
 ESP3     SX2    DMIN        /*INPUT* NOT ASSIGNED TO TERMINAL./
          SA3    OPWR 
          ZR     X3,ABT      IF PASSWORD RANDOMIZATION REQUIRED 
          SX5    1           SET NO TERMINAL OUTPUT 
  
*         SEND MESSAGE TO TERMINAL REQUESTING PASSWORD. 
  
 ESP4     SA0    -B1         SET FLAG FOR FIRST PARAMETERS
          NZ     X5,ESP5     IF MUX TERMINAL OR NOT TERMINAL OUTPUT 
          WRITEC O,TRMA      SET NO LINE FEED AFTER ENTERING PASSWORD 
          EQ     ESP6        SEND PASSWORD MESSAGE
  
 ESP5     NG     X5,ESP6     IF MUX TERMINAL
          NZ     X5,ESP7     IF NOT TERMINAL OUTPUT 
          WRITEC O,PWOM      OVERWRITE PASSWORD 
 ESP6     WRITEC O,PSMG      WRITE PASSWORD REQUEST 
  
*         READ *INPUT* FILE FOR SECURE ENTRY OF PASSWORDS AND 
*         PASSWORD EXPIRATION DATE/TERM.
  
 ESP7     READ   I           READ INPUT FOR PASSWORDS AND EXPIRATION
          READC  I,PSBF,PSBFL 
          BX7    X7-X7       CLEAR PARAMETER ASSEMBLY REGISTER
          SB3    B0          INDICATE BUFFER EXHAUSTED
          SB5    60          INITIALIZE ASSEMBLY SHIFT COUNT
          SB4    B0          INDICATE BUFFER EXHAUSTED REQUIRED 
          ZR     X0,ESP8     IF TERMINAL INPUT
          SB4    B1          INDICATE SEPARATOR REQUIRED
 ESP8     NG     X1,ESP10    IF EOF/EOI ENCOUNTERED 
          NZ     X1,ESP10    IF EOR ENCOUNTERED 
          SB2    PSBF        UNPACK DATA TO STRING BUFFER 
          RJ     USB
  
*         ASSEMBLE PASSWORD OR PASSWORD EXPIRATION DATE/TERM. 
  
 ESP9     SB3    B0 
          GT     B6,B7,ESP10 IF END OF BUFFER 
          SA1    B6 
          SB6    B6+B1
          SX6    X1-1R
          SB3    X1 
          ZR     X6,ESP9     IF BLANK CHARACTER 
          SA3    ILCM        GET INCORRECT CHARACTER MASK 
          SA4    SEPM        GET SEPARATOR MASK 
          LX3    B3 
          AX4    B3 
          NG     X3,ESP11    IF INCORRECT CHARACTER 
          LX4    -1 
          SB3    B1 
          NG     X4,ESP10    IF SEPARATOR ENCOUNTERED 
          SB5    B5-6 
          LX7    6
          SB3    18 
          BX7    X7+X1
          LT     B5,B3,ESP11 IF PASSWORD OR EXPIRATION TOO LONG 
          EQ     ESP9        CONTINUE ASSEMBLING PASSWORD OR EXPIRATION 
  
*         CHECK TERMINATION CONDITION.
  
 ESP10    LX7    B5          LEFT JUSTIFY PARAMETER 
          GT     B4,B1,ESP12 IF EITHER TERMINATION CONDITION ALLOWED
          EQ     B3,B4,ESP12 IF CORRECT TERMINATION CONDITION 
 ESP11    SX2    DMIP        * INCORRECT PASSWORD.* 
          SB2    A0+
          LE     B2,B1,ESP15 IF ASSEMBLING PASSWORD 
          SX2    DMPE        * PASSWORD EXPIRATION CHANGE INCORRECT.* 
          EQ     ESP15       ABORT
  
*         SAVE ASSEMBLED PASSWORD OR PASSWORD EXPIRATION DATE/TERM. 
  
 ESP12    SA0    A0+B1
          SB2    A0 
          SA7    OPW+B2 
          SB4    B1+B1       INDICATE OPTIONAL PARAMETER MAY FOLLOW 
          GT     B2,B4,ESP16 IF PASSWORD EXPIRATION ASSEMBLED 
          BX7    X7-X7       CLEAR PARAMETER ASSEMBLY REGISTER
          SB5    60          INITIALIZE ASSEMBLY SHIFT COUNT
          EQ     B2,B4,ESP13 IF ALL PASSWORDS ASSEMBLED 
          EQ     B2,B1,ESP12.1  IF OLD AND NEW PASSWORDS ASSEMBLED
          NZ     X0,ESP9     IF NOT TERMINAL INPUT
          SA1    PSMG        SET MESSAGE TO *NEW PASSWORD*
          MX2    42 
          LX1    -18
          SX3    3RNEW
          BX6    X2*X1
          BX6    X6+X3
          LX6    18 
          SA6    A1 
          EQ     ESP5        READ SECOND PASSWORD 
  
 ESP12.1  SA1    NPW         PRESET VERIFICATION PASSWORD 
          BX7    X1 
          NZ     X0,ESP12    IF NOT TERMINAL INPUT
          SA1    OPWR 
          ZR     X1,ESP12    IF PASSWORD RANDOMIZATION REQUIRED 
          MOVE   PSMHL,PSMH,PSMG
          EQ     ESP5        VERIFY NEW PASSWORD
  
 ESP13    ZR     X0,ESP14    IF TERMINAL INPUT
          SB4    B0+         INDICATE BUFFER EXHAUSTED REQUIRED 
          EQ     B3,B1,ESP9  IF SEPARATOR ENCOUNTERED 
          EQ     ESP17       RETURN 
  
 ESP14    GETUSV PSBF 
          SA1    PSBF        GET JOB *JSCW* WORD
          NG     X1,ESP17    IF USER IS SECURITY ADMINISTRATOR
          LX1    59-57
          PL     X1,ESP17    IF USER NOT ALLOWED TO CHANGE EXPIRATION 
  
*         SET EXPIRATION DATE PROMPT MESSAGE. 
  
          MOVE   PSMJL,PSMJ,PSMG
          EQ     ESP5        ASSEMBLE EXPIRATION
  
 ESP15    NZ     X5,ABT      IF MUX TERMINAL OR NOT TERMINAL OUTPUT 
          BX5    X2          SAVE ERROR MESSAGE 
          WRITEC O,PWOM      OVERWRITE PASSWORD 
          WRITEC O,TRMB      RESET CURSOR POSITIONING 
          BX2    X5 
          EQ     ABT         ABORT
  
 TPTI     BSS    0           TABLE OF PASSWORD TYPE IDENTIFIERS 
          VFD    24/0LI,18/0,18/APWI  INTERACTIVE 
          VFD    24/0LB,18/0,18/APSW  BATCH 
          VFD    24/0LIB,18/0,18/0    BOTH
          VFD    24/0LBI,18/0,18/0    BOTH
          CON    0                    END OF TABLE
  
  
 ILCM     CON    610000B     INCORRECT CHARACTER MASK 
 SEPM     CON    77772466000000000001B  SEPARATOR MASK
  
 PSBFL    EQU    8           PASSWORD BUFFER LENGTH 
 PSBF     BSS    PSBFL       PASSWORD BUFFER
  
*         PASSWORD TYPE MESSAGE.
  
 POMG     DATA   C*"EM"  INTERACTIVE (I) OR BATCH (B): *
 POMH     DATA   C*"EM"  INTERACTIVE (I), BATCH (B), OR BOTH (IB): *
  
*         MESSAGES FOR SECURE ENTRY OF PASSWORDS AND EXPIRATION DATES.
  
 PSMG     DATA   10H"EM"  OLD PA
          DATA   10HSSWORD: "NL"
          DATA   10H  ((((((((
          DATA   10H(((((("CR"
          DATA   10H))))))))))
          DATA   10H))))"CR"  MM
          DATA   10HMMMMMMMMMM
          DATA   10HMM"CR"  QQQQ
          DATA   10HQQQQQQQQQQ
          DATA   10H"CR"  XXXXXX
          DATA   10HXXXXXXXX"CR"
          DATA   10H
          DATA   10H      "CR""CB"
          CON    0
 PSMGL    EQU    *-PSMG 
  
*         PASSWORD VERIFICATION MESSAGE.
  
 PSMH     DATA   10H"EM"  PLEASE
          DATA   10H REENTER N
          DATA   10HEW PASSWOR
          DATA   10HD FOR VERI
          DATA   10HFICATION: 
          DATA   10H"NL"  ((((((
          DATA   10H(((((((("CR"
          DATA   10H  ))))))))
          DATA   10H))))))"CR"
          DATA   10HMMMMMMMMMM
          DATA   10HMMMM"CR"  QQ
          DATA   10HQQQQQQQQQQ
          DATA   10HQQ"CR"  XXXX
          DATA   10HXXXXXXXXXX
          DATA   10H"CR"
          DATA   10H        "CR"
          DATA   10H"CB"''''''''
 PSMHL    EQU    *-PSMH 
  
 .XL      DECMIC APXL 
 PSMJ     DATA   C*"EM"  EXPIRATION DATE (YYMMDD) OR TERM (0-".XL"): *
 PSMJL    EQU    *-PSMJ 
  
*         *TRMDEF* SEQUENCES FOR TURNING CURSOR POSITIONING ON/OFF. 
  
 TRMA     CON    00164107400000000000B
 TRMB     CON    00164107400100000000B
  
*         PASSWORD OVERWRITE MESSAGE. 
  
 PWOM     DATA   10H"EM"
          DATA   10H        "CR"
          CON    0
  
*         *TSTATUS* REPLY BUFFER. 
  
 TSTB     BSSZ   2
  
*         THE FOLLOWING *PASSWOR* PARAMETER LOCATIONS MUST BE 
*         CONSECUTIVE AND IN THE SPECIFIED ORDER. 
  
 OPW      CON    0           OLD PASSWORD 
 NPW      CON    0           NEW PASSWORD 
 VERPW    CON    0           VERIFICATION PASSWORD
 XD       CON    0           PASSWORD EXPIRATION DATE 
 XT       CON    0           PASSWORD EXPIRATION TERM 
 PT       CON    0           PASSWORD TYPE (I/B)
 GRC      SPACE  4,10 
**        GRC - GENERATE RANDOM CHARACTERS. 
* 
*         ENTRY  (B2) = NUMBER OF RANDOM ALPHANUMERIC CHARACTERS TO 
*                       BE GENERATED (0 - 7). 
* 
*         EXIT   (X1) = RANDOM CHARACTERS, RIGHT JUSTIFIED, ZERO FILL.
* 
*         USES   X - 0, 1, 2, 3, 4, 5, 6. 
*                A - 2. 
*                B - 2. 
* 
*         MACROS RTIME. 
  
  
 GRC      SUBR               ENTRY/EXIT 
          RTIME  GRCA        GET TIME SINCE DEADSTART 
          MX0    -37         USE 37 BITS
          SA2    GRCA 
          SX3    B1 
          BX2    -X0*X2 
          LX3    37          CREATE SEED .GE. 2**37 
 GRC1     IX4    X2-X3
          PL     X4,GRC2     IF SEED BIG ENOUGH 
          LX2    B1 
          EQ     GRC1        CONTINUE DOUBLING
  
 GRC2     SX1    B0 
          SX3    36          USE CHARACTERS A-Z, 0-9
 GRC3     SB2    B2-B1
          NG     B2,GRCX     IF ALL CHARACTERS GENERATED
          PX4    X2 
          PX5    X3 
          NX6    X5 
          FX6    X4/X6       NEW SEED = OLD SEED / 36 
          UX0,B3 X6          CHARACTER = SEED MODULO 36 
          LX4    X0,B3
          IX0    X4*X3
          IX5    X2-X0
          SX5    X5+B1       SET CHARACTER IN RANGE 1-36
          LX1    6           APPEND CHARACTER 
          BX1    X1+X5
          BX2    X6 
          EQ     GRC3        GENERATE NEXT CHARACTER
  
  
 GRCA     BSS    1           REAL TIME CLOCK
 RPW      SPACE  4,20 
**        RPW - RANDOMIZE PASSWORD. 
* 
*         IF PASSWORD RANDOMIZATION IS REQUIRED, RANDOM ALPHANUMERIC
*         CHARACTERS ARE GENERATED AND APPENDED TO THE END OF THE NEW 
*         PASSWORD. 
* 
*         ENTRY  (NPW) = USER-SPECIFIED PORTION OF NEW PASSWORD.
*                (OPW) = OLD PASSWORD.
* 
*         EXIT   (NPW) = NEW PASSWORD.  RANDOM CHARACTERS APPENDED TO 
*                        END IF REQUIRED. 
* 
*         USES   X - 0, 1, 2, 3, 4, 5, 6. 
*                A - 1, 2, 5, 6.
*                B - 2. 
* 
*         CALLS  DEL, GRC.
* 
*         MACROS READ, READC, TSTATUS, WRITEC.
  
  
 RPW      SUBR               ENTRY/EXIT 
          SA1    NPW         CHECK USER ENTERED AT LEAST 2 CHARACTERS 
          SX2    DMPS        * PASSWORD TOO SHORT.* 
          MX3    6
          BX3    -X3*X1 
          ZR     X3,ABT      IF PASSWORD TOO SHORT
          SB2    42-PWRB     MAXIMUM UNRANDOMIZED PASSWORD BIT LENGTH 
          SX2    DMTL        * PASSWORD TOO LONG.*
          LX1    X1,B2
          AX1    X1,B2
          NZ     X1,ABT      IF PASSWORD TOO LONG 
          SX2    3
          RJ     DEL         DELAY
  
*         APPEND RANDOM CHARACTERS TO END OF NEW PASSWORD.
  
 RPW2     SB2    PWRC 
          RJ     GRC         GENERATE RANDOM CHARACTERS 
          SA2    NPW
          MX0    6
          SB2    60-PWRB
          LX1    B2 
          BX3    X1          SAVE SHIFTED RANDOMIZATION CHARACTERS
          SB2    9           CHARACTERS TO CHECK
 RPW3     LX0    6           SCAN FOR END OF NEW PASSWORD 
          BX4    X0*X2
          SB2    B2-B1
          NZ     X4,RPW4     IF END OF NEW PASSWORD 
          ZR     B2,RPW4     IF NULL PASSWORD 
          LX1    6
          EQ     RPW3        CONTINUE SCAN
  
 RPW4     SA4    OPW
          BX6    X2+X1
          BX1    X6-X4       CHECK NEW PASSWORD .NE. OLD
          ZR     X1,RPW2     IF NEW PASSWORD EQUALS OLD 
          SA6    NPW
  
*         DISPLAY RANDOMIZATION CHARACTERS AND PROMPT FOR VERIFICATION. 
  
          MX0    1           SET CHARACTERS IN MESSAGE
          SB2    PWRB-1 
          AX0    B2 
          SA2    RPWC 
          BX6    -X0*X2 
          BX6    X6+X3
          SA6    A2 
          TSTATUS TSTB
          SA5    TSTB+1      CHECK TERMINAL TYPE
          AX5    54-0 
          ZR     X5,RPW5     IF MUX TERMINAL
          WRITEC O,TRMA      SET NO LINE FEED AFTER ENTERING PASSWORD 
 RPW5     WRITEC O,RCMG      DISPLAY CHARACTERS 
  
*         READ AND VERIFY NEW PASSWORD. 
  
          READ   I
          READC  I,PSBF,B1
          ZR     X5,RPW6     IF MUX TERMINAL
          WRITEC O,PWOM      OVERWRITE PASSWORD 
          WRITEC O,TRMB      RESET CURSOR POSITIONING 
 RPW6     SX2    3           DELAY
          RJ     DEL
          SA1    PSBF 
          SA2    NPW
          BX1    X1-X2
          SX2    DMVE        * VERIFICATION ERROR.* 
          NZ     X1,ABT      IF PASSWORD INCORRECT
          EQ     RPWX        RETURN 
  
  
*         MESSAGES FOR VERIFICATION OF RANDOMIZED PASSWORD. 
  
 RCMG     DATA   10H"EM"THE FOLL
          DATA   10HOWING CHAR
          DATA   10HACTERS HAV
          DATA   10HE BEEN APP
          DATA   10HENDED   "NL"
          DATA   10HTO THE END
          DATA   10H OF YOUR N
          DATA   10HEW PASSWOR
          DATA   10HD -     "NL"
 RPWC     DATA   10H        "NL"
          DATA   10HENTER YOUR
          DATA   10H NEW PASSW
          DATA   10HORD FOR VE
          DATA   10HRIFICATION
          DATA   10H: "NL"  ))))
          DATA   10H))))))))))
          DATA   10H"CR"  ((((((
          DATA   10H(((((((("CR"
          DATA   10H  MMMMMMMM
          DATA   10HMMMMMM"CR"
          DATA   10HQQQQQQQQQQ
          DATA   10HQQQQ"CR"  XX
          DATA   10HXXXXXXXXXX
          DATA   10HXX"CR"
          DATA   10H
          DATA   10H"CR""CB"''''''
          SPACE  4,10 
 D3       SET    *
          SPACE  4,10 
**        PRESET CODE OVERLAID BY INPUT AND OUTPUT CIO BUFFERS. 
          SPACE  4,10 
 TKPR     BSS    0           TABLE OF KEYWORDS/POSITIONS TO REMOVE
          CON    1           OLD PASSWORD 
          CON    2           NEW PASSWORD 
*         CON    0           END OF TABLE 
  
  
 TARG     BSS    0           ARGUMENT TABLE FOR *PASSWOR* 
 XD       ARG    XD,XD,400B  EXPIRATION DATE
 XT       ARG    XT,XT,400B  EXPIRATION TERM
 PT       ARG    PT,PT,400B  PASSWORD TYPE (I/B)
          CON    0           END OF TABLE 
 CFN      SPACE  4,10 
**        CFN - COMPARE FILE NAMES. 
* 
*         ENTRY  (OPTION) = COMMAND OPTIONS SELECTED. 
* 
*         EXIT   (X1) = 0, IF NO FILE NAME CONFLICT.
*                (X1) = FILE NAME, IF CONFLICT. 
* 
*         USES   X - 0, 1, 2, 3, 4, 5, 6. 
*                A - 1, 2, 4, 5.
*                B - 2, 3.
  
  
 CFN      SUBR               ENTRY/EXIT 
          SB2    -B1         INITIALIZE COUNTERS/MASKS
          MX0    -12
          SB3    TFNCL
          MX6    42 
          SA5    OPTION 
          BX1    X1-X1
 CFN1     SB2    B2+B1       INCREMENT TO NEXT OPTION ENTRY 
          LX5    -1 
          GE     B2,B3,CFNX  IF END OF OPTIONS
          PL     X5,CFN1     IF OPTION NOT SELECTED 
          SA2    TFNC+B2     GET LIST OF FILE NAME COMPARISIONS 
 CFN2     LX2    12 
          BX1    -X0*X2 
          BX2    X0*X2
          LX3    X2 
          ZR     X1,CFN1     IF END OF FILE NAME COMPARISIONS 
          SA1    X1 
          BX1    X6*X1
 CFN3     LX3    12 
          BX4    -X0*X3 
          ZR     X4,CFN2     IF ONE PASS COMPLETED
          SA4    X4+         COMPARE FILE NAMES 
          BX4    X6*X4
          BX4    X4-X1
          NZ     X4,CFN3     IF NO FILE NAME CONFLICT 
          EQ     CFNX        RETURN 
 TFNC     SPACE  4,10 
**        TFNC - TABLE OF FILE NAME CONFLICT COMPARISIONS.
* 
*         ONE WORD ENTRY FOR EACH COMMAND OPTION, CONTAINING
*         THE 12-BIT FET ADDRESSES FOR THOSE FILES USED BY
*         THIS OPTION.
*         UP TO 5 FET ADDRESSES PER ENTRY ARE ALLOWED.
  
  
 TFNC     INDEX  VFD,LOPT+1,( 60/* )
          INDEX  ,KOPT,( 12/P,12/U,36/0 ) 
          INDEX  ,COPT,( 12/I,12/O,12/N,12/U,12/0 ) 
          INDEX  ,UOPT,( 12/I,12/O,12/P,12/U,12/0 ) 
          INDEX  ,ROPT,( 12/O,12/N,12/P,12/U,12/0 ) 
          INDEX  ,SOPT,( 12/P,12/S,12/U,24/0 )
          INDEX  ,IOPT,( 12/O,12/P,12/U,24/0 )
          INDEX  ,ZOPT,( 12/I,12/O,12/P,12/U,12/0 ) 
          INDEX  ,LOPT,( 12/O,12/P,12/U,24/0 )
 TFNCL    EQU    *-TFNC 
 PKP      SPACE  4,15 
**        PKP - PROCESS KEYWORD OR POSITIONAL ARGUMENTS.
* 
*         ENTRY  (X6) = ARGUMENT TABLE ADDRESS. 
*                (X7) = ARGUMENT TABLE LENGTH.
* 
*         EXIT   (X1) = 0, IF NO ERROR. 
*                     = -1, IF ARGUMENT ERROR.
* 
*         USES   A - 1, 2, 6, 7.
*                B - 2, 3, 4, 6.
*                X - 1, 2, 6, 7.
* 
*         CALLS  ARM, CPA, USB. 
  
  
 PKP      SUBR               ENTRY/EXIT 
          SA6    PKPA        SAVE ADDRESS AND LENGTH
          SA7    A6+1 
          SB2    CCDR        UNPACK COMMAND 
          RJ     USB
  
*         SKIP TO FIRST ARGUMENT. 
  
 PKP1     RJ     POP
          SA2    PKPB 
          BX2    X2-X6
          NZ     X2,PKP1     IF COMMAND NAME NOT FOUND
          SX1    X1-1R. 
          ZR     X1,PKPX     IF NO ARGUMENTS
  
*         PROCESS ARGUMENTS.
  
          SA1    PKPA        RETRIEVE ADDRESS AND LENGTH
          SA2    A1+B1
          SB3    X1          ARGUMENT TABLE ADDRESS 
          SB2    X2+
          SB4    ABUF        CONVERT POSITIONAL ARGUMENTS 
          RJ     CPA
          NG     B5,PKP2     IF ARGUMENT ERROR
          SX6    B5+         SET LWA OF ARGUMENTS 
          SB6    ABUF        SET FWA OF ARGUMENTS 
          SA6    USBC 
          RJ     ARM         PROCESS ARGUMENTS
          ZR     X1,PKPX     IF NO ARGUMENT ERROR 
 PKP2     SX1    -1          INDICATE ARGUMENT ERROR
          EQ     PKPX        RETURN 
  
  
 PKPA     CON    0           ARGUMENT TABLE ADDRESS 
          CON    0           ARGUMENT TABLE LENGTH
 PKPB     DATA   C*UPROC* 
          SPACE  4,10 
**        SECONDARY OVERLAID COMMON DECKS.
  
  
*CALL     COMCARG 
*CALL     COMCARM 
*CALL     COMCCPA 
*CALL     COMCPOP 
*CALL     COMCRSP 
          SPACE  4,10 
**        BUFFER ASSIGNMENTS. 
  
  
 ABUF     EQU    *           ARGUMENT STRING BUFFER 
  
 CBUF     EQU    D1          CHARACTER BUFFER 
 D        MAX    D,D1+CBUFL 
  
 PBUF     EQU    D
 D        SET    D+VBUFL     VALIDUS BUFFER 
  
 NBUF     EQU    D           NEWVAL AND VALINDS BUFFER
 D        SET    D+VBUFL
  
 D        MAX    D,D3 
 IBUF     EQU    D           INPUT AND SOURCE BUFFER
 D        SET    D+IBUFL
  
 OBUF     EQU    D
 D        SET    D+OBUFL     OUTPUT BUFFER
          SPACE  4,10 
**        MANAGED TABLES. 
  
  
 MEML     EQU    D
 D        SET    D+1000B
          SPACE  4,10 
 RFL=     EQU    D
          ERRNG  RFL=-ABUF-200   ARGUMENT BUFFER OVERFLOW 
          SPACE  4,10 
          END 
