1SJ 
          IDENT  1SJ,SCJ
          PERIPH
          BASE   MIXED
          LIST   F
          SST 
*COMMENT  1SJ - JOB SCHEDULER.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          TITLE  1SJ - JOB SCHEDULER. 
          SPACE  4
***       1SJ - JOB SCHEDULER.
*         G. R. MANSFIELD.   70/09/24.
*         R. E. TATE.        71/01/25.
*         R. M. DANISCH      81/01/28.
          SPACE  4
***              *1SJ* IS RESPONSIBLE FOR SCHEDULING JOBS TO AND FROM 
*         CENTRAL MEMORY. 
* 
*         *1SJ* ALWAYS ATTEMPTS TO SATISFY CM/ECS FL INCREASE 
*         REQUESTS OF JOBS ALREADY AT CONTROL POINTS BEFORE SELECTING 
*         ROLLED OUT JOBS FOR SCHEDULING.  WHEN NO CM/ECS FL INCREASE 
*         REQUESTS ARE PRESENT, *1SJ* ATTEMPTS TO SCHEDULE ROLLED 
*         OUT JOBS TO CONTROL POINTS.  WHETHER OR NOT ANY SUCH
*         SCHEDULING ACTUALLY OCCURS DURING A GIVEN SCHEDULER CYCLE 
*         DEPENDS ON MANY FACTORS INCLUDING - AVAILABILITY OF CM AND
*         ECS, AVAILABILITY OF CONTROL POINTS, PRIORITIES OF SCHEDULING 
*         CANDIDATES, PRIORITIES OF JOBS PRESENTLY IN CM, AND SERVICE 
*         CLASS CONSTRAINTS ON THE ALLOCATION OF MEMORY.
* 
*         IN ADDITION TO IT-S CM/EM SCHEDULING FUNCTION, *1SJ* ALSO 
*         PERIODICALLY SCHEDULES INPUT FILES TO THE EJT.
          SPACE  4
***       CALL. 
* 
* 
*T        18/  *1SJ*,6/  CP,11/  0,1/  Q,24/
*         CP     SYSTEM CONTROL POINT NUMBER. 
*         Q = 0  NO QFT SCHEDULING. 
*           = 1  PERFORM INPUT FILE SCHEDULING. 
          SPACE  4
**        PROGRAMS CALLED.
* 
* 
*         1AJ - JOB INITIATION. 
*         1RI - ROLLIN JOB. 
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMPMAC 
          QUAL   CPS
*CALL     COMSCPS 
          QUAL    * 
          QUAL   DSL
*CALL     COMSDSL 
          QUAL   *
*CALL     COMSDST 
          LIST   X
*CALL     COMSEJT 
          LIST   *
*CALL     COMSEVT 
*CALL     COMSJIO 
*CALL     COMSMSC 
*CALL     COMSMSP 
*CALL     COMSPIM 
          LIST   X
*CALL     COMSPRD 
          LIST   *
*CALL     COMSSCD 
*CALL     COMSSCP 
          LIST   X
*CALL     COMSSSD 
          LIST   *
*CALL     COMSSSE 
          QUAL   1DS
*CALL     COMS1DS 
          QUAL   *
          TITLE  MACRO DEFINITIONS. 
**        MACRO  DEFINITIONS. 
  
  
**        JOBSTAT - DEFINE JOB STATE ATTRIBUTES.
* 
*         JOBSTAT NAME,STATUS,SS,ES,FR,TE,PI
*                NAME        TABLE NAME IF PRESENT. 
*                STATUS      JOB STATUS.
*                SS          NON-BLANK IF SCHEDULABLE JOB STATUS. 
*                ES          NON-BLANK IF ERROR FLAG SET CAUSES JOB 
*                            STATUS TO BECOME SCHEDULABLE.
*                FR          NON-BLANK IF JOB MAY BE FORCED ROLLED IN.
*                TE          NON-BLANK IF TIMED/EVENT TYPE JOB STATUS.
*                PI          NON-BLANK IF PRE-INITIAL JOB STEP TYPE 
*                            STATUS.
*         JOBSTAT A,B,C,D,E,F,G 
* 
*         NOTE - ANY CHANGES TO THIS MACRO MUST BE ACCOMPANIED BY A 
*                CORRESPONDING CHANGE TO THE *JOBSTAT* MACRO DEFINED
*                IN *1PP*.
  
  
          PURGMAC JOBSTAT 
  
          MACRO  JOBSTAT,NAME,STATUS,SS,ES,FR,TE,PI 
.1        IFC    NE,$NAME$$ 
NAME      INDEX 
.1        ELSE
.V        SET    0
          IFC    NE,$SS$$,1 
.V        SET    .V+4000
          IFC    NE,$ES$$,1 
.V        SET    .V+2000
          IFC    NE,$FR$$,1 
.V        SET    .V+1000
          IFC    NE,$TE$$,1 
.V        SET    .V+400 
          IFC    NE,$PI$$,1 
.V        SET    .V+200 
          INDEX  STATUS,.V
.1        ENDIF 
          ENDM
 SUBSYST  SPACE  4,10 
**        SUBSYST - GENERATE SUBSYSTEM TABLE. 
* 
*         SUBSYST  NAME,ID,PR,PP,AUTO,DEF,DCP,CP,PROC,ABT 
* 
*         ENTRY  *PR* = CPU PRIORITY AT WHICH TO INITIATE THE 
*                       SUBSYSTEM.
* 
*         TABLE OF SUBSYSTEM CPU PRIORITIES.
* 
*T        12/ PRIORITY
  
  
          PURGMAC  SUBSYST
  
 SUBSYST  MACRO  NM,ID,PT,PP,AU,DF,DC,CP,PR,AB
 .A       IFC    NE,$PT$$ 
 .SUB     RMT 
          INDEX  (MXSI-ID),PT 
 .SUB     RMT 
 .A       ENDIF 
 SUBSYST  ENDM
          SPACE  4,10 
**        CONSTANTS.
  
  
 MXPR     EQU    7777        MAXIMUM SCHEDULING PRIORITY (INTERNAL) 
          TITLE  DIRECT CELL ASSIGNMENTS. 
****      DIRECT CELL ASSIGNMENTS.
  
  
 T8       EQU    16          SCRATCH
 T9       EQU    17          SCRATCH
 AA       EQU    20 - 24     SCRATCH (5 CELLS)
 TM       EQU    25 - 26     SECONDS PORTION OF *RTCL* (2 CELLS)
 BB       EQU    27 - 33     SCRATCH (5 CELLS)
 EO       EQU    34          EJT ORDINAL
 IO       EQU    35          QFT ORDINAL (USED ONLY IN *SIE*) 
 TE       EQU    36          LWA OF LAST *TACP* ENTRY 
 AM       EQU    37 - 40     AVAILABLE + ROLLING CM (2 CELLS) 
 SC       EQU    41          SERVICE CLASS
 AE       EQU    42          AVAILABLE + ROLLING EM 
 TP       EQU    43          SCRATCH
 RM       EQU    44 - 45     ROLLING CM (2 CELLS) 
 RE       EQU    46          ROLLING EM 
 ES       EQU    47          EXCESS ECS OF SERVICE CLASS
 EJ       EQU    50 - 54     EJT BUFFER (5 CELLS) 
 CS       EQU    57 - 60     EXCESS CM OF SERVICE CLASS (2 CELLS) 
 SP       EQU    61          SERVICE CLASS OF SELECTED JOB
 JP       EQU    62          SCHEDULING PRIORITY OF SELECTED JOB
 JC       EQU    63          CONTROL POINT NUMBER OF SELECTED JOB 
 JM       EQU    64          CM FL REQUIRED BY SELECTED JOB 
 JE       EQU    65          ECS FL REQUIRED BY SELECTED JOB
 NC       EQU    66          NUMBER OF CONTROL POINTS 
 EP       EQU    67          EJT ORDINAL OF SELECTED JOB
  
  
****
          TITLE  TABLES.
          USE    TABLES 
 TABLES   SPACE  4,10 
**        TDAC - DEVICE ACTIVITY. 
*         ENTRY = 1 WORD. 
*         INDEXED BY EST ORDINAL. 
* 
*T        12/ AC
*         AC     ACTIVITY COUNT FROM MST OF DEVICE. 
  
  
 TDAC     BSS    0
 TDACE    EQU    1           ENTRY SIZE 
 TABLES   SPACE  4,10 
**        TTCU - ASSIGNED CM FL.
*         ENTRY = 2 WORDS.
*         INDEXED BY SERVICE CLASS. 
* 
*T        24/ CM
*         CM     CM FL ASSIGNED TO JOBS OF SERVICE CLASS. 
  
  
 TTCU     EQU    TDAC+ESMX
 TTCUE    EQU    2           ENTRY SIZE 
 TABLES   SPACE  4,10 
**        TTUE - ASSIGNED ECS FL. 
*         ENTRY = 1 WORD. 
*         INDEXED BY SERVICE CLASS. 
* 
*T        12/ EC
*         EC     ECS FL ASSIGNED TO JOBS OF SERVICE CLASS.
  
  
 TTUE     EQU    TTCU+MXJC*TTCUE
 TTUEE    EQU    1           ENTRY SIZE 
 TABLES   SPACE  4
          USE    *
 TABLES   SPACE  4,10 
*         THE FOLLOWING TABLES ARE LOCATED TOWARD THE HIGH END OF PP
*         MEMORY TO FACILITATE *1SJ-S* OVERLAY STRUCTURE. 
 TABLES   SPACE  4,10 
 TABLES   SPACE  4,10 
**        TEPB - EJT/CP SCHEDULING PARAMETERS.
*         ENTRY = 4 WORDS.
*         INDEXED BY SERVICE CLASS. 
* 
*T        12/  LB,12/  UB,12/  WF,12/  IP 
*         LB     LOWER BOUND SCHEDULING PRIORITY OF EXECUTING JOBS. 
*         UB     UPPER BOUND SCHEDULING PRIORITY OF EXECUTING JOBS. 
*         WF     WEIGHTING FACTOR.
*         IP     INITIAL SCHEDULING PRIORITY OF EXECUTING JOBS. 
  
  
 TEPBE    EQU    4           ENTRY SIZE 
 TEPB     EQU    BFMS-MXJC*TEPBE
 TABLES   SPACE  4,10 
**        TJAM - SERVICE CLASS RESOURCE CONSTRAINTS.
*         ENTRY = 6 WORDS.
*         INDEXED BY SERVICE CLASS. 
* 
*T        12/ MJ,12/ MCJ,24/ MCT,12/ MEJ,12/ MET
*         MJ     MAXIMUM NUMBER OF JOBS OF SERVICE CLASS ALLOWED IN 
*                SYSTEM (ASSIGNED TO EJT ENTRIES).
*         MCJ    MAXIMUM CM FL/100B PER JOB OF SERVICE CLASS. 
*         MCT    MAXIMUM TOTAL CM FL/100B FOR ALL JOBS OF SERVICE 
*                CLASS. 
*         MEJ    MAXIMUM ECS FL/100B PER JOB OF SERVICE CLASS.
*         MET    MAXIMUM TOTAL ECS FL/100B FOR ALL JOBS OF SERVICE
*                CLASS. 
  
  
 TJAME    EQU    6           ENTRY SIZE 
 TJAM     EQU    TEPB-MXJC*TJAME
 TABLES   SPACE  4,10 
*         THE FOLLOWING TABLES ARE OVERLAYED BY *3SA* AND *3SB*.
 TABLES   SPACE  4,10 
**        TACP - ACTIVE CP-S AND PCP-S. 
*         ENTRY = 1 WORD. 
*         ENTRIES ARE ORDERED BY DESCENDING SCHEDULING PRIORITY. A ZERO 
*         ENTRY TERMINATES THE TABLE AND A ZERO WORD MUST PRECEDE THE 
*         TABLE.
* 
*T        1/  P,1/  R,3/,7/  CP 
*         P      ROLLOUT IN PROGRESS. 
*         R      REQUEST ROLLOUT. 
*         CP     CP/PCP NUMBER. 
  
  
 TACPE    EQU    1           ENTRY SIZE 
 TACP     EQU    TJAM-/DSL/NCPS-1-/DSL/NPPS 
 TABLES   SPACE  4,10 
**        TJEC - JOB ECS FIELD LENGTH.
*         ENTRY = 1 WORD. 
*         INDEXED BY CP/PCP NUMBER. 
* 
*T        12/ EC
*         EC     EM FL ASSIGNED TO CP/PCP.
  
  
 TJECE    EQU    1           ENTRY SIZE 
 TJEC     EQU    TACP-/DSL/NCPS-2-/DSL/NPPS 
 TABLES   SPACE  4,10 
**        TJCM - JOB CM FIELD LENGTH (INCLUDING NFL). 
*         ENTRY = 1 WORD. 
*         INDEXED BY CP/PCP NUMBER. 
* 
*T        12/ FL
*         FL     CM FL (INCLUDING NFL) ASSIGNED TO CP/PCP.
  
  
 TJCME    EQU    1           ENTRY SIZE 
 TJCM     EQU    TJEC-/DSL/NCPS-1-/DSL/NPPS 
 TABLES   SPACE  4,10 
**        TJPR - JOB SCHEDULING PRIORITY. 
*         ENTRY = 1 WORD. 
*         INDEXED BY CP/PCP NUMBER. 
* 
*T        12/ PR
*         PR     SCHEDULING PRIORITY OF JOB.
  
  
 TJPRE    EQU    1           ENTRY SIZE 
 TJPR     EQU    TJCM-/DSL/NCPS-1-/DSL/NPPS 
 TABLES   SPACE  4,10 
**        TJSC - JOB SERVICE CLASS. 
*         ENTRY = 1 WORD. 
*         INDEXED BY CP/PCP NUMBER. 
* 
*T        12/ SC
*         SC     SERVICE CLASS OF JOB.
  
  
 TJSCE    EQU    1           ENTRY SIZE 
 TJSC     EQU    TJPR-/DSL/NCPS-1-/DSL/NPPS 
 SCJ      TITLE  MAIN PROGRAM.
**        SCJ - MAIN PROGRAM. 
  
  
          ORG    PPFW 
  
 SCJ      BSS    0
          RJM    PRS         PRESET 
          LDN    ** 
*         LDN    1           (INPUT FILE SCHEDULING REQUIRED) 
 SCJA     EQU    *-1         (PP INPUT REGISTER FLAGS BYTE) 
          ZJN    SCJ1        IF INPUT FILE SCHEDULING NOT REQUIRED
          LDN    ** 
 SCJB     EQU    *-1         (SCHEDULER CONTROL FLAGS FROM *INWL*)
          LPN    6
          NJN    SCJ1        IF SCHEDULING DISABLED OR LIMITS CHANGING
          EXECUTE  3SB       PERFORM INPUT FILE SCHEDULING
  
*         INITIALIZE/RESTORE CELLS FOR THE EJT/CM SCHEDULING FUNCTION.
  
 SCJ1     RJM    INT         INITIALIZE CELLS FOR EJT/CM SCHEDULING 
  
*         BUILD THE FOLLOWING TABLES - *TACP*, *TJCM*, *TJEC*, *TJSC*,
*         *TJPR*, *TTCU*, *TTUE*.  CALCULATE AVAILABLE AND ROLLING CM.
  
          RJM    BST         BUILD CP AND SERVICE CLASS TABLES
  
*         OBTAIN AVAILABLE CM AND EM FROM *ACML*. 
  
          LDK    ACML 
          CRD    AM 
          ERRNZ  AE-AM-3     CODE DEPENDS ON VALUE
  
*         CALCULATE AVAILABLE + ROLLING CM AND ECS. 
  
          LDD    RM+1 
          RAD    AM+1 
          SHN    -14
          ADD    RM 
          RAD    AM 
          LDD    RE 
          RAD    AE 
  
*         DETERMINE IF ANY JOB AT A CP OR PCP IS REQUESTING A CM
*         OR ECS FL INCREASE.  IF SO, IT MUST BE ADDRESSED BEFORE 
*         SCHEDULING ANOTHER JOB TO A CONTROL POINT.
  
          LDD    JC 
          ZJN    SCJ4        IF NO JOB IS REQUESTING AN FL INCREASE 
  
*         THE FOLLOWING CODE IS NECESSARY TO PREVENT A DEADLOCK IN THE
*         CASE OF SEVERAL OUTSTANDING CM FL INCREASE REQUESTS FOR JOBS
*         OF EQUAL PRIORITY, BUT INSUFFICIENT AVAILABLE CM TO SATISFY 
*         ANY OF THE REQUESTS.
  
          LDN    PSNI 
          STM    CFLA 
          LDM    SCJD 
          ZJN    SCJ2        IF ROLLOUT NOT INHIBITED 
          LDK    PSNI        ALLOW ROLLOUT OF HIGHER PRIORITY JOBS
          STM    CFLC 
 SCJ2     RJM    CFL         COMMIT FIELD LENGTH
          ZJN    SCJ3        IF SUFFICIENT FL 
          MJN    SCJ3        IF ROLLOUT REQUEST REJECTED
          STD    CM+1        SET CM/EM OPTION 
          LDC    0
 SCJD     EQU    *-1         (ROLLOUT INHIBITED FLAG) 
          NJN    SCJ3        IF ROLLOUT INHIBITED 
          LDD    JC          SET CP/PCP NUMBER
          STD    CM+2 
          MONITOR  SFLM      REJECT FL INCREASE 
          LJM    SCJ1        RECYCLE
  
 SCJ3     LJM    SCJ11       EXIT 
  
 SCJ4     LDM    SCJB 
          LPN    2
          NJN    SCJ3        IF EJT SCHEDULING DISABLED 
          RJM    DDA         BUILD *TDAC* TABLE 
  
*         SCAN EJT LOOKING FOR THE BEST SCHEDULABLE JOB.  IF THE
*         SELECTED JOB IS A SUBSYSTEM, OVERLAY *3SA* WILL BE CALLED.
  
          RJM    SFJ         SEARCH FOR SCHEDULING CANDIDATE
          LDD    EP 
          ZJN    SCJ7        IF NO SCHEDULABLE JOBS FOUND 
          STD    EO          SET *EO* FOR FUTURE *EJA* CALLS
          LDD    SP 
          LMN    DSSC 
          ZJN    SCJ5        IF DEADSTART SEQUENCING JOB WAS SELECTED 
          LDM    SCJB 
          LPN    10 
          NJN    SCJ8        IF DEADSTART SEQUENCING JOB NOT COMPLETE 
          LDD    SP 
          LMN    SSSC 
          NJN    SCJ6        IF SELECTED JOB IS NOT A SUBSYSTEM 
 SCJ5     EXECUTE  3SA
          NJN    SCJ10       IF SUBSYSTEM NOT SCHEDULED 
          UJN    SCJ12       RESTART *1SJ*
  
 SCJ6     RJM    SCP         SELECT CONTROL POINT 
 SCJ7     ZJN    SCJ10       IF NO CP AVAILABLE 
          MJN    SCJ9        IF PCP REJECT
          RJM    CFL         COMMIT FIELD LENGTH
 SCJ8     NJN    SCJ10       IF INSUFFICIENT FL 
          RJM    ASJ         ASSIGN JOB TO CONTROL POINT
          RJM    USD         UPDATE STATISTICAL DATA
          LDC    0
 SCJC     EQU    *-1         (RECYCLE FLAG) 
          ZJN    SCJ11       IF RECYCLE NOT REQUESTED 
 SCJ9     LJM    SCJ1        RECYCLE ON THE EJT SCAN
  
 SCJ10    LDN    1           SET JOB NOT SCHEDULED
          RJM    USD         UPDATE STATISTICAL DATA
 SCJ11    MONITOR  DPPM      DROP PP
          LDN    JSCL        CLEAR SCHEDULER ACTIVE FLAG
          CRD    CM 
          LDC    -4000
          RAD    CM 
          LDN    JSCL 
          CWD    CM 
 SCJ12    LJM    PPR         EXIT TO IDLE LOOP
          TITLE  SUBROUTINES. 
 ASJ      SPACE  4,10 
