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