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