**        ASJ - ASSIGN JOB TO CONTROL POINT.
* 
*         REQUEST CM/ECS FL; PERFORM MINIMAL CPA INITIALIZATION; STORE
*         PRIORITY IN EJT; CALL *1AJ* IF JOB STATUS IS *PRJS*,
*         OTHERWISE CALL *1RI*. 
* 
*         ENTRY  (JM) = CM FL TO BE ASSIGNED TO JOB.
*                (JE) = ECS FL TO BE ASSIGNED TO JOB. 
*                (EO) = EJT ORDINAL OF SELECTED JOB.
*                (JC) = CONTROL POINT NUMBER FOR JOB ASSIGNMENT.
*                (SP) = SERVICE CLASS OF SELECTED JOB.
*                (TM - TM+1) = SECONDS PORTION OF REAL TIME CLOCK.
*                (NC) = SYSTEM CONTROL POINT NUMBER.
* 
*         EXIT   (A) = 0 IF JOB WAS SCHEDULED TO THE CONTROL POINT. 
*                   .NE. 0 IF SCHEDULING ATTEMPT FAILED.
* 
*         USES   JE, JM, AA - AA+4, BB - BB+4, CM - CM+4, EJ - EJ+4,
*                T1 - T5, T6, T7. 
* 
*         CALLS  AST, CPR, EJA, RJC, RST. 
* 
*         MACROS MONITOR. 
  
  
 ASJ      SUBR               ENTRY/EXIT 
          LDD    JC 
          LMC    /CPS/RCPS+/CPS/ENRS  SET *CCAM* OPTIONS
          STD    CM+1 
          LDD    EO          SET EJT ORDINAL FOR *CCAM* 
          STD    CM+2 
          MONITOR  CCAM 
          LDD    CM+1 
          NJN    ASJX        IF *CCAM* FAILED 
  
*         REQUEST CM. 
  
          RJM    EJA         CALCULATE EJT ENTRY ADDRESS
          ADK    JSNE 
          CRD    EJ 
          ADK    SCHE-JSNE
          CRD    AA 
          ADK    SCLE-SCHE
          CRD    BB 
          LDC    ** 
 ASJA     EQU    *-1         (ORIGINAL JOB STATUS)
          LMD    EJ+4 
          LPC    7676 
          NJN    ASJ3        IF JOB/CONNECTION/SCP STATUS CHANGED 
          LDD    JM 
          NJN    ASJ2.1      IF CM FL ALREADY SET (NOT PCP JOB) 
          LDD    BB+3        SET EM AMOUNT
          STD    JE 
          LDD    BB+4        SET CM AMOUNT
          STD    JM 
 ASJ2.1   RJM    RST         REQUEST CM STORAGE 
          ZJN    ASJ5        IF FUNCTION ACCEPTED 
 ASJ3     LDN    /CPS/CCPS   RELEASE CP, CLEAR JOB ADVANCE
          STD    CM+1 
          MONITOR  JACM 
          LDD    NC          CHANGE ASSIGNMENT TO SYSTEM CP 
          STD    CM+1 
          MONITOR  CCAM 
          LDN    1           SET JOB NOT SCHEDULED
          UJP    ASJX        TERMINATE SCHEDULING ATTEMPT 
  
*         REQUEST ECS.
  
 ASJ5     LDD    JE 
          ZJN    ASJ6        IF NO ECS REQUESTED
          LMC    10000
          RJM    RST         REQUEST EM STORAGE 
          ZJN    ASJ6        IF FUNCTION ACCEPTED 
 ASJ5.1   LDN    0           RELEASE CM FL
          RJM    RST
          LDC    10000       RELEASE EM FL
          RJM    RST
          UJP    ASJ3        TERMINATE SCHEDULING ATTEMPT 
  
 ASJ6     LDK    LOSL        SAVE EJT ORDINAL OF LAST JOB SCHEDULED 
          CRD    CM 
          LDD    EO 
          STD    CM+4 
          LDK    LOSL 
          CWD    CM 
          LDN    ZERL        CLEAR *TSCW* IMAGE 
          CRD    T1 
          LDD    SP 
          RJM    RJC         CALCULATE JCB ADDRESS
          ZJN    ASJ6.1      IF NO JCB FOR SERVICE CLASS
          ADN    SVJT        GET CP/CM TIME SLICE 
          CRD    BB 
          ADN    CSJT-SVJT   GET SERVICE CLASS CPU PRIORITY 
          CRD    CM 
          LDD    BB+1        SET CONTROL POINT TIME SLICE 
          STD    T1+4 
          LDD    BB+2        SET CM TIME SLICE
          STD    T1+1 
          LDD    CM          SAVE SERVICE CLASS CPU PRIORITY
 ASJ6.1   STD    T6 
          LDN    ZERL 
          CRD    BB          CLEAR *CWQW* IMAGE 
          CRD    CM          CLEAR *JCIW* IMAGE 
          LDC    2000+LSCS*10-10  SET DEFAULT CPU PRIORITY
          STD    BB 
          LDC    6000        PRESET CPU SCHEDULING FLAGS FOR *1AJ/3AA*
          STD    BB+1 
          LDC    SSSC*JCBE*10B  SET PARAMETERS INDEX FOR NO JCB DEFINED 
          STD    BB+2 
          LDD    T6 
          ZJN    ASJ8        IF NO JCB FOR SERVICE CLASS
          LDD    T0          SET CPU SCHEDULING PARAMETERS INDEX
          SHN    3
          STD    BB+2 
          LDD    SP 
          LMN    SSSC 
          NJN    ASJ7        IF NOT A SUBSYSTEM 
          LDM    SISS 
          STD    CM+2        SET SUBSYSTEM ID 
          SBK    LSSI+1 
          MJN    ASJ7        IF PSEUDO SUBSYSTEM
          LDC    MXSI        CALCULATE SUBSYSTEM INDEX
          SBM    SISS 
          STD    T7 
          LDM    /3SA/TSCI,T7  SET SUBSYSTEM INITIAL CPU PRIORITY 
          ZJN    ASJ7        IF CPU PRIORITY NOT SPECIFIED
          STD    T6 
          LDD    TH          SET CPU PRIORITY NOT FROM SERVICE CLASS
          RAD    BB+1 
 ASJ7     LDD    T6          SET CPU PRIORITY IN *CWQW* IMAGE 
          SHN    3
          ADC    2000 
          STD    BB 
          LDM    TEPB+1*MXJC,SP  SAVE PRIORITY IN EJT DATA BLOCK
 ASJ8     STM    ASJC 
          LDD    CP 
          CWD    AA          SAVE EJT SCHEDULING FIELD FOR *1RI*
          ADN    CWQW 
          CWD    BB          SET CPU PRIORITY 
          ADN    JCIW-CWQW
          CWD    CM          SET SUBSYSTEM ID 
          ADK    TSCW-JCIW
          CWD    T1 
          LDC    ** 
 ASJB     EQU    *-1         (EJT ORDINAL IF ONLY NFL WILL BE ROLLED) 
          LMD    EO 
          NJN    ASJ10       IF NO CHANGE NEEDED TO CM FL IN EJT ENTRY
          STD    JM          TELL *1RI* ONLY NFL NEEDED 
  
*         UPDATE EJT ENTRY AS FOLLOWS - 
*                SET EXECUTION SCHEDULING PRIORITY. 
*                SET CONTROL POINT NUMBER.
*                SET ROLLIN CM FL.
  
 ASJ10    RJM    EJA         GET EJT ENTRY ADDRESS
          ADK    SCHE 
          CRD    AA 
          ADK    SCLE-SCHE
          CRD    BB 
          LDD    JM          SET CM FL
          STD    BB+4 
          LDD    EJ+4        SAVE JOB STATUS
          LPN    76 
          SHN    -1 
          STD    T3 
          LMK    PCJS 
          NJN    ASJ10.1     IF NOT PCP JOB 
          LDD    AA+3        SET ENTRY TIME FOR *CPR* 
          STD    T1 
          LDD    AA+4 
          STD    T2 
          LDD    SP 
          SHN    14 
          LMK    EXQT 
          RJM    CPR         COMPUTE SCHEDULING PRIORITY
          UJN    ASJ10.2     STORE PRIORITY IN EJT
  
 ASJ10.1  LDC    **          SET SCHEDULING PRIORITY
 ASJC     EQU    *-1
 ASJ10.2  STD    AA+4 
          LDD    JC          SET CP NUMBER
          STD    AA+3 
          RJM    EJA         UPDATE EJT ENTRY 
          ADK    SCHE 
          CWD    AA 
          ADK    SCLE-SCHE
          CWD    BB 
          LDN    ZERL        CLEAR PP INPUT REGISTER IMAGE
          CRD    AA 
          LDD    EJ+4 
          LDM    TJST,T3
          SHN    21-7 
          MJN    ASJ11       IF PRE-INITIAL JOB STATE 
          LDC    3RI1R
          UJP    ASJ13       CALL *1RI* 
  
 ASJ11    LDD    SP 
          LMN    SSSC 
          NJN    ASJ12       IF NOT SUBSYSTEM 
          LDM    SISS 
          ADC    -LSSI
          MJN    ASJ12       IF SUBSYSTEM NOT IN *SSAT* 
          LDC    PLSI        CHECK FOR CYBIS
          LMM    SISS 
          NJN    ASJ11.1     IF NOT CYBIS 
          LDM    SISS        FETCH *SSAT* ENTRY (EJT ORDINAL) 
          ADC    /3SA/FEAF*10000
          RJM    /3SA/AST 
          NJN    ASJ12       IF ALREADY ACTIVE
 ASJ11.1  LDD    EO 
          STD    T1 
          LDM    SISS 
          ADC    /3SA/SEAF*10000
          RJM    /3SA/AST    STORE EJT ORDINAL IN SSAT TABLE
 ASJ12    AOD    AA+2        SET *1AJ* FUNCTION 1 
          LDC    3RJ1A       CALL *1AJ* 
 ASJ13    STD    AA 
          SHN    -6 
          SCN    77 
          LMD    JC 
          STD    AA+1 
          LDD    MA          WRITE *1RI*/*1AJ* CALL TO MESSAGE BUFFER 
          CWD    AA 
          LDN    0           CLEAR PRIORITY REQUEST FLAG
          STD    CM+1 
          MONITOR  RPPM      CALL *1RI*/*1AJ* 
          LDD    NC          CHANGE ASSIGNMENT BACK TO SYSTEM CP
          STD    CM+1 
          MONITOR  CCAM 
*         LDN    0           SET JOB SCHEDULED
          LJM    ASJX        RETURN 
 BST      SPACE  4,20 
**        BST - BUILD SCHEDULING TABLES.
* 
*         BUILD SCHEDULING TABLES AND CHECK FOR JOBS HAVING FL INCREASE 
*         REQUESTS OUTSTANDING.  IF ANY ARE FOUND, SELECT THE HIGHEST 
*         PRIORITY ONE FOR SCHEDULING.
* 
*         ENTRY  (JC) = 0.
*                (JP) = 0.
*                (RM - RM+1) = 0. 
*                (RE) = 0.
* 
*         EXIT   (JC) = CP NUMBER OF HIGHEST PRIORITY JOB REQUESTING AN 
*                       FL INCREASE.
*                     = 0 IF NO OUTSTANDING FL INCREASE REQUESTS. 
* 
*         USES   CS, EO, EP, ES, JC, JE, JM, JP, RE, SC, SP, TE, TP,
*                AA - AA+4, BB - BB+4, CM - CM+4, EJ - EJ+4, RM - RM+1, 
*                T0 - T6. 
* 
*         CALLS  CCA, CCP, CPR, EJA.
  
  
 BST      SUBR               ENTRY/EXIT 
  
*         INITIALIZE *TTCU* AND *TTUE* TABLES.
  
          LDN    MXJC-1 
          STD    T1 
 BST1     LDN    0
          STM    TTCU,T1
          STM    TTCU+1*MXJC,T1 
          STM    TTUE,T1
          SOD    T1          DECREMENT INDEX
          PJN    BST1        IF NOT FINISHED
          LDC    TACP        SET END OF *TACP* TABLE
          STD    TE 
          LDN    0
          STM    TACP-1      MARK START OF *TACP* TABLE 
          STI    TE          MARK END OF *TACP* TABLE 
          STD    TP          INITIALIZE CP/PCP NUMBER 
  
*         SCAN CONTROL POINT AREAS CALCULATING AVAILABLE CM AND ECS.
*         CHECK FOR OUTSTANDING FL INCREASE REQUESTS. 
  
 BST2     AOD    TP          ADVANCE CP/PCP NUMBER
          LMD    NC 
          ZJN    BST2        IF SYSTEM CONTROL POINT
          LMD    NC 
          LMC    ** 
 BSTB     EQU    *-1
          ZJP    BSTX        IF END OF SCAN 
          LDD    TP          SET CP/PCP ADDRESS 
          RJM    CCA
          ADK    FLSW        READ CM CONTROL WORD OF CURRENT CP/PCP 
          CRD    CM 
          ADN    ECSW-FLSW   READ EM CONTROL WORD OF CURRENT CP/PCP 
          CRD    T0 
  
*         STORE CP/PCP *TP* CM FL IN *TJCM* TABLE.
  
          LDD    CM+4 
          ADD    CM          NFL
          STM    TJCM-1,TP
          STD    T5 
  
  
*         STORE CONTROL POINT *TP* ECS FL IN *TJEC* TABLE.
  
          LDD    T0+4 
          STM    TJEC-1,TP
          STD    T6 
  
*         CHECK FOR AVAILABLE CONTROL POINT.
  
          LDD    TP          SET CP/PCP ADDRESS 
          RJM    CCA
          ADK    JCIW 
          CRD    CM 
          ADN    TFSW-JCIW
          CRD    EJ 
          LDD    EJ 
          NJN    BST6        IF CP/PCP IS OCCUPIED
          LDD    TP 
          SBD    NC 
          PJN    BST5        IF PCP 
          LDM    SCPA 
          ZJN    BST4        IF NO FREE CP YET SET
          RJM    CCP
          NJN    BST5        IF CURRENT CP IS NEITHER FIRST NOR LAST
 BST4     LDD    TP          SAVE NUMBER OF FREE CONTROL POINT
          STM    SCPA 
 BST5     LJM    BST2        CONTINUE CONTROL POINT SCAN
  
 BST6     STD    EO          SAVE EJT ORDINAL 
          RJM    EJA         CALCULATE EJT ENTRY ADDRESS
          ADK    JSNE 
          CRD    EJ 
          ADN    SCHE-JSNE
          CRD    AA 
          ADN    SCLE-SCHE
          CRD    BB 
          LDD    BB          GET SERVICE CLASS AND FORCED ROLL FLAGS
          SHN    14 
          STM    TJSC-1,TP
          STD    SC 
          SHN    1
          PJN    BST7        IF NOT FORCED ROLLIN 
          LDN    1           SET NO ROLLOUT FLAG
          STD    CM+2 
 BST7     LDD    AA+4        SET CP JOB SCHEDULING PRIORITY 
          STM    TJPR-1,TP
          LDD    CM+1        CHECK *CPUPFM* ACTIVE
          LPN    10 
          NJN    BST8        IF *CPUPFM* ACTIVE 
          LDD    CM+3        SET/CLEAR NO ROLLOUT FLAG
          LPC    1000        MASK *DIS* FLAG
          ADD    CM+2 
 BST8     STM    BSTA 
          LDD    EJ+4 
          LPN    76 
          LMN    EXJS*2 
          ZJN    BST8.1      IF JOB IS AT A CP
          LMK    PCJS*2&EXJS*2
          NJN    BST8.2      IF NOT A PCP JOB 
          LDD    AA+3        SET ENTRY TIME FOR *CPR* 
          STD    T1 
          LDD    AA+4 
          STD    T2 
          LDD    SC 
          SHN    14 
          LMK    EXQT 
          RJM    CPR         COMPUTE SCHEDULING PRIORITY
          STM    TJPR-1,TP
          LDN    0
  
*         CHECK FOR ROLLOUT ACTIVITY AT CP/PCP.  ACCUMULATE CM
*         AND ECS FL ASSIGNED TO THE JOB IF IT IS ROLLING OUT.
  
 BST8.1   STD    EJ+4 
          LDD    TP          SET CP/PCP ADDRESS 
          RJM    CCA
          ADK    STSW 
          CRD    CM 
          ADN    FLIW-STSW
          CRD    AA 
          LDD    CM+2 
          SHN    21-0 
 BST8.2   PJN    BST9        IF JOB NOT ROLLING OUT 
          LDD    TP 
          SBD    NC 
          PJN    BST8.4      IF JOB AT PCP
          LDM    SCPB 
          ZJN    BST8.3      IF NO ROLLING CP YET SET 
          RJM    CCP
          NJN    BST8.4      IF CURRENT CP NEITHER FIRST NOR LAST 
 BST8.3   LDD    TP          SAVE NUMBER OF ROLLING CP
          STM    SCPB 
 BST8.4   LDD    CM+2 
          SHN    21-7 
          MJN    BST8.5      IF PSEUDO-ROLLOUT IN PROGRESS
          LDD    T5          ACCUMULATE ROLLING CM
          RAD    RM+1 
          SHN    -14
          RAD    RM 
          LDD    T6          ACCUMULATE ROLLING ECS 
          RAD    RE 
 BST8.5   LJM    BST2        CONTINUE CP/PCP SCAN 
  
*         JOB IS NOT ROLLING OUT.  CHECK FOR AN OUTSTANDING FL INCREASE 
*         REQUEST.  IF ONE IS FOUND AT THIS CONTROL POINT, SEE IF THE 
*         JOB-S SCHEDULING PRIORITY IS SUFFICIENTLY HIGH TO MAKE THE
*         JOB THE BEST SCHEDULING CANDIDATE FOUND SO FAR. 
  
 BST9     LDD    SC 
          SBN    MXJC 
          PJN    BST10       IF NO JCB FOR THIS SERVICE CLASS 
          LDD    T5          ACCUMULATE CM ASSIGNED TO SERVICE CLASS
          RAM    TTCU+1*MXJC,SC 
          SHN    -14
          RAM    TTCU,SC
          LDD    T6          ACCUMULATE ECS ASSIGNED TO SERVICE CLASS 
          RAM    TTUE,SC
 BST10    LDD    EJ+4 
          NJN    BST8.5      IF JOB IS ROLLING IN 
          LDM    TJPR-1,TP
          SBD    JP 
          MJN    BST12       IF CP HAS LOWER PRIORITY THAN CURRENT HIGH 
          LDD    AA+4 
          ZJN    BST11       IF NO CM FL INCREASE REQUESTED 
          LDD    AA+1 
          SHN    21-0 
          MJN    BST12       IF REQUEST WAS ALREADY REJECTED
          LDD    AA+4 
          SBD    T5 
          ZJN    BST11       IF CM ALREADY ASSIGNED 
          MJN    BST11       IF CM ALREADY ASSIGNED 
  
*         THIS CONTROL POINT IS THE BEST SCHEDULING CANDIDATE FOUND SO
*         FAR.  SAVE SCHEDULING INFORMATION.
  
          STD    JM 
          LDN    0           CLEAR ECS REQUIREMENT
          STD    JE 
          UJN    BST13       GO FINISH SAVING SCHEDULING INFORMATION
  
 BST11    LDD    AA+3 
          ZJN    BST14.1     IF NO ECS FL INCREASE REQUESTED
          LDD    AA+1 
          SHN    21-1 
 BST12    MJN    BST14.1     IF REQUEST WAS ALREADY REJECTED
          LDD    AA+3 
          SBD    T6 
          ZJN    BST14.1     IF ECS ALREADY ASSIGNED
          MJN    BST14.1     IF ECS ALREADY ASSIGNED
  
  
*         THIS CONTROL POINT IS THE BEST SCHEDULING CANDIDATE SO
*         FAR.  SAVE SCHEDULING INFORMATION.
  
          STD    JE 
          LDN    0           CLEAR CM REQUIREMENT 
          STD    JM 
 BST13    LCN    0           PREVENT SERVICE CLASS ECS LIMIT
          STD    ES 
          STD    CS+1        PREVENT SERVICE CLASS CM LIMIT 
          LDN    37 
          STD    CS 
          LDM    TJPR-1,TP   SAVE SCHEDULING PRIORITY 
          STD    JP 
          LDD    TP          SAVE CP/PCP NUMBER 
          STD    JC 
          LDD    EO          SAVE EJT ORDINAL 
          STD    EP 
          LDD    SC          SAVE SERVICE CLASS 
          STD    SP 
 BST14    LDC    ** 
 BSTA     EQU    *-1         (NO ROLLOUT FLAG)
          STM    SCJD        (SET/CLEAR NO REJECT FLAG) 
 BST14.1  LDM    BSTA 
          NJN    BST18       IF ROLLOUT MUST NOT OCCUR
  
*         BUILD *TACP* ENTRY FOR THIS CONTROL POINT.
  
          LDC    TACP-1      SET START OF *TACP* TABLE
          STD    T1 
 BST15    AOD    T1          INCREMENT *TACP* INDEX 
          LDI    T1 
          ZJN    BST17       IF END OF *TACP* TABLE 
          STD    T2 
          LDM    TJPR-1,T2
          SBM    TJPR-1,TP
          PJN    BST15       IF PRIORITY OF *TP* .LE. *TACP* ENTRY
  
*         MOVE ALL *TACP* ENTRIES THAT ARE BEYOND CURRENT POSITION
*         ONE SLOT TOWARD THE END OF THE *TACP* TABLE.
  
          LDD    TE 
          STD    T2 
 BST16    LDM    -1,T2
          STI    T2 
          SOD    T2 
          LMD    T1 
          NJN    BST16       IF MOVE NOT COMPLETE 
  
*         ALL ENTRIES OF LOWER PRIORITY HAVE BEEN MOVED ONE SLOT
*         TOWARD END OF *TACP* TABLE.  STORE CP/PCP NUMBER IN 
*         VACATED *TACP* ENTRY. 
  
 BST17    LDD    TP 
          STI    T1 
          AOD    TE          ADVANCE END OF *TACP* TABLE POINTER
          LDN    0           MARK END OF *TACP* TABLE 
          STI    TE 
 BST18    LJM    BST2        CONTINUE CP/PCP SCAN 
 CCA      SPACE  4,10 
**        CCA - COMPUTE CPA/PCPA ADDRESS. 
* 
*         ENTRY  (A) = CP/PCP NUMBER. 
*                (NC) = NUMBER OF CONTROL POINTS. 
* 
*         EXIT   (A) = CPA/PCPA ADDRESS.
  
  
 CCA1     ADD    NC 
          SHN    7
  
 CCA      SUBR               ENTRY/EXIT 
          SBD    NC 
          MJN    CCA1        IF CONTROL POINT 
          ZJN    CCA1        IF SYSTEM CONTROL POINT
          SHN    7
 CCAA     ADC    **          (PCP AREAS BASE ADDRESS) 
          UJN    CCAX        RETURN 
 CCP      SPACE  4,10 
**        CCP - CHECK FOR FIRST OR LAST CONTROL POINT.
* 
*         ENTRY  (A) = CONTROL POINT NUMBER.
*                (NC) = SYSTEM CONTROL POINT NUMBER.
* 
*         EXIT   (A) = 0 IF CONTROL POINT 1 OR LAST CONTROL POINT.
  
  
 CCP      SUBR               ENTRY/EXIT 
          SBN    1
          ZJN    CCPX        IF CP 1
          ADN    2
          LMD    NC 
          UJN    CCPX        RETURN 
 CFL      SPACE  4,30 
**        CFL - COMMIT FIELD LENGTH.
* 
*         SCAN THE *TACP* TABLE IN AN ATTEMPT TO FIND ENOUGH CM/ECS 
*         ASSIGNED TO LOWER PRIORITY JOBS TO ACCOMODATE THE JOB 
*         SELECTED FOR SCHEDULING.  REQUEST ROLLOUT FOR ONLY AS MANY
*         SUCH JOBS AS NECESSARY. 
* 
*         ENTRY  (TE) = LWA OF *TACP* TABLE.
*                (AM - AM+1) = AVAILABLE + ROLLING CM.
*                (AE) = AVAILABLE + ROLLING ECS.
*                (JC) = CP NUMBER OF JOB REQUESTING FL INCREASE 
*                       (IF ANY). 
*                (JP) = SCHEDULING PRIORITY OF SELECTED JOB.
*                (JM) = CM FL REQUIRED BY SELECTED JOB. 
*                (JE) = ECS FL REQUIRED BY SELECTED JOB.
*                (SP) = SERVICE CLASS OF SELECTED JOB.
*                (CS - CS+1) = EXCESS CM OF SERVICE CLASS.
*                (ES) = EXCESS ECS OF SERVICE CLASS.
* 
*         EXIT   (A) = 0 IF SUFFICIENT CM/ECS AFTER ROLLOUTS. 
*                    = 1 IF INSUFFICIENT CM.
*                    = 2 IF INSUFFICIENT ECS. 
*                    .LT. 0 IF ROLLOUT REQUEST WAS REJECTED.
* 
*         USES   T1, T3 - T7, CM - CM+4 TP. 
* 
*         CALLS  IRR. 
  
  
*         REQUEST ROLLOUT FOR ANY JOB WHOSE ROLLOUT REQUEST BIT (BIT
*         10D) IS SET IN ITS *TACP* ENTRY.
  
 CFL11    AOD    TP          INCREMENT *TACP* POINTER 
          LDI    TP 
          ZJN    CFLX        IF *TACP* SCAN COMPLETE
          SHN    21-12
          PJN    CFL11       IF ROLLOUT REQUEST BIT CLEAR 
          SHN    12-21       GET CP/PCP NUMBER
          LPC    177
          ERRNZ  /CPS/ROSR   CODE DEPENDS ON VALUE
          RJM    IRR         ISSUE *ROCM* 
          ZJN    CFL11       IF ROLLOUT REQUEST WAS ACCEPTED
          LCN    0           SET RETURN STATUS
  
 CFL      SUBR               ENTRY/EXIT 
          LDD    AM 
          SHN    14 
          LMD    AM+1 
          SBD    JM 
          SHN    -21
          NJN    CFL0        IF INSUFFICIENT CM 
          LDD    AE 
          SBD    JE 
          SHN    -21
          ZJN    CFLX        IF SUFFICIENT EM 
 CFL0     LDD    TE          INITIALIZE *TACP* POINTER
          STD    TP 
          LDD    AM          INITIALIZE CM ACCUMULATOR
          STD    T5 
          LDD    AM+1 
          STD    T6 
          LDD    AE          INITIALIZE ECS ACCUMULATOR 
          STD    T7 
  
*         ACCUMULATE CM AND ECS ASSIGNED TO LOWER PRIORITY JOBS.  SET 
*         THE REQUEST ROLLOUT BIT IN THE *TACP* ENTRY OF EACH LOWER 
*         PRIORITY JOB. 
  
 CFL1     SOD    TP          DECREMENT *TACP* POINTER 
          LDI    TP 
          ZJN    CFL2        IF END OF *TACP* TABLE REACHED 
          STD    T1 
          LMD    JC 
          ZJN    CFL1        IF CP SELECTED FOR FL INCREASE 
          LDD    JP          COMPARE SCHEDULING PRIORITIES
          SBM    TJPR-1,T1
          MJN    CFL1        IF SELECTED JOB HAS LOWER PRIORITY 
*         PSN                (LOCKED IN JOB REQUIRES FL INCREASE) 
 CFLC     EQU    *-1
          ZJN    CFL1        IF PRIORITIES ARE EQUAL
*         PSN                (IF SELECTED JOB WANTS FL INCREASE)
 CFLA     EQU    *-1
          LDC    2000 
          RAI    TP          SET ROLLOUT FLAG IN *TACP* ENTRY 
          SHN    21-13
          MJN    CFL1        IF ROLLOUT IN PROGRESS 
          LDM    TJCM-1,T1   ACCUMULATE CM OF ROLLABLE JOB
          RAD    T6 
          SHN    -14
          RAD    T5 
          LDM    TJEC-1,T1   ACCUMULATE ECS OF ROLLABLE JOB 
          RAD    T7 
          UJN    CFL1        CONTINUE *TACP* TABLE SCAN 
  
 CFL2     LDD    T5 
          SHN    14 
          LMD    T6 
          SBD    JM 
          PJN    CFL4        IF ENOUGH CM CAN BE OBTAINED VIA ROLLOUT 
          LDN    1           INDICATE INSUFFICIENT CM TO *SCJ*
 CFL3     LJM    CFLX        RETURN 
  
 CFL4     STD    T6          SAVE EXCESS CM AMOUNT
          SHN    -14
          STD    T5 
          LDD    T7 
          SBD    JE 
          PJN    CFL5        IF ENOUGH ECS CAN BE OBTAINED VIA ROLLOUT
          LDN    2           INDICATE INSUFFICIENT ECS TO *SCJ* 
          UJN    CFL3        RETURN 
  
 CFL5     STD    T7          SAVE EXCESS ECS AMOUNT 
          ADD    T5 
          ADD    T6 
          ZJN    CFL7        IF NO EXCESS CM/ECS
  
*         DISQUALIFY AS MANY JOBS AS POSSIBLE FROM ROLLOUT. 
  
          LDD    TP          INITIALIZE *TACP* TABLE POINTER
          STD    T4 
 CFL6     AOD    T4          INCREMENT *TACP* POINTER 
          LDI    T4 
          NJN    CFL8        IF NOT END OF *TACP* TABLE 
 CFL7     LJM    CFL11       ROLLOUT JOBS 
  
 CFL8     SHN    21-12
          PJN    CFL6        IF JOB IS NOT A ROLLOUT CANDIDATE
          SHN    12-21       GET CP/PCP NUMBER
          LPC    177
          STD    T3 
          LDD    T5 
          SHN    14 
          LMD    T6 
          SBM    TJCM-1,T3
 CFL9     MJN    CFL6        IF JOB-S CM FL TOO BIG TO REMAIN AT CP/PCP 
          STD    CM+1        SAVE CM AMOUNT 
          SHN    -14
          STD    CM 
          LDD    T7 
          SBM    TJEC-1,T3
          MJN    CFL6        IF JOB-S EM FL TOO BIG TO REMAIN AT CP/PCP 
          STD    CM+2        SAVE EM AMOUNT 
          LDM    TJSC-1,T3
          LMD    SP 
          NJN    CFL10       IF DIFFERENT SERVICE CLASSES 
          LDD    CS 
          SHN    14 
          LMD    CS+1 
          SBM    TJCM-1,T3
          MJN    CFL9        IF MAXIMUM CM FOR SERVICE CLASS EXCEEDED 
          STD    CM+4        SAVE NEW EXCESS CM 
          SHN    -14
          STD    CM+3 
          LDD    ES 
          SBM    TJEC-1,T3
          MJN    CFL9        IF MAXIMUM ECS FOR SERVICE CLASS EXCEEDED
          STD    ES          SAVE NEW EXCESS ECS
          LDD    CM+3        SAVE NEW EXCESS CM 
          STD    CS 
          LDD    CM+4 
          STD    CS+1 
 CFL10    LDD    CM          UPDATE REMAINING CM AMOUNT 
          STD    T5 
          LDD    CM+1 
          STD    T6 
          LDD    CM+2        UPDATE REMAINING ECS AMOUNT
          STD    T7 
          LDC    -2000       CLEAR ROLLOUT BIT IN *TACP* ENTRY
          RAI    T4 
          LJM    CFL6        CONTINUE *TACP* SCAN 
  
 CFLB     BSS    0
          LOC    CFLA 
          ZJN    CFL1        IF PRIORITIES ARE EQUAL
          LOC    *O 
 DDA      SPACE  4,10 
**        DDA - DETERMINE DEVICE ACTIVITY.
* 
*         BUILD *TDAC* TABLE. 
* 
*         USES   T1 - T5, CM - CM+4.
* 
*         MACROS SFA. 
  
  
 DDA2     STM    TDAC+1      CLEAR PCP ACTIVITY 
  
 DDA      SUBR               ENTRY/EXIT 
          LDN    ESTP 
          CRD    T1 
          LDN    NOPE-1      INITIALIZE EST ORDINAL FOR SEARCH
          STD    T1 
 DDA1     AOD    T1          INCREMENT EST ORDINAL
          LMD    T1+3 
          ZJN    DDA2        IF END OF EST SCAN 
          SFA    EST,T1 
          ADK    EQDE 
          CRD    CM 
          LDD    CM 
          SHN    21-13
          PJN    DDA1        IF NOT MASS STORAGE
          LDD    CM+4        READ MST ENTRY 
          SHN    3
          ADN    DALL 
          CRD    CM 
          LDD    CM          SAVE DEVICE ACTIVITY IN *TDAC* TABLE 
          STM    TDAC,T1
          UJN    DDA1        CONTINUE EST SCAN
 EJA      SPACE  4,10 
**        EJA - CALCULATE EJT ENTRY ADDRESS.
* 
*         ENTRY  (EO) = EJT ORDINAL.
* 
*         EXIT   (A) = EJT ENTRY ADDRESS. 
* 
*         MACROS CFI. 
  
  
 EJA      SUBR               ENTRY/EXIT 
          CFI    EJT,EO      CALCULATE ENTRY OFFSET 
          ADC    ** 
 EJAA     EQU    *-1         (EJT FWA)
          UJN    EJAX        RETURN 
 INT      SPACE  4,10 
**        INT - INITIALIZE CELLS FOR EJT/CM SCHEDULING. 
* 
*         ENTRY  (SCJC) .NE. 0 IF RECYCLE CALL. 
* 
*         USES   JP, JC, EP, RM - RM+1, RE, TM - TM+4, CM - CM+4. 
* 
*         CALLS  SSA. 
  
  
 INT1     RJM    SSA         SET STATISTICAL AREA ADDRESS 
          CRM    SPST+JS0S*5,T1  READ SCHEDULER STATISTICS
  
 INT      SUBR               ENTRY/EXIT 
          LDN    0
          STD    JP          PRIORITY OF SELECTED JOB 
          STD    JC          CP NUMBER OF JOB REQUESTING FL INCREASE
          STD    EP          EJT ORDINAL OF SELECTED JOB
          STD    RM          ROLLING CM ACCUMULATOR 
          STD    RM+1 
          STD    RE          ROLLING ECS ACCUMULATOR
          LDC    RTCL        READ REAL-TIME CLOCK 
          CRD    TM 
          LDM    SCJC 
          ZJN    INT1        IF NOT RECYCLE 
  
*         RESET CELLS AND INSTRUCTIONS FOR RECYCLE. 
  
          LDN    0
          STM    SCJC 
          STM    USDA 
          STM    USDB 
          STM    USDC 
          STM    SCPA 
          STM    SCPB 
          STM    SFJK 
          STM    SFJL 
          LCN    0
          STM    SFJG 
          STM    SFJM 
          LDC    LDDI+EP
          STM    SFJB 
          LDC    SFJ29
          STM    SFJH 
          LDC    LDDI+SC
          STM    SFJI 
          LDM    CFLB 
          STM    CFLA 
          LDM    SFJQ 
          STM    SFJC 
          LDC    SOMI 
          STM    SFJR 
          LJM    INTX        RETURN 
 IRR      SPACE  4,15 
**        IRR - ISSUE ROLLOUT REQUEST.
* 
*         ENTRY  (A) = 6/  OP,12/  CP.
*                      OP    *ROCM* OPTIONS.
*                      CP    CP/PCP TO ROLL.
* 
*         EXIT   (A) = 0 IF ROLLOUT REQUEST WAS ACCEPTED. 
*                JOBS PREEMPTED STATISTIC UPDATED.
* 
*         USES   CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 IRR      SUBR               ENTRY/EXIT 
          STD    CM+2        STORE CP/PCP NUMBER
          SHN    -14
          LMC    4000        SET ALTERNATE CP/PCP OPTION
          STD    CM+1 
          AOM    SPST+JS1S*5+2  INCREMENT JOBS PREEMPTED
          SHN    -14
          RAM    SPST+JS1S*5+1
          MONITOR  ROCM      REQUEST ROLLOUT
          LDD    CM+1 
          UJN    IRRX        RETURN 
 IUT      SPACE  4,20 
**        IUT - ISSUE *UTEM* MONITOR FUNCTION.
* 
*         ENTRY  (A) = 1/ F,1/ I,1/ 0,3/ C,12/ P
*                      F = 0 IF EJT ENTRY UPDATE. 
*                        = 1 IF QFT ENTRY UPDATE. 
*                      I = 0 IF INTERLOCK SHOULD BE SET.
*                        = 1 IF INTERLOCK SHOULD BE CLEARED.
*                      C = NUMBER OF *UTEM* PARAMETER WORDS.
*                        = 0 IF INTERLOCK REQUEST.
*                      P = PARAMETER LIST ADDRESS.
* 
*         EXIT   (A) = 0 IF *UTEM* FUNCTION WAS SUCCESSFUL. 
*                    .NE. 0 IF *UTEM* VERIFICATION FAILED.
* 
*         USES   CM - CM+4. 
* 
*         CALLS  EJA, IOA.
* 
*         MACROS MONITOR. 
  
  
 IUT      SUBR               ENTRY/EXIT 
          STM    IUTB        PARAMETER LIST ADDRESS 
          LPC    -7777
          SHN    1
          STD    CM          TABLE INDICATOR
          SCN    1           SAVE INTERLOCK FLAG
          SHN    1
          STD    CM+2 
          SHN    -14-2
          STD    CM+1        NUMBER OF PARAMETER WORDS
          LDM    IUTC,CM     USE TABLE FLAG TO SET SUBROUTINE ADDRESS 
          STM    IUTA 
          RJM    **          CALCULATE TABLE ADDRESS
 IUTA     EQU    *-1
          STD    CM+4 
          SHN    -14
          STD    CM+3 
          LDD    CM+1 
          ZJN    IUT1        IF NO PARAMETER WORDS
          LDD    MA          WRITE PARAMETERS TO MESSAGE BUFFER 
          CWM    **,CM+1
 IUTB     EQU    *-1
 IUT1     LDD    CM+2        SET/CLEAR INTERLOCK FLAG 
          SHN    5
          RAD    CM+1 
          LDN    0
          STD    CM+2 
          MONITOR  UTEM 
          LDD    CM+1 
          LJM    IUTX        RETURN 
  
 IUTC     CON    EJA         CALCULATE EJT ENTRY ADDRESS
          CON    /3SB/IOA    CALCULATE QFT ENTRY ADDRESS
 RST      SPACE  4,15 
**        RST - REQUEST STORAGE.
* 
*         ENTRY  (A) = 6/ T,12/ FL. 
*                      T  = MEMORY TYPE.  0 IF CM, 1 IF EM. 
*                      FL = STORAGE AMOUNT. 
*                (AA - AA+4) = *SCHE* WORD OF EJT ENTRY.
*                (EJ - EJ+4) = *JSNE* WORD OF EJT ENTRY.
* 
*         EXIT   (A) = 0 IF REQUEST ACCEPTED, ELSE NON-ZERO.
* 
*         USES   CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 RST      SUBR               ENTRY/EXIT 
          STD    CM+1        SET FL 
          SHN    -14         SET REQUEST TYPE 
          STD    CM+2 
          LDD    EJ+4 
          SHN    -1 
          LPN    37 
          LMK    PCJS 
          NJN    RST1        IF JOB NOT AT PCP
          LDC    4000        SET PSEUDO-ROLLIN FLAG 
          RAD    CM+2 
          LDD    AA+1        STORE PCP NUMBER IN *RSTM* REQUEST 
          STD    CM+3 
 RST1     MONITOR  RSTM      REQUEST STORAGE
          LDD    CM+1        RETURN STATUS IN (A) 
          UJN    RSTX        RETURN 
 SCP      SPACE  4,25 
**        SCP - SELECT CONTROL POINT. 
* 
*         ENTRY  (JC) = 0.
*                (JP) = SCHEDULING PRIORITY OF SELECTED JOB.
*                (TE) = LWA OF *TACP* TABLE.
* 
*         EXIT   (A) = (JC) = CP NUMBER IF ONE IS AVAILABLE.
*                           = 0 IF NO CP IS AVAILABLE.
*                    .LT. 0 IF PCP JOB WAS SELECTED BUT ONLY FIRST OR 
*                           LAST CP IS AVAILABLE. 
* 
*         USES   AE, AM - AM+1, T0 - T2.
* 
*         CALLS  CCP, IRR.
  
  
 SCP8     LDN    0           SET EXIT CONDITION = NO CP AVAILABLE 
 SCP9     STD    JC          SET CP NUMBER
  
 SCP      SUBR               ENTRY/EXIT 
          LDM    ASJA 
          LPN    76 
          LMK    PCJS*2 
          STD    T0 
          NJN    SCP2        IF SELECTED JOB NOT AT PCP 
          LDM    SCPA 
          RJM    CCP         CHECK FOR FIRST/LAST CP
          NJN    SCP1        IF FREE CP NEITHER FIRST NOR LAST
          STM    SCPA        CLEAR FREE CP NUMBER 
          AOM    SCPC 
 SCP1     LDM    SCPB 
          RJM    CCP         CHECK FOR FIRST/LAST CP
          NJN    SCP2        IF ROLLING CP NEITHER FIRST NOR LAST 
          STM    SCPB        CLEAR ROLLING CP NUMBER
          AOM    SCPC 
 SCP2     LDC    **          (NUMBER OF AVAILABLE CP) 
 SCPA     EQU    *-1
          NJN    SCP9        IF THERE IS AN AVAILABLE CONTROL POINT 
          LDC    **          (NUMBER OF ROLLING CP) 
 SCPB     EQU    *-1
          NJP    SCP8        IF CP JOB IS ALREADY BEING ROLLED
          LDD    TE          SET *TACP* POINTER 
          STD    T1 
 SCP3     SOD    T1          DECREMENT *TACP* INDEX 
          LDI    T1 
          NJN    SCP3.3      IF NOT END OF SEARCH 
 SCP3.1   LDN    0
*         LDN    1 OR 2      PCP JOB AND UNUSABLE CP FREE/ROLLING 
 SCPC     EQU    *-1
          ZJN    SCP3.2      IF NO NEED TO BLOCK PCP JOB SCHEDULING 
          AOM    SFJY        INHIBIT PCP JOB SCHEDULING 
          LCN    0
 SCP3.2   UJP    SCPX        RETURN 
  
 SCP3.3   STD    T2 
          SBD    NC 
          PJN    SCP3        IF PCP JOB 
          LDM    TJPR-1,T2
          SBD    JP 
          PJN    SCP3.1      IF LOWEST PRIORITY .GE. SELECTED JOB 
          LDD    T2 
          RJM    CCP         CHECK FOR FIRST/LAST CP
          NJN    SCP4        IF NEITHER FIRST NOR LAST CP 
          LDD    T0 
          ZJN    SCP3        IF SELECTED JOB AT PCP 
 SCP4     LDC    2000        CAUSE *CFL* TO IGNORE THIS CP
          RAI    T1 
          LDM    TJCM-1,T2   ACCUMULATE ROLLING CM FL 
          RAD    AM+1 
          SHN    -14
          RAD    AM 
          LDM    TJEC-1,T2   ACCUMULATE ROLLING EM FL 
          RAD    AE 
          LDD    T2 
          RJM    CCP         CHECK FOR FIRST/LAST CP
          NJN    SCP5        IF NEITHER FIRST NOR LAST CP 
*         LDN    0           DISALLOW PSEUDO-ROLLOUT OF CP 1 JOB
          ERRNZ  /CPS/ROSR   CODE DEPENDS ON VALUE
          UJN    SCP6        ISSUE ROLLOUT REQUEST
  
 SCP5     LDC    /CPS/ROPR*10000  ALLOW PSEUDO-ROLLOUT
 SCP6     LMD    T2 
          RJM    IRR         ISSUE ROLLOUT REQUEST
 SCP7     UJP    SCP8        RETURN 
 SFJ      SPACE  4,25 
**        SFJ - SEARCH FOR JOB. 
* 
*         SCAN THE EJT LOOKING FOR THE HIGHEST PRIORITY JOB IN A
*         SCHEDULABLE JOB STATE THAT MAY BE SCHEDULED WITHIN THE BOUNDS 
*         OF AVAILABLE CM/ECS AND SERVICE CLASS RESOURCE CONSTRAINTS. 
* 
*         ENTRY  (EP) = 0.
*                (TM - TM+1) = SECONDS PORTION OF *RTCL*. 
*                (TE) = LWA OF *TACP* TABLE.
* 
*         EXIT   (EP) = EJT ORDINAL OF SELECTED JOB.
*                     = 0 IF NO SCHEDULABLE JOB FOUND.
*                (CS - CS+1) = EXCESS CM IN SERVICE CLASS.
*                (ES) = EXCESS ECS IN SERVICE CLASS.
*                (JP) = SCHEDULING PRIORITY OF SELECTED JOB.
*                (JM) = CM REQUIRED BY SELECTED JOB.
*                (JE) = ECS REQUIRED BY SELECTED JOB. 
*                (SP) = SERVICE CLASS OF SELECTED JOB.
* 
*         USES   T0 - T7, CM - CM+4, AA - AA+4, BB - BB+4, EO,
*                CS - CS+1, ES, EJ - EJ+4, SC, EP, SP, JP, JM, JE, TP.
* 
*         CALLS  IUT. 
* 
*         MACROS CFI. 
  
  
 SFJ33    LDC    7777 
 SFJM     EQU    *-1         (2ND BEST JOB-S DEVICE ACTIVITY) 
          SHN    21-13
          MJN    SFJX        IF NO SECOND JOB 
          SHN    13-21
          SBN    3
          MJN    SFJ34       IF NOT TOO MUCH ACTIVITY 
          LDN    PPAL 
          CRD    CM 
          LDD    CM+4 
          ZJN    SFJX        IF NO PP-S AVAILABLE 
          SBN    1
          ZJN    SFJX        IF ONLY 1 PP AVAILABLE 
 SFJ34    AOM    SCJC        SET RECYCLE FLAG 
  
 SFJ      SUBR               ENTRY/EXIT 
          AOM    SPST+JS0S*5+1  INCREMENT EJT SCANS 
          SHN    -14
          RAM    SPST+JS0S*5
          LDM    SFJA        START SCAN WITH CURRENT ORDINAL
          STD    EO 
          LJM    SFJ3        ENTER LOOP 
  
*         SCAN EJT LOOKING FOR HIGHEST PRIORITY SCHEDULABLE JOB.
  
 SFJ2     SOM    SFJA        DECREMENT EJT ORDINAL
*         UJN    SFJX        (SCHEDULABLE JOB WITH ERROR FLAG SET)
 SFJR     EQU    *-2
          STD    EO 
          PJN    SFJ2.1      IF NOT WRAP OF THE EJT 
          LDC    ** 
 SFJS     EQU    *-1         (HIGHEST EJT ORDINAL)
          STM    SFJA 
          STD    EO 
 SFJ2.1   LMC    ** 
 SFJT     EQU    *-1         (STARTING EJT ORDINAL) 
          NJN    SFJ3        IF EJT SCAN NOT COMPLETE 
          LDD    EP 
*         UJN    SFJ2.2      (POST-REJECT SCAN COMPLETE)
 SFJB     EQU    *-1
          UJN    SFJ2.2      EXIT 
*         NJN    SFJ2.2      (JOB WAS REJECTED) 
 SFJC     EQU    *-1
  
*         NO JOB WAS SELECTED FOR SCHEDULING BUT AT LEAST ONE JOB WAS 
*         REJECTED DUE TO VIOLATION OF SERVICE CLASS RESOURCE 
*         CONSTRAINTS.  REMOVE SERVICE CLASS RESOURCE CONSTRAINTS AND 
*         RE-SCAN THE EJT TO SELECT THE HIGHEST PRIORITY JOB OF THOSE 
*         PREVIOUSLY REJECTED.  THE SELECTED JOB WILL BE SCHEDULED ONLY 
*         IF SUFFICIENT CM AND ECS IS AVAILABLE WITHOUT ROLLING OUT 
*         OTHER JOBS.  IF FLEXIBLE MEMORY PARTITIONING IS DISABLED, NO
*         RE-SCAN WILL BE PERFORMED.
  
          LDM    SCPA 
*         UJN    SFJX        (FLEXIBLE MEMORY PARTITIONING DISABLED)
 SFJW     EQU    *-2
          ZJN    SFJX        IF NO AVAILABLE CONTROL POINTS 
          LDN    0           REINITIALIZE EJT SCAN
          STM    USDA 
          STM    USDB 
          STM    USDC 
          LDM    SFJN 
          STM    SFJB 
          LDC    SFJ2 
          STM    SFJH 
          LDM    SFJO 
          STM    SFJI 
          LJM    SFJ2        PERFORM POST-REJECT SCHEDULING 
  
 SFJ2.2   LJM    SFJ33       CONTINUE 
  
 SFJ3     CFI    EJT,EO      GET EJT ENTRY OFFSET 
          ADC    **          ADD EJT FWA (SET BY *PRS*) 
 SFJD     EQU    *-1         (EJT FWA)
          ADK    JSNE        READ EJT ENTRY 
          CRD    EJ 
          STD    AA+1        SAVE EJT ADDRESS 
          SHN    -14
          STD    AA 
          LDD    EJ 
          ZJN    SFJ4        IF EMPTY ENTRY 
          LDD    EJ+4 
          SHN    21-6 
          PJN    SFJ5        IF JOB ADVANCE IS CLEAR
 SFJ4     LJM    SFJ2        CONTINUE EJT SCAN
  
 SFJ5     SHN    6-0
          MJN    SFJ4        IF JOB ADVANCE INHIBITED 
          LPN    37          GET JOB STATUS 
          STD    T2 
          STM    SFJU+4 
          LDD    AA          READ REMAINDER OF EJT ENTRY
          SHN    14 
          LMD    AA+1 
          ADN    SCHE-JSNE
          CRD    AA 
          ADN    PRFE-SCHE
          CRD    CM 
          ADN    SCLE-PRFE
          CRD    BB 
          LDD    BB          GET SERVICE CLASS
          SHN    -6 
          STD    SC 
          ERRPL  7677-MXPR   ENSURE *LCN* MAY BE USED 
          LCN    7777-MXPR   PRESET SCHEDULING PRIORITY 
          STD    BB+1 
          LDD    AA          GET EST ORDINAL
          STD    BB+2 
          LDD    CM+1 
          ZJP    SFJ7        IF NO ERROR FLAG SET IN EJT ENTRY
          LDM    TJST,T2
          SHN    21-12
          PJN    SFJ6        IF JOB MAY NOT BE SCHEDULED
          LDD    T2 
          LMN    SUJS 
          NJN    SFJ5.1      IF NOT SUSPENDED JOB 
          LDD    EJ+4 
          SHN    0-7
          LPN    17 
          LMN    OLCS 
          ZJN    SFJ6        IF ON-LINE INTERACTIVE JOB 
          LMN    DTCS&OLCS
          NJN    SFJ5.1      IF NOT DETACHED
          LDD    CM+1 
          SBK    ODET 
          PJN    SFJ5.1      IF ERROR FLAG .GE. *ODET*
          LDD    BB 
          SHN    21-4 
          PJN    SFJ6        IF NOT FORCED ROLLIN 
 SFJ5.1   LDD    CM+1 
          SBK    MXET 
          PJN    SFJ6        IF ERROR FLAG NOT VALID
          LDM    TEFP,CM+1   GET TRANSFER ADDRESS FROM *TEFP* TABLE 
 SFJV     ZJN    SFJ6        IF NO PROCESSOR DEFINED FOR ERROR FLAG 
*         UJN    SFJ6        (IF DEADSTART SEQUENCING JOB HAS NOT RUN)
          STD    T1 
          LJM    0,T1 
  
 SFJ6     LJM    SFJ2        CONTINUE EJT SCAN
  
*         CHECK FOR FORCED ROLLIN/ROLLOUT.
  
 SFJ7     LDD    BB 
          SHN    21-5 
          MJN    SFJ6        IF FORCED ROLLOUT
          SHN    5-4
          PJN    SFJ10       IF NOT FORCED ROLLIN 
          LDM    TJST,T2
          SHN    21-11
          PJN    SFJ10       IF JOB MAY NOT BE FORCED ROLLED IN 
 SFJ8     LJM    SFJ12       SCHEDULE JOB WITH FL 
  
*         IF ENTERING AT THIS LOCATION DUE TO AN ERROR FLAG REQUIRING 
*         ROLLIN WITH ONLY NFL, SET THE MAXIMUM NFL AS THE REQUIRED CM
*         FL.  ROUTINE *ASJ* WILL REQUEST THIS MUCH CM STORAGE TO 
*         ENSURE *1RI* WILL HAVE SUFFICIENT SPACE FOR NFL ROLLIN. 
  
 SFJ9     LDK    MNFL 
          STD    BB+4 
          LDN    0           CLEAR ECS REQUIREMENT
          STD    BB+3 
  
*         SAVE THE JOB-S EJT ORDINAL AS A FLAG FOR ROUTINE *ASJ*
*         INDICATING THE CM FL FIELD IN THE EJT ENTRY MUST BE CLEARED 
*         TO TELL *1RI* ONLY NFL SHOULD BE ROLLED IN.  IF THE JOB 
*         STATE IS *PRJS*, CLEARING THE CM FL FIELD WILL HAVE NO
*         EFFECT. 
  
          LDD    EO 
          STM    ASJB 
          LDC    UJNI+77-SFJR+SFJX  TERMINATE JOB SEARCH
          ERRPL  SFJR-SFJX-40  RANGE ERROR
          STM    SFJR 
          LJM    SFJ12.5     CHECK PRIORITY 
  
*         DETERMINE WHETHER OR NOT THE JOB IS IN A SCHEDULABLE STATE. 
  
 SFJ10    LDD    CM+1 
 SFJ10.1  NJN    SFJ11       IF ERROR FLAG SET
          LDM    TJST,T2
          SHN    21-13
          MJN    SFJ10.3     IF SCHEDULABLE JOB 
 SFJ10.2  LJM    SFJ2        CONTINUE SEARCH
  
 SFJ10.3  LDD    SC 
 SFJ10.5  SBK    MXJC 
 SFJ11    PJN    SFJ12       IF NO JCB FOR SERVICE CLASS
          LDD    T2 
          LMK    SIJS 
          ZJN    SFJ12       IF SCP ROLLIN JOB STATUS 
  
*         CALCULATE SCHEDULING PRIORITY.  THE CALCULATION IS PERFORMED
*         IN-LINE TO AVOID THE OVERHEAD OF SUBROUTINE USAGE.
  
          LDC    SHNI+77     CALCULATE THE WEIGHTING FACTOR SHIFT 
          SBM    TEPB+2*MXJC,SC 
          STM    SFJE 
          LDD    TM 
          SBD    AA+3 
          SHN    14 
          ADD    TM+1 
          SBD    AA+4 
 SFJE     SHN    ** 
          ADM    TEPB,SC
          SBM    TEPB+1*MXJC,SC 
          MJN    SFJ11.1     IF SCHEDULING PRIORITY .LT. UPPER BOUND
          LDN    0           SET PRIORITY TO UPPER BOUND
 SFJ11.1  ADM    TEPB+1*MXJC,SC 
          STD    BB+1        SAVE SCHEDULING PRIORITY 
 SFJ12    LDD    CM+1 
*         UJN    SFJ12.2     (USER EM ENABLED)
 SFJF     EQU    *-1
          LMN    ORET 
          NJN    SFJ12.1     IF NOT OPERATOR OVERRIDE 
          STD    BB+3 
 SFJ12.1  LDD    BB+3 
          ZJN    SFJ12.2     IF EM NOT REQUIRED 
          LJM    SFJ2        CHECK NEXT JOB 
  
 SFJ12.2  AOM    USDC        INCREMENT SCHEDULABLE JOB COUNT
          LDD    T2 
          LMK    PCJS 
          NJN    SFJ12.3     IF NOT PCP JOB 
          LDN    0
*         LDN    1           (PCP JOB SCHEDULING INHIBITED) 
 SFJY     EQU    *-1
          NJP    SFJ2        IF PCP JOB SCHEDULING INHIBITED
          STD    BB+3        CLEAR EM REQUIREMENT 
          STD    BB+4        CLEAR CM REQUIREMENT 
          LDN    1           SET EST ORDINAL FOR ZERO ACTIVITY
          STD    BB+2 
 SFJ12.3  LDD    AM 
          SHN    14 
          LMD    AM+1 
          SBD    BB+4 
          SHN    -21
          STD    T1 
          ZJN    SFJ12.4     IF SUFFICIENT CM 
          STM    USDA        SET INSUFFICIENT CM
 SFJ12.4  LDD    AE 
          SBD    BB+3 
          PJN    SFJ12.5     IF SUFFICIENT EM 
          LDN    1           SET INSUFFICIENT EM
          STM    USDB 
          STD    T1          SET CP SEARCH REQUIRED 
 SFJ12.5  LDD    BB+1 
          SBD    JP 
          MJN    SFJ13.2     IF PRIORITY .LT. CURRENT BEST
          NJN    SFJ13.1     IF PRIORITY .GT. CURRENT BEST
          LDD    T2 
          LMK    PCJS 
          NJN    SFJ12.6     IF NOT PCP JOB 
          LDM    SCPA        CHECK IF CP AVAILABLE FOR PSEUDO-ROLLIN
          RJM    CCP
          NJN    SFJ13.1     IF FREE CP NEITHER FIRST NOR LAST
          LJM    SFJ2        CONTINUE EJT SCAN
  
 SFJ12.6  LDD    SC 
          LMN    DSSC 
          NJN    SFJ13.0     IF NOT DEADSTART SEQUENCING JOB
 SFJ13    LJM    SFJ15.1     SELECT THIS JOB AS CURRENT BEST CANDIDATE
  
 SFJ13.0  LDC    7777 
 SFJG     EQU    *-1         (ACTIVITY COUNT OF CURRENT BEST JOB) 
          SBM    TDAC,BB+2
          MJN    SFJ13.2     IF CURRENT BEST HAS LESS DEVICE ACTIVITY 
 SFJ13.1  NJN    SFJ15       IF CURRENT BEST HAS MORE DEVICE ACTIVITY 
 SFJ13.2  LDC    ** 
 SFJK     EQU    *-1         (PRIORITY OF SECOND BEST JOB)
          SBD    BB+1 
          MJN    SFJ13.4     IF PRIORITY .GT. 2ND BEST
 SFJ13.3  NJN    SFJ14       IF PRIORITY .LT. 2ND BEST
          LDM    TDAC,BB+2
          SBM    SFJM 
          MJN    SFJ13.4     IF ACTIVITY .LT. 2ND BEST
          NJN    SFJ14       IF ACTIVITY .GT. 2ND BEST
          LDC    ** 
 SFJL     EQU    *-1         (CM FL OF 2ND BEST JOB)
          SBD    BB+4 
          PJN    SFJ14       IF REQUIRED CM .LE. 2ND BEST 
 SFJ13.4  LDD    BB+1        SET 2ND BEST = CURRENT JOB 
          STM    SFJK 
          LDM    TDAC,BB+2
          STM    SFJM 
          LDD    BB+4 
          STM    SFJL 
 SFJ14    LJM    SFJ2        CONTINUE EJT SCAN
  
*         DETERMINE IF ENOUGH CM AND ECS ARE AVAILABLE WITHOUT ROLLING
*         JOBS OUT.  ALSO, CHECK FOR VIOLATION OF SERVICE CLASS 
*         RESOURCE CONSTRAINTS. 
  
 SFJ15    LDN    0           INITIALIZE CM/ECS ACCUMULATORS 
 SFJ15.1  STD    T5 
          STD    T6 
          STD    T7 
          LDD    T1 
          ZJN    SFJ18       IF LOWER PRIORITY JOB SEARCH NOT REQUIRED
 SFJ16    LJM    SFJ29       GO PERFORM SCAN FOR LOWER PRIORITY JOBS
*         LJM    SFJ2        (IF POST-REJECT SCHEDULING)
 SFJH     EQU    *-1
  
*         CHECK FOR VIOLATION OF SERVICE CLASS CONSTRAINTS. 
  
 SFJ18    LCN    0           INITIALIZE EXCESS CM/ECS ACCUMULATORS
          STD    AA+1 
          STD    AA+2 
          LDN    37 
          STD    AA 
          LDD    SC 
*         UJN    SFJ19       (IF POST-REJECT SCHEDULING)
 SFJI     EQU    *-1
          SBN    MXJC 
          MJN    SFJ20       IF JCB EXISTS FOR JOB-S SERVICE CLASS
 SFJ19    LJM    SFJ26       GO MAKE THIS JOB CURRENT BEST CANDIDATE
  
 SFJ20    LDD    CM+1 
          NJN    SFJ19       IF ERROR FLAG SET
          LDM    TJAM+1*MXJC,SC 
          ADN    MNFL 
          SBD    BB+4 
          MJN    SFJ21       IF REQUIRED CM .GT. MAXIMUM FOR ONE JOB
          LDM    TJAM+4*MXJC,SC 
          SBD    BB+3 
          PJN    SFJ21.2     IF REQUIRED EM .LE. MAXIMUM FOR ONE JOB
 SFJ21    LDM    TJST,T2
          SHN    21-7 
          MJP    SFJ14       IF INITIAL JOB STATE 
          LDC    SFJU+2*10000  SET SERVICE WAIT JOB STATUS
          RJM    IUT         ISSUE *UTEM* REQUEST 
          LJM    SFJ24       REJECT JOB 
  
*         DETERMINE IF THE TOTAL CM/ECS ASSIGNED TO JOBS OF THIS
*         CANDIDATE-S SERVICE CLASS WILL EXCEED THE MAXIMUM ALLOWABLE 
*         IF THE CANDIDATE JOB IS SELECTED FOR SCHEDULING. THE INITIAL
*         CHECK DOES NOT CONSIDER THE AMOUNT OF CM/ECS ASSIGNED TO
*         LOWER PRIORITY JOBS OF THE CANDIDATE-S SERVICE CLASS. 
*         HOWEVER, IF THE FIRST CHECK SHOWS THE CM/ECS MAXIMUM WOULD BE 
*         EXCEEDED, A SECOND CHECK IS PERFORMED THAT INCLUDES THE 
*         CM/ECS ASSIGNED TO LOWER PRIORITY JOBS OF THE CANDIDATE-S 
*         SERVICE CLASS.
  
 SFJ21.2  LDM    TJAM+2*MXJC,SC 
          SBM    TTCU,SC
          SHN    14 
          ADM    TJAM+3*MXJC,SC 
          SBM    TTCU+1*MXJC,SC 
          SBD    BB+4 
          PJN    SFJ22       IF TOTAL CM .LE. ALLOWABLE MAXIMUM 
          SHN    6
          ADD    T5 
          SHN    14 
          ADD    T6 
          MJN    SFJ23       IF TOTAL CM .GT. ALLOWABLE MAXIMUM 
  
*         CALCULATE THE AMOUNT OF CM ASSIGNED TO JOBS OF THE
*         CANDIDATE-S SERVICE CLASS THAT MAY REMAIN ASSIGNED IF THE 
*         CANDIDATE IS SELECTED FOR SCHEDULING. 
  
          STD    AA+1 
          SHN    -14
          STD    AA 
  
*         PERFORM ECS RESOURCE CONSTRAINT CHECK AS WAS JUST DONE FOR
*         CM. 
  
 SFJ22    LDM    TJAM+5*MXJC,SC 
          SBM    TTUE,SC
          SBD    BB+3 
          PJN    SFJ26       IF TOTAL ECS .LE. ALLOWABLE MAXIMUM
          ADD    T7 
          PJN    SFJ25       IF TOTAL ECS .LE. ALLOWABLE MAXIMUM
 SFJ23    LJM    SFJ29       GO CALCULATE ECS OF LOWER PRIORITY JOBS
*         LJM    SFJ24       (IF LOWER PRIORITY SCAN ALREADY PERFORMED) 
 SFJJ     EQU    *-1
  
*         THIS JOB WILL BE SELECTED FOR SCHEDULING ONLY IF NO OTHER 
*         CANDIDATES ARE FOUND THAT WOULD NOT VIOLATE SERVICE CLASS 
*         RESOURCE CONSTRAINTS AND FLEXIBLE MEMORY PARTITIONING IS
*         ENABLED.  ADDITIONALLY, IT WILL BE SCHEDULED ONLY IF NO 
*         ROLLOUTS ARE REQUIRED AND WILL BE ASSIGNED THE LOWER BOUND
*         SCHEDULING PRIORITY OF ITS SERVICE CLASS. 
  
 SFJ24    LDM    SFJP        SET REJECT FLAG
          STM    SFJC 
          LJM    SFJ27       CONTINUE EJT SCAN
  
*         MAKE THIS JOB THE CURRENT BEST SCHEDULING CANDIDATE.
  
 SFJ25    STD    AA+2 
 SFJ26    LDD    AA          SAVE EXCESS CM AMOUNT
          STD    CS 
          LDD    AA+1 
          STD    CS+1 
          LDD    AA+2        SAVE EXCESS ECS AMOUNT 
          STD    ES 
          LDD    JP          SAVE PRIORITY
          STD    T2 
          LDD    BB+1        SAVE SCHEDULING PRIORITY 
          STD    JP 
          LDD    T2          SAVE PREVIOUS BEST PRIORITY
          STD    BB+1 
          LDD    JM          SAVE CM AMOUNT 
          STD    T2 
          LDD    BB+4        SAVE REQUIRED CM 
          STD    JM 
          LDD    T2 
          STD    BB+4 
          LDD    BB+3        SAVE REQUIRED ECS
          STD    JE 
          LDM    SFJG        SAVE ACTIVITY IN FIRST *TDAC* ENTRY
          STM    TDAC 
          LDM    TDAC,BB+2   SAVE MASS STORAGE ACTIVITY COUNT 
          STM    SFJG 
          LDN    0           CAUSE FIRST *TDAC* ENTRY TO BE USED
          STD    BB+2 
          LDD    EO          SAVE EJT ORDINAL 
          STD    EP 
          LDD    SC          SAVE SERVICE CLASS 
          STD    SP 
          LDD    EJ+4        SAVE JOB STATUS
          STM    ASJA 
 SFJ27    LDC    SFJ29       RESTORE INSTRUCTION
          STM    SFJJ 
          LDD    SP 
          LMN    DSSC 
          ZJP    SFJX        IF DEADSTART SEQUENCING JOB SELECTED 
          LJM    SFJ13.2     CHECK FOR NEW 2ND BEST JOB 
  
*         CALCULATE AMOUNTS OF CM AND ECS OCCUPIED BY LOWER PRIORITY
*         JOBS. 
  
 SFJ29    LDC    SFJ24
          STM    SFJJ 
          LDD    AM+1        INITIALIZE CM ACCUMULATOR
          STD    T3 
          LDD    AM 
          STD    T2 
          LDD    AE          INITIALIZE ECS ACCUMULATOR 
          STD    T4 
          LDD    TE          SET *TACP* TABLE POINTER 
          STD    TP 
 SFJ30    SOD    TP          DECREMENT *TACP* POINTER 
          LDI    TP 
          NJN    SFJ31       IF *TACP* SCAN NOT COMPLETE
          LDD    T2 
          SHN    14 
          LMD    T3 
          SBD    BB+4 
          MJN    SFJ30.1     IF INSUFFICIENT CM TO SCHEDULE THIS JOB
          LDD    T4 
          SBD    BB+3 
          MJN    SFJ30.1     IF INSUFFICIENT ECS TO SCHEDULE THIS JOB 
          LJM    SFJ18       GO CHECK RESOURCE CONSTRAINTS
  
 SFJ30.1  LJM    SFJ2        CONTINUE EJT SCAN
  
 SFJ31    STD    T1          SAVE CP/PCP NUMBER 
          LDM    TJPR-1,T1
          SBD    BB+1 
          PJN    SFJ30       IF *TACP* PRIORITY .GE. CANDIDATE-S
          LDM    TJSC-1,T1
          LMD    SC 
          NJN    SFJ32       IF *TACP* SERVICE CLASS .NE. CANDIDATE-S 
  
*         ACCUMULATE CM AND ECS OF LOWER PRIORITY JOB HAVING THE SAME 
*         SERVICE CLASS AS THAT OF THE CANDIDATE JOB. 
  
          LDM    TJCM-1,T1
          RAD    T6 
          SHN    -14
          RAD    T5 
          LDM    TJEC-1,T1
          RAD    T7 
  
*         ACCUMULATE CM AND ECS OF LOWER PRIORITY JOB REGARDLESS OF 
*         SERVICE CLASS.
  
 SFJ32    LDM    TJCM-1,T1
          RAD    T3 
          SHN    -14
          RAD    T2 
          LDM    TJEC-1,T1
          RAD    T4 
          LJM    SFJ30       CONTINUE *TACP* SCAN 
  
 SFJA     BSS    1           LAST EJT ORDINAL SCHEDULED 
  
 SFJN     BSS    0
          LOC    SFJB 
          UJN    SFJ2.2      POST-REJECT SCAN COMPLETE
          LOC    *O 
  
 SFJO     BSS    0
          LOC    SFJI 
          UJN    SFJ19       POST-REJECT SCHEDULING, SELECT JOB 
          LOC    *O 
  
 SFJP     BSS    0
          LOC    SFJC 
          NJN    SFJ2.2      IF SELECTION MADE AND REJECT FOUND 
          LOC    *O 
  
 SFJQ     BSS    0
          LOC    SFJC 
          UJN    SFJ2.2      EXIT 
          LOC    *O 
  
*         *UTEM* PARAMETERS FOR SETTING JOB STATUS. 
  
 SFJU     VFD    1/1,5/JSNE,6/5  VERIFY THAT JOB STATUS HAS NOT CHANGED 
          VFD    6/1,6/0
          CON    0,0
          CON    0           JOB STATUS WHEN JOB WAS SELECTED 
  
          VFD    1/0,5/JSNE,6/5  SET JOB STATUS 
          VFD    6/1,6/0
          CON    0
          CON    0
          CON    SWJS 
 TEFP     SPACE  4,10 
**        TEFP - TABLE OF ERROR FLAG PROCESSORS.
* 
*         EACH ENTRY CONTAINS THE ADDRESS OF THE PROCESSOR ASSOCIATED 
*         WITH THE ERROR FLAG.
  
 TEFP     INDEX 
          INDEX  ARET,SFJ8   ARITHMETIC ERROR, ROLLIN FL
          INDEX  ITET,SFJ8   SCP INVALID TRANSFER ADDRESS, ROLLIN FL
          INDEX  PSET,SFJ8   PROGRAM STOP, ROLLIN FL
          INDEX  PPET,SFJ8   PPU ABORT, ROLLIN FL 
          INDEX  CPET,SFJ8   CPU ABORT, ROLLIN FL 
          INDEX  PCET,SFJ8   PP CALL ERROR, ROLLIN FL 
          INDEX  MLET,SFJ8   MESSAGE LIMIT, ROLLIN FL 
          INDEX  TLET,SFJ8   TIME LIMIT, ROLLIN FL
          INDEX  FLET,SFJ8   FILE LIMIT, ROLLIN FL
          INDEX  TKET,SFJ8   TRACK LIMIT, ROLLIN FL 
          INDEX  SRET,SFJ8   SRU LIMIT, ROLLIN FL 
          INDEX  FSET,SFJ8   FORCED ERROR, ROLLIN FL
          INDEX  ODET,SFJ8   OPERATOR DROP, ROLLIN FL 
          INDEX  IDET,SFJ8   SUBSYSTEM IDLEDOWN, ROLLIN FL
          INDEX  RRET,SFJ8   OPERATOR RERUN, ROLLIN FL
          INDEX  DRET,SFJ9   DEADSTART RERUN, ROLLIN NFL
          INDEX  STET,SFJ8   SUSPENSION TIMEOUT, ROLLIN FL
          INDEX  OKET,SFJ8   OPERATOR KILL, ROLLIN FL 
          INDEX  TIET,SFJ7   USER BREAK ONE, ROLLIN FL
          INDEX  TAET,SFJ7   USER BREAK TWO, ROLLIN FL
          INDEX  SVET,SFJ9   SECURITY VIOLATION, ROLLIN NFL 
          INDEX  SSET,SFJ8   SUBSYSTEM ABORT, ROLLIN FL 
          INDEX  ECET,SFJ8   ECS PARITY ERROR, ROLLIN FL
          INDEX  PEET,SFJ8   CPU PARITY ERROR, ROLLIN FL
          INDEX  JSET,SFJ9   JOB STEP ABORT, ROLLIN NFL 
          INDEX  SYET,SFJ9   SYSTEM ABORT, ROLLIN NFL 
          INDEX  RAET,SFJ9   RECOVERY ABORT, ROLLIN NFL 
          INDEX  SWET,SFJ9   SYSTEM SOFTWARE ERROR, ROLLIN NFL
          INDEX  ORET,SFJ9   OVERRIDE CONDITION, ROLLIN NFL 
          INDEX  MXET 
 TABLES   SPACE  4,10 
**        TJST - TABLE OF JOB STATE ATTRIBUTES. 
*         ENTRY = 1 WORD. 
*         INDEXED BY JOB STATUS.
* 
*T        1/ SS, 1/ ES, 1/ FR, 1/ TE, 1/ PI 
*         SS     SET IF SCHEDULABLE JOB STATE.
*         ES     SET IF SCHEDULABLE JOB STATE WHEN ERROR FLAG IS SET. 
*         FR     SET IF JOB IN THIS STATE MAY BE FORCED ROLLED IN.
*         TE     SET IF TIMED/EVENT TYPE JOB STATE. 
*         PI     SET IF PRE-INITIAL TYPE JOB STATE. 
* 
*         NOTE - ANY CHANGE TO THIS TABLE MUST BE COUPLED WITH A
*                CORRESPONDING CHANGE TO THE *TJST* TABLE IN *1PP*. 
  
 TJST     JOBSTAT 
          JOBSTAT PRJS,SS,ES,FR,,PI 
          JOBSTAT EXJS
          JOBSTAT ROJS,SS,ES,FR 
          JOBSTAT SIJS,SS,ES,FR 
          JOBSTAT SOJS,,ES,FR 
          JOBSTAT TOJS,,ES,,TE
          JOBSTAT IOJS
          JOBSTAT DOJS
          JOBSTAT SUJS,,ES
          JOBSTAT PCJS,SS,ES,FR 
          JOBSTAT ERJS,,,FR,TE
          JOBSTAT NVJS
          JOBSTAT PWJS,,,,TE,PI 
          JOBSTAT SWJS,,ES
  
          INDEX   MXJS       TERMINATE TABLE
 SSA      SPACE  4,10 
**        SSA - SET SCHEDULER STATISTICAL AREA ADDRESS. 
* 
*         EXIT   (A) = FWA SCHEDULER STATISTICS WORD 0. 
*                (T1) = WORD COUNT FOR EJT SCHEDULING DATA. 
* 
*         USES   CM - CM+4, T1. 
  
  
 SSA      SUBR               ENTRY/EXIT 
          LDN    JS3S-JS0S+1 SET WORD COUNT 
          STD    T1 
          ADK    SDAP-JS3S+JS0S-1   SET SCHEDULER STATISTICS ADDRESS
          CRD    CM 
          LDD    CM 
          SHN    14 
          LMD    CM+1 
          ADK    JS0S 
          UJN    SSAX        EXIT 
 USD      SPACE  4,10 
**        USD - UPDATE STATISTICAL DATA.
* 
*         ENTRY  (A) = 0 IF JOB SCHEDULED.
* 
*         EXIT   SCHEDULING STATISTICAL DATA UPDATED. 
* 
*         CALLS  SSA. 
  
  
 USD      SUBR               ENTRY/EXIT 
          NJN    USD1        IF JOB NOT ASSIGNED
          AOM    SPST+JS1S*5+4  INCREMENT JOBS SCHEDULED
          SHN    -14
          RAM    SPST+JS1S*5+3
          LDM    SFJB 
          LMM    SFJN 
          NJN    USD2        IF NOT SCHEDULED ON RESCAN 
          AOM    SPST+JS2S*5+2  INCREMENT JOBS SCHEDULED ON RESCAN
          SHN    -14
          RAM    SPST+JS2S*5+1
          UJN    USD2        UPDATE STATISTICS
  
 USD1     LDC    0           UPDATE INSUFFICIENT CM COUNT 
*         LDC    1           (INSUFFICIENT CM FOR JOB)
 USDA     EQU    *-1
          RAM    SPST+JS2S*5+4
          SHN    -14
          RAM    SPST+JS2S*5+3
          LDC    0           UPDATE INSUFFICIENT EM COUNT 
*         LDC    1           (INSUFFICIENT EM FOR JOB)
 USDB     EQU    *-1
          RAM    SPST+JS3S*5+2
          SHN    -14
          RAM    SPST+JS3S*5+1
          LDM    SCPA 
          NJN    USD2        IF CONTROL POINT AVAILABLE 
          AOM    SPST+JS3S*5+4  SET NO CONTROL POINT AVAILABLE
          SHN    -14
          RAM    SPST+JS3S*5+3
 USD2     LDC    0           UPDATE SCHEDULABLE JOB COUNT 
 USDC     EQU    *-1         (SCHEDULABLE JOB COUNT)
          RAM    SPST+JS0S*5+4
          SHN    -14
          RAM    SPST+JS0S*5+3
          SHN    -14
          RAM    SPST+JS0S*5+2
          RJM    SSA         SET STATISTICAL AREA ADDRESS 
          CWM    SPST+JS0S*5,T1  WRITE STATISTICAL DATA 
          LJM    USDX        EXIT 
 SPST     SPACE  4,10 
 SPST     EQU    *-JS0S*5    SCHEDULER PERFORMANCE STATISTICS 
          BSS    JS3S*5+5-JS0S*5
          TTL    1SJ - JOB SCHEDULER. 
          SPACE  4,10 
*         COMMON DECKS. 
  
  
          LIST   X
 CPR$     SET    1           ASSEMBLE ROUTINE *CPR* OF *COMPCPE*
*CALL     COMPCPE 
          LIST   *
*CALL     COMPRJC 
          SPACE  4,10 
          USE    OVERLAY
          SPACE  4,10 
**        OVERLAY ORIGINS.
  
  
 O3SA     EQU    *+5         *3SA* ORIGIN 
 O3SB     EQU    *+5         *3SB* ORIGIN 
          SPACE  4,10 
**        OVERFLOW CHECKS.
  
  
          ERRNG  TJSC-TTUE-MXJC-1  CHECK *1SJ* TABLES OVERFLOW
          TITLE  INITIALIZATION.
 PRS      SPACE  4,10 
**        PRS - PRESET. 
* 
*         USES   T1, CM - CM+4, AA - AA+4, BB - BB+4, EJ - EJ+4,
*                TM - TM+4, NC. 
* 
*         CALLS  RJC. 
* 
*         MACROS ISTORE.
  
  
 PRS      SUBR               ENTRY/EXIT 
          LDK    PCPP        SET FWA OF PCPA-S
          CRD    CM 
          LDD    CM+3 
          SHN    14 
          LMD    CM+4 
          SBK    200B 
          STM    CCAA+1 
          SHN    -14
          LMC    ADCI 
          STM    CCAA 
          LDD    CM+2        SET NUMBER OF MCT ENTRIES
          ERRNZ  MCTP-PCPP   CODE DEPENDS ON VALUE
          STM    BSTB 
          LDN    EJTP        PRESET EJT FWA 
          CRD    CM 
          LDD    CM+1 
          STM    EJAA 
          STM    SFJD 
          LDD    CM 
          RAM    EJAA-1 
          LPN    77 
          RAM    SFJD-1 
          SOD    CM+2        SET THE LAST EJT ORDINAL 
          STM    SFJS 
          LDK    LOSL        SET START OF THE EJT SCAN
          CRD    CM 
          LDD    CM+4 
          STM    SFJA 
          STM    SFJT 
          LDC    RTCL        READ REAL TIME CLOCK 
          CRD    TM 
          LDD    IR+2        SAVE FLAGS BYTE FROM CALL
          RAM    SCJA 
          LDD    CP          SET NUMBER OF CONTROL POINTS 
          SHN    -7 
          STD    NC 
          LDC    INWL 
          CRD    CM 
          LDD    CM+3        SAVE SCHEDULER CONTROL FLAGS 
          LPN    77 
          RAM    SCJB 
          LPN    10 
          ZJN    PRS0        IF DEADSTART SEQUENCING JOB HAS RUN
          LDM    PRSB 
          STM    SFJV 
 PRS0     LDN    SSTL 
          CRD    CM 
          LDD    CM 
          SHN    21-5 
          MJN    PRS0.1      IF USER ECS DISABLED 
          LDM    PRSA 
          STM    SFJF 
 PRS0.1   LDD    CM+3 
          SHN    21-12
          PJN    PRS1        IF FLEXIBLE PARTITIONING ENABLED 
          ISTORE SFJW,(UJN SFJX)  DISABLE POST-REJECT SCHEDULING
  
*         BUILD *TEPB*, *TJAM* TABLES.
  
 PRS1     LDN    MXJC-1      INITIALIZE INDEX 
          STD    T1 
 PRS2     RJM    RJC         CALCULATE JCB ADDRESS
          ADN    EXQT        READ *EXQT* WORD OF JCB
          CRD    AA 
          ADN    SVJT-EXQT   READ *SVJT* WORD OF JCB
          CRD    CM 
          ADN    MCMT-SVJT   READ *MCMT* WORD OF JCB
          CRD    BB 
          ADN    MECT-MCMT   READ *MECT* WORD OF JCB
          CRD    EJ 
          LDD    AA+1 
          STM    TEPB,T1
          LDD    AA+2 
          STM    TEPB+1*MXJC,T1 
          LDD    AA+3 
          STM    TEPB+2*MXJC,T1 
          LDD    AA+4 
          STM    TEPB+3*MXJC,T1 
          LDD    CM+3 
          STM    TJAM,T1
          LDD    BB+2 
          STM    TJAM+1*MXJC,T1 
          LDD    BB+3 
          STM    TJAM+2*MXJC,T1 
          LDD    BB+4 
          STM    TJAM+3*MXJC,T1 
          LDD    EJ+2 
          STM    TJAM+4*MXJC,T1 
          LDD    EJ+4 
          STM    TJAM+5*MXJC,T1 
          SOD    T1          DECREMENT JCB INDEX
          MJN    PRS3        IF ALL JCB-S HAVE BEEN PROCESSED 
          LJM    PRS2        GO PROCESS NEXT JCB
  
 PRS3     LJM    PRSX        RETURN 
  
 PRSA     BSS    0
          LOC    SFJF 
          UJN    SFJ12.2     (USER ECS ENABLED) 
          LOC    *O 
  
 PRSB     BSS    0
          LOC    SFJV 
          UJN    SFJ6        (DEADSTART SEQUENCING JOB NOT RUN) 
          LOC    *O 
          SPACE  4,10 
*         OVERFLOW CHECKS.
  
          ERRNG  TJAM-*      CHECK FOR *TJAM*/*TEPB* OVERFLOWING *PRS*
          SPACE  4,10 
          USE    OVERFLOW 
          OVERFLOW
          TTL    1SJ/3SA - SCHEDULE SUBSYSTEM.
          TITLE 
          IDENT  3SA,O3SA   SCHEDULE SUBSYSTEM. 
          BASE   M
          SST 
*COMMENT  1SJ - SCHEDULE SUBSYSTEM. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          ORG    O3SA 
          QUAL   3SA
 QUAL$    SET    1
 3SA      SPACE  4,10 
**        SSS - SCHEDULE SUBSYSTEM. 
* 
*         READ THE SYSTEM SECTOR OF THE INPUT FILE OR THE ROLLOUT 
*         FILE, DEPENDING ON WHETHER JOB STATUS IS *PRJS* OR *ROJS*,
*         RESPECTIVELY.  OBTAIN THE SUBSYSTEM IDENTIFICATION NUMBER 
*         FROM THE SYSTEM SECTOR AND USE IT TO CHECK THE *SSCT* TABLE 
*         FOR A SPECIFIED CONTROL POINT TO WHICH THE SUBSYSTEM SHOULD 
*         BE SCHEDULED.  IF NO CONTROL POINT IS SPECIFIED, USE THE
*         ONE INDICATED BY CELL *JC*.  IF INSUFFICIENT
*         MEMORY FOR THE SUBSYSTEM, CALL ROUTINE *CFL* TO INITIATE
*         ROLLOUT OF LOWER PRIORITY JOBS.  IF THE CONTROL POINT AND 
*         MEMORY ARE AVAILABLE, CALL ROUTINE *ASJ* TO ASSIGN THE
*         SUBSYSTEM TO THE CONTROL POINT AND CALL *1RI* OR *1AJ*. 
* 
*         ENTRY  (EO) = (EP) = EJT ORDINAL OF SUBSYSTEM.
*                (SP) = SERVICE CLASS (*SSSC*). 
*                (AM - AM+1) = AVAILABLE + ROLLING CM.
*                (AE) = AVAILABLE + ROLLING ECS.
*                (RM - RM+1) = ROLLING CM.
*                (JC) = NUMBER OF AVAILABLE CONTROL POINT.  ZERO IF 
*                       NONE AVAILABLE. 
*                (JM) = REQUIRED CM FL. 
*                (JE) = REQUIRED ECS. 
*                (JP) = SCHEDULING PRIORITY.
*                (TE) = LWA OF *TACP* TABLE.
*                (TM - TM+1) = SECONDS PORTION OF REAL TIME CLOCK.
*                (NC) = SYSTEM CONTROL POINT NUMBER.
* 
*         EXIT   (A) = 0 IF THE SUBSYSTEM WAS SCHEDULED.
*                    .NE. 0 IF SUBSYSTEM WAS NOT SCHEDULED. 
* 
*         USES   EO, JC, JE, JF, SI, SP, TP, AA - AA+4, BB - BB+4,
*                CM - CM+4, EJ - EJ+4, T1 - T7. 
* 
*         CALLS  ASJ, AST, CFL, EJA, IRR, IUT, RSS, SCI, SCP. 
* 
*         MACROS ENDMS, MONITOR, SETMS. 
  
  
 SSS      SUBR               ENTRY/EXIT 
          LDK    /CPS/SFIN   SET EJT INTERLOCK
          RJM    SCI
          NJN    SSSX        IF TIMEOUT OR ENTRY NOT IN USE 
          RJM    EJA         CALCULATE EJT ENTRY ADDRESS
          ADK    JSNE 
          CRD    EJ 
          ADN    SCHE-JSNE   READ *SCHE* SO THAT (T6) = LOGICAL TRACK 
          CRD    T5 
          ADN    PRFE-SCHE
          CRD    BB 
          LDD    EJ+4        SAVE JOB STATUS
          LPN    76 
          LMK    PRJS*2 
          STM    SSSA 
  
*         READ SYSTEM SECTOR OF INPUT FILE OR ROLLOUT FILE. 
  
          SETMS  IO 
          LDN    0
          STD    TP 
          RJM    RSS         READ SYSTEM SECTOR 
          NJN    SSS2        IF I/O ERROR 
          ENDMS 
          LDM    SISS 
          LMC    RDSI 
          NJN    SSS1        IF NOT *RDF* 
          LCN    7777-IFSI   TREAT AS *IAF* 
          STM    SISS 
 SSS1     LJM    SSS4        CONTINUE 
  
*         AN I/O ERROR OCCURRED WHILE READING THE SYSTEM SECTOR OR THE
*         SUBSYSTEM IS ALREADY ACTIVE OR THE REQUIRED CONTROL POINT IS
*         OCCUPIED BY ANOTHER SUBSYSTEM.  SET AN ERROR FLAG IN THE EJT
*         ENTRY AND CONTINUE.  THE JOB WILL BE ABORTED BY *1AJ*.
  
 SSS2     LDD    EJ          SET *SSET* ERROR FLAG IN EJT 
          STD    CM+3 
          LDD    EJ+1 
          STD    CM+4 
          LDD    EO 
          STD    CM+2 
          LDC    SSET+4000
          STD    CM+1 
          MONITOR  CEFM 
          LDN    1           SELECT NO QFT OPTION ON *RJSM* 
          STD    CM+1 
          MONITOR  RJSM      GET JSN
          LDD    CM+3 
          STM    SSSB+3 
          LDD    CM+4 
          STM    SSSB+4 
          LDC    SSSB+1*10000 
          RJM    IUT         ISSUE *UTEM* 
          LDN    0
 SSS3     LJM    SSS8        CONTINUE SCHEDULING
  
*         GET CP NUMBER (IF ANY) FROM SSCT AND CHECK SSAT TO SEE IF THE 
*         SUBSYSTEM IS ALREADY ACTIVE.
*         FOR *DSP* INITIATED SUBSYSTEMS, CP NUMBER AND SSID ARE TAKEN
*         FROM THE SYSTEM SECTOR. 
  
 SSS4     LDM    SISS 
          SBK    DSSI 
          ZJN    SSS3        IF DEADSTART SEQUENCING JOB
          SBK    LSSI+1-DSSI
          MJN    SSS6        IF SUBSYSTEM NOT IN SSCT 
          LDC    **          (JOB STATUS) 
 SSSA     EQU    *-1
          NJN    SSS5        IF NOT PRE-INITIAL JOB STATE 
          LDC    FEAF*10000 
          LMM    SISS 
          RJM    AST         GET SSAT ENTRY 
          ZJN    SSS5        IF SUBSYSTEM IS INACTIVE 
          LDC    PLSI        CHECK FOR CYBIS
          LMM    SISS 
          ZJN    SSS5        IF INITIATING CYBIS
          LJM    SSS2        SET ERROR FLAG 
  
 SSS5     LDM    SISS 
*         LMK    FECF*10000 
          ERRNZ  FECF        CODE DEPENDS ON VALUE
          RJM    AST         GET SSCT ENTRY 
          LPN    37 
          STD    TP 
 SSS6     LDM    CPSS        CHECK SYSTEM SECTOR FOR CONTROL POINT
          ZJN    SSS7        IF CONTROL POINT NOT SPECIFIED 
          LMN    77 
          ZJN    SSS8        IF ANY AVAILABLE CONTROL POINT SELECTED
          LMN    77 
          SBD    NC 
          MJN    SSS10       IF CORRECT CONTROL POINT SPECIFIED 
          LDN    0           CLEAR INCORRECT CP NUMBER
          STM    CPSS 
 SSS7     LDD    TP 
          NJN    SSS10.1     IF CONTROL POINT SPECIFIED IN SSCT 
 SSS8     RJM    SCP         SELECT CONTROL POINT 
          NJN    SSS11       IF CONTROL POINT AVAILABLE 
 SSS9     LDK    /CPS/CFIN   CLEAR EJT INTERLOCK
          RJM    SCI
          LDN    1           INDICATE SUBSYSTEM NOT SCHEDULED 
          LJM    SSSX        RETURN 
  
*         SCHEDULE THE SUBSYSTEM TO THE SPECIFIED CONTROL POINT.
*         IF IT IS OCCUPIED BY A ROLLABLE JOB WITH A LOWER PRIORITY,
*         THAT JOB WILL BE ROLLED OUT.  IF IT IS OCCUPIED BY A ROLLABLE 
*         JOB WITH A HIGHER PRIORITY OR BY A NON-ROLLABLE JOB, THE
*         SUBSYSTEM JOB STATE WILL BE SET TO *PWJS*, WAITING ON EVENT 
*         *SSWE*. 
  
 SSS10    ADD    NC 
 SSS10.1  STD    JC 
          SHN    7
          ADN    JCIW 
          CRD    AA 
          ADN    TFSW-JCIW
          CRD    CM 
          LDD    CM 
          NJN    SSS12       IF CONTROL POINT IS OCCUPIED 
 SSS11    LJM    SSS18       SCHEDULE JOB 
  
 SSS12    STD    EO          STORE EJT ORDINAL FOR *EJA*
          RJM    EJA         CALCULATE EJT ENTRY ADDRESS
          ADN    SCHE 
          CRD    CM 
          LDD    EP          RESTORE EJT ORDINAL
          STD    EO 
          LDD    AA+2 
          ZJN    SSS16       IF ROLLOUT ALLOWED 
          LMN    ORSI 
          ZJN    SSS16       IF ROLLOUT NOT INHIBITED 
          LDM    SISS 
          LMC    IFSI 
          ZJP    SSS2        IF IAF 
          LDC    SSSD+SSSDL*10000 
          RJM    IUT         SET SUBSYSTEM TO *PWJS*
          UJP    SSS9        TERMINATE
  
 SSS16    LDD    JP 
          SBD    CM+4 
          MJN    SSS17       IF JOB AT CP HAS HIGHER PRIORITY 
          LDD    JC 
          RJM    IRR         REQUEST ROLLOUT OF JOB 
 SSS17    LJM    SSS9        TERMINATE
  
 SSS18    RJM    CFL         COMMIT FIELD LENGTH
  
*         ASSIGN JOB IF SUFFICIENT CM.
  
          LDD    AM 
          SBD    RM 
          SHN    14 
          LMD    AM+1 
          SBD    RM+1 
          SBD    JM 
          MJN    SSS17       IF INSUFFICIENT AVAILABLE CM 
          LDK    /CPS/CFIN   CLEAR EJT INTERLOCK
          RJM    SCI
          RJM    EJA         CHECK FOR AN ERROR FLAG IN THE EJT ENTRY 
          ADK    PRFE 
          CRD    CM 
          LDD    CM+1 
          LMN    SSET 
          NJN    SSS19       IF NOT A SUBSYSTEM ABORT ERROR FLAG
          LDN    BCSC        PREVENT AN UPDATE OF THE *SSAT* TABLE
          STD    SP 
 SSS19    RJM    ASJ         ASSIGN JOB TO CONTROL POINT
          LJM    SSSX        RETURN 
  
*         *UTEM* PARAMETERS FOR JSN CHANGE. 
  
 SSSB     VFD    1/0,5/JSNE,6/24D 
          VFD    6/36D,6/0
          CON    0
          CON    0
          CON    0
  
*         *UTEM* PARAMETERS TO SET *PWJS*.
  
 SSSD     VFD    1/0,5/SCHE,6/30D 
          VFD    6/0,6/0
          VFD    6/0,6/0
          VFD    3/5,9/0
          CON    SSWE        SUBSYSTEM WAITING EVENT
  
          VFD    1/0,5/JSNE,6/5 
          VFD    6/1,6/0
          CON    0
          CON    0
          CON    PWJS 
  
 SSSDL    EQU    */5-SSSD/5 
 SCI      SPACE  4,11 
**        SCI - SET/CLEAR EJT INTERLOCK.
* 
*         ENTRY  (A) = INTERLOCK FUNCTION.
* 
*         EXIT   (A) = 0 IF SUCCESSFUL. 
* 
*         USES   T0, T1, T4.
* 
*         CALLS  EJA, SFI.
* 
*         MACROS DELAY, PAUSE.
  
  
 SCI3     SOD    T4 
          NJN    SCI1        IF NOT TIMEOUT 
 SCI4     LDN    1           INDICATE FAILURE 
  
 SCI      SUBR               ENTRY/EXIT 
          STD    T1          SAVE INTERLOCK FUNCTION
          LDK    10D         SET RETRY COUNTER
          STD    T4 
 SCI1     RJM    EJA         GET EJT ADDRESS
          RJM    SFI         SET/CLEAR INTERLOCK
          ZJN    SCIX        IF REQUEST SUCCESSFUL
          SBN    2
          PJN    SCI4        IF ENTRY NOT IN USE
          LDD    HN          DELAY FOR 128*64 MICROSECONDS
          STD    T0 
 SCI2     DELAY 
          PAUSE  NE 
          SOD    T0 
          PJN    SCI2        IF MORE DELAY
          UJN    SCI3        CHECK FOR TIMEOUT
          SPACE  4,10 
*         COMMON DECKS. 
  
  
 SUB$     EQU    1           ASSEMBLE *SUBSYST* MACRO CALLS 
*CALL     COMSSSD 
 AST$     SET    1           ASSEMBLE ALL FUNCTIONS OF *COMPAST*
          LIST   X
*CALL     COMPAST 
          LIST   *
*CALL     COMPRSS 
 SFI$     EQU    1           SELECT IMMEDIATE RETURN FROM *SFI* 
*CALL     COMPSFI 
          SPACE  4,10 
**        TSCI - SUBSYSTEM CPU PRIORITIES.
*         ENTRY = 1 WORD. 
*         INDEXED BY SUBSYSTEM IDENTIFICATION NUMBER. 
* 
*T        12/  PR 
*         PR     CPU PRIORITY TO BE ASSIGNED TO SUBSYSTEM.
  
  
 TSCI     INDEX 
          LIST   D
 .SUB     HERE
          LIST   *
          INDEX  MXSI-LSSI
          SPACE  4,10 
*         OVERFLOW CHECKS.
  
  
          USE    OVERFLOW 
          OVERFLOW O3SA,TJSC
          SPACE  4,10 
          QUAL
          TTL    1SJ/3SB - SCHEDULE INPUT FILES TO EJT. 
          TITLE 
          IDENT  3SB,O3SB    SCHEDULE INPUT FILES TO EJT. 
          BASE   M
          SST 
*COMMENT  1SJ - SCHEDULE INPUT FILES TO EJT.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          ORG    O3SB 
          QUAL   3SB
 QUAL$    SET    1
 3SB      SPACE  4,15 
**        SIE - SCHEDULE INPUT FILES TO EJT.
* 
*         SCHEDULE AS MANY INPUT FILES TO THE EJT AS POSSIBLE, UP TO A
*         LIMIT OF *TIOOL*.  AN INPUT FILE QFT ENTRY IS CONSIDERED
*         ELIGIBLE FOR SCHEDULING ONLY IF THE FOLLOWING CONDITIONS ARE
*         MET - 
*                1. THE FILE TYPE IS INPUT. 
*                2. THE QFT ENTRY IS NOT ASSIGNED TO AN EJT ENTRY.
*                3. SCHEDULING THE INPUT FILE TO THE EJT WOULD NOT
*                   INCREASE THE SERVICE CLASS JOB COUNT ABOVE THE
*                   ALLOWABLE MAXIMUM.
*                4. THE QFT ENTRY TIME FIELD IS NON-ZERO. 
  
  
 SIE      SUBR               ENTRY/EXIT 
          RJM    PRS         PRESET *3SB* 
          ZJN    SIE2        IF QFT SCHEDULING SHOULD NOT BE PERFORMED
          RJM    SIQ         SCAN QFT 
          LDD    T7 
          LMN    TIOOL
          ZJN    SIE2        IF *TIOO* TABLE IS EMPTY 
          RJM    CEE         CREATE EJT ENTRIES 
  
*         UPDATE THE JOB COUNTS IN THE JOB CONTROL AREA.
  
 SIE2     LDN    MXJC        INITIALIZE JCB INDEX 
          STD    T1 
 SEI3     SOD    T1          DECREMENT JCB INDEX
          ZJP    SIE5        IF ALL JCB-S WERE UPDATED
          RJM    RJC         CALCULATE JCB ADDRESS
          ADN    SVJT 
          CRD    BB 
          ADN    JCTT-SVJT
          CRD    AA 
          LDD    AA 
          SBD    BB+3 
          MJN    SIE4        IF JOB COUNT WAS LESS THAN JOB LIMIT 
          LDM    TJCT,T1
          SBD    BB+3 
          PJN    SIE4        IF NEW JOB COUNT NOT BELOW JOB LIMIT 
          AOM    SIEA        INDICATE TO ISSUE EVENT
 SIE4     LDM    TJCT,T1
          STD    AA 
          LDD    AA+1 
          ZJN    SIE4.1      IF NO JOBS WAITING 
          SOD    AA+1        DECREMENT QFT TIME-OUT 
 SIE4.1   LDD    T1 
          RJM    RJC         CALCULATE JCB ADDRESS
          ADN    JCTT 
          CWD    AA          UPDATE JOB COUNT 
          UJN    SEI3        CONTINUE UPDATING JOB COUNTS 
 SIE5     LDC    0
 SIEA     EQU    *-1         (NONZERO IF TO ISSUE EVENT)
          ZJN    SIE6        IF TO NOT ISSUE EVENT
          LDN    ZERL        ISSUE JOB COUNT BELOW SERVICE LIMIT EVENT
          CRD    CM 
          LDN    SCFE 
          STD    CM+4 
          MONITOR  EATM 
 SIE6     LJM    SIEX        RETURN 
  
 CEE      SPACE  4,15 
**        CEE - CREATE EJT ENTRIES. 
* 
*         BUILD AN EJT ENTRY FOR EACH ENTRY IN THE *TIOO* TABLE.
* 
*         ENTRY  (T7) = INDEX OF FIRST *TIOO* ENTRY.
* 
*         USES   T1, T7, CM - CM+4, AA - AA+4, BB - BB+4, EJ - EJ+4,
*                EO, IO, SC.
* 
*         CALLS  CET, EJA, IOA, IUT.
* 
*         MACROS MONITOR. 
  
  
 CEE      SUBR               ENTRY/EXIT 
  
*         GET THE ORDINAL OF THE NEXT AVAILABLE EJT SLOT. 
  
 CEE1     LDN    0           GET EJT ENTRY
          STD    CM+1 
          STD    EO 
          LDD    MA          SET INITIAL EJT DATA 
          CWM    CEEA,ON
          LDN    /CPS/PEJT
          STD    CM+2 
          LDM    TIOO+2*TIOOL,T7  CHECK SERVICE CLASS 
          LMN    SYSC 
          ZJN    CEE1.1      IF SYSTEM JOB
          LMN    SYSC&DSSC
          ZJN    CEE1.1      IF DEADSTART SEQUENCING JOB
          LMN    DSSC&SSSC
          NJN    CEE1.2      IF NOT SUBSYSTEM 
 CEE1.1   LDC    4000        SET SYSTEM ORIGIN FLAG 
          RAD    CM+2 
 CEE1.2   MONITOR  MTRM 
          LDD    CM+1 
          ZJN    CEE4        IF NO EJT ENTRY AVAILABLE
  
*         USE THE *UTEM* MONITOR FUNCTION TO SET THE QFT ENTRY
*         INTERLOCK AND VERIFY THE ENTRY IS STILL ACCEPTABLE FOR
*         SCHEDULING. 
  
 CEE2     STD    EO          SAVE EJT ORDINAL 
 CEE2.1   LDM    TIOO,T7     GET QFT ORDINAL FROM *TIOO* TABLE
          STD    IO 
          LDM    TIOO+2*TIOOL,T7  SAVE SERVICE CLASS
          STD    SC 
          LDC    0*10000+1S17D
          RJM    IUT         ISSUE *UTEM* MONITOR FUNCTION
          ZJN    CEE5        IF INTERLOCK GOTTEN
 CEE3     SOM    TJCT,SC     DECREMENT JOB COUNT
 CEE4     AOD    T7 
          LMN    TIOOL
          ZJN    CEE4.1      IF *TIOO* SCAN COMPLETE
          LDD    EO 
          NJN    CEE2.1      IF UNUSED EJT ENTRY PRESENT
          LJM    CEE1        GET ANOTHER EJT ENTRY
  
 CEE4.1   LDD    EO 
          ZJN    CEE4.2      IF NO EJT ENTRY TO RETURN
          STD    CM+1        RETURN EJT ENTRY 
          LDN    /CPS/PEJT
          STD    CM+2 
          MONITOR  MTRM 
 CEE4.2   LJM    CEEX        RETURN 
  
 CEE5     RJM    IOA         CALCULATE QFT ENTRY ADDRESS
          ADK    JSNQ 
          CRD    EJ 
          ADN    ENTQ-JSNQ
          CRD    AA 
          ADN    INSQ-ENTQ
          CRD    CM 
          ADN    SCLQ-INSQ
          CRD    BB 
          LDD    CM+3        SAVE ACCESS LEVEL LIMITS 
          LPC    777
          STM    CEEB 
  
*         VERIFY ENTRY. 
  
          LDD    BB 
          SHN    -6 
          LMD    SC 
          NJN    CEE6        IF SERVICE CLASS CHANGED 
          LDD    EJ+4 
          ERRNZ  INQF        CODE ASSUMES *INQF* = 0
          LPC    7002 
          ZJN    CEE7        IF *TYPE* AND *STAT* FIELDS ARE OK 
 CEE6     LDC    0*10000+1S17D+1S16D  CLEAR INTERLOCK 
          RJM    IUT         ISSUE *UTEM* MONITOR FUNCTION
          LJM    CEE3        CONTINUE PROCESSING *TIOO* TABLE 
  
*         CREATE EJT ENTRY. 
  
 CEE7     LDD    BB 
          LPN    17 
          LMK    IAOT 
          STD    T1 
          ZJN    CEE8        IF INTERACTIVE JOB 
          LDN    NICS&OLCS
 CEE8     LMN    OLCS        SET CONNECTION STATUS
          SHN    7
          LMK    PRJS*2      SET JOB STATUS 
          STD    EJ+4 
          LDN    0
          STD    AA+2 
          STD    BB+3 
          LDD    T1 
          ZJN    CEE8.1      IF INTERACTIVE SERVICE CLASS 
          LDD    SC 
          LMN    SSSC 
          NJN    CEE9        IF NOT A SUBSYSTEM 
 CEE8.1   LDC    4000        SET NO-RERUN FLAG
          RAD    AA+2 
  
*         CALCULATE INITIAL SCHEDULING PRIORITY.
  
 CEE9     LDM    TEPB+3*MXJC,SC  SAVE INITIAL PRIORITY FOR *CET*
          STD    T1 
          LDD    SC 
          SHN    14 
          LMN    EXQT 
          RJM    CET         CALCULATE ENTRY TIME 
          LDD    T1          SAVE CALCULATED ENTRY TIME IN *SCHE* IMAGE 
          STD    AA+3 
          LDD    T2 
          STD    AA+4 
          LDN    AFFL+DNFL   SET INITIAL CM FL
          STD    BB+4 
 CEEC     LDN    **          (SYSTEM SECURITY MODE) 
          STD    T1 
          ZJN    CEE10       IF UNSECURED SYSTEM
          LDM    CEEB        CHECK ACCESS LEVEL LIMITS
          SHN    -6+22
          STD    CM+4        LOWER ACCESS LEVEL LIMIT 
          SHN    -22+6
          LPN    7
          STD    CM+3        UPPER ACCESS LEVEL LIMIT 
          LDD    BB          SET ORIGIN TYPE
          LPN    17 
          STD    CM+2 
          LDN    /CPS/VJLS   VALIDATE JOB LIMITS
          STD    CM+1 
          MONITOR  VSAM 
          LDD    CM+1 
          STD    T1          SAVE RETURN STATUS 
 CEE10    LDK    ZERL 
          CRD    CM 
          LDM    CEEB        SET ACCESS LEVEL LIMITS
          LPN    7
          STD    CM+2 
          LDM    CEEB 
          SCN    77 
          SHN    -3 
          RAD    CM+2 
          LDD    T1 
          ZJN    CEE11       IF LIMITS ARE VALID
          LDK    SYET        SET ERROR FLAG 
          STD    CM+1 
  
*         WRITE EJT ENTRY TO CM.
  
 CEE11    RJM    EJA         CALCULATE EJT ENTRY ADDRESS
          ADN    SCHE 
          CWD    AA 
          ADN    PRFE-SCHE
          CWD    CM 
          ADN    SCLE-PRFE
          CWD    BB 
          SBN    SCLE-JSNE
          CWD    EJ 
  
*         RETURN QFT ENTRY. 
  
          LDD    IO 
          STD    CM+1 
          LDN    /CPS/PQFT
          STD    CM+2 
          MONITOR  MTRM 
          STD    EO          CLEAR EJT ORDINAL
          LJM    CEE4        CONTINUE PROCESSING *TIOO* TABLE 
  
  
 CEEA     VFD    24/4L****,36/1  INITIAL EJT DATA 
 CEEB     CON    0           ACCESS LEVEL LIMITS
 FLP      SPACE  4,25 
**        FLP - FIND LOWEST PRIORITY JOB. 
* 
*         SCAN THE *TIOO* TABLE TO FIND THE LOWEST PRIORITY JOB.
* 
*         ENTRY  (A) = 0 IF THE LOWEST PRIORITY JOB OF THE ENTIRE 
*                        *TIOO* TABLE IS TO BE FOUND. 
*                (A) .NE. 0 IF THE LOWEST PRIORITY JOB OF SERVICE CLASS 
*                        *SC* IS TO BE FOUND. 
*                (SC) = SERVICE CLASS IF (A) .NE. 0.
*                (T7) = CURRENT *TIOO* INDEX. 
* 
*         EXIT   (A) = *TIOO* INDEX OF LOWEST PRIORITY JOB. 
*                (A) = 7777 IF CALLER REQUESTED LOWEST PRIORITY JOB OF
*                        A SERVICE CLASS BUT *TIOO* TABLE CONTAINS NO 
*                        ENTRIES FOR JOBS OF THE SPECIFIED SERVICE
*                        CLASS; OR THE *TIOO* TABLE IS EMPTY. 
*                (T4) = PRIORITY. 
*                (T5) = *TIOO* INDEX. 
* 
*         USES   T3 - T5. 
  
  
 FLP4     LDD    T5 
  
 FLP      SUBR               ENTRY/EXIT 
          STM    FLPA        SET/CLEAR SERVICE CLASS FLAG 
          LCN    0           INITIALIZE LOWEST PRIORITY 
          STD    T4 
          STD    T5          PRESET EXIT CONDITION
          LDD    T7          INITIALIZE *TIOO* INDEX
          STD    T3 
 FLP1     LMN    TIOOL
          ZJN    FLP4        IF *TIOO* SCAN IS COMPLETE 
          LDC    ** 
 FLPA     EQU    *-1         (SERVICE CLASS FLAG) 
          ZJN    FLP2        IF ALL SERVICE CLASSES WILL BE CONSIDERED
          LDM    TIOO+2*TIOOL,T3
          LMD    SC 
          NJN    FLP3        IF WRONG SERVICE CLASS 
 FLP2     LDM    TIOO+1*TIOOL,T3
          SBD    T4 
          PJN    FLP3        IF PRIORITY .GE. CURRENT LOWEST
          RAD    T4          SET NEW LOWEST PRIORITY
          LDD    T3          SAVE *TIOO* INDEX
          STD    T5 
 FLP3     AOD    T3          INCREMENT *TIOO* INDEX 
          UJN    FLP1        CONTINUE SCAN
 IOA      SPACE  4,10 
**        IOA - CALCULATE QFT ENTRY ADDRESS.
* 
*         ENTRY  (IO) = QFT ORDINAL.
* 
*         EXIT   (A) = QFT ADDRESS. 
* 
*         MACROS CFI. 
  
  
 IOA      SUBR               ENTRY/EXIT 
          CFI    QFT,IO      CALCULATE ENTRY OFFSET 
          ADC    ** 
 IOAA     EQU    *-1         (IOQT FWA) 
          UJN    IOAX        RETURN 
 SIQ      SPACE  4,20 
**        SIQ - SCAN QFT. 
* 
*         SCAN THE QFT LOOKING FOR SCHEDULABLE INPUT FILES.  BUILD
*         *TIOO* TABLE ENTRIES FOR THE *N* HIGHEST PRIORITY INPUT 
*         FILES, WHERE *N* = MIN(*TP*,*TIOOL*).  *TP* IS THE NUMBER OF
*         AVAILABLE EJT ENTRIES AND *TIOOL* IS AN ASSEMBLY CONSTANT.
*         IF AN INPUT QFT ENTRY CONTAINS A DESTINATION LID (*DLID*),
*         *1SJ* WILL ONLY SCHEDULE THE JOB IF THE *DLID* HAS THE
*         ATTRIBUTES *HOST* AND *ENABLED*.
* 
*         ENTRY  (A) .LT. 0, ONLY SCHEDULE SYSTEM JOBS. 
*                (TP) = NUMBER OF AVAILABLE EJT ENTRIES.
*                (IO) = LARGEST QFT ORDINAL.
* 
*         EXIT   (T7) = CURRENT *TIOO* INDEX. 
* 
*         USES   EO, IO, SC, TP, AA - AA+4, BB - BB+4, CM - CM+4, 
*                T1 - T7. 
* 
*         CALLS  CPR, FLP, IOA. 
* 
*         MACROS CFI. 
  
  
 SIQ      SUBR               ENTRY/EXIT 
          PJN    SIQ0        IF NOT EJT THRESHOLD 
          LDC    LMNI+SYSC
          UJN    SIQ0.1      CONTINUE 
  
 SIQ0     LDC    UJNI+SIQ3.0-SIQE  SET NORMAL SCHEDULING
          ERRNG  37-SIQ3.0+SIQE  IF JUMP OUT OF RANGE 
 SIQ0.1   STM    SIQE 
          LDN    TIOOL       INITIALIZE *TIOO* INDEX
          STD    T7 
          SBN    1           INITIALIZE INDEX OF LOWEST PRIORITY JOB
          STD    T5 
          LCN    0           INITIALIZE LOWEST *TIOO* ENTRY PRIORITY
          STD    T4 
          LDD    IO 
 SIQ1     CFI    QFT,,IO     GET QFT ENTRY OFFSET 
          ADC    ** 
 SIQA     EQU    *-1         (QFT FWA)
          ADK    JSNQ 
          CRD    CM 
          LDD    CM 
          NJN    SIQ3        IF NOT AN EMPTY ENTRY
 SIQ2     SOD    IO 
          NJN    SIQ1        IF QFT SCAN NOT COMPLETE 
          UJN    SIQX        RETURN 
  
 SIQ3     LDD    CM+4 
          ERRNZ  INQF        CODE ASSUMES *INQF* = 0
          LPC    7003 
          NJN    SIQ2        IF FILE NOT ELIGIBLE FOR SCHEDULING
          LDN    1           SET NOT ABORTED INPUT FILE 
          STD    EO 
          RJM    IOA         CALCULATE QFT ENTRY ADDRESS
          ADN    ENTQ 
          CRD    CM 
          ADN    INSQ-ENTQ   READ DESTINATION LID 
          CRD    BB 
          ADN    SCLQ-INSQ
          CRD    AA 
          LDD    AA          GET SERVICE CLASS
          SHN    -6 
          STD    SC 
 SIQE     UJN    SIQ3.0      CONTINUE 
*         LMN    SYSC        (EJT FULL, ONLY SCHEDULE SYSTEM JOBS)
          ZJN    SIQ3.0      IF SYSTEM JOB
          LMN    DSSC&SYSC
          ZJN    SIQ3.0      IF DEADSTART SEQUENCING JOB
          LMN    SSSC&DSSC
          NJN    SIQ2        IF NOT A SUBSYSTEM 
 SIQ3.0   LDD    SC 
          SBN    DSSC 
          NJN    SIQ3.1      IF NOT DEADSTART SEQUENCING JOB
          LDN    TIOOL-1     RESET *TIOO* INDEX 
          STD    T7 
          ERRNZ  LJMI-100 
          LDD    HN          STORE *LJM* INSTRUCTION
          STM    SIQC 
          LDC    SIQX 
          STM    SIQC+1 
          LCN    0           SET PRIORITY TO MAXIMUM
          LJM    SIQ8        BUILD *TIOO* ENTRY 
  
*         THIS INPUT FILE IS SCHEDULABLE. 
*         DETERMINE IF DESTINATION LID IS HOST LID. 
  
 SIQ3.1   LDD    BB+2        CHECK IF DLID PRESENT IN QFT 
          SCN    77 
          ADD    BB+1 
          ZJN    SIQ4        IF NO DLID 
          LDC    **          INITIALIZE *THLD* TABLE INDEX
 SIQD     EQU    *-1         (2*NUMBER OF HOST LIDS)
          ZJP    SIQ2        IF NO HOST LIDS PRESENT
          SBN    2
          STD    T6 
 SIQ3.2   LDD    BB+1        CHECK NEXT LID 
          LMM    THLD,T6
          NJN    SIQ3.3      IF NOT A MATCH 
          LDD    BB+2 
          LMM    THLD+1,T6
          SCN    77 
          ZJN    SIQ4        IF A MATCH 
 SIQ3.3   LCN    2
          RAD    T6 
          PJN    SIQ3.2      IF NOT END OF TABLE
          UJN    SIQ5        CHECK NEXT QFT ENTRY 
  
 SIQ4     LDD    CM+3        SAVE ENTRY TIME
          STD    T1 
          LDD    CM+4 
          STD    T2 
          LDD    SC 
          RJM    RJC
          ADK    JCTT 
          CRD    BB 
          LDD    BB+1 
          NJN    SIQ5        IF JOBS WAITING FOR THIS SERVICE CLASS 
  
*         CALCULATE QUEUE PRIORITY OF SELECTED INPUT FILE.
  
          LDD    T2 
          ZJN    SIQ4.1      IF NOT POSSIBLE ABORTED INPUT FILE 
          LMN    1           CHECK FOR ENTRY TIME OF 1
          NJN    SIQ4.1      IF NOT ABORTED INPUT FILE
          LDD    T1 
          NJN    SIQ4.1      IF NOT ABORTED INPUT FILE
          SOD    EO          SET ABORTED INPUT FILE 
 SIQ4.1   LDD    SC 
          SHN    14 
          LMK    INQT 
          RJM    CPR         CALCULATE QUEUE PRIORITY 
          MJN    SIQ5        IF NO JCB FOR SERVICE CLASS
          NJN    SIQ6        IF NON-ZERO ENTRY TIME 
 SIQ5     LJM    SIQ2        CONTINUE QFT SCAN
  
*         CHECK JOB COUNT LIMIT.
  
 SIQ6     STD    T2          SAVE CALCULATED PRIORITY 
          LDD    EO 
          NJN    SIQ6.1      IF NOT ABORTED INPUT FILE
          LCN    0           SET PRIORITY MAXIMUM 
          STD    T2 
          UJN    SIQ7        SKIP JOB COUNT CHECK 
  
 SIQ6.1   LDM    TJCT,SC
          SBM    TJAM,SC
          MJN    SIQ7        IF JOB COUNT LIMIT NOT REACHED 
          LDD    SC 
          LMN    DISC 
          ZJN    SIQ7        IF DETACHED JOB
          LDD    AA 
          LPN    17 
          LMK    IAOT 
          ZJN    SIQ7        IF INTERACTIVE JOB 
          RJM    FLP         FIND LOWEST PRIORITY JOB OF SERVICE CLASS
          SHN    6
          MJN    SIQ5        IF NO JOBS OF SERVICE CLASS IN *TIOO*
          LDD    T4 
          SBD    T2 
          PJN    SIQ5        IF PRIORITY OF NEW JOB .LE. LOWEST 
          LJM    SIQ13       CREATE *TIOO* ENTRY FOR CURRENT QFT ENTRY
  
*         BUILD *TIOO* ENTRY. 
  
 SIQ7     SOD    T7          DECREMENT *TIOO* INDEX 
          SOD    TP          DECREMENT AVAILABLE EJT ENTRY COUNT
*         LJM    SIQ12       (IF NO NEW *TIOO* SLOTS SHOULD BE USED)
 SIQB     EQU    *-2
          LDD    T2 
 SIQ8     STM    TIOO+1*TIOOL,T7
          LDD    IO          PLACE QFT ORDINAL IN *TIOO* ENTRY
          STM    TIOO,T7
          LDD    SC          PLACE SERVICE CLASS IN *TIOO* ENTRY
          STM    TIOO+2*TIOOL,T7
          LDD    EO          0= ABORTED INPUT FILE, 1=NORMAL INPUT FILE 
          RAM    TJCT,SC     INCREMENT JOB COUNT
*         LJM    SIQX        (IF DEADSTART SEQUENCING JOB FOUND)
 SIQC     EQU    *-2
          LDD    T2 
          SBD    T4 
          PJN    SIQ9        IF JOB-S PRIORITY NOT NEW LOWEST OF *TIOO* 
          LDD    T7          SAVE INDEX OF NEW LOWEST PRIORITY JOB
          STD    T5 
          LDD    T2          SAVE PRIORITY OF NEW LOWEST JOB
          STD    T4 
 SIQ9     LDD    T7 
          ZJN    SIQ10       IF *TIOO* TABLE IS FULL
          LDD    TP 
          NJN    SIQ11       IF MORE AVAILABLE EJT ENTRIES EXIST
 SIQ10    LDC    SIQ12       PREVENT USE OF NEW *TIOO* SLOTS
          STM    SIQB+1 
          LDD    HN          STORE *LJM*
          STM    SIQB 
 SIQ11    LJM    SIQ2        CONTINUE QFT SCAN
  
*         NO NEW *TIOO* SLOTS MAY BE USED.  SEE IF THE CURRENT QFT
*         ENTRY HAS A HIGHER QUEUE PRIORITY THAN THE LOWEST PRIORITY
*         *TIOO* ENTRY.  IF SO, REPLACE THAT JOB-S *TIOO* ENTRY WITH A
*         NEW ONE FOR THE CURRENT QFT ENTRY.
  
 SIQ12    LDD    T4 
          SBD    T2 
          PJN    SIQ11       IF NEW JOB-S PRIORITY .LE. *TIOO* LOWEST 
 SIQ13    LDM    TIOO+2*TIOOL,T5   GET SERVICE CLASS OF CURRENT LOWEST
          STD    T3 
          SOM    TJCT,T3     DECREMENT JOB COUNT FOR OLD *TIOO* LOWEST
          AOM    TJCT,SC     INCREMENT JOB COUNT FOR NEW JOB
          LDD    IO          SAVE QFT ORDINAL IN *TIOO* ENTRY 
          STM    TIOO,T5
          LDD    T2          SAVE QUEUE PRIORITY IN *TIOO* ENTRY
          STM    TIOO+1*TIOOL,T5
          LDD    SC          SAVE SERVICE CLASS IN *TIOO* ENTRY 
          STM    TIOO+2*TIOOL,T5
  
*         SCAN THE *TIOO* TABLE TO FIND THE NEW LOWEST PRIORITY JOB.
  
          LDN    0
          RJM    FLP         FIND LOWEST PRIORITY JOB 
          UJN    SIQ11       CONTINUE QFT SCAN
          SPACE  4,10 
*         COMMON DECKS. 
  
  
 CPR$     SET    1           ASSEMBLE ROUTINE *CPR* OF *COMPCPE*
 CET$     SET    1           ASSEMBLE ROUTINE *CET* OF *COMPCPE*
 IOQ$     SET    1           ENABLE ZERO ENTRY TIME CHECK 
          LIST   X
*CALL     COMPCPE 
          LIST   *
  
  
          ERRNG  TJCT-*      OVERFLOW INTO *TJCT* 
          TITLE  PRESET.
          USE    TABLES 
 PRS      SPACE  4,10 
**        PRS - PRESET *3SB*. 
* 
*         BUILDS THE *THLD* TABLE OF HOST-ENABLED LIDS.  IF 
*         DEADSTART SEQUENCING JOB IS ACTIVE, OR IF THE LDT 
*         HAS NOT BEEN CREATED YET DUE TO A *CLDT* ABORT, 
*         THEN NO *THLD* TABLE WILL BE CREATED, AND NO INPUT
*         FILES CONTAINING A DESTINATION LID IN THE QFT ENTRY 
*         WILL BE SCHEDULED.
* 
*         EXIT   (A) = RESPONSE FROM *SEJ*. 
* 
*         USES   IO, T6, T9, AA - AA+4, BB - BB+4, CM - CM+4, 
*                T1 - T1+4. 
* 
*         CALLS  AST, SEJ.
* 
*         MACROS ISTORE, MONITOR. 
  
  
 PRS8     LDC    **          RETURN RESPONSE FROM *SEJ* 
 PRSA     EQU    *-1
 PRS      SUBR               ENTRY/EXIT 
          LDC    IFSI+FECF*10000  CHECK *IAF* ACCESSIBILITY 
          RJM    AST         GET *IAF* SSCT ENTRY 
          SHN    21-13
          MJN    PRS0        IF *IAF* ACCESSIBLE
          LDC    UJNI+SEJ8-SEJB  DISABLE SUSPENSION TIME-OUT
          STM    SEJB 
          ERRNG  37-SEJ8+SEJB  JUMP OVERFLOW
 PRS0     LDN    MXJC-1      INITIALIZE *TJCT* TABLE
          STD    T1 
 PRS0.1   LDN    0
          STM    TJCT,T1
          SOD    T1          DECREMENT TABLE INDEX
          PJN    PRS0.1      IF NOT DONE
          RJM    SEJ         SCAN EJT 
          STM    PRSA        SAVE RESPONSE
          SHN    -14
          RAM    PRSA-1 
          LDK    LIDP        GET FWA OF LDT 
          CRD    T1 
          LDD    T1          GET PID COUNT
          SHN    14 
          LMD    T2 
          CRD    AA 
          LDN    1           INITIALIZE LDT INDEX 
          STD    T6 
          LDD    AA+4        SAVE PID COUNT 
          STD    T3 
          LDN    0           INITIALIZE *THLD* POINTER
          STD    T9 
 PRS1     SOD    T3          DECREMENT PID COUNT
          PJN    PRS2        IF MORE PIDS 
          LJM    PRS7        SET *QFT* FWA
  
 PRS2     LDD    T1          READ FIRST WORD OF PID ENTRY 
          SHN    14 
          LMD    T2 
          ADD    T6 
          CRD    AA 
          ADN    1           SECOND WORD OF PID ENTRY 
          CRD    BB 
          ADN    1           THIRD WORD OF PID ENTRY
          CRD    CM 
          LDD    AA+1 
          SHN    21-5 
          MJN    PRS3        IF HOST PID
          LDD    BB+4        POINT TO NEXT PID ENTRY
          RAD    T6 
          UJN    PRS1        CHECK NEXT PID 
  
 PRS3     LDN    3-1         FWA-1 OF LID ENTRY 
          RAD    T6 
 PRS4     SOD    CM+4        DECREMENT LID SLOT COUNT 
          MJP    PRS5        IF ALL LID SLOTS CHECKED 
          AOD    T6          POINT TO NEXT LID ENTRY
          LDD    T1          READ LID ENTRY 
          SHN    14 
          LMD    T2 
          ADD    T6 
          CRD    AA 
          LDD    AA 
          ZJN    PRS4        IF HOLE IN LDT 
  
*         ADD ONLY HOST LIDS THAT ARE ENABLED AND ARE NOT 
*         LINKED OR STORE-AND-FORWARD TO THE HOST LID TABLE.
  
          LDD    AA+2 
          SHN    21-13
          PJN    PRS4        IF LID NOT ENABLED 
          SHN    21-10-21+13
          MJN    PRS4        IF LID LINKED (LOOPBACK SET) 
          SHN    21-12-21+10+22 
          MJN    PRS4        IF STOREF SET
          LDD    AA          ADD LID TO HOST LID TABLE
          STM    THLD,T9
          LDD    AA+1 
          STM    THLD+1,T9
          LDN    2           INCREMENT *THLD* INDEX 
          RAD    T9 
          ADC    -THLDL 
          MJN    PRS4        IF ROOM FOR MORE HOST LIDS 
          LDN    0
          STD    CM+2        SET NO ERROR FLAG
          LDC    *
          STD    CM+1        ADDRESS WHERE ERROR DETECTED 
          MONITOR  CHGM      CONDITIONAL HANG FOR NO ROOM 
  
 PRS5     LDD    T9 
          ZJN    PRS7        IF NO HOST LIDS DEFINED
          STM    SIQD        SAVE LENGTH OF HOST LID TABLE
 PRS7     LDK    QFTP        PRESET QFT FWA 
          CRD    CM 
          LDD    CM 
          RAM    IOAA-1 
          STM    SIQA-1 
          LDD    CM+1 
          STM    IOAA 
          STM    SIQA 
          SOD    CM+2        PRESET QFT ORDINAL FOR BACKWARD SCAN 
          STD    IO 
          LDK    SSML        SET SYSTEM SECURITY MODE 
          CRD    CM 
          LDD    CM 
          LPN    7
          RAM    CEEC 
          LJM    PRS8        RETURN 
          SPACE  4,10 
*         PRESET COMMON DECKS.
  
  
*CALL     COMPAST 
  
  
          ERRNG  THLD-*      OVERFLOW INTO *THLD* 
          EJECT 
*         CODE OVERWRITTEN BY *PRS*.
 SEJ      SPACE  4,25 
**        SEJ - SCAN EJT. 
* 
*         SCAN THE EJT TO PERFORM THE FOLLOWING FUNCTIONS - 
* 
*                1. COUNT THE NUMBER OF EXECUTING JOBS IN EACH SERVICE
*                   CLASS.  JOBS IN TIMED/EVENT ROLLOUT WAITING TO
*                   CHANGE INTO ANOTHER SERVICE CLASS ARE NOT COUNTED.
*                2. DETERMINE IF THERE ARE ANY AVAILABLE EJT ENTRIES. 
*                3. PERFORM SUSPENSION TIME-OUT PROCESSING AS REQUIRED. 
*                4. CHECK FOR THE EXISTENCE OF THE DEADSTART SEQUENCING 
*                   JOB.
* 
*         ENTRY  (SFJS) = LARGEST EJT ORDINAL.
*                (TM - TM+1) = SECONDS PORTION OF REAL-TIME CLOCK.
* 
*         EXIT   (A) .LT. 0, IF TO SCHEDULE ONLY SYSTEM JOBS. 
*                (A) = 0, IF DEADSTART SEQUENCING JOB.
*                (A) .GT. 0, SCHEDULE ANY JOB.
*                (TP) = NUMBER OF AVAILABLE EJT ENTRIES.
* 
*         USES   CM - CM+4, AA - AA+4, BB - BB+4, EJ - EJ+4, EO, SC,
*                TP.
* 
*         CALLS  EJA. 
* 
*         MACROS CFI, MONITOR.
  
  
 SEJ10    LDN    1           ALLOW SCHEDULING 
  
 SEJ      SUBR               ENTRY/EXIT 
          LDN    0           INITIALIZE EMPTY EJT ENTRY COUNT 
          STD    TP 
          LDM    EJAA-1      PRESET EJT FWA 
          STM    SEJA-1 
          STM    SEJC-1 
          LDM    EJAA 
          STM    SEJA 
          STM    SEJC 
          LDM    SFJS        PRESET EJT ORDINAL FOR BACKWARD SCAN 
          STD    EO 
 SEJ1     CFI    EJT,,EO     GET EJT ENTRY OFFSET 
          ADC    ** 
 SEJA     EQU    *-1         (EJT FWA)
          ADK    JSNE 
          CRD    EJ 
          ADK    SCHE-JSNE
          CRD    AA 
          ADK    PRFE-SCHE
          CRD    BB 
          ADK    SCLE-PRFE
          CRD    CM 
          LDD    EJ 
          NJN    SEJ4        IF NOT AN EMPTY ENTRY
          AOD    TP          INCREMENT EMPTY ENTRY COUNT
 SEJ2     SOD    EO          DECREMENT EJT ORDINAL
          NJN    SEJ1        IF EJT SCAN NOT COMPLETE 
          LDD    TP 
          SBN    /CPS/EJTR+1
          PJP    SEJ10       IF NOT ABOVE THRESHOLD 
          LDN    0
          STD    CM+1        SELECT *EATM* ENTER EVENT OPTION 
          STD    CM+3        STORE EVENT DESCRIPTOR 
          LDN    EJJE 
          STD    CM+4 
          MONITOR  EATM 
          LCN    1           FLAG EJT THRESHOLD 
 SEJ3     LJM    SEJX        RETURN 
  
 SEJ4     LDD    CM 
          SHN    -6 
          STD    SC 
          SBN    MXSC 
          PJN    SEJ2        IF INVALID SERVICE CLASS 
          ADN    MXSC-DSSC
          ZJN    SEJ3        IF DEADSTART SEQUENCING JOB
          IFNE   DSSC,MXJC,1
          ADK    DSSC-MXJC
          PJN    SEJ6        IF NO JCB FOR SERVICE CLASS
          LDD    EJ+4 
          LPN    77 
          LMN    TOJS*2 
          NJN    SEJ5        IF NOT TIMED/EVENT 
          LDD    AA+4 
          LMN    SCFE 
          ZJN    SEJ6        IF WAITING FOR FULL SERVICE CLASS
 SEJ5     AOM    TJCT,SC     INCREMENT ACTIVE JOB COUNT 
  
*         PERFORM SUSPENSION TIME-OUT PROCESSING IF *IAF* IS
*         ACCESSIBLE. 
  
 SEJ6     LDD    EJ+4 
*         UJN    SEJ8        (IF SUSPENSION TIME-OUT DISABLED)
 SEJB     EQU    *-1
          LPC    3776        MASK JOB/CONNECTION STATUS AND ADVANCE 
          LMC    SUJS*2+DTCS*200
          NJN    SEJ8        IF NOT DETACHED SUSPENDED JOB OR ROLLING 
          LDD    AA+3 
          SBD    TM 
          MJN    SEJ7        IF SUSPENSION TIME-OUT 
          NJN    SEJ8        IF NOT SUSPENSION TIME-OUT 
          LDD    AA+4 
          SBD    TM+1 
          PJN    SEJ8        IF NOT SUSPENSION TIME-OUT 
  
*         SET *STET* ERROR FLAG.
  
 SEJ7     LDD    BB+1 
          NJN    SEJ9        IF ERROR FLAG ALREADY SET
          LDD    EJ          SAVE JSN FOR *CEFM*
          STD    CM+3 
          LDD    EJ+1 
          STD    CM+4 
          LDD    EO          SAVE EJT ORDINAL FOR *CEFM*
          STD    CM+2 
          LDC    STET+4000
          STD    CM+1 
          MONITOR  CEFM 
 SEJ8     LJM    SEJ2        CONTINUE EJT SCAN
  
 SEJ9     LDD    EJ          SET FORCED ROLLIN FLAG 
          STM    SEJD+3 
          LDD    EJ+1 
          STM    SEJD+4 
          LDD    EO 
          CFI    EJT,,EO     GET EJT ADDRESS
          ADC    ** 
 SEJC     EQU    *-1
          STD    CM+4 
          SHN    -14
          STD    CM+3 
          LDN    2
          STD    CM+1 
          LDD    MA 
          CWM    SEJD,CM+1
          MONITOR  UTEM 
          UJN    SEJ8        CONTINUE EJT SCAN
  
  
 SEJD     VFD    6/40+JSNE,6/24D,6/36D,42/0 
          VFD    6/SCLE,6/1,6/52D,42/1
  
          ERRNG  TJCT-*      OVERFLOW INTO *TJCT* 
  
 TABLES   SPACE  4,10 
*         *3SB* TABLE DEFINITIONS.
  
  
 TJCTL    EQU    MXJC*1      LENGTH OF *TJCT* TABLE 
 TIOOL    EQU    20          NUMBER OF *TIOO* TABLE ENTRIES 
 THLDL    EQU    MXHLD*2     LENGTH OF *THLD* TABLE 
  
  
 BEGIN    BSSN   TJAM-TJCTL-TIOOL*3-THLDL  BEGINNING OF TABLES
 TIOO     SPACE  4,10 
*         TIOO - SCHEDULABLE QFT ENTRIES. 
*         ENTRY = 3 WORDS.
* 
*T        12/ IO,12/ QP,12/ SC
*         IO     QFT ORDINAL
*         QP     QUEUE PRIORITY.
*         SC     SERVICE CLASS. 
  
  
 TIOO     BSSN   TIOOL*3
          SPACE  4,10 
**        THLD - SCHEDULABLE HOST LID-S.
*         ENTRY = 2 WORDS.
* 
*T        18/ LID, 6/ 0 
*         LID    MAINFRAME LOGICAL ID.
  
  
 THLD     BSSN   THLDL
  
  
 TJCT     SPACE  4,10 
**        TJCT - JOB COUNTS.
*         ENTRY = 1 WORD. 
*         INDEXED BY SERVICE CLASS. 
* 
*T        12/ CT
* 
*         CT     NUMBER OF EXECUTING JOBS (JOBS ASSIGNED TO EJT)
*                IN SERVICE CLASS.
  
  
 TJCT     BSSN   TJCTL
 TTEND    BSSN   0           END OF LAST TABLE
 END      BSSN
          SPACE  4,10 
*         OVERFLOW CHECKS.
  
  
          ERRNZ  TJAM-TTEND  TABLE OVERFLOW 
          SPACE  4,10 
          OVERFLOW O3SB,TJAM
          SPACE  4,10 
          TTL    1SJ - JOB SCHEDULER. 
          SPACE  4,10 
          END 
