QFM 
          IDENT  QFM,QFM
          PERIPH
          BASE   MIXED
          SST 
 QUAL$    EQU    1           DEFINE USER QUALIFICATION
 MSR$     EQU    1           DEFINE USER ERROR RETURN FOR *COMPRNS* 
*COMMENT  QFM - QUEUE FILE MANAGER. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          TITLE  QFM - QUEUE FILE MANAGER.
          SPACE  4
***       QFM - QUEUE FILE MANAGER. 
*         C. K. STEHMAN.     74/03/29.
*         R. A. JAPS.        75/01/27.  (REWRITE).
*         P. D. HAAS.        81/09/02.
          SPACE  4
***       QFM PERFORMS TASKS FOR QUEUE MANAGMENT PROGRAMS.
* 
*         1.  ATQ - ATTACH PRESERVED FILE (SYSTEM ORIGIN PRIVILEDGES).
*         2.  DTQ - DETACH PRESERVED FILE (SYSTEM ORIGIN PRIVILEDGES).
*         3.  PGO - PURGE PRESERVED FILE (SYSTEM ORIGIN PRIVILEDGES). 
*         4.  STQ - SET IQFT FILE (SSJ= REQUIRED).
*         5.  IIQ - INITIALIZE IQFT FILE (SSJ= REQUIRED). 
*         6.  RQL - REQUEUE FNT/FST LIST SSJ= REQUIRED).
*         7.  RLL - RELEASE FNT/FST LIST (SSJ= REQUIRED). 
*         10. DEQ - DEQUEUE FNT/FST (SSJ= REQUIRED).
*         11. AQF - ATTACH QUEUED FILE (SSJ= REQUIRED). 
*         12. QRS - READ SYSTEM SECTOR (SSJ= REQUIRED). 
*         13. AIQ - ATTACH INACTIVE QUEUED FILE (SSJ= REQUIRED).
*         14. RIQ - REQUEUE INACTIVE QUEUED FILE (SSJ= REQUIRED). 
*         15. SRR - SET RERUN (INCORRECT FROM INTERACTIVE ORIGIN).
*         16. CRR - CLEAR RERUN (INCORRECT FROM INTERACTIVE ORIGIN).
*         21. IQF - INTERLOCK QUEUE FILE (SSJ= REQUIRED). 
*         22. CFE - CREATE FOT ENTRY (SSJ= REQUIRED). 
*         23. CQF - CREATE QUEUE FILE (SSJ= REQUIRED).
*         24. QRE - READ EOI SECTOR (SSJ= REQUIRED).
*         25. QWE - WRITE EOI SECTOR (SSJ= REQUIRED). 
          SPACE  4
***       CALL. 
* 
* 
*T        18/ QFM , 6/ 20B , 12/ FN , 6/  , 18/ ADDR
* 
*                FN = FUNCTION CODE.
*                ADDR = FWA OF FET. 
* 
* 
*         FORMAT OF FET (9 WORDS).
* 
*T FET0   42/ LFN , 4/ , 4/ EC , 10/ CC 
*T,FET1   16/ EP , 26/  , 18/ FIRST 
*T,FET2   42/  , 18/ IN 
*T,FET3   42/  , 18/ OUT
*T,FET4   42/  , 18/ LIMIT
*T,FET5   60/ FP
*T,FET6   60/ FP
*T,FET7   12/ EQ , 36/ , 12/ ER 
*T,FET10  60/ FP
* 
* 
*         LFN = LOCAL FILE NAME.
*         EC  = ERROR CODE RETURN. (SEE COMSIOQ FOR DEFINED CODES). 
*         CC  = 0 ON CALL, QFM RETURNS COMPLETE BIT OR
*                RETURN CODE DEPENDING ON FUNCTION. 
*         EP = ERROR PROCESSING. IF BIT 2**0 SET, THEN ERROR
*                PROCESSING IS SELECTED.
*         FP = FUNCTION PARAMETERS. (SEE ENTRY CONDITIONS FOR 
*                PARTICULAR FUNCTION FOR REQUIRED FORMAT.)
*         EQ = EQUIPMENT. 
*         ER = MASS STORAGE ERROR CODE. 
          SPACE  4
***       DAYFILE MESSAGES. 
* 
*         THE FOLLOWING MESSAGES ARE ISSUED TO THE DAYFILE ONLY IF
*         THE *EP* BIT IS NOT SET IN THE SECOND WORD OF THE FET.
*         IF THE *EP* BIT IS SET, THE APPROPRIATE ERROR CODE IS 
*         RETURNED IN THE FIRST WORD OF THE FET. NO DAYFILE MESSAGE 
*         IS ISSUED IF THE *EP* BIT IS SET. 
* 
* 
*         * FILE NOT FOUND.*
*                THE FILE FOR WHICH A SPECIFIC ACTION IS REQUESTED
*                CANNOT BE FOUND. (EC = 1). 
* 
*         * FILE ALREADY INTERLOCKED.*
*                THE TRACK INTERLOCK FOR THE SPECIFIED QFM FILE IS
*                ALREADY SET. (EC = 2). 
* 
*         * TRACK ALREADY ASSIGNED.*
*                THE TRACK BYTE FOR THE SPECIFIED QFM FILE IS ALREADY 
*                ASSIGNED IN THE MST. (EC = 3). 
* 
*         * QFT/LOCAL FNT IS FULL.* 
*                ALL FILES COULD NOT BE REQUEUED BECAUSE OF A FULL
*                QFT.  THE *IQFT* FILE COULD NOT BE ATTACHED BECAUSE
*                THE LOCAL FNT WAS FULL.  (EC = 4). 
* 
*         * FOT IS FULL.* 
*                FAMILY CAN NOT BE DEFINED IN THE SYSTEM SINCE THE
*                FAMILY ORDINAL TABLE IS FULL.
* 
*         * INCORRECT SYSTEM SECTOR.* 
*                AN ERROR HAS BEEN ENCOUNTERED WHILE TRYING TO READ 
*                A SYSTEM SECTOR. (EC = 5). 
* 
*         * UNCORRECTABLE RMS ERROR.* 
*                AN UNCORRECTABLE RMS ERROR HAS BEEN DETECTED DURING
*                AN I/O OPERATION. (EC = 6).
* 
*         * INPUT FILE IN RERUN STATUS.*
*                INFORMATIVE MESSAGE INDICATING THAT THE REQUESTED
*                CHANGE IN STATUS IS REDUNDANT. (EC = 7). 
* 
*         * INPUT FILE IN NO-RERUN STATUS.* 
*                INFORMATIVE MESSAGE INDICATING THAT THE REQUESTED
*                CHANGE IN STATUS IS REDUNDANT. (EC = 10).
* 
*         * DEVICE UNAVAILABLE. 
*                THE DEVICE IS UNAVAILABLE.  THE REQUEST IS IGNORED.
* 
*         * DUPLICATE FILE NAME.* 
*                A FILE WITH THE REQUESTED NAME ALREADY EXISTS. 
*                (EC = 16). 
* 
*         * FILE NOT ALLOWED ON EQUIPMENT.* 
*                THE REQUESTED EQUIPMENT DID NOT HAVE THE REQUIRED
*                ACCESS LEVEL FOR THE QUEUED FILE.  (EC = 17).
* 
* 
*         THE FOLLOWING ARE FATAL ERROR MESSAGES ISSUED BY PRESET 
*         AND RESIDENT ROUTINES.
* 
*         * QFM BUFFER ARGUMENT ERROR.* 
*                A BUFFER POINTER DOES NOT CONFORM TO THE FOLLOWING 
*                CONSTRAINTS -
*                            FIRST .LE. IN
*                            FIRST .LE. OUT 
*                            OUT .LE. LIMIT .LE. FL 
* 
*         * QFM ARGUMENT ERROR.*
*                CAN INDICATE ONE OF THE FOLLOWING CONDITIONS - 
*                1. FET ADDRESS NOT WITHIN FL.
*                2. FET ADDRESS NOT SPECIFIED IN QFM CALL WHEN REQUIRED.
*                3. QFM FILE TYPE OUT OF RANGE. 
* 
*         * QFM INCORRECT REQUEST.* 
*                CAN INDICATE ONE OF THE FOLLOWING CONDITIONS - 
*                1. FUNCTION CODE WAS NOT RECOGNIZED. 
*                2. CALLING JOB DOES NOT HAVE SSJ= SET. 
*                3. QFM WAS NOT CALLED WITH AUTO RECALL.
* 
*         * QFM INCORRECT EQUIPMENT.* 
*                THE EQUIPMENT SPECIFIED IN FET+7 IS NOT MASS STORAGE.
* 
* 
*         THE FOLLOWING FATAL ERROR MESSAGES ARE ISSUED BY THE
*         FUNCTION PROCESSORS.
* 
* 
*         * QFM INCORRECT QUEUE FILE ORDINAL.*
*                THE ORDINAL GIVEN FOR THE QUEUE FILE TO ATTACH TO THE
*                CONTROL POINT WAS OUT OF RANGE.
* 
*         * QFM FILE ALREADY ATTACHED.* 
*                THE SPECIFIED FILE IS ALREADY ATTACHED TO THE
*                CONTROL POINT. 
* 
*         * QFM FOT FULL.*
*                FAMILY CAN NOT BE DEFINED IN THE SYSTEM SINCE THE
*                FAMILY ORDINAL TABLE IS FULL.
* 
*         * QFM INTERLOCK ERROR.* 
*                TRACK INTERLOCK COULD NOT BE SET ON A QFM FILE.
* 
*         * EOI BAD ON ATTACHED FILE.*
*                THE EOI SECTOR CANNOT BE FOUND ON THE SPECIFIED FILE.
* 
*         * QFM TRACK MISMATCH.*
*                THE FILE ABOUT TO BE PURGED IS NOT THE SAME FILE 
*                THAT WAS PREVIOUSLY ATTACHED.
* 
*         * QFM - FILE IGNORED XXXXXXX.*
*                CAN INDICATE ONE OF THE FOLLOWING CONDITIONS - 
*                1. THE QUEUE FILE XXXXXXX WAS IGNORED BECAUSE OF AN
*                   INCORRECT ORIGIN OR FILE TYPE CODE. THIS COULD MEAN 
*                   A POSSIBLE BAD IQFT FILE. 
*                2. QUEUED FILE ,XXXXXXX, COULD NOT BE PROCESSED
*                   BECAUSE ITS SYSTEM SECTOR COULD NOT BE READ.
* 
*         * QFM SYSTEM SECTOR ERROR.* 
*                AN ERROR WAS ENCOUNTERED WHILE READING THE SYSTEM
*                SECTOR OF A QUEUED FILE. THE FILE IS IDENTIFIED BY THE 
*                QFM FILE IGNORED MESSAGE.
* 
*         * NORERUN/RERUN IGNORED FROM INTERACTIVE JOBS.* 
*                THE USER HAS ENTERED RERUN/NORERUN FROM A TERMINAL.
*                THE TWO COMMANDS ARE IGNORED FROM TTY. 
* 
*         * QFM I/O SEQUENCE ERROR.*
*                A REQUEST WAS MADE ON A BUSY FILE. 
* 
*         * QFM USER ACCESS NOT VALID.* 
*                THE CALLER IS NOT SYSTEM ORIGIN OR DOES NOT HAVE 
*                SYSTEM ORIGIN PRIVILEGES.
* 
*         * QFM FILE NAME ERROR.* 
*                THE FILE NAME, LFN, IS NOT A VALID FILE NAME.
* 
*         * QFM BUFFER TOO SMALL.*
*                THE BUFFER FOR READING THE SYSTEM SECTOR IS LESS THAN
*                100B WORDS LONG. 
* 
*         * QF LENGTH ERROR  XXXXXXX.*
*                A LENGTH ERROR WAS DETECTED WHILE DEQUEUING
*                FILE XXXXXXX.
* 
*         * QFM IQFT INTERLOCK ABORT.*
*                THE CALLER IS TRYING TO SET A NEW IQFT FILE ON THE 
*                DEVICE AND DOES NOT HAVE THE OLD FILE INTERLOCKED. 
* 
*         * QFM NO IQFT TRACK AVAILABLE.* 
*                SPACE IS NOT AVAILABLE FOR A NEW IQFT FILE.  RELEASE 
*                SPACE ON THE DEVICE AND REINITIALIZE.
* 
* 
*         THE FOLLOWING MESSAGES ARE DISPLAYED ONLY IN *MS2W*.
* 
*         * TRACK LIMIT.* 
*                *QFM* IS WAITING IN THE PP FOR A TRACK TO BECOME 
*                AVAILABLE. 
          SPACE  4
***       ACCOUNT FILE MESSAGES.
* 
*         *ARRQ, C1, JSN, YYMMDD, HHMMSS, DC.*
*         *ARRQ, C2, XXXXXX.XXXKUNS.* 
*                QUEUED FILE CREATED ON DATE YYMMDD AT TIME 
*                HHMMSS WITH ORIGINAL JOB SEQUENCE NAME JSN 
*                HAS BEEN REENTERED INTO THE ACTIVE QUEUE.
*                THE FILE HAS A DISPOSITION CODE OF DC AND IS 
*                XXXXXX.XXX THOUSAND PRUS IN LENGTH.
          SPACE  4
***       ROUTINES CALLED.
* 
*         0BF - BEGIN FILE. 
*         0DF - DROP FILE.
*         0DQ - DROP QUEUE FILE.
*         0QM - ISSUE QUEUE FILE ACCOUNTING MESSAGE.
          SPACE  4
*         COMMON DECKS. 
  
*CALL     COMPMAC 
*CALL     COMSCPS 
*CALL     COMSDSP 
*CALL     COMSEVT 
          LIST   X
*CALL     COMSIOQ 
          LIST   -X 
*CALL     COMSJIO 
*CALL     COMSMMF 
*CALL     COMSMSP 
*CALL     COMSPIM 
*CALL     COMSSCD 
*CALL     COMSSSE 
*CALL     COMSSSJ 
*CALL     COMSWEI 
*CALL     COMSZOL 
          EJECT 
**        DIRECT LOCATION ASSIGNMENTS.
  
  
 FS       EQU    20 - 24     FST ENTRY (5 LOCATIONS)
 EO       EQU    25          EJT ORDINAL
 QA       EQU    26          QFT ORDINAL
 BI       EQU    27          BUFFER INDEX 
 CN       EQU    30 - 34     CM BUFFER (5 LOCATIONS)
 SC       EQU    35          SCRATCH
 RI       EQU    36 - 37     RANDOM ADDRESS (2 LOCATIONS) 
 FN       EQU    40 - 44     FILE NAME (5 LOCATIONS)
 QT       EQU    45          *QFM* FILE FIRST TRACK 
 CA       EQU    46 - 47     SCRATCH (2 LOCATIONS)
 FA       EQU    57          NFL OFFSET OF LOCAL FNT ENTRY
 FT       EQU    60 - 61     FIRST POINTER (2 LOCATIONS)
 IN       EQU    62 - 63     IN POINTER (2 LOCATIONS) 
 OT       EQU    64 - 65     OUT POINTER (2 LOCATIONS)
 LM       EQU    66 - 67     LIMIT POINTER (2 LOCATIONS)
          TITLE  MACRO DEFINITIONS. 
**        ABORT - ABORT CONTROL POINT.
* 
*         ABORT  ADDR,* 
* 
*         ENTRY  ADDR = FWA OF ERROR MESSAGE. 
*                *, IF SPECIFIED, DO NOT QUALIFY ADDRESS. 
* 
*         EXIT   TO *ABT*.
  
  
          PURGMAC ABORT 
  
 ABORT    MACRO  ADDR,N 
          IFC    NE,$N$*$ 
          LDC    /ERR/ADDR
          ELSE
          LDC    ADDR 
          ENDIF 
          LJM    ABT
          ENDM
          SPACE  4,7
**        ERROR - RETURN ERROR CODE TO FET. 
* 
*         ERROR  EC 
* 
*         ENTRY  EC = ERROR CODE. (SEE COMSIOQ FOR DEFINED ERROR CODES).
* 
*         EXIT   TO *ERR*.
  
  
          PURGMAC ERROR 
  
 ERROR    MACRO  EC 
          LDN    EC 
          LJM    ERR
          ENDM
 FCN      SPACE  4,10 
**        FCN - DEFINE FUNCTION PROCESSOR.
* 
* TN      FCN    F,N,L,P,S
* 
*         TN     TABLE NAME (FIRST CALL ONLY).
*         F      FUNCTION CODE. 
*         N      NAME OF FUNCTION PROCESSOR.
*         L      REQUIRED FET LENGTH - 1. 
*         P      CALLER MUST HAVE SYSTEM ORIGIN PRIVILEGES. 
*         S      CALLER MUST BE SPECIAL SYSTEM JOB (SSJ). 
* 
*         TABLE GENERATED.
* 
*T,TN     12/O ,12/N ,1/S,1/P,4/ ,6/L 
* 
*         O      OVERLAY NAME (LAST CHARACTER)
*         N      PROCESSOR ADDRESS
*         S      SSJ= REQUIRED
*         P      SYSTEM ORIGIN PRIVILEDGES REQUIRED 
*         L      REQUIRED FET LENGTH - 1
  
  
          MACRO  FCN,TN,F,N,L,P,S 
 .D       IFC    NE,$TN$$ 
 TN       BSS    0
 .T       SET    TN 
 .D       ELSE
          ORG    .T+3*F 
 .A       IFC    NE,$N$$
          LOC    F
          CON    N/10000B,N-N/10000B*10000B 
 .S       IFC    EQ,$S$SSJ$ 
          VFD    1/1
 .S       ELSE   1
          VFD    1/0
 .P       IFC    NE,$P$$
          VFD    1/1
 .P       ELSE   1
          VFD    1/0
          VFD    4/0
          VFD    6/L
 .A       ENDIF 
          BSS    0
 .D       ENDIF 
          ENDM
          SPACE  4,5
**        OVERLAY CONTROL.
* 
*         THIS FEATURE IS INCLUDED FOR FUTURE MODULARITY. 
  
 .N       SET    0
 OVLB     MICRO  1,, 3Q      BASE OVERLAY NAME
          SPACE  4,8
**        OVERLAY - GENERATE OVERLAY CONSTANTS. 
* 
* 
*         OVERLAY (TEXT)
* 
*         ENTRY  *TEXT* = TEXT OF SUBTITLE. 
  
  
          PURGMAC OVERLAY 
  
 OVERLAY  MACRO  TEXT 
          QUAL
 .N       SET    .N+1 
 .M       MICRO  .N,1 ABCDEFGHIJKLMNOPQ 
 .O       MICRO  1,3, "OVLB"".M"
          QUAL   ".O" 
          TTL    QFM/".O" - TEXT
          TITLE 
          IDENT  ".O",OVL    TEXT 
*COMMENT  QFM - TEXT
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          ORG    OVL
          LJM    *
          UJN    *-2
          ENDM
          SPACE  4,6
**        ENTRY - DEFINE OVERLAY ENTRY POINT. 
* 
*         ENTRY  NAME 
* 
*         ENTRY  *NAME* = NAME OF ENTRY ADDRESS.
  
  
          PURGMAC ENTRY 
  
 ENTRY    MACRO  NAME 
          QUAL
 NAME_X   LJP    *
 NAME     EQU    *-1+1R".M"*10000B
          QUAL   ".O" 
          ENDM
          TITLE  MAIN PROGRAM.
**        QFM - MAIN PROGRAM. 
  
  
          ORG    PPFW 
 QFM      RJM    PRS         PRESET PROGRAM 
 QFM1     ZJN    QFM2        IF NO OVERLAY REQUIRED 
          LMC    2L"OVLB"    LOAD OVERLAY 
          RJM    EXR
 QFM2     RJM    *           PROCESS REQUEST
 QFMB     EQU    *-1
  
*         SET COMPLETE BIT IN FET AND DROP PPU. 
  
 QFMX     RJM    GFE
          ZJN    DPP         IF NO FET
          CRD    CM 
          AOD    CM+4        SET FET NOT BUSY 
          RJM    GFE         GET FET ADDRESS
          CWD    CM 
  
 DPP      MONITOR DPPM       DROP PPU 
          LJM    PPR
 ABT      TITLE  ERROR PROCESSING ROUTINES. 
**        ABT - ABORT PROCESSOR.
* 
*         ENTRY  (A) = ADDRESS OF MESSAGE.
*                (T5) = EST ORDINAL.
* 
*         EXIT   (RI) = ADDRESS OF MESSAGE. 
*                (RI+1) = EST ORDINAL.
  
  
 ABT      STD    RI          SAVE MESSAGE ADDRESS 
          LDD    T5          SAVE EST ORDINAL 
          STD    RI+1 
          LDC    ABP
          UJN    ERR1 
 ERR      SPACE  4
**        ERR - ERROR PROCESSOR.
* 
*         ENTRY  (A) = ERROR CODE.
*                (T5) = EST ORDINAL.
* 
*         EXIT   (RI) = ERROR CODE. 
*                (RI+1) = EST ORDINAL.
* 
*         CALLS  CIN. 
  
  
 ERR      STD    RI          SAVE ERROR CODE
          LDD    T5 
          STD    RI+1 
          LDC    ERP
 ERR1     STM    QFMB        SET ENTRY ADDRESS
          SHN    -14
          LJM    QFM1        EXECUTE ERROR PROCESSOR
 ERS      SPACE  4,10 
**        ERS - ENTER PP RECALL STACK.
* 
*         EXIT   TO *PPR*.
* 
*         USES   CM - CM+5. 
* 
*         MACROS MONITOR. 
  
  
 ERS      BSS    0           ENTRY
          LDN    NFIR        NFL INCREASE PENDING REASON CODE 
          STD    CM 
          LDN    ZERL        ENTER DEFAULT TIMED RECALL 
          CRD    CM+1 
          LDD    MA          STORE PP CALL IN MESSAGE BUFFER
          CWD    IR 
          ADN    1           STORE RECALL STACK REASON CODE 
          CWD    CM 
          MONITOR  RECM 
          LJM    PPR         EXIT TO PP RESIDENT
          TITLE  RESIDENT SUBROUTINES.
 CIN      SPACE  4,16 
**        CIN - CLEAR INTERLOCKS. 
* 
*         ENTRY  (T5) = EST ORDINAL.
*                (FA) = FNT OFFSET INTO NFL OF BUSY FILE. 
*                (QT) = FIRST TRACK OF INTERLOCKED FILE.
*                (EO) = EJT ORDINAL OF INTERLOCKED ENTRY. 
*                (QA) = QFT ORDINAL OF INTERLOCKED ENTRY. 
* 
*         EXIT   (A) = (FA) = (QT) = (EO) = (QA) = 0. 
* 
*         USES   CM - CM+4, CN - CN+4.
* 
*         CALLS  CTI. 
* 
*         MACROS MONITOR, NFA, SFA. 
  
  
 CIN      SUBR               ENTRY/EXIT 
          LDD    FA 
          ZJN    CIN1        IF NO BUSY FILE
          NFA    FA,R 
          ADN    FSTL 
          CRD    CN 
          AOD    CN+4        SET FILE NOT BUSY
          NFA    FA,R 
          ADN    FSTL 
          CWD    CN 
 CIN1     LDD    QT 
          ZJN    CIN2        IF NO TRACK CHAIN INTERLOCKED
          RJM    CTI         CLEAR TRACK INTERLOCK
 CIN2     LDD    EO 
          ZJN    CIN3        IF NO EJT ENTRY INTERLOCKED
          SFA    EJT
          STD    CM+4        SET ABSOLUTE ADDRESS OF ENTRY
          SHN    -14
          STD    CM+3 
          LDN    1S5         CLEAR INTERLOCK
          STD    CM+1 
          MONITOR  UTEM 
*         LDN    0
          STD    EO 
 CIN3     LDD    QA 
          ZJN    CIN4        IF NO QFT ENTRY INTERLOCKED
          SFA    QFT
          STD    CM+4        SET ABSOLUTE ADDRESS OF ENTRY
          SHN    -14
          STD    CM+3 
          LDN    1S5         CLEAR INTERLOCK
          STD    CM+1 
          MONITOR  UTEM 
*         LDN    0
          STD    QA 
 CIN4     STD    QT 
          STD    FA 
          LJM    CINX        RETURN 
 GFE      SPACE  4,7
**        GFE - GENERATE FET ADDRESS. 
* 
*         EXIT   (A) = ADDRESS OF FET.
*                (A) = 0, IF NO FET ADDRESS SPECIFIED.
  
  
 GFE1     LDD    IR+3        SET FET ADDRESS
          SHN    6
          ADD    RA 
          SHN    6
          ADD    IR+4 
  
 GFE      SUBR               ENTRY/EXIT 
 GFEA     LDN    0
*         UJN    GFE1        (FET ADDRESS SPECIFIED)
          UJN    GFEX        RETURN 
 SMD      SPACE  4,10 
**        SMD - EXECUTE *SMDM* MONITOR FUNCTION.
* 
*         ENTRY  (A) = SUBFUNCTION. 
*                (T5) = EQUIPMENT.
*                (T6) = TRACK.
* 
*         EXIT   *SMDM* MONITOR FUNCTION EXECUTED.
* 
*         USES   CM - CM+4. 
  
  
 SMD      SUBR               ENTRY/EXIT 
          STD    CM+3 
          LDD    T5          SET EQUIPMENT
          STD    CM+1 
          LDD    T6          SET TRACK
          STD    CM+2 
          MONITOR  SMDM 
          UJN    SMDX        RETURN 
 STB      SPACE  4,10 
**        STB - EXECUTE *STBM* MONITOR FUNCTION.
* 
*         ENTRY  (A) BITS 17-12 = CPFS SUBFUNCTION OPTIONS. 
*                (A) BITS 11-0 = SUBFUNCTION. 
*                (T5) = EQUIPMENT.
*                (T6) = TRACK.
* 
*         EXIT   *STBM* MONITOR FUNCTION EXECUTED.
*                (A) = 0, NO FUNCTION REJECT. 
* 
*         USES   CM - CM+4. 
  
  
 STB1     SHN    22-21+11    RESTORE STATUS 
  
 STB      SUBR               ENTRY/EXIT 
          STD    CM+3 
          SHN    -6          SET *CPFS* SUBFUNCTION OPTIONS 
          SCN    77 
          ADD    T5          SET EQUIPMENT
          STD    CM+1 
          LDD    T6          SET TRACK
          STD    CM+2 
          MONITOR STBM
          LDD    CM+1        SET EXIT CONDITION 
          SHN    21-11
          PJN    STB1        IF DEVICE IS ACCESSIBLE
          RJM    MSR         REPORT ERROR (DOES NOT RETURN) 
 CEQ      SPACE  4,10 
**        CEQ - CHECK EQUIPMENT.
* 
*         ENTRY  (T5) = EST ORDINAL.
* 
*         EXIT   (A) = 0 IF NOT MASS STORAGE EQUIPMENT. 
*                (CN - CN+4) = EST ENTRY. 
* 
*         MACROS ABORT, SFA.
  
  
 CEQ1     SFA    EST,T5      READ EST ENTRY 
          ADK    EQDE 
          CRD    CN 
          LDD    CN          POSITION MASS STORAGE FLAG 
          SHN    0-13 
  
 CEQ      SUBR               ENTRY/EXIT 
          LDD    T5 
          SBK    7777        CHECK VALID EST ORDINAL
 CEQA     EQU    *-1
          MJN    CEQ1        IF EQUIPMENT WITHIN EST
          ABORT  EREQ        * QFM INCORRECT EQUIPMENT.*
 CFS      SPACE  4,12 
**        CFS - CHECK FILE STATUS.
* 
*         ENTRY  (IR+3 - IR+4) = FET ADDRESS. 
* 
*         EXIT   (FA) = NFL OFFSET OF FNT ENTRY.
*                (T5) = EQUIPMENT.
*                (T6) = FIRST TRACK.
*                (CM - CM+4) = FNT ENTRY. 
*                (FS - FS+4) = FST ENTRY. 
*                (CN - CN+4) = EST ENTRY. 
* 
*         USES   FN - FN+4. 
* 
*         MACROS ABORT, ERROR.
  
  
 CFS3     LDD    FS          SET EQUIPMENT
          STD    T5 
          LDD    FS+1        SET FIRST TRACK
          STD    T6 
          RJM    CMS         CHECK MASS STORAGE 
  
 CFS      SUBR               ENTRY/EXIT 
          RJM    GFE         READ FILE NAME 
          CRD    FN 
          RJM    SAF         SEARCH FOR ASSIGNED FILE 
          NJN    CFS2        IF FILE FOUND
          ERROR  FNFE        EC = 1, NO FILE FOUND
  
 CFS2     RJM    SFB         SET FILE BUSY
          ZJN    CFS3        IF FILE SET BUSY 
          LDN    0           CLEAR FST ADDRESS
          STD    FA 
          ABORT  ERIO        * QFM I/O SEQUENCE ERROR.* 
 CMS      SPACE  4,6
**        CMS - CHECK MASS STORAGE. 
* 
*         ENTRY  (T5) = EQUIPMENT.
* 
*         CALLS  CEQ. 
* 
*         MACROS ABORT. 
  
  
 CMS      SUBR               ENTRY/EXIT 
          RJM    CEQ         CHECK EQUIPMENT
          NJN    CMSX        IF MASS STORAGE
          ABORT  EREQ        * QFM INCORRECT EQUIPMENT.*
 IFI      SPACE  4,10 
**        IFI - ISSUE FILE IGNORED MESSAGE. 
* 
*         ENTRY  (A) = FWA OF ERROR MESSAGE.
*                (FN - FN+1) = FILE NAME (SEQUENCE NUMBER). 
* 
*         EXIT   SPECIFIED ERROR MESSAGE ISSUED.
* 
*         CALLS  DFM. 
  
  
 IFI      SUBR               ENTRY/EXIT 
          ZJN    IFI1        IF NO ERROR MESSAGE
          RJM    DFM
 IFI1     LDD    FN          SET NAME IN MESSAGE
          STM    IFIB 
          LDD    FN+1 
          STM    IFIB+1 
          LDC    IFIA        * QFM - FILE IGNORED XXXX.*
          RJM    DFM
          UJN    IFIX        RETURN 
  
 IFIA     DATA   H* QFM - FILE IGNORED* 
 IFIB     DATA   C*XXXX.* 
 MSR      SPACE  4,20 
**        MSR - MASS STORAGE ERROR PROCESSING.
* 
*         ENTERED FROM *RNS* OR AFTER ENCOUNTERING AN I/O 
*         ERROR ON A MASS STORAGE DEVICE. 
* 
*         ENTRY  BIT 2**10D OF *RDCT* SET IF NON-RECOVERABLE ERROR. 
*                (FA) = FNT POINTER.
*                (QT) = TRACK INTERLOCK INDICATOR.
* 
*         EXIT   TO ERR, IF CALLED BY A SUBSYSTEM OR IF A JOB 
*                ENCOUNTERED A NON-RECOVERABLE ERROR. 
*                A NON-SUBSYSTEM JOB ENCOUNTERING A RECOVERABLE ERROR 
*                WILL BE ROLLED OUT VIA *1RJ*.
* 
*         USES   IR+4, CM - CM+4, CN - CN+4.
* 
*         CALLS  CIN, GFE.
* 
*         MACROS ERROR, EXECUTE, PAUSE. 
  
  
 MSR      SUBR               ENTRY/EXIT 
          LDM    RDCT 
          SHN    21-12
          MJN    MSR1        IF NON-RECOVERABLE ERROR 
          LDM    MSD
          SHN    21-13
          PJN    MSR1        IF SUBSYSTEM 
          RJM    CIN         CLEAR INTERLOCKS 
          PAUSE 
          LDD    CM+1 
          NJP    QFMX        IF ERROR FLAG SET
          LDD    T5          EST ORDINAL
          STD    IR+4 
          EXECUTE  1RJ       ROLL OUT JOB 
*         LJM    PPR         DOES NOT RETURN
  
 MSR1     RJM    GFE         CHECK EP BIT 
          ZJN    MSR2        IF NO FET ADDRESS
          ADN    1
          CRD    CN 
          ADN    6           READ FET+7 
          CRD    CM 
          LDD    CN+1 
          SHN    21-10
          PJN    MSR2        IF *EP* BIT NOT SET
          LDM    RDCT        SET DRIVER ERROR CODE
          LPN    77 
          STD    CM+4 
          RJM    GFE         WRITE FET+7
          ADN    7
          CWD    CM 
 MSR2     ERROR  RMSE        EC = 6, UNCORRECTABLE RMS ERROR
          SPACE  4
*         DAYFILE MESSAGES. 
  
  
 ERSE     DATA   C* QFM SYSTEM SECTOR ERROR.* 
 RCB      SPACE  4,15 
**        RCB - READ CENTRAL BUFFER.
* 
*         ENTRY  (A) = PP BUFFER ADDRESS. 
*                (T3) = NUMBER OF WORDS TO READ.
* 
*         EXIT   (A) .EQ. 0 IF BUFFER READ. 
*                    .LT. 0 IF NOT ENOUGH DATA IN BUFFER. 
*                (BI) = BUFFER ADDRESS. 
*                (CA - CA+1) = PREVIOUS VALUE OF OUT POINTER. 
* 
*         CALLS  COB, RBB.
* 
*         MACROS ABORT. 
  
  
 RCB1     SBD    T3 
          MJN    RCBX        IF NOT ENOUGH DATA IN BUFFER 
          LDD    OT+1 
          STD    CA+1 
          LDD    OT          SAVE OUT POINTER 
          STD    CA 
          LDD    BI          READ BINARY BUFFER 
          RJM    RBB
          LDN    0
  
 RCB      SUBR               ENTRY/EXIT 
          STD    BI 
          RJM    COB         CHECK OUTPUT BUFFER
          PJN    RCB1        IF VALID FET POINTERS
          ABORT  ERBA        * QFM BUFFER ARGUMENT ERROR.*
 RFE      SPACE  4,10 
**        RFE - RELEASE LOCAL FNT ENTRY.
* 
*         ENTRY  (FA) = FNT ADDRESS (OFFSET INTO NFL).
* 
*         EXIT   (A) = (FA) = 0.
* 
*         USES   CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 RFE      SUBR               ENTRY/EXIT 
          LDN    ZERL 
          CRD    CM 
          LDD    FA 
          ZJN    RFEX        IF NO FNT ENTRY
          STD    CM+4 
          LDN    DLFS        RELEASE LOCAL FNT ENTRY
          STD    CM+1 
          MONITOR  PLFM 
*         LDN    0           CLEAR FNT OFFSET 
          STD    FA 
          UJN    RFEX        RETURN 
 RIE      SPACE  4,10 
**        RIE - RELEASE QFT ENTRY.
* 
*         ENTRY  (QA) = QFT ORDINAL.
* 
*         EXIT   (A) = (QA) = 0.
* 
*         USES   CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 RIE      SUBR               ENTRY/EXIT 
          LDN    ZERL 
          CRD    CM 
          LDD    QA 
          ZJN    RIEX        IF NO QFT ENTRY
          STD    CM+1 
          LDN    PQFT        RELEASE QFT ENTRY
          STD    CM+2 
          MONITOR  MTRM 
*         LDN    0           CLEAR QFT ORDINAL
          STD    QA 
          UJN    RIEX        RETURN 
 RQE      SPACE  4,15 
**        RQE - READ NEXT IQFT ENTRY FROM BUFFER. 
* 
*         EXIT   (A) .LT. 0 IF BUFFER EMPTY.
*                (T5) = EST ORDINAL.
*                (T6) = FIRST TRACK.
*                (FN - FN+1) = FILE NAME (SEQUENCE NUMBER). 
*                (IQFB) = NEXT ENTRY FROM BUFFER. 
* 
*         USES   T3, T7, CM - CM+1. 
* 
*         CALLS  RCB. 
  
  
 RQE      SUBR               ENTRY/EXIT 
          LDN    QFEWL       SET NUMBER OF WORDS TO READ
          STD    T3 
          LDC    IQFB        READ CENTRAL BUFFER
          RJM    RCB
          MJN    RQEX        IF BUFFER EMPTY
          LDD    MA 
          CWM    IQFB+5*JSNQ,ON 
          CWM    IQFB+5*ENTQ,ON 
          SBN    2           MOVE FILE DESCRIPTION TO DIRECT CELLS
          CRD    FN 
          ADN    1
          CRD    T5 
          LDN    0           CLEAR FOT ORDINAL/USER INDEX FIELDS
          STD    FN+2 
          STD    FN+3 
          UJN    RQEX        RETURN 
 RQS      SPACE  4,20 
**        RQS - READ QUEUE FILE SYSTEM SECTOR.
* 
*         ENTRY  (T5) = EST ORDINAL.
*                (T6) = FIRST TRACK.
*                (FN - FN+1) = FILE NAME (SEQUENCE NUMBER). 
* 
*         EXIT   (A) = 0 IF NO SYSTEM SECTOR ERROR. 
*                    = ADDRESS OF ERROR MESSAGE FOR ERROR OTHER THAN
*                      READ.
*                CHANNEL RESERVED IF NO ERROR.
* 
*         ERROR  THE JOB IS ROLLED OUT IF A NON-SUBSYSTEM JOB 
*                ENCOUNTERS A RECOVERABLE I/O ERROR.  IF A
*                NON-RECOVERABLE ERROR IS ENCOUNTERED AND/OR THE
*                CALLER IS A SUBSYSTEM, THEN ERROR CODE = *RMSE* (6)
*                IS RETURNED. 
* 
*         CALLS  MSR, RSS, SSE. 
* 
*         MACROS SETMS. 
  
  
 RQS      SUBR               ENTRY/EXIT 
          SETMS  IO 
          LDN    0           READ SYSTEM SECTOR (IGNORE FILENAME) 
          RJM    RSS
          ZJN    RQSX        IF NO ERROR
          PJN    RQS1        IF ERROR OTHER THAN READ 
          RJM    MSR         CHECK IF THE ERROR IS RECOVERABLE
  
 RQS1     LDN    0           ISSUE SYSTEM SECTOR ERROR MESSAGE
          RJM    SSE
          LDC    ERSE        * QFM SYSTEM SECTOR ERROR.*
          UJN    RQSX        RETURN 
 UOP      SPACE  4,10 
**        UOP - UPDATE OUT POINTER. 
* 
*         ENTRY  (A) = ADDRESS OF OUT POINTER.
* 
*         EXIT   (A) = ABSOLUTE ADDRESS OF OUT POINTER IN FET.
*                (CM - CM+4) = OUT POINTER. 
* 
*         CALLS  GFE. 
  
  
 UOP      SUBR               ENTRY/EXIT 
          STD    T0 
          LDN    ZERL 
          CRD    CM 
          LDI    T0          SET OUT POINTER
          STD    CM+3 
          AOD    T0 
          LDI    T0 
          STD    CM+4 
          RJM    GFE         STORE OUT POINTER
          ADN    3
          CWD    CM 
          UJN    UOPX        RETURN 
 SIT      SPACE  4,8
**        SIT - SET IQFT TRACK. 
* 
*         ENTRY  (CN - CN+4) = EST ENTRY. 
* 
*         EXIT   (A) = (T6) = *IQFT* TRACK. 
* 
*         USES   CM - CM+4. 
  
  
 SIT      SUBR               ENTRY/EXIT 
          LDD    CN+4        SET IQFT FIRST TRACK 
          SHN    3
          ADN    ACGL 
          CRD    CM 
          LDD    CM+3 
          STD    T6 
          UJN    SITX        RETURN 
          TITLE  COMMON DECKS USED IN ALL OVERLAYS. 
  
**        RESIDENT COMMON DECKS.
  
*CALL     COMPCOB 
*CALL     COMPCTE 
*CALL     COMPCTI 
*CALL     COMPC2D 
 DTS$     EQU    0           CHECK FOR INACCESSIBLE DEVICE
*CALL     COMPDTS 
 EJT$     EQU    0           DEFINE *COMPGFP* ACCESS TO EJT 
 QFT$     EQU    0           DEFINE *COMPGFP* ACCESS TO QFT 
 IFP$     EQU    0           GENERATE *IFP* REMOTE CODE 
*CALL     COMPGFP 
*CALL     COMPRBB 
*CALL     COMPRFI 
*CALL     COMPRSS 
*CALL     COMPSAF 
*CALL     COMPSEI 
*CALL     COMPSFB 
*CALL     COMPSFI 
*CALL     COMPSSE 
 GFO$     EQU    0           DEFINE FOT ACCESS IN *COMPUFT* 
*CALL     COMPUFT 
          QUAL   WBB         QUALIFY *WBB*
 IN       EQU    CA          REDEFINE IN POINTER
*CALL     COMPWBB 
          QUAL   *
 WBB      EQU    /WBB/WBB 
*CALL     COMPWEI 
*CALL     COMPWSS 
  
  
          USE    OVERLAY
          SPACE  4,10 
*         IQFT BUFFER.
  
  
 IQFB     BSS    0
          SPACE  4
*         OVERLAY LOAD ADDRESSES. 
  
  
 OVL      EQU    IQFB+5*QFEWL+5  OVERLAY LOAD ADDRESS 
          TITLE  OVERLAID SUBROUTINES.
 CBP      SPACE  4,15 
**        CBP - CHECK BUFFER PARAMETERS.
* 
*         EXIT   (FT - FT+1) = FIRST. 
*                (IN - IN+1) = IN.
*                (OT - OT+1) = OUT. 
*                (LM - LM+1) = LIMIT. 
*                (CN - CN+4) = FET WORD CONTAINING FIRST. 
* 
*         USES   CM - CM+4. 
* 
*         CALLS  GFE. 
* 
*         MACROS ABORT. 
  
  
 CBP      SUBR               ENTRY/EXIT 
          RJM    GFE         GET FET ADDRESS
          ADN    1           READ FIRST 
          CRD    CN 
          ADN    1           READ IN
          CRD    CM 
          ADN    2           READ LIMIT 
          CRD    LM-3 
          SBN    1           READ OUT 
          CRD    OT-3 
  
          LDD    CN+4        SET FIRST
          STD    FT+1 
          LDD    CN+3 
          LPN    37 
          STD    FT 
  
          LDD    LM          SET LIMIT
          LPN    37 
          STD    LM 
          SHN    14 
          LMD    LM+1 
          SBN    1
          SHN    -6 
          SBD    FL 
          PJN    CBP1        IF LIMIT .GE. FL 
  
          LDD    OT          CHECK OUT
          SBD    LM 
          SHN    14 
          ADD    OT+1 
          SBD    LM+1 
          PJN    CBP1        IF OUT .GE. LIMIT
  
          LDD    OT 
          SBD    FT 
          SHN    14 
          ADD    OT+1 
          SBD    FT+1 
          PJN    CBP2        IF OUT .GE. FIRST
 CBP1     ABORT  ERBA        * QFM BUFFER ARGUMENT ERROR.*
  
 CBP2     LDD    CM+4        SET IN 
          STD    IN+1 
          LDD    CM+3 
          STD    IN 
          SBD    LM 
          SHN    14 
          ADD    IN+1 
          SBD    LM+1 
          PJN    CBP1        IF IN .GE. LIMIT 
  
          LDD    IN 
          SBD    FT 
          SHN    14 
          ADD    IN+1 
          SBD    FT+1 
          MJN    CBP1        IF IN .LT. FIRST 
          LJM    CBPX        RETURN 
 VIQ      SPACE  4,10 
**        VIQ - VERIFY IQFT FILE. 
* 
*         CALLS  CFS, DTS.
* 
*         MACROS ABORT, ERROR.
  
  
 VIQ      SUBR               ENTRY/EXIT 
          RJM    CFS         CHECK FILE STATUS
          LDD    CM+4        CHECK FILE TYPE
          SHN    -6 
          LMN    LIFT 
          ZJN    VIQ1        IF LIBRARY FILE
          ERROR  FNFE        EC = 1, NO FILE FOUND
  
 VIQ1     RJM    DTS
          MJN    VIQX        IF TRACK CHAIN INTERLOCKED 
          ZJN    VIQ2        IF DEVICE IS INACCESSIBLE
          ABORT  ERIE        * QFM INTERLOCK ERROR.*
  
 VIQ2     RJM    MSR         REPORT ERROR (DOES NOT RETURN) 
          TITLE  ATTACH IQFT FILE.
***       ATQF - ATTACH IQFT FILE. (FUNCTION 1).
* 
*         THE IQFT FILE ON EQUIPMENT, EQ, IS ATTACHED TO
*         THE CONTROL POINT AS A LIBRARY TYPE FILE WITH ITS TRACK 
*         INTERLOCK BIT SET. THE FILE NAME IS TAKEN FROM THE FIRST
*         WORD OF THE FET.
* 
*         IF THE FILE ALREADY IS PRESENT AT THE CONTROL POINT,
*         IT WILL BE RETURNED AND THE REQUESTED IQFT FILE 
*         WILL BE ATTACHED. 
  
  
 ATQ      SUBR               ENTRY/EXIT 
          RJM    GFE         READ FILE NAME 
          CRD    FN 
          ADN    7           READ EST ORDINAL 
          CRD    CN 
          LDD    FN+3        ENSURE ZERO FILLED FOR *0BF* 
          SCN    77 
          STD    FN+3 
  
*         GET FIRST TRACK OF FILE TO ATTACH.
  
 ATQ2     LDD    CN          SET EST ORDINAL
          STD    T5 
          STD    SC          SAVE EST ORDINAL 
          RJM    CMS         CHECK MASS STORAGE 
          LDC    IIQS+3000S6 INTERLOCK IQFT 
*                            (RETURN ON INACCESSIBLE OR NOT RESERVED) 
          RJM    STB
          ZJN    ATQ4        IF FILE INTERLOCKED
          RJM    SIT         SET IQFT FIRST TRACK 
          NJN    ATQ3        IF IQFT FILE EXISTS
          ERROR  DUNE        EC = 11, DEVICE UNAVAILABLE
  
 ATQ3     LDD    CP          POST WAITING INTERLOCK MESSAGE 
          ADN    MS2W 
          CWM    ATQA,TR
          RJM    CIN         CLEAR INTERLOCKS 
          LJM    ERS         RECALL REQUEST 
  
*         VERIFY EOI ON SELECTED FILE.
  
 ATQ4     LDN    0           CLEAR WAITING MESSAGE
          STD    CM 
          LDD    CP 
          ADN    MS2W 
          CWD    CM 
          RJM    SIT         SET IQFT FIRST TRACK 
          STD    QT          SET TRACK INTERLOCK INDICATOR
          RJM    SEI         SEARCH FOR EOI 
          SETMS  IO 
          LDC    BFMS        READ EOI SECTOR
          RJM    RDS
          PJN    ATQ5        IF NO ERROR
          RJM    MSR         REPORT ERROR 
  
 ATQ5     ENDMS 
          LDM    BFMS        CHECK CONTROL BYTES
          ADM    BFMS+1 
          ZJN    ATQ7        IF GOOD EOI
          ABORT  EREO        * EOI BAD ON ATTACHED FILE.* 
  
*         RETURN DUPLICATE FILE.
  
 ATQ6     LDN    1           SET *UNLOAD* OPTION
          STM    OVL0-1 
          EXECUTE  0DF,OVL0  CALL *0DF* TO DROP FILE
          PJN    ATQ7        IF FILE DROPPED
          RJM    MSR         REPORT ERROR 
  
*         ENTER IQFT FILE IN FNT TABLE. 
  
 ATQ7     LDN    NEEQ        ASSIGN NULL EQUIPMENT
          STD    FS 
          LDN    6           RETURN ON NFL INCREASE, LOCAL FILE LIMIT 
          STM    OVL0-1 
          EXECUTE 0BF,OVL0   MAKE FNT/FST ENTRY 
          UJN    ATQ8        NO DUPLICATE FILE NAME 
  
*         PROCESS DUPLICATE FILE. 
  
          LDD    MA          SET FILE BUSY
          CWD    FN 
          CRD    FS 
          RJM    SFB
          ZJP    ATQ6        IF FILE SET BUSY 
          LDN    0           CLEAR FNT ADDRESS
          STD    FA 
          ABORT  ERIO        * QFM I/O SEQUENCE ERROR.* 
  
 ATQ8     ZJN    ATQ10       IF FNT ENTRY CREATED 
          LMN    4
          NJN    ATQ9        IF NOT LOCAL FILE LIMIT
          ERROR  FTHE        EC=4, *FNT IS FULL.* 
  
*         ENTER PP RECALL STACK TO WAIT FOR PENDING NFL INCREASE. 
  
 ATQ9     RJM    CIN         CLEAR INTERLOCKS 
          LJM    ERS         ENTER PP RECALL STACK
  
*         BUILD FNT/FST ENTRY.
  
 ATQ10    LDD    QT          SET FIRST TRACK
          STD    FS+1 
          STD    FS+2        SET CURRENT TRACK
          LDD    SC          SET EQUIPMENT
          STD    T5 
          STD    FS 
          LDN    FSMS        SET CURRENT SECTOR 
          STD    FS+3 
          LDC    1005        SET TRACK INTERLOCK, NOT BUSY, EOR 
          STD    FS+4 
          LDC    LIFT*100-LOFT*100  CHANGE FILE TYPE TO *LIBRARY* 
          RAD    FN+4 
          NFA    FA,R        WRITE FNT/FST
          CWD    FN 
          ADN    FSTL 
          CWD    FS 
          LDN    IUCS        INCREMENT USER COUNT 
          RJM    SMD
          LJM    ATQX 
  
  
 ATQA     DATA   C*$WAITING FOR IQFT INTERLOCK.*
          TITLE  PURGE AND DETACH IQFT FILE.
***       DTQF - DETACH IQFT FILE. (FUNCTION 2).
* 
*         THE LIBRARY TYPE FILE, LFN, ATTACHED TO THE CONTROL POINT 
*         IS REMOVED FROM THE FNT/FST AND ITS TRACK INTERLOCK IS
*         CLEARED.
  
  
 DTQ      SUBR               ENTRY/EXIT 
          RJM    VIQ         VERIFY IQFT FILE 
  
*         NOTE - IT IS NOT NECESSARY TO CLEAR THE TRACK INTERLOCK 
*         HERE.  IT WILL BE CLEARED BY *0DF* BECAUSE THE FST TRACK
*         INTERLOCK BIT IS SET (BY *ATQ* WHEN THE *IQFT* WAS
*         ATTACHED TO THE CONTROL POINT). 
  
          LDN    1           UNLOAD OPTION
          STM    OVL0-1 
          EXECUTE 0DF,OVL0
          PJN    DTQ1        IF FILE DROPPED
          RJM    MSR         REPORT ERROR 
 DTQ1     LDN    DUCS        DECREMENT USER COUNT 
          RJM    SMD
          UJP    DTQX        RETURN 
 PGQF     SPACE  4,5
***       PGQF - PURGE IQFT FILE. (FUNCTION 3). 
* 
*         THE LIBRARY FILE, LFN, ATTACHED TO THE CONTROL POINT IS 
*         RETURNED AND ITS TRACK INTERLOCK IS CLEARED.
  
  
 PGQ      SUBR               ENTRY/EXIT 
          RJM    VIQ         VERIFY IQFT FILE 
          RJM    SIT         CHECK FIRST TRACK
          LMD    FS+1 
          ZJN    PGQ1        IF FIRST TRACKS MATCH
          ABORT  ERTM        * QFM TRACK MISMATCH.* 
  
 PGQ1     LDN    FSMS        WRITE EOI
          STD    T7 
          SETMS  IO 
          RJM    WEI
          PJN    PGQ2        IF NO WRITE ERRORS 
          RJM    MSR         CHECK IF THE ERROR IS RECOVERABLE
  
 PGQ2     ENDMS 
          LDN    1           SET *UNLOAD* OPTION
          STM    OVL0-1 
          EXECUTE  0DF,OVL0 
          PJN    PGQ3        IF FILE DROPPED
          RJM    MSR         REPORT ERROR 
 PGQ3     LDN    DUCS        DECREMENT USER COUNT 
          RJM    SMD
          LJM    PGQX        RETURN 
          SPACE  4,10 
**        ZERO LEVEL OVERLAY LOAD ADDRESS.
  
  
 OVL0     EQU    *+5
  
          ERRNG  BFMS-OVL0-ZDFL 
          ERRNG  EPFW-OVL0-ZBFL 
  
*         CODE AFTER THIS POINT IS OVERLAYED BY ZERO LEVEL OVERLAYS.
 STQF     TITLE  SET IQFT FILE. 
***       STQF - SET IQFT FILE. (FUNCTION 4). 
* 
*         THE LOCAL FILE, LFN, IS REMOVED FROM THE FNT/FST
*         AND THE FIRST TRACK IS PLACED INTO THE FIRST TRACK BYTE IN
*         THE MST.
* 
*         THE CALLER MUST HAVE THE CURRENT IQFT INTERLOCKED AT THE TIME 
*         OF THE CALL TO SET A NEW IQFT FILE. 
  
  
 STQ3     LDD    CA          DROP THE OLD IQFT TRACKS 
          STD    CM+2 
          LDD    T5 
          STD    CM+1 
          MONITOR  DTKM 
          RJM    RFE         RETURN NEW IQFT LOCAL FILE 
          LDD    CA+1 
          STD    FA 
          RJM    RFE         RETURN OLD IQFT LOCAL FILE 
          LDN    DUCS        DECREMENT USER COUNT 
          RJM    SMD
  
 STQ      SUBR               ENTRY/EXIT 
          RJM    CFS         CHECK FILE STATUS
          RJM    CFI         CHECK CURRENT FILE INTERLOCK 
          LDN    0           READ *NIQFT* SYSTEM SECTOR 
          STD    T7 
          SETMS  IO,RW
          LDC    BFMS 
          RJM    RDS
          PJN    STQ1        IF NO ERROR
          RJM    MSR         REPORT ERROR 
 STQ1     LDC    LIFT*100B   SET FILE TO *LIFT* FILE TYPE 
          STM    FNSS+4 
          LDC    BFMS 
          RJM    WDS
          PJN    STQ2        IF NO ERROR
          RJM    MSR         REPORT ERROR 
 STQ2     ENDMS 
          LDC    4S15+SPFS   SET PRESERVED FILE STATUS
          RJM    STB
          LDN    SIQS        SET *IQFT* POINTER BYTE
          RJM    STB
          ZJP    STQ3        IF NO REJECT 
          ERROR  TASE        EC = 3, FILE ALREADY ASSIGNED
 CFI      SPACE  4,15 
**        CFI - CHECK FOR IQFT FILE INTERLOCKED.
* 
*         ENTRY  (T5) = EST ORDINAL.
*                (T6) = CURRENT TRACK.
* 
*         EXIT   (CA) = FIRST TRACK OF OLD IQFT.
*                (CA+1) = FNT OFFSET OF OLD IQFT FILE.
*                (T6) = CURRENT TRACK.
* 
*         USES   T2, T3, T4, T6, CM - CM+4. 
* 
*         CALLS  SIT. 
* 
*         MACROS NFA. 
  
  
 CFI      SUBR               ENTRY/EXIT 
          LDD    T6          SAVE CURRENT TRACK 
          STD    T4 
          RJM    SIT         SET OLD IQFT TRACK 
          ZJP    CFI3        IF TRACK NOT DEFINED 
          STD    CA 
          LDD    CP          SET UP NFL SEARCH
          ADN    FLSW 
          CRD    CM 
          LDD    CM 
          SHN    6
          ADN    1
          STD    T2 
          LDC    FNTN        SET FIRST ENTRY
          STD    T3 
 CFI1     NFA    T3,R        READ FST ENTRY 
          ADN    FSTL 
          CRD    CM 
          LDD    CM 
          LPC    777
          LMD    T5 
          NJN    CFI2        IF NO MATCH ON EQUIPMENT 
          LDD    CM+1 
          LMD    T6 
          NJN    CFI2        IF NO MATCH ON FIRST TRACK 
          LDD    T3          SAVE LOCATION
          STD    CA+1 
          LDD    T4          RESTORE CURRENT TRACK
          STD    T6 
          LJM    CFIX        RETURN 
  
 CFI2     LDN    LENF        ADVANCE TO NEXT ENTRY
          RAD    T3 
          SBD    T2 
          MJN    CFI1        IF NOT END OF NFL
 CFI3     ABORT  ERQI        * QFM IQFT INTERLOCK ABORT.* 
 SRRF     TITLE  SET AND CLEAR RERUN STATUS.
***       SRRF - SET RERUN STATUS. (FUNCTION 15). 
* 
*         LOCATION *JASS* IN THE SYSTEM SECTOR, AND *NORERUN* STATUS
*         IN THE EJT ENTRY ARE CLEARED.  THIS ALLOWS THE JOB TO BE
*         RERUN FOLLOWING A DEADSTART.
 CRRF     SPACE  4,8
***       CRRF - CLEAR RERUN STATUS. (FUNCTION 16). 
* 
*         LOCATION *JASS* IN THE SYSTEM SECTOR, AND THE EJT ENTRY 
*         ARE SET TO *NORERUN* STATUS TO PREVENT RESTART OF THE JOB.
  
  
 RER3     LDD    MA          STORE *UTEM* PARAMETERS
          CWM    RERB,ON
          LDN    1S5+1
          STD    T1 
          SFA    EJT,EO      INTERLOCK EJT ENTRY
          RJM    SFI
          ZJN    RER4        IF INTERLOCK SET 
          LJM    DPP         ERROR FLAG SET - DROP PP 
  
*         READ INPUT FILE SYSTEM SECTOR.
  
 RER4     RJM    RIS
          ZJN    RER7        IF NO SYSTEM SECTOR
          LDM    JASS 
          LMN    NRIE 
 RERC     NJN    RER5        IF FILE IN RERUN STATE 
*         ZJN    RER6        (SETTING RERUN STATUS) 
          ENDMS 
 RERD     ERROR  NRAE        ED = 10, FILE ALREADY IN NORERUN STATUS
*         ERROR  RRAE        (SETTING RERUN STATUS) 
  
 RER5     LDN    NRIE        SET NORERUN STATUS IN SYSTEM SECTOR
 RER6     STM    JASS 
          LDN    0
          STD    FA 
          RJM    WSS         REWRITE SYSTEM SECTOR
          PJN    RER6.1      IF NO WRITE ERRORS 
          LDC    FNTN        RESET FNT OFFSET 
          STD    FA 
          RJM    MSR         CHECK IF THE ERROR IS RECOVERABLE
  
 RER6.1   ENDMS 
          LDC    FNTN        RESET FNT OFFSET 
          STD    FA 
 RER7     RJM    CIN         CLEAR INTERLOCKS 
  
 RER      SUBR               ENTRY/EXIT 
          LDD    CP          FETCH EJT ORDINAL
          ADN    TFSW 
          CRD    CM 
          LDD    CM          SAVE ORDINAL 
          STD    EO 
          SFA    EJT         GET ORIGIN TYPE FROM EJT 
          ADN    SCLE 
          CRD    CM 
          LDD    CM          CHECK ORIGIN TYPE
          LPN    17 
          LMN    IAOT 
          NJN    RER1        IF NOT TIME-SHARING JOB
          LDC    CPON+RERA   * NORERUN/RERUN IGNORED FROM IAOT JOBS.* 
          RJM    DFM
          UJN    RERX        RETURN 
  
 RER1     LDD    IR+2        CHECK REQUEST
          LMN    SRRF 
          NJN    RER2        IF NOT SETTING RERUN STATUS
          STM    RERB+4 
          SOM    RERD        EC = 7, FILE ALREADY IN RERUN STATUS 
          ERRNZ  RRAE+1-NRAE CODE DEPENDS ON VALUE
          LDC    *
          ORG    *-1
          LOC    RERC 
          ZJN    RER6        IF FILE IN NORERUN STATE 
          LOC    *O 
          STM    RERC 
 RER2     LJM    RER3        INTERLOCK EJT ENTRY
  
 RERA     DATA   C* NORERUN/RERUN IGNORED FROM INTERACTIVE JOBS.* 
  
 RERB     VFD    1/0,5/SCHE,6/1,6/35D,42/1
 RIS      SPACE  4,25 
**        RIS - READ INPUT FILE SYSTEM SECTOR.
* 
*         EXIT   (A) = 0 IF SYSTEM SECTOR NOT READ. 
*                (T5) = EQUIPMENT.
*                (T6) = TRACK.
*                (T7) = SECTOR. 
*                CHANNEL RESERVED.
*                MASS STORAGE DRIVER SET. 
*                FILE SET BUSY. 
* 
*         ERROR  THE JOB IS ROLLED OUT IF A NON-SUBSYSTEM JOB 
*                ENCOUNTERS A RECOVERABLE I/O ERROR.  IF A
*                NON-RECOVERABLE ERROR IS ENCOUNTERED AND/OR THE
*                CALLER IS A SUBSYSTEM, THEN ERROR CODE = *RMSE* (6)
*                IS RETURNED. 
* 
*         USES   CM - CM+4, FS - FS+4, T5 - T7. 
* 
*         CALLS  CEQ, MSR, RSS, SFB.
* 
*         MACROS ABORT, ERROR, NFA, SETMS.
  
  
 RIS3     LDN    1           INDICATE SYSTEM SECTOR HAS BEEN READ 
  
 RIS      SUBR               ENTRY/EXIT 
          NFA    FNTN        READ INPUT FILE FNT
          CRD    FS 
          ADN    FSTL        GET FST INFORMATION
          CRD    T5 
          RJM    CEQ         CHECK EQUIPMENT
          ZJN    RISX        IF NOT MASS STORAGE
          LDC    FNTN        SET FNT OFFSET 
          STD    FA 
          RJM    SFB         SET FILE BUSY
          ZJN    RIS1        IF FILE SET BUSY 
          LDN    0
          STD    FA 
          ABORT  ERIO        * QFM I/O SEQUENCE ERROR.* 
  
 RIS1     SETMS  IO,RW
          LDN    0           READ SYSTEM SECTOR 
          RJM    RSS
          ZJP    RIS3        IF NO ERRORS 
          MJN    RIS2        IF READ ERROR
          ERROR  INSE        EC = 5, INCORRECT SYSTEM SECTOR
  
 RIS2     LDC    FNTN        RESET FNT OFFSET 
          STD    FA 
          RJM    MSR         CHECK IF THE ERROR IS RECOVERABLE
          TITLE  READ SYSTEM SECTOR.
***       READ SYSTEM SECTOR. (FUNCTION 12).
* 
*         THE SYSTEM SECTOR FOR THE FILE LFN IS READ INTO THE 
*         DEFINED BUFFER. ONLY 100 WORDS ARE TRANSFERRED. NO
*         CONTROL BYTES. THE IN POINTER IS MOVED ACCORDINGLY. 
  
  
 QRS      SUBR               ENTRY/EXIT 
          RJM    CIB         CHECK INPUT BUFFER 
          SBD    HN 
          PJN    QRS1        IF ENOUGH SPACE
          ABORT  ERBS        * QFM BUFFER TOO SMALL.* 
  
 QRS1     RJM    CFS         CHECK FILE STATUS
          SETMS  IO 
          LDN    0           NO FILE NAME VERIFY
          RJM    RSS         READ SYSTEM SECTOR 
          ZJN    QRS3        IF NO ERROR ENCOUNTERED
          PJN    QRS2        IF ERROR OTHER THAN READ 
          RJM    MSR         CHECK IF THE ERROR IS RECOVERABLE
  
 QRS2     LDN    0           SET FNT ENTRY FLAG 
          STD    T3 
          NFA    FA,R 
          RJM    SSE         ISSUE SYSTEM SECTOR ERROR MESSAGE
          ERROR  INSE        EC = 5, SYSTEM SECTOR ERROR
  
 QRS3     ENDMS 
  
*         TRANSFER SYSTEM SECTOR TO FET BUFFER. 
  
          LDD    IN          SET IN POINTER FOR WRITE 
          STD    CA 
          LDD    IN+1 
          STD    CA+1 
          LDD    HN          COPY SYSTEM SECTOR TO BUFFER 
          STD    T1 
          LDC    BFMS+2 
          RJM    WBB
          LDN    ZERL        UPDATE IN POINTER
          CRD    CM 
          LDD    CA 
          STD    CM+3 
          LDD    CA+1 
          STD    CM+4 
          RJM    GFE         WRITE UPDATED IN POINTER BACK
          ADN    2
          CWD    CM 
          RJM    CIN         CLEAR FILE INTERLOCK 
          LJM    QRSX        RETURN 
          SPACE  4
**        COMMON DECKS. 
  
  
*CALL     COMPCIB 
          SPACE  4,10 
          TITLE  PRESET.
**        PRS - PRESET PROGRAM. 
* 
*         EXIT   (A) = OVERLAY NAME.
*                (EO) = (QA) = (FA) = (QT) = 0. 
*                (QFMB) = PROCESSOR ADDRESS.
* 
*         CALLS  CBP, CRS, CUA, GFE, IFP. 
  
  
 PRS      SUBR               ENTRY/EXIT 
          LDN    ZERL        CLEAR OUT *MID* WORD 
          CRM    FMSS,ON
          LDN    0           CLEAR DIRECT CELLS 
          STD    T1 
          STD    EO 
          STD    QA 
          STD    FA 
          STD    QT 
          RJM    CRS         CHECK RECALL STATUS
          ZJN    PRS2        IF NOT CALLED WITH RECALL
  
*         CHECK FUNCTION CODE.
  
          LDD    IR+2        SET INDEX INTO *TFCN*
          SHN    1
          ADD    IR+2 
          STD    T7 
          SBK    MXQF*3 
          MJN    PRS3        IF LEGAL CODE
 PRS2     ABORT  ERIR        * QFM INCORRECT REQUEST.*
  
*         CHECK FET ADDRESS.
  
 PRS3     LDM    TFCN+2,T7   SET REQUIRED FET LENGTH
          LPN    77 
          STD    T2 
          ZJN    PRS4        IF NO FET REQUIRED 
          LDD    IR+3 
          LPN    77 
          STD    IR+3 
          SHN    14 
          MJN    PRS5        IF OUT OF RANGE
          LMD    IR+4 
          SBN    2
          MJN    PRS5        IF INCORRECT FET ADDRESS 
          LDC    *
          ORG    *-1
          LOC    GFEA 
          UJN    GFE1        SET FET ADDRESS
          LOC    *O 
          STM    GFEA 
          RJM    CBP         CHECK BUFFER PARAMETERS
  
*         CHECK FET LENGTH. 
  
          LDD    CN+3        CHECK FET LENGTH 
          SHN    -6 
          ADN    4
          STD    T1 
          SBD    T2 
          MJN    PRS5        IF FET NOT LONG ENOUGH 
          LDD    IR+3        CHECK FET ADDRESS WITHIN FL
          SHN    14 
          LMD    IR+4 
 PRS4     ADD    T1 
          SHN    -6 
          SBD    FL 
          MJN    PRS6        IF IN RANGE
 PRS5     ABORT  ERAE        * QFM ARGUMENT ERROR.* 
  
 PRS6     LDM    TFCN+2,T7   CHECK USER ACCESS REQUIREMENTS 
          SHN    21-12
          PJN    PRS7        IF NO REQUIREMENTS 
          RJM    CUA
          ZJN    PRS7        IF ACCESS ALLOWED
          ABORT  ERUA        * QFM USER ACCESS NOT VALID.*
  
 PRS7     RJM    IFP         INITIALIZE TABLE ACCESS ROUTINES 
          LDN    ESTP 
          CRD    CM 
          LCN    0           SET TEST FOR VALID EQUIPMENT 
          LMD    CM+2 
          STM    CEQA 
          LDM    TFCN+1,T7   GET PROCESSOR ADDRESS
          STM    QFMB 
          NJN    PRS9        IF PROCESSOR DEFINED 
 PRS8     LJM    PRS2        * QFM INCORRECT REQUEST.*
  
*         CHECK IF SSJ= REQUIRED. 
  
 PRS9     LDM    TFCN+2,T7
          SHN    21-13
          PJN    PRS10       IF SSJ= NOT REQUIRED 
          LDD    CP          CHECK SSJ= PRESENT 
          ADC    SEPW 
          CRD    CN 
          LDD    CN 
          SHN    21-2 
          PJN    PRS8        IF SSJ= NOT PRESENT
 PRS10    LDM    TFCN,T7     SET OVERLAY NAME 
          LPN    77 
          LJM    PRSX 
  
  
 IFP      HERE               DUMP *IFP* REMOTE CODE 
          SPACE  4,4
*         COMMON DECKS. 
  
  
*CALL     COMPCRS 
 SSJ$     EQU    0           SET SSJ CHECKING FOR *COMPCUA* 
*CALL     COMPCUA 
          SPACE  4,10 
**        TFCN - TABLE OF FUNCTION CODE PROCESSORS. 
*         ENTRY = 3 WORDS.
* 
*T        12/ O,12/ N,1/S,1/P,4/,6/ L 
*         O      OVERLAY NAME (LAST CHARACTER). 
*         N      FUNCTION PROCESSOR ADDRESS.
*         S      SSJ= ENTRY POINT REQUIRED. 
*         P      SYSTEM ORIGIN PRIVILEDGES REQUIRED.
*         L      REQUIRED FET LENGTH - 1. 
  
  
 TFCN     FCN 
          FCN    ATQF,ATQ,7,P,SSJ   ATTACH *IQFT* FILE
          FCN    DTQF,DTQ,4,P       DETACH *IQFT* FILE
          FCN    PGQF,PGQ,4,P       PURGE *IQFT* FILE 
          FCN    STQF,STQ,4,,SSJ    SET *IQFT* FILE 
          FCN    IIQF,INQ,7,,SSJ    INITIALIZE *IQFT* FILE
          FCN    RQLF,RQL,6,,SSJ    REQUEUE LIST
          FCN    RLLF,RLL,4,,SSJ    RELEASE LIST
          FCN    DEQF,DEQ,10,,SSJ   DEQUEUE LIST
          FCN    AQFF,AQF,10,P,SSJ  ATTACH QUEUED FILE
          FCN    QRSF,QRS,4,,SSJ    READ SYSTEM SECTOR
          FCN    AIQF,AIQ,4,,SSJ    ATTACH INACTIVE QUEUE FILE
          FCN    RIQF,RIQ,4,,SSJ    REQUEUE INACTIVE QUEUE FILE 
          FCN    SRRF,RER           SET RERUN STATUS
          FCN    CRRF,RER           CLEAR RERUN STATUS
          FCN    IQFF,IQF,4,,SSJ    INTERLOCK QUEUED FILE 
          FCN    CFEF,CFE,6,,SSJ    CREATE FOT ENTRY
          FCN    CQFF,CQF,4,,SSJ    CREATE QUEUE FILE 
          FCN    QREF,QRE,4,,SSJ    READ EOI SECTOR 
          FCN    QWEF,QWE,4,,SSJ    WRITE EOI SECTOR
          FCN    MXQF 
  
  
          OVERFLOW
          OVERLAY (QFM ERROR PROCESSOR.)
 ABP      SPACE  4
**        ABP - ABORT JOB PROCESSOR.
* 
*         ENTRY  (RI) = ADDRESS OF MESSAGE. 
*                (RI+1) = EST ORDINAL.
  
  
          ENTRY  ABP         ENTRY
          LDD    RI+1        RESTORE EST ORDINAL
          STD    T5 
          RJM    CIN         CLEAR FILE INTERLOCK 
          LDD    RI 
          ZJN    ABP1        IF NO ERROR MESSAGE
          RJM    DFM         ISSUE ERROR MESSAGE
 ABP1     RJM    GFE         GET FET ADDRESS
          ZJN    ABP2        IF NO FET
          CRD    CM 
          AOD    CM+4        SET FET NOT BUSY 
          RJM    GFE         GET FET ADDRESS
          CWD    CM 
 ABP2     MONITOR ABTM
          LJM    PPR
          SPACE  4
*         COMMON ERROR MESSAGES ISSUED BY *ABT*.
  
  
          QUAL   ERR
 ERAE     DATA   C* QFM ARGUMENT ERROR.*
 ERBA     DATA   C* QFM BUFFER ARGUMENT ERROR.* 
 ERBS     DATA   C* QFM BUFFER TOO SMALL.*
 EREO     DATA   C* EOI BAD ON ATTACHED FILE.*
 EREQ     DATA   C* QFM INCORRECT EQUIPMENT.* 
 ERFA     DATA   C* QFM FILE ALREADY ATTACHED.* 
 ERFN     DATA   C* QFM FILE NAME ERROR.* 
 ERIE     DATA   C* QFM INTERLOCK ERROR.* 
 ERIO     DATA   C* QFM I/O SEQUENCE ERROR.*
 ERIQ     DATA   C* QFM INCORRECT QUEUE FILE ORDINAL.*
 ERIR     DATA   C* QFM INCORRECT REQUEST.* 
 ERQI     DATA   C* QFM IQFT INTERLOCK ABORT.*
 ERTK     DATA   C* QFM NO IQFT TRACK AVAILABLE.* 
 ERTM     DATA   C* QFM TRACK MISMATCH.*
 ERUA     DATA   C* QFM USER ACCESS NOT VALID.* 
 ERFF     DATA   C* QFM FOT FULL.*
          QUAL   *
 ERP      SPACE  4,15 
**        ERP - COMMON ERROR EXIT FROM QFM. 
* 
*         ENTRY  (RI) = ERROR CODE. (SEE COMSIOQ FOR DEFINED CODES).
*                (RI+1) = EST ORDINAL.
* 
*         IF A FET ADDRESS IS SPECIFIED IN THE CALL, THE *EP* BIT IS
*         CHECKED. IF IT IS NOT SET, THE APPROPRIATE DAYFILE MESSAGE
*         IS RETURNED TO THE USERS DAYFILE. IF THE *EP* BIT IS SET, 
*         THE ERROR CODE IS RETURNED IN FET+0. NO DAYFILE MESSAGE IS
*         ISSUED IF *EP* BIT IS SET. IF NO FET IS SPECIFIED, A MESSAGE
*         IS ISSUED. THE TYPE OF EXIT IS SELECTED FROM A TABLE
*         (SEE *TABT*). THE RETURN WILL BE TO ABT OR QFMX.
  
  
          ENTRY  ERP         ENTRY/EXIT 
          LDD    RI+1        RESTORE EST ORDINAL
          STD    T5 
          RJM    CIN         CLEAR FILE INTERLOCK 
          RJM    GFE
          ZJN    ERP2        IF NO FET ADDRESS
          CRD    CM 
          ADN    1           CHECK EP BIT 
          CRD    CN 
          LDD    CN+1 
          SHN    21-10
          PJN    ERP2        IF EP BIT NOT SET
          LDD    CM+4 
          LPC    1777 
          STD    CM+4 
          LDD    CM+3 
          SCN    3
          STD    CM+3 
          LDD    RI          SET ERROR CODE IN FET
          SHN    12 
          RAD    CM+4 
          SHN    -14
          RAD    CM+3 
          RJM    GFE
          CWD    CM 
 ERP1     LJM    QFMX        RETURN TO USER 
  
*         SELECT TYPE OF ERROR RETURN.
  
 ERP2     LDM    TEMT,RI     FETCH DIAGNOSTIC ADDRESS 
          ZJN    ERP3        IF NO MESSAGE
          RJM    DFM
 ERP3     LDM    TABT,RI     GET RETURN CODE
          ZJN    ERP1        IF RETURN TO USER
          LJM    ABP1        ABORT JOB
 TEMT     SPACE  4
**        TEMT - TABLE OF ERROR MESSAGES. 
  
  
 TEMT     BSS    0
          LOC    0
          CON    0           UNDEFINED
 FNFE     CON    =C* FILE NOT FOUND.* 
 FAIE     CON    =C* FILE ALREADY INTERLOCKED.* 
 TASE     CON    =C* TRACK ALREADY ASSIGNED.* 
 FTHE     CON    =C* QFT/LOCAL FNT IS FULL.*
 INSE     CON    =C* INCORRECT SYSTEM SECTOR.*
 RMSE     CON    =C* UNCORRECTABLE RMS ERROR.*
 RRAE     CON    =C* INPUT FILE IN RERUN STATUS.* 
 NRAE     CON    =C* INPUT FILE IN NO RERUN STATUS.*
 DUNE     CON    =C* DEVICE UNAVAILABLE.* 
 RDVE     CON    0 * IGNORED - REMOVABLE.*  (QREC)
          CON    0           UNUSED 
 FTFE     CON    =C* FOT IS FULL.*
 EIDE     CON    0 * IGNORED - ERROR IDLE.* (QREC)
 DFNE     CON    =C* DUPLICATE FILE NAME.*
 NSEE     CON    =C* FILE NOT ALLOWED ON EQUIPMENT.*
          LOC    *O 
 TEMTL    EQU    *-TEMT 
 TABT     SPACE  4
**        TABT - ABORT TABLE. 
* 
*         0 = EXIT TO USER. 
*         1 = ABORT CONTROL POINT.
  
  
 TABT     BSS    0
          LOC    0
          CON    0           UNDEFINED
 FNFE     CON    1           FILE NOT FOUND 
 FAIE     CON    0           REQUESTED FILE ALREADY INTERLOCKED 
 TASE     CON    1           IQFT TRACK ALREADY ASSIGNED
 FTHE     CON    0           QFT/LOCAL FNT IS FULL
 INSE     CON    0           INCORRECT SYSTEM SECTOR
 RMSE     CON    0           UNCORRECTABLE RMS ERROR
 RRAE     CON    0           FILE ALREADY IN RERUN STATUS 
 NRAE     CON    0           FILE ALREADY IN NORERUN STATUS 
 DUNE     CON    0           DEVICE UNAVAILABLE 
 RDVE     CON    0           IGNORED - REMOVABLE  (*QREC*)
          CON    0           (UNUSED) 
 FTFE     CON    0           FOT IS FULL
 EIDE     CON    0           IGNORED - ERROR IDLE (*QREC*)
 DFNE     CON    0           DUPLICATE FILE NAME
 NSEE     CON    0           INCORRECT ACCESS LEVEL FOR QUEUED FILE 
          LOC    *O 
 TABTL    EQU    *-TABT 
          SPACE  4,5
**        THE FOLLOWING TEST ASSURES THAT *TEMT* AND *TABT* 
*         ARE OF EQUAL LENGTH.
  
  
          ERRNZ  TEMTL-TABTL *TEMT* AND *TABT* ARE NOT EQUAL
          SPACE  4
          OVERFLOW  OVL 
          OVERLAY (INITIALIZE IQFT FILE.) 
 CFEF     SPACE  4,10 
***       CFEF - CREATE FOT ENTRY.  (FUNCTION 22).
* 
*         THE FAMILY NAME IDENTIFIED IN FET+6 IS ENTERED IN THE FOT 
*         AND THE FAMILY ORDINAL IS RETURNED IN THE LOWER 18 BITS OF
*         FET+6.
  
  
 CFE2     RJM    GFE         RETURN FOT ORDINAL TO CALLER 
          ADN    6
          CWD    FN 
  
          ENTRY  CFE         ENTRY/EXIT 
          RJM    GFE         GET FAMILY NAME
          ADN    6
          CRD    FN 
          LDN    0           ENTER FAMILY NAME IN FOT 
          RJM    GFO
          PJN    CFE1        IF NORMAL RETURN 
          LJM    DPP         ERROR FLAG SET - DROP PP 
  
 CFE1     SHN    -1 
          ZJN    CFE2        IF ENTRY CREATED/FOUND 
          ERROR  FTFE        EC = 14, FOT FULL
          TITLE  INITIALIZE IQFT FILE.
 INQF     SPACE  4,10 
***       INQF - INITIALIZE IQFT FILE. (FUNCTION 5).
* 
*         ALL QUEUED FILES CATALOGED IN THE IQFT FILE ARE RELEASED. 
*         A MESSAGE IS ISSUED TO THE ACCOUNT DAYFILE FOR
*         EACH QUEUED FILE RELEASED.
  
  
 INQ14    ABORT  ERTK        * QFM NO IQFT TRACK AVAILABLE.*
  
          ENTRY  INQ         ENTRY/EXIT 
          RJM    GFE         GET FET ADDRESS
          ADN    7           READ EQUIPMENT FROM FET+7
          CRD    T5 
  
*         CLEAR IQFT FIRST TRACK BYTE IN MST. 
  
          RJM    CMS         CHECK FOR MASS STORAGE DEVICE
          LDC    IIQS+3000S6 INTERLOCK IQFT 
*                            (RETURN ON INACCESSIBLE OR NOT RESERVED) 
          RJM    STB
          ZJP    INQ4        IF IQFT INTERLOCKED
          RJM    SIT         SET IQFT TRACK 
          NJP    INQ3        IF IQFT TRACK EXISTS 
          LDN    ZERL        REQUEST A TRACK FOR THE IQFT 
          CRD    CM 
          LDD    T5 
          STD    CM+1 
          MONITOR  RTCM 
          STD    FA 
          LDD    CM+2        SAVE NEW IQFT TRACK
          STD    T6 
          STM    INQA 
          ZJP    INQ14       IF NO SPACE AVAILABLE
          LDN    SIQS        ENTER FIRST TRACK IN THE MST 
          RJM    STB
          LDC    4S15+SPFS   SET PRESERVED FILE STATUS
          RJM    STB
          LDC    500         CLEAR SYSTEM SECTOR BUFFER 
          STD    T3 
 INQ2     LDN    0
          STM    BFMS+1,T3
          SOD    T3 
          NJN    INQ2        IF NOT BEGINNING OF BUFFER 
          LDD    MA          MOVE NAME TO SYSTEM SECTOR 
          CWM    INQD,ON
          SBN    1
          CRM    FNSS,ON
          SETMS  IO 
          RJM    WSS
          PJP    INQ7        IF NO ERRORS 
          RJM    MSR         CHECK IF THE ERROR IS RECOVERABLE
  
 INQ3     ERROR  FAIE        EC = 2, FILE ALREADY INTERLOCKED 
  
 INQ4     RJM    SIT         SET IQFT FIRST TRACK 
          STM    INQA        SAVE FIRST TRACK OF IQFT 
          STM    RIQA 
          AOM    INQC        FLAG INTERLOCK SET 
  
*         READ IQFT INTO BUFFER.
  
          SETMS  IO 
 INQ5     RJM    RIQ         READ IQFT FILE 
          LDD    T1          GET NUMBER OF PP WORDS READ
          SHN    2
          ADD    T1 
          ADC    QBUF 
          STD    BI 
  
*         PROCESS SECTOR OF IQFT. 
  
 INQ6     LDC    -QFEWL*5    DECREMENT POINTER TO NEXT ENTRY
          RAD    BI 
          ADC    -QBUF
          PJP    INQ10       IF NOT END OF BUFFER 
          LDM    RIQC        CHECK CONTROL BYTES FOR EOI
          ADM    RIQC+1 
          NJN    INQ5        IF EOI NOT READ
  
*         RESET IQFT FILE.
  
 INQ7     LDC    **          SET IQFT FIRST TRACK 
 INQA     EQU    *-1         (IQFT FIRST TRACK) 
          STD    T6 
          STM    BFMS+FTEI
          LDN    FSMS 
          STD    T7 
          RJM    WEI         WRITE EOI
          PJN    INQ8        IF NO WRITE ERRORS 
          RJM    MSR         CHECK IF THE ERROR IS RECOVERABLE
  
 INQ8     ENDMS 
          LDD    MA          SET EOI IN TRT 
          CWD    T5 
          CRD    CM+1 
          LDD    CM+2 
          LPC    3777 
          STD    CM+2 
          MONITOR  DTKM 
 INQC     LDN    0
*         LDN    1           (IQFT INTERLOCKED) 
          ZJN    INQ9        IF IQFT NOT INTERLOCKED
          LDD    T6          CLEAR IQFT TRACK INTERLOCK 
          RJM    CTI
 INQ9     LJM    INQX        RETURN 
  
*         SET FILE NAME IN DAYFILE MESSAGE. 
  
 INQ10    LDI    BI 
          ZJP    INQ6        IF NO FNT
          LDD    BI          WRITE FILE NAME TO MESSAGE BUFFER
          STM    INQB 
          LDD    MA 
          CWM    *,ON        WRITE TO MESSAGE BUFFER
 INQB     EQU    *-1
          SBN    1
          CRD    FN 
  
*         READ SYSTEM SECTOR OF QUEUED FILE.
  
          LDM    5*ENTQ+1,BI SET FIRST TRACK OF QUEUE FILE
          STD    T6 
          LDN    0           DO NOT VERIFY QUEUED FILE NAME 
          RJM    RSS         READ SYSTEM SECTOR 
          ZJN    INQ12       IF NO ERROR ENCOUNTERED
          PJN    INQ11       IF ERROR OTHER THAN READ 
          RJM    MSR         CHECK IF THE ERROR IS RECOVERABLE
  
 INQ11    LDC    ERSE        * QFM SYSTEM SECTOR ERROR.*
          RJM    IFI         ISSUE FILE IGNORED MESSAGE 
          UJN    INQ13       LOOP FOR NEXT QUEUE FILE 
  
 INQ12    ENDMS 
          LDI    BI          VERIFY THE JSN 
          LMM    IOSS 
          NJN    INQ11       IF JSN DOES NOT MATCH
          LDM    1,BI 
          LMM    IOSS+1 
          NJN    INQ11       IF JSN DOES NOT MATCH
          RJM    DQF         DROP QUEUE FILE
 INQ13    LJM    INQ6        LOOP FOR NEXT QUEUE FILE 
  
  
 INQD     VFD    42/0LQUEUES,6/1,6/SYFT,6/0 
          TITLE  INTERLOCK QUEUED FILE. 
 IQF      SPACE  4,10 
***       IQFF - INTERLOCK QUEUED FILE. 
* 
*         THE QUEUED FILE IDENTIFIED IN THE FET AND ATTACHED TO THE 
*         CONTROL POINT IS SET IN THE QFT WITH QUEUE TYPE CHANGED 
*         TO *ERQF*.  THE LOCAL FNT IS RELEASED AND THE FILE NAME 
*         (JOB SEQUENCE NUMBER) IN THE FET IS CLEARED.
  
  
          ENTRY  IQF         ENTRY/EXIT 
          RJM    CFS         CHECK FILE STATUS
          LDN    ZERL 
          CRD    T7 
          LDN    QFTP        SET LIMIT FOR QFT SEARCH 
          CRD    T0 
          LDN    1           SET REQUEST COUNT FOR *SFI*/*UTEM* 
          STD    T1 
  
*         SEARCH QFT FOR ENTRY WITH MS PARAMETERS MATCHING LOCAL FILE.
  
 IQF1     AOD    T7          ADVANCE ORDINAL
          LMD    T2 
          ZJN    IQF2        IF END OF QFT
          SFA    QFT,T7 
          ADN    ENTQ 
          CRD    CN 
          LDD    T6          COMPARE FIRST TRACK
          LMD    CN+1 
          NJN    IQF1        IF NO MATCH
          LDD    T5 
          LMD    CN 
          NJN    IQF1        IF NOT SAME EQUIPMENT
          LDD    MA          WRITE *UTEM* PARAMETER WORD
          CWM    IQFA,ON
          SFA    QFT,T7 
          RJM    SFI         UPDATE QFT ENTRY 
          NJN    IQF1.1      IF UPDATE NOT COMPLETE 
          LJM    IQF3        RELEASE LOCAL FNT ENTRY
  
 IQF1.1   RJM    CIN
          LJM    DPP         ERROR FLAG SET - DROP PP 
  
 IQF2     SETMS  IO 
          LDD    T7          SAVE QFT ORDINAL 
          STD    T2 
          LDN    0
          RJM    RSS
          ZJN    IQF2.2      IF NO ERROR
          PJN    IQF2.1      IF ERROR OTHER THAN READ 
          RJM    MSR         CHECK IF THE ERROR IS RECOVERABLE
  
 IQF2.1   LDN    2           SET QFT ENTRY FLAG 
          STD    T3 
          SFA    QFT,T2 
          RJM    SSE         ISSUE SYSTEM SECTOR ERROR MESSAGE
 IQF2.2   LDM    IOSS+4 
          SCN    77 
          LMN    ERQF        SET QUEUE TYPE IN QFT IMAGE
          STM    IOSS+4 
          LDD    MA          MOVE *JSNQ* TO DIRECT CELLS
          CWM    IOSS,ON
          SBN    1
          CRD    CM+3 
          LDN    QFTE        SET QFT ENTRY LENGTH 
          STD    T7 
          LDC    1S12+PQFT   CREATE QFT ENTRY W/O NEW JSN 
          RJM    CTE
          ZJN    IQF3        IF QFT FULL
          STD    T5          SAVE QFT ADDRESS 
          SHN    -14
          STD    T4 
          LDC    FLSS        GET ADDRESS OF SYSTEM SECTOR FILE LENGTH 
          RJM    RFI         SET FILE SIZE INDEX IN QFT ENTRY 
          LDD    T4          GET QFT ADDRESS
          SHN    14 
          LMD    T5 
          CWM    IOSS,T7
 IQF3     RJM    RFE         RELEASE LOCAL FNT ENTRY
          LJM    IQFX        RETURN 
  
 IQFA     VFD    1/0,5/JSNQ,6/6,6/6,42/ERQF 
          TITLE  RELEASE LIST.
 RLLF     SPACE  4,10 
***       RLLF - RELEASE LIST. (FUNCTION 7).
* 
*         THE LIST OF QUEUE FILES STARTING AT OUT WILL BE 
*         RELEASED FROM THE SYSTEM. THE FUNCTION WILL TERMINATE WHEN
*         IN = OUT, OR A ZERO ENTRY IS ENCOUNTERED IN THE BUFFER. 
  
  
          ENTRY  RLL         ENTRY/EXIT 
 RLL1     RJM    RQE         READ NEXT IQFT ENTRY FROM LIST 
          MJN    RLLX        IF BUFFER EMPTY
          LDD    FN 
          ZJN    RLLX        IF NO ENTRY
          RJM    DQF         DROP QUEUE FILE
          LDN    OT          UPDATE OUT POINTER 
          RJM    UOP
          UJN    RLL1 
          TITLE  SUBROUTINES. 
 DQF      SPACE  4,10 
**        DQF - DROP QUEUE FILE.
* 
*         ENTRY  (T5) = EST ORDINAL.
*                (T6) = FIRST TRACK.
* 
*         USES   FS - FS+1. 
* 
*         CALLS  *0DQ*. 
* 
*         MACROS EXECUTE. 
  
  
 DQF      SUBR               ENTRY/EXIT 
          LDD    T5          SET EQUIPMENT
          STD    FS 
          LDD    T6          SET FIRST TRACK
          STD    FS+1 
          LDN    2           SELECT DROP OF QUEUE FILE NOT IN QFT 
          STM    OZDQ-1 
          EXECUTE  0DQ,OZDQ 
          PJN    DQFX        IF FILE DROPPED
          RJM    MSR         REPORT ERROR 
          UJN    DQFX        RETURN 
 RIQ      SPACE  4,17 
**        RIQ - READ IQFT FILE. 
* 
*         ENTRY  (T5) = EST ORDINAL.
*                (RIQA) = IQFT CURRENT TRACK. 
*                (RIQB) = IQFT CURRENT SECTOR.
*                MASS STORAGE DRIVER SET. 
* 
*         EXIT   (RIQA) = IQFT CURRENT TRACK. 
*                (RIQB) = IQFT CURRENT SECTOR.
*                (T1) = NUMBER OF CM WORDS READ.
*                EXIT TO *MSR* IF A DISK ERROR IS ENCOUNTERED.
* 
*         USES   T6, T7.
* 
*         CALLS  RNS. 
* 
*         MACROS ENDMS. 
  
  
 RIQ      SUBR               ENTRY/EXIT 
          LDC    *           SET IQFT CURRENT TRACK 
 RIQA     EQU    *-1         (IQFT CURRENT TRACK) 
          STD    T6 
          LDC    FSMS        SET IQFT CURRENT SECTOR
 RIQB     EQU    *-1         (IQFT CURRENT SECTOR)
          STD    T7 
          SETMS  IO 
          LDC    RIQC 
          RJM    RNS         READ NEXT SECTOR 
          LDD    T6          SAVE IQFT CURRENT TRACK
          STM    RIQA 
          LDD    T7          SAVE IQFT CURRENT SECTOR 
          STM    RIQB 
          ENDMS 
          UJN    RIQX 
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMPRNS 
          SPACE  4,4
*         BUFFER FOR IQFT.
  
 RIQC     CON    0,0         CONTROL BYTES
 QBUF     EQU    *           IQFT BUFFER
          SPACE  4,10 
 OZDQ     EQU    *+500+1     LOAD ADDRESS FOR *0DQ* 
          ERRNG  BFMS-OZDQ-ZDQL 
  
          OVERFLOW  OVL 
          OVERLAY  (REQUEUE FILES.) 
 CQFF     SPACE  4,10 
***       CQFF - CREATE QUEUE FILE. (FUNCTION 23).
* 
*         THE QUEUE FILE SYSTEM SECTOR IN THE FET BUFFER CONTAINS 
*         SELECTION CRITERIA USED IN CREATING A LOCAL FILE.  IF THE 
*         *GQSS* FIELD IS ZERO, THE FILE IS ASSIGNED A NEW JOB
*         SEQUENCE NUMBER AND THEN ENTERED INTO THE QFT.  IF
*         BIT 0 OF THE *GQSS* FIELD IS SET, A NEW JOB SEQUENCE
*         NUMBER WILL NOT BE ASSIGNED.  IF BIT 1 IS SET, THE FILE 
*         WILL NOT BE ENTERED INTO THE QFT. 
  
  
          ENTRY  CQF         ENTRY/EXIT 
          LDD    HN 
          STD    T3 
          LDC    BFMS+2      GET QUEUE FILE SYSTEM SECTOR 
          RJM    RCB
          MJN    CQFX        IF BUFFER EMPTY
          LDD    MA 
          CWM    IOSS+5*JSNQ,ON 
          SBN    1
          CRD    FN 
          LDN    0
          STD    FN+2 
          STD    FN+3 
          LDN    NEEQ        ASSIGN NULL EQUIPMENT
          STD    FS 
          LDN    4           SELECT RETURN ON LOCAL FILE LIMIT
          STM    OVL0-1 
          EXECUTE  0BF,OVL0  CREATE LOCAL FNT ENTRY 
          UJN    CQF1        CHECK RETURN STATUS
  
*         ABORT IF FILE ALREADY EXISTS (ADVANCE EXIT FROM *0BF*). 
  
          LDN    0
          STD    FA 
          ABORT  ERFA        * QFM FILE ALREADY ATTACHED.*
  
 CQF1     ZJN    CQF2        IF FNT ENTRY CREATED 
          ERROR  FTHE        EC = 4, FNT FULL 
  
 CQF2     LDM    EQSS        SET EQUIPMENT
          STD    T5 
          ZJN    CQF5        IF NONE SPECIFIED
          LMK    NEEQ 
          ZJN    CQF4        IF ANY EQUIPMENT 
          RJM    CEQ
          ZJN    CQF3        IF SPECIFIED EQUIPMENT NOT MASS STORAGE
          LDN    0
          STD    T6 
          LDD    CN 
          LPC    0102 
          ZJN    CQF6.1      IF EQUIPMENT AVAILABLE AND NOT DOWN/OFF
 CQF3     RJM    RFE         RELEASE LOCAL FNT ENTRY
          ABORT  EREQ        * QFM INCORRECT EQUIPMENT.*
  
 CQF4     STD    T5 
 CQF5     LDM    IOSS+5*JSNQ+4  CHECK QUEUE TYPE
          SHN    -11
          LMN    INQT 
          ZJN    CQF6        IF INPUT QUEUE 
          LDM    RCSS        GET REPEAT COUNT 
          STM    IOSS+INSQ*5+4  STORE IN QFT
          LDN    OUTS&INPS
 CQF6     LMN    INPS        SET DEVICE SELECTION 
          STD    T6 
          UJN    CQF7        ASSIGN MASS STORAGE SPACE
  
*         CHECK IF FILE ACCESS LEVEL VALID FOR SPECIFIED EQUIPMENT. 
  
 CQF6.1   LDN    ZERL 
          CRD    CM 
          LDM    IOSS+INSQ*5+3  GET FILE ACCESS LEVEL 
          LPN    70 
          SHN    -3 
          STD    CM+4 
          LDD    T5 
          STD    CM+2 
          LDN    VAES        VALIDATE ACCESS LEVEL FOR EQUIPMENT
          STD    CM+1 
          MONITOR  VSAM 
          LDD    CM+1 
          NJP    CQF7.1      IF ACCESS LEVEL NOT VALID
  
*         ASSIGN MASS STORAGE SPACE.
  
 CQF7     LDN    ZERL 
          CRD    CM 
          LDD    T6          SET SELECTION CRITERIA 
          STD    CM+2 
          LDM    IOSS+INSQ*5+3  SET FILE ACCESS LEVEL 
          LPN    70 
          SHN    3
          ADC    4000        SET ACCESS LEVEL FLAG
          STD    CM+3 
          LDD    T5          REQUEST TRACK
          STD    CM+1 
          MONITOR  RTCM 
          LDD    CM+4 
          NJP    CQF8        IF TRACK ASSIGNED
          LDD    CM+3 
          LMN    2
          ZJN    CQF7.1      IF INCORRECT ACCESS LEVEL
          LDD    CP 
          ADN    MS2W 
          CWM    CQFA,TR     *TRACK LIMIT.* 
          DELAY 
          PAUSE              PAUSE AND CHECK ERROR FLAG 
          LDD    CM+1 
          ZJP    CQF7        IF NO ERROR FLAG 
          RJM    RFE         RELEASE LOCAL FNT ENTRY
          LJM    DPP         DROP PP
  
 CQF7.1   RJM    RFE         RELEASE LOCAL FNT ENTRY
          ERROR  NSEE        EC=17, INCORRECT ACCESS LEVEL
  
 CQF8     STD    FS+1        SET FIRST TRACK
          STD    FS+2 
          STD    T6 
          LDC    100*5       CLEAR EOI BUFFER 
          STD    CA 
 CQF9     LDN    0
          STM    OVL0-1,CA
          SOD    CA 
          NJN    CQF9        IF NOT DONE
          LDD    CM+1        SET EQUIPMENT
          STD    FS 
          STD    T5 
          LDN    FSMS        SET FIRST SECTOR 
          STD    FS+3 
          LDN    14          SET FILE BUSY
          STD    FS+4 
          SETMS  IO 
          NFA    FA,R        STORE FST INFORMATION
          ADN    FSTL 
          CWD    FS 
          ADN    FUTL-FSTL   UPDATE ACCESS LEVEL IN FNT ENTRY 
          CRD    FN 
          LDM    IOSS+INSQ*5+3
          SHN    -3 
          LPN    7
          STD    T1 
          LDD    FN+2 
          SCN    7
          LMD    T1 
          STD    FN+2 
          NFA    FA,R 
          ADN    FUTL 
          CWD    FN 
          LDD    FA          PRESERVE FNT ORDINAL 
          STD    CA 
          LDN    0           PREVENT UPDATE OF *FNSS* 
          STD    FA 
          RJM    WSS         WRITE SYSTEM SECTOR
          SHN    -21
          STD    T1 
          LDD    CA          RESTORE FNT ORDINAL
          STD    FA 
          LDD    T1 
          NJN    CQF9.0      IF SYSTEM SECTOR WRITE ERROR 
          LDC    OVL0 
          RJM    WEI         WRITE EOI SECTOR 
          PJN    CQF9.1      IF NO WRITE ERRORS 
 CQF9.0   RJM    MSR         REPORT ERROR (DOES NOT RETURN) 
  
 CQF9.1   ENDMS 
          LDD    T5          SET EOI IN TRT 
          STD    CM+1 
          LDD    T6 
          LPC    3777 
          STD    CM+2 
          LDD    T7 
          STD    CM+3 
          MONITOR  DTKM 
          LDC    SCNI+5      DO NOT CLEAR ASSIGNED FLAG 
          STM    RFSA 
          LDM    GQSS 
          SHN    21-1 
          MJN    CQF10       IF FILE NOT TO BE QUEUED 
          RJM    SFO         SET FAMILY ORDINALS
          LDD    CP          FETCH EJT ORDINAL
          ADN    TFSW 
          CRD    CM 
          LDD    CM          SET QFT ENTRY ASSIGNED 
          STM    IOSS+5*ENTQ+4
          LDN    0
          STM    IOSS+5*ENTQ+3
          LDM    GQSS 
          LPN    1
          RJM    CQE         CREATE QFT ENTRY 
          NFA    FA,R 
          CRD    FN 
          LDC    QFFT*100-LOFT*100  CHANGE FILE TYPE
          RAD    FN+4 
          NFA    FA,R        UPDATE LOCAL FNT ENTRY 
          CWD    FN 
          RJM    RFS         RELEASE FILE TO SYSTEM 
          UJN    CQF11       CLEAR INTERLOCKS 
  
 CQF10    LDD    MA          SET JSN
          CWM    FNSS,ON
          SBN    1
          CRD    FN 
          LDN    0           UPDATE SYSTEM SECTOR 
          RJM    USS
 CQF11    RJM    CIN         CLEAR INTERLOCKS 
          LJM    CQFX        RETURN 
  
 CQFA     DATA   C*TRACK LIMIT.*
 RQLF     SPACE  4,10 
***       RQLF - REQUEUE LIST. (FUNCTION 6).
* 
*         THE LIST OF QUEUE FILES STARTING AT OUT IS REENTERED
*         IN THE QFT AFTER BEING ASSIGNED NEW JOB SEQUENCE
*         NUMBERS.  THE FUNCTION WILL TERMINATE WHEN OUT = IN,
*         A ZERO ENTRY HAS BEEN ENCOUNTERED, OR THE FNT IS FULL.
*         ON RETURN, FET+6 CONTAINS THE NUMBER OF FILES IGNORED.
  
  
 RQL5     LDN    ZERL        RETURN NUMBER OF FILES IGNORED 
          CRD    CN 
          LDC    0
 RQLA     EQU    *-1
          STD    CN+4 
          RJM    GFE
          ADN    6
          CWD    CN 
  
          ENTRY  RQL         ENTRY/EXIT 
 RQL1     RJM    RQE         READ NEXT IQFT ENTRY FROM LIST 
          MJN    RQL5        IF BUFFER EMPTY
          LDD    FN 
          ZJN    RQL5        IF NO FNT
          RJM    RQS         READ SYSTEM SECTOR 
          ZJN    RQL2        IF NO ERROR
          RJM    IFI         ISSUE FILE IGNORED MESSAGE 
          AOM    RQLA        ADVANCE FILE IGNORED COUNT 
          UJN    RQL1 
  
 RQL2     ENDMS 
          RJM    SFO         SET FAMILY ORDINALS
          LDN    0
          RJM    CQE         CREATE QFT ENTRY 
          LDM    IOSS+5*ENTQ+3
          ADM    IOSS+5*ENTQ+4
          ZJN    RQL3        IF SPECIAL PROCESSING PRIORITY 
          LDC    RTCL 
          CRD    CM 
          LDD    CM          SET NEW ENTRY TIME 
          STM    IOSS+5*ENTQ+3
          LDD    CM+1 
          STM    IOSS+5*ENTQ+4
 RQL3     RJM    RFS         RELEASE FILE TO SYSTEM 
          LDN    OT          UPDATE OUT POINTER 
          RJM    UOP
          LJM    RQL1        LOOP FOR NEXT ENTRY
          TITLE  REQUEUE INACTIVE QUEUED FILE.
***       RIQF - REQUEUE INACTIVE QUEUED FILE. (FUNCTION 14)
* 
*         THE NEXT IQFT ENTRY WILL BE READ FROM THE BUFFER. 
*         THE FILE ASSOCIATED WITH THE ENTRY WILL BE VALIDATED BY 
*         READING ITS SYSTEM SECTOR.  THE FILE WILL BE PRESERVED
*         AND THE LOCAL FNT ENTRY RELEASED. 
  
  
          ENTRY  RIQ         ENTRY/EXIT 
          RJM    RQE         READ IQFT ENTRY FROM BUFFER
          MJN    RIQX        IF BUFFER EMPTY
          RJM    SAF         SEARCH FOR ASSIGNED FILE 
          NJN    RIQ1        IF FILE FOUND
          ERROR  FNFE        EC = 1, NO FILE FOUND
  
 RIQ1     STD    BI          SAVE FNT OFFSET
          RJM    SFB         SET FILE BUSY
          ZJN    RIQ2        IF FILE SET BUSY 
          LDN    0
          STD    FA 
          ABORT  ERIO        * QFM I/O SEQUENCE ERROR.* 
  
 RIQ2     LDD    FS          SET EQUIPMENT
          STD    T5 
          LDD    FS+1        SET FIRST TRACK
          STD    T6 
          RJM    RQS         READ SYSTEM SECTOR 
          ZJN    RIQ3        IF NO ERROR ENCOUNTERED
          ERROR  INSE        EC = 5, INCORRECT SYSTEM SECTOR
  
 RIQ3     STD    FA          CLEAR FNT OFFSET 
          RJM    SEI         SEARCH FOR EOI 
          LDD    T2          SET FILE LENGTH
          STM    FLSS 
          LDD    T3 
          SBN    1
          STM    FLSS+1 
          PJN    RIQ4        IF NO UNDERFLOW
          AOM    FLSS+1 
          SOM    FLSS 
 RIQ4     LDD    FS+1        RESET FIRST TRACK
          STD    T6 
          STM    IQFB+5*ENTQ+1
          LDD    T5          SET EQUIPMENT
          STM    IQFB+5*ENTQ
          LDN    0           UPDATE SYSTEM SECTOR 
          RJM    USS
          LDD    BI          RESET FNT ADDRESS
          STD    FA 
          LDN    QFEWL       COPY IQFT ENTRY BACK TO BUFFER 
          STD    T1 
          LDC    IQFB 
          RJM    WBB
          LDC    4S15+SPFS   SET PRESERVED FILE STATUS
          RJM    STB
          RJM    RFE         RELEASE LOCAL FNT ENTRY
          LJM    RIQX        RETURN 
          TITLE  SUBROUTINES. 
 CQE      SPACE  4,15 
**        CQE - CREATE QFT ENTRY. 
* 
*         ENTRY  (BFMS) = QUEUE FILE SYSTEM SECTOR. 
*                (A) = 0, ASSIGN A NEW JSN TO THE QFT ENTRY.
*                    = 1, DO NOT ASSIGN A NEW JSN TO THE QFT ENTRY. 
* 
*         EXIT   (QA) = QFT ORDINAL.
* 
*         USES   CM - CM+7, FN - FN+4.
* 
*         CALLS  CTE, RFI, USS. 
* 
*         MACROS ERROR. 
  
  
 CQE      SUBR               ENTRY/EXIT 
          STD    CM 
          LDD    MA 
          CWM    IOSS,ON
          SBN    1           MOVE *JSNQ* TO DIRECT CELLS
          CRD    CM+3 
          LDD    CM+7        SET INTERLOCK/FILE ASSIGNED/CREATION FLAGS 
          SCN    77 
          LMN    7
          STD    CM+7 
          LDD    CM 
          SHN    14 
          LMN    PQFT        CREATE QFT ENTRY 
          RJM    CTE
          NJN    CQE1        IF ENTRY CREATED 
          ERROR  FTHE        EC = 4, QFT FULL 
  
 CQE1     CRD    FN          SET NEW JSN
          CRM    IOSS,ON
          LDC    FLSS        GET ADDRESS OF SYSTEM SECTOR FILE LENGTH 
          RJM    RFI         SET FILE SIZE INDEX IN QFT ENTRY 
          LDD    CM+1        SET QFT ORDINAL
          STD    QA 
          LDN    2           UPDATE SYSTEM SECTOR 
          RJM    USS
          UJP    CQEX        RETURN 
 QRE      SPACE  4,10 
***       QRE - READ EOI SECTOR. (FUNCTION 24). 
* 
*         THE EOI SECTOR FOR FILE LFN IS READ INTO THE DEFINED
*         BUFFER.  100 WORDS ARE TRANSFERRED.  THE IN POINTER 
*         IS MOVED ACCORDINGLY. 
  
  
          ENTRY  QRE         ENTRY/EXIT 
          RJM    CIB         CHECK INPUT BUFFER 
          SBD    HN 
          PJN    QRE1        IF ENOUGH SPACE
          ABORT  ERBS        * QFM BUFFER TOO SMALL.* 
  
 QRE1     RJM    CFS         CHECK FILE STATUS
          RJM    SEI         SKIP TO EOI
          SETMS  IO          READ SECTOR
          LDC    OVL0 
          RJM    RDS
          PJN    QRE2        IF NO ERROR
          RJM    MSR         REPORT ERROR 
  
 QRE2     ENDMS 
  
*         TRANSFER EOI SECTOR TO FET BUFFER 
  
          LDD    IN          SET IN POINTER FOR WRITE 
          STD    CA 
          LDD    IN+1 
          STD    CA+1 
          LDD    HN          COPY EOI SECTOR TO BUFFER
          STD    T1 
          LDC    OVL0+2 
          RJM    WBB
          LDK    ZERL        UPDATE IN POINTER
          CRD    CM 
          LDD    CA 
          STD    CM+3 
          LDD    CA+1 
          STD    CM+4 
          RJM    GFE         WRITE UPDATED IN POINTER BACK
          ADN    2
          CWD    CM 
          RJM    CIN         CLEAR INTERLOCKS 
          LJM    QREX        RETURN 
 QWE      SPACE  4,15 
***       QWE - WRITE EOI SECTOR. (FUNCTION 25).
* 
*         THE EOI SECTOR FOR FILE LFN IS READ FROM THE DEFINED
*         BUFFER.  100 WORDS ARE TRANSFERRED. 
  
  
          ENTRY  QWE         ENTRY/EXIT 
          LDD    HN          READ BUFFER
          STD    T3 
          LDC    OVL0+2 
          RJM    RCB
          RJM    CFS         CHECK FILE STATUS
          RJM    SEI         SKIP TO EOI
          SETMS  IO 
          LDC    OVL0 
          RJM    WEI
          PJN    QWE1        IF NO WRITE ERRORS 
          RJM    MSR         CHECK IF THE ERROR IS RECOVERABLE
  
 QWE1     ENDMS 
          NFA    FA,R        SET WRITE LOCKOUT BIT
          CRD    CN 
          LDD    CN+3 
          SCN    1
          LMN    1
          STD    CN+3 
          NFA    FA,R 
          CWD    CN 
          RJM    CIN         CLEAR INTERLOCKS 
          LJM    QWEX        RETURN 
 RFS      SPACE  4,15 
**        RFS - RELEASE FILE TO SYSTEM. 
* 
*         ENTRY  (QA) = QFT ORDINAL.
*                (IOSS) = QFT ENTRY.
* 
*         EXIT   (A) = (QA) = 0.
* 
*         USES   T1.
* 
*         CALLS  *0QM*. 
* 
*         MACROS EXECUTE, SFA.
  
  
 RFS      SUBR               ENTRY/EXIT 
          LDM    IOSS+4      CLEAR INTERLOCK/FILE ASSIGNED/CREATION 
          SCN    7
*         SCN    5           (DO NOT CLEAR ASSIGNED FLAG) 
 RFSA     EQU    *-1         (SET BY *CQF*) 
          STM    IOSS+4 
          LDN    QFTE-1 
          STD    T1 
          SFA    QFT,QA      STORE QFT ENTRY
          ADN    1
          CWM    IOSS+5,T1
          SBN    QFTE 
          CWM    IOSS,ON
          LDM    RFSA 
          SHN    21-1 
          PJN    RFS1        IF FILE NOT REENTERED INTO THE QUEUE 
          LDC    2RAR        SET *ARRQ* MESSAGE IDENTIFIER
          STM    OVL0-2 
          LDC    2RRQ 
          STM    OVL0-1 
          EXECUTE  0QM,OVL0  ISSUE ACCOUNTING MESSAGE 
 RFS1     LDN    0           CLEAR QFT ORDINAL
          STD    QA 
          LJM    RFSX        RETURN 
 SFO      SPACE  4,10 
**        SFO - SET FAMILY ORDINALS.
* 
*         ENTRY  (BFMS) = QUEUE FILE SYSTEM SECTOR. 
* 
*         USES   SC, FN - FN+4. 
* 
*         CALLS  GFO. 
* 
*         MACROS ABORT. 
  
  
 SFO2     LDM    TSSA,SC     SET SYSTEM SECTOR ADDRESS OF ORDINAL 
          STD    T0 
          LDI    T0          CHANGE FAMILY ORDINAL
          LPN    77 
          SHN    14 
          LMD    FN+4 
          SHN    6
          STI    T0 
 SFO3     SOD    SC 
          PJN    SFO1        IF ANOTHER FAMILY NAME TO CHECK
  
 SFO      SUBR               ENTRY/EXIT 
          LDN    TSSAL-1
          STD    SC 
 SFO1     LDM    TSSA,SC     SET ADDRESS OF FAMILY NAME 
          STM    SFOA 
          LDD    MA          MOVE NAME TO DIRECT CELLS
          CWM    0,ON 
 SFOA     EQU    *-1
          SBN    1
          CRD    FN 
          SOD    SC          DECREMENT TABLE INDEX
          LDD    FN 
          ZJN    SFO3        IF NULL FAMILY 
          LDN    0           ENTER FAMILY NAME IN FOT 
          RJM    GFO
 SFO4     ZJN    SFO2        IF FAMILY DEFINED IN FOT 
          SBN    1
          ZJN    SFO4        IF FAMILY ADDED TO FOT 
          ABORT  ERFF        * QFM - FOT FULL.* 
  
  
 TSSA     BSS    0           TABLE OF SYSTEM SECTOR ADDRESSES 
          CON    IOSS+5*JSNQ+2,FOSS 
          CON    IOSS+5*SCLQ+1,FDSS 
 TSSAL    EQU    *-TSSA      LENGTH OF TABLE
 USS      SPACE  4,25 
**        USS - UPDATE SYSTEM SECTOR. 
* 
*         ENTRY  (A) = QUEUE FILE ACTIVITY STATUS.
*                (T5) = EST ORDINAL.
*                (T6) = FIRST TRACK.
*                (QA) = QFT ORDINAL.
*                (FN - FN+1) = FILE NAME (SEQUENCE NUMBER). 
*                (BFMS) = QUEUE FILE SYSTEM SECTOR. 
* 
*         EXIT   SYSTEM SECTOR REWRITTEN. 
* 
*         ERROR  THE JOB IS ROLLED OUT IF A NON-SUBSYSTEM JOB 
*                ENCOUNTERS A RECOVERABLE I/O ERROR.  IF A
*                NON-RECOVERABLE ERROR IS ENCOUNTERED AND/OR THE
*                CALLER IS A SUBSYSTEM, THEN ERROR CODE = *RMSE* (6)
*                IS RETURNED. 
* 
*         USES   T7, CM - CM+4. 
* 
*         CALLS  MSR, WSS.
* 
*         MACROS ENDMS, SETMS.
  
  
 USS      SUBR               ENTRY/EXIT 
          STD    T7 
          LDD    QA          SET QFT ORDINAL
          STM    GQSS 
          LDD    T5          SET EQUIPMENT IN QFT IMAGE 
          STM    IOSS+5*ENTQ
          LDD    T6          SET FIRST TRACK
          STM    IOSS+5*ENTQ+1
          LDC    MMFL        FETCH MACHINE ID 
          CRD    CM 
          LDD    CM          SET MACHINE ID 
          STM    RMSS 
          LDM    FGSS        SET FILE ACTIVITY STATUS 
          SCN    2
          LMD    T7 
          STM    FGSS 
          LDD    FN          SET FILE NAME
          STM    FNSS 
          LDD    FN+1 
          STM    FNSS+1 
          LDD    FA          SAVE FNT POINTER 
          STM    USSA 
          LDN    0           PREVENT *WSS* UPDATE OF *FNSS* 
          STD    FA 
          SETMS  IO,RW
          RJM    WSS         REWRITE SYSTEM SECTOR
          PJN    USS1        IF NO WRITE ERRORS 
          LDM    USSA        RESET FNT POINTER
          STD    FA 
          RJM    MSR         CHECK IF THE ERROR IS RECOVERABLE
  
 USS1     ENDMS 
          LDC    **          RESET FNT POINTER
 USSA     EQU    *-1
          STD    FA 
          LJM    USSX        RETURN 
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMPCIB 
          QUAL   WEI         QUALIFY *WEI*
 WEI$     EQU    0           SELECT CALLER DEFINED BUFFER 
*CALL     COMPWEI 
          QUAL   *
 WEI      EQU    /WEI/WEI 
          SPACE  4,10 
 OVL0     EQU    *+5
          ERRNG  EPFW-OVL0-ZBFL 
          ERRNG  BFMS-OVL0-ZQML  OVERFLOW INTO *0QM*
          OVERFLOW  OVL 
          OVERLAY (DEQUEUE/ATTACH PROCESSORS.)
 DEQF     SPACE  4
***       DEQF - DEQUEUE LIST. (FUNCTION 10). 
* 
*         THE SYSTEM SECTORS OF THE FILES ASSOCIATED WITH THE 
*         IQFT ENTRIES STARTING AT OUT WILL BE INTEROGATED
*         WHEN A FILE IS FOUND THAT MEETS THE DATE, FAMILY NAME 
*         AND FILE SIZE CRITERIA PASSED THROUGH THE FET, ITS IQFT 
*         ENTRY WILL BE UPDATED. WHEN A FILE DOES NOT MEET THE
*         SELECTION CRITERIA, THE FIRST WORD OF THE IQFT ENTRY
*         WILL BE ZEROED. THE FUNCTION TERMINATES WHEN ALL ENTRIES
*         IN THE BUFFER HAVE BEEN PROCESSED. THE BUFFER POINTERS
*         WILL NOT BE CHANGED.
  
  
          ENTRY  DEQ         ENTRY/EXIT 
 DEQ1     RJM    AQC         ATTACH QUEUED FILE TO CONTROL POINT
          MJN    DEQX        IF NO MORE FILES 
          NJN    DEQ2        IF NO FILE ASSIGNED TO CONTROL POINT 
          RJM    VFE         VALIDATE FILE SELECTION
          ZJN    DEQ3        IF FILE TO BE PROCESSED
          RJM    RFQ         RETURN FILE TO QUEUE 
 DEQ2     LDN    ZERL        CLEAR FNT ENTRY IN BUFFER
          CRD    CM 
          LDD    CA 
          SHN    6
          ADD    RA 
          SHN    6
          ADD    CA+1 
          CWD    CM 
          UJN    DEQ1 
  
*         COMPLETE IQFT ENTRY IN FET BUFFER.
  
 DEQ3     RJM    VEI         VERIFY BOI/EOI 
          SETMS  IO,RW
          LDM    FGSS        SET INACTIVE QUEUE FILE STATUS 
          SCN    2
          STM    FGSS 
          LDD    FA          SAVE FNT POINTER 
          STM    DEQA 
          LDN    0           PREVENT *WSS* UPDATE OF *FNSS* 
          STD    FA 
          RJM    WSS         REWRITE SYSTEM SECTOR
          PJN    DEQ4        IF NO WRITE ERRORS 
          LDM    DEQA        RESET FNT POINTER
          STD    FA 
          RJM    MSR         CHECK IF THE ERROR IS RECOVERABLE
  
 DEQ4     ENDMS 
          LDC    ** 
 DEQA     EQU    *-1
          STD    FA 
          RJM    UQT         UPDATE IQFT ENTRY
          RJM    RIE         RELEASE QFT ENTRY
          RJM    RFE         RELEASE LOCAL FNT ENTRY
          LJM    DEQ1        PROCESS NEXT FILE
          TITLE  ATTACH QUEUE FILE. 
 AQF      SPACE  4
***       AQFF - ATTACH QUEUE FILE. (FUNCTION 11).
* 
*         THE FILES ASSOCIATED WITH THE IQFT ENTRIES STARTING AT OUT
*         WILL BE INTERROGATED UNTIL A FILE IS FOUND THAT SATISFIES 
*         THE DATE, FILE SIZE, AND FAMILY NAME CRITERIA PASSED THROUGH
*         THE FET. THIS FILE WILL BE ASSIGNED TO THE CONTROL POINT AND
*         ITS IQFT ENTRY WILL BE UPDATED. THE OUT POINTER WILL BE 
*         ADJUSTED TO THE FIRST WORD OF THIS IQFT ENTRY.
  
  
 AQF6     LDN    OT          UPDATE OUT POINTER 
          RJM    UOP
  
          ENTRY  AQF         ENTRY/EXIT 
 AQF2     RJM    AQC         ATTACH QUEUED FILE TO CONTROL POINT
          MJN    AQF6        IF NO MORE FILES 
          NJN    AQF2        IF NO FILE ASSIGNED
          RJM    VFE         VERIFY FILE ENTRY
          ZJN    AQF3        IF FILE TO BE PROCESSED
          RJM    RFQ         RETURN FILE TO QUEUE 
          UJN    AQF2        PROCESS NEXT FILE
  
 AQF3     RJM    VEI         VERIFY BOI/EOI 
          LDN    CA          UPDATE OUT POINTER 
          RJM    UOP
          RJM    UQT         UPDATE IQFT ENTRY
          RJM    CIN         CLEAR INTERLOCKS 
          LJM    AQFX        RETURN 
          TITLE  ATTACH INACTIVE QUEUED FILE. 
 AIQF     SPACE  4,10 
***       AIQF - ATTACH INACTIVE QUEUED FILE. (FUNCTION 13) 
* 
*         THE INACTIVE QUEUED FILE ASSOCIATED WITH THE NEXT IQFT
*         ENTRY IN THE BUFFER WILL BE ATTACHED TO THE CONTROL POINT.
  
  
          ENTRY  AIQ         ENTRY/EXIT 
          RJM    RQE         READ IQFT ENTRY
          MJN    AIQX        IF BUFFER EMPTY
          RJM    RQS         READ SYSTEM SECTOR 
          ZJN    AIQ1        IF NO ERROR ENCOUNTERED
          ERROR  INSE        EC = 5, INCORRECT SYSTEM SECTOR
  
 AIQ1     ENDMS 
          LDD    T5          SAVE EST ORDINAL 
          STD    SC 
          LDN    NEEQ        ASSIGN NULL EQUIPMENT
          STD    FS 
          LDN    4           SELECT RETURN ON LOCAL FILE LIMIT
          STM    OVL0-1 
          EXECUTE  0BF,OVL0 
          UJN    AIQ2        NO DUPLICATE FILE NAME 
  
*         PROCESS ADVANCE EXIT FROM *0BF* IF FILE ALREADY EXISTS. 
  
          LDN    0
          STD    FA 
          ERROR  DFNE        EC = 16, DUPLICATE FILE NAME 
  
 AIQ2     ZJN    AIQ3        IF LOCAL FNT ENTRY CREATED 
          ERROR  FTHE        EC = 4, FNT FULL 
  
*         BUILD FNT/FST ENTRY.
  
 AIQ3     LDN    5           SET FILE NOT BUSY
          STD    FS+4 
          LDD    SC          SET EQUIPMENT
          STD    FS 
          LDM    FTSS        SET FIRST TRACK
          STD    FS+1 
          STD    FS+2        REWIND THE FILE
          LDN    FSMS 
          STD    FS+3 
          NFA    FA,R 
          CWD    FN 
          ADN    FSTL 
          CWD    FS 
          ADN    FUTL-FSTL   UPDATE ACCESS LEVEL IN FNT ENTRY 
          CRD    CM 
          LDM    IQFB+INSQ*5+3
          SHN    -3 
          LPN    7
          STD    T1 
          LDD    CM+2 
          SCN    7
          LMD    T1 
          STD    CM+2 
          NFA    FA,R 
          ADN    FUTL 
          CWD    CM 
          LJM    AIQX        RETURN 
 AQC      TITLE  SUBROUTINES. 
**        AQC - ATTACH QUEUED FILE TO CONTROL POINT.
* 
*         ENTRY  (OT - OT+1) = OUT POINTER. 
* 
*         EXIT   (A) = 0 IF QUEUED FILE ASSIGNED TO CONTROL POINT.
*                (A) .LT. 0, IF NO MORE ENTRIES IN BUFFER.
*                (A) .GT. 0, IF FILE NOT FOUND. 
*                (A) = 0, IF FILE ASSIGNED TO CONTROL POINT.
*                (FA) = FNT ADDRESS (OFFSET INTO NFL).
*                (QA) = QFT ORDINAL.
*                (T5) = EST ORDINAL.
*                (T6) = FIRST TRACK.
*                (CA - CA+1) = OUT POINTER TO CURRENT BUFFER ENTRY. 
*                (FN - FN+4) = LOCAL FNT ENTRY. 
*                (FS - FS+4) = LOCAL FST ENTRY. 
* 
*         USES   T3, CM - CM+4. 
* 
*         CALLS  CCE, COB, RBB, RFQ, *0BF*. 
* 
*         MACROS MONITOR, SFA.
  
  
 AQC      SUBR               ENTRY/EXIT 
          RJM    RQE         READ IQFT ENTRY FROM BUFFER
          MJN    AQCX        IF BUFFER EMPTY
  
*         CHECK QFT ORDINAL.
  
          LDN    QFTP        FETCH QFT POINTER
          CRD    CM 
          LDM    IQFB+5*QFEWL-1 
          ZJN    AQC1        IF INCORRECT ORDINAL 
          SBD    CM+2 
          MJN    AQC2        IF VALID ORDINAL 
 AQC1     ABORT  ERIQ        * QFM INCORRECT QFT ORDINAL.*
  
 AQC2     ADD    CM+2        SAVE QFT ORDINAL 
          STD    QA 
          LDD    CP          FETCH EJT ORDINAL
          ADN    TFSW 
          CRD    CM 
          LDD    CM          SET ORDINAL IN *UTEM* PARAMETER BLOCK
          STM    AQCA+5*2+4 
          LDD    MA          STORE PARAMETER BLOCK
          CWM    AQCA,TR
          LDN    1S5+3
          STD    CM+1 
          SFA    QFT,QA      SET ABSOLUTE ADDRESS OF QFT ENTRY
          STD    CM+4 
          SHN    -14
          STD    CM+3 
          MONITOR  UTEM      ATTACH QUEUED FILE 
          LDD    CM+1 
          NJN    AQC3        IF REQUEST REJECTED
          LDN    2
          STD    T3 
          LDD    MA          SAVE ORIGINAL QFT ENTRY PARAMETERS 
          ADN    1
          CRM    RFQA,T3
          RJM    CCE         COMPARE ENTRY FROM BUFFER
          ZJN    AQC4        IF MATCHING ENTRY
          RJM    RFQ         RETURN FILE TO QUEUE 
          LDN    1
 AQC3     LJM    AQCX        RETURN 
  
*         CREATE LOCAL FNT ENTRY. 
  
 AQC4     STD    FN+2 
          STD    FN+3 
          LDN    NEEQ        ASSIGN NULL EQUIPMENT
          STD    FS 
          LDN    6           RETURN ON NFL INCREASE, LOCAL FILE LIMIT 
          STM    OVL0-1 
          EXECUTE  0BF,OVL0 
          UJN    AQC5        CHECK RETURN STATUS
  
*         PROCESS ADVANCE EXIT FROM *0BF* IF FILE ALREADY EXISTS. 
  
          LDN    0           CLEAR LOCAL FILE OFFSET
          STD    FA 
          RJM    RFQ         RETURN FILE TO QUEUE 
          ERROR  DFNE        EC = 16, DUPLICATE FILE NAME 
  
 AQC5     ZJN    AQC6        IF FNT ENTRY CREATED 
          LMN    4
          NJN    AQC5.1      IF NOT LOCAL FILE LIMIT
          RJM    RFQ         RETURN FILE TO QUEUE 
          ERROR  FTHE        EC = 4, FNT IS FULL
  
*         ENTER RECALL STACK TO WAIT FOR PENDING NFL INCREASE.
  
 AQC5.1   RJM    RFQ         RETURN FILE TO QUEUE 
          LJM    ERS         ENTER PP RECALL STACK
  
*         BUILD FNT/FST ENTRY.
  
 AQC6     LDC    QFFT*100-LOFT*100  SET FILE TYPE 
          RAD    FN+4 
          LDD    CN+1        SET FILE REWOUND 
          STD    CN+2 
          LDN    FSMS 
          STD    CN+3 
          LDN    4           SET FILE BUSY
          STD    CN+4 
          NFA    FA,R        STORE FNT ENTRY
          CWD    FN 
          ADN    FSTL 
          CWD    CN 
          CRD    T5 
          CRD    FS 
          ADN    FUTL-FSTL   UPDATE ACCESS LEVEL IN FNT ENTRY 
          CRD    CM 
          SFA    QFT,QA 
          ADN    INSQ 
          CRD    T0 
          LDD    T3 
          SHN    -3 
          LPN    7
          STD    T1 
          LDD    CM+2 
          SCN    7
          LMD    T1 
          STD    CM+2 
          NFA    FA,R 
          ADN    FUTL 
          CWD    CM 
          LDN    0
          LJM    AQCX        RETURN 
  
 AQCA     VFD    1/1,5/JSNQ,6/4,6/0,42/0
          VFD    1/0,5/JSNQ,6/1,6/1,42/1
          VFD    1/0,5/ENTQ,6/24D,6/0,42/0
 CCE      SPACE  4,10 
**        CCE - CHECK CURRENT ENTRY FROM BUFFER.
* 
*         ENTRY  (QA) = QFT ORDINAL.
*                (IQFB) = IQFT ENTRY. 
* 
*         EXIT   (A) = 0 IF QFT ENTRY MATCHES ENTRY FROM BUFFER.
*                (FN - FN+1) = FILE NAME (SEQUENCE NUMBER)
*                (CN - CN+4) = FST INFORMATION. 
* 
*         MACROS SFA. 
  
  
 CCE      SUBR               ENTRY/EXIT 
          SFA    QFT,QA      FETCH QFT DATA 
          CRD    FN 
          ADN    ENTQ-JSNQ
          CRD    CN 
          LDD    CN+1        COMPARE FIRST TRACK
          LMM    IQFB+5*ENTQ+1
          NJN    CCEX        IF NO MATCH
          LDD    FN+1 
          LMM    IQFB+5*JSNQ+1
          NJN    CCEX        IF NOT MATCHING SEQUENCE NUMBER
          LDD    FN 
          LMM    IQFB+5*JSNQ
          NJN    CCEX        IF NOT MATCHING SEQUENCE NUMBER
          LDD    CN 
          LMM    IQFB+5*ENTQ
          UJN    CCEX        RETURN 
 RFQ      SPACE  4,10 
**        RFQ - RETURN FILE TO QUEUE. 
* 
*         ENTRY  (FA) = NFL FNT ENTRY OFFSET. 
*                (QA) = QFT ORDINAL.
* 
*         EXIT   (A) = (QA) = 0.
* 
*         USES   CM - CM+4. 
* 
*         CALLS  RFE. 
* 
*         MACROS MONITOR, SFA.
  
  
 RFQ      SUBR               ENTRY/EXIT 
          LDN    3
          STD    CM+1 
          LDD    MA          STORE *UTEM* PARAMETER BLOCK 
          CWM    RFQA,CM+1
          SFA    QFT,QA      SET ABSOLUTE ADDESS OF QFT ENTRY 
          STD    CM+4 
          SHN    -14
          STD    CM+3 
          MONITOR  UTEM 
*         LDN    0           CLEAR QFT ORDINAL
          STD    QA 
          RJM    RFE         RELEASE LOCAL FNT ENTRY
*         LDN    0
          UJN    RFQX        RETURN 
  
 RFQA     BSS    2*5         *UTEM* PARAMETER BLOCK 
          VFD    1/0,5/JSNQ,6/1,6/0,42/0  CLEAR QFT ENTRY INTERLOCK 
 UQT      SPACE  4,10 
**        UQT - UPDATE IQFT ENTRY IN FET BUFFER.
* 
*         ENTRY  (IQFB) = IQFT ENTRY. 
*                (BFMS) = QUEUE FILE SYSTEM SECTOR. 
* 
*         USES   T1.
* 
*         CALLS  WBB. 
  
  
 UQT      SUBR               ENTRY/EXIT 
          LDM    FLSS        SET FILE LENGTH
          STM    CDSS 
          LDM    FLSS+1 
          STM    CDSS+1 
          LDM    RMSS        SET MACHINE ID 
          STM    FMSS+4 
          LDN    5
          STD    T1 
          LDD    MA          UPDATE IQFT ENTRY
          CWM    CDSS,ON
          CWM    FMSS,ON
          CWM    FDSS,ON
          CWM    OASS,ON     OWNER USER NAME/ USER INDEX
          CWM    FOSS,ON     OWNER FAMILY NAME
          SBN    5
          CRM    IQFB+5*10,T1 
          LDN    QFEWL       WRITE IQFT ENTRY TO BUFFER 
          STD    T1 
          LDC    IQFB 
          RJM    WBB
          LJM    UQTX        RETURN 
 VEI      SPACE  4,20 
**        VEI - VERIFY BOI/EOI. 
* 
*         ENTRY  (T5) = EST ORDINAL.
*                (T6) = FIRST TRACK.
*                (FN - FN+1) = FILE NAME (SEQUENCE NUMBER). 
* 
*         EXIT   (FLSS - FLSS+1) = -0 IF BOI/EOI VALIDATION ERROR.
* 
*         ERROR  THE JOB IS ROLLED OUT IF A NON-SUBSYSTEM JOB 
*                ENCOUNTERS A RECOVERABLE I/O ERROR.  IF A
*                NON-RECOVERABLE ERROR IS ENCOUNTERED AND/OR THE
*                CALLER IS A SUBSYSTEM, THEN ERROR CODE = *RMSE* (6)
*                IS RETURNED. 
* 
*         USES   T6, CM - CM+4, FN - FN+4.
* 
*         CALLS  DFM, MSR, RDS, SEI.
* 
*         MACROS ENDMS, SETMS.
  
  
 VEI      SUBR               ENTRY/EXIT 
          LDN    SSTL        READ SYSTEM STATUS 
          CRD    CM 
          LDD    CM 
          LPN    4
          LMN    4
          ZJN    VEIX        IF PF VALIDATION DISABLED
          RJM    SEI         SEARCH FOR EOI 
          SETMS  IO 
          LDC    EOIB        READ EOI SECTOR
          RJM    RDS
          PJN    VEI1        IF NO ERROR
          RJM    MSR         CHECK IF THE ERROR IS RECOVERABLE
  
 VEI1     ENDMS 
          LDM    FTSS        RESTORE FIRST TRACK
          STD    T6 
          LDD    FS+1 
          LMM    EOIB+FTEI
          ZJN    VEIX        IF BOI/EOI VERIFIES
          LCN    0           FLAG LENGTH ERROR FOR IQF
          STM    FLSS 
          STM    FLSS+1 
          LDD    MA          MOVE FILE NAME TO MESSAGE
          CWD    FN 
          CRM    VEIB,ON
          LDC    2L.. 
          STM    VEIB+2 
          LDN    0           SET MESSAGE TERMINATOR 
          STM    VEIB+3 
          LDC    VEIA+NMSN   ISSUE MESSAGE TO SYSTEM DAYFILE
          RJM    DFM
          LDC    VEIA+ERLN   ISSUE MESSAGE TO ERRLOG
          RJM    DFM
          LJM    VEIX        RETURN 
  
 VEIA     DATA   H* QF LENGTH ERROR  *
 VEIB     BSS    5
 VFE      SPACE  4,20 
**        VFE - VERIFY FILE ENTRY.
* 
*         ENTRY  (T5) = EST ORDINAL.
*                (T6) = FIRST TRACK.
*                (FN - FN+1) = FILE NAME (SEQUENCE NUMBER). 
* 
*         EXIT   (A) = 0 IF FILE SATISFIES SELECTION CRITERIA.
* 
*         ERROR  THE JOB IS ROLLED OUT IF A NON-SUBSYSTEM JOB 
*                ENCOUNTERS A RECOVERABLE I/O ERROR.  IF A
*                NON-RECOVERABLE ERROR IS ENCOUNTERED AND/OR THE
*                CALLER IS A SUBSYSTEM, THEN ERROR CODE = *RMSE* (6)
*                IS RETURNED. 
* 
*         USES   T0, CM - CM+4, CN - CN+4.
* 
*         CALLS  GFE, IFI, MSR, RSS.
* 
*         MACROS ENDMS, SETMS.
  
  
 VFE      SUBR               ENTRY/EXIT 
  
*         GET SELECTION CRITERIA FROM FET.
  
          RJM    GFE
          ADN    5           FAMILY NAME/UI LOWER BOUND 
          CRD    CN 
          ADN    1           DATE RANGE/UI UPPER BOUND
          CRD    CM 
          ADN    2           MACHINE ID/FILE SIZE CRITERIA
          CRM    VFEF,ON
  
*         CHECK VALIDATION REQUIRED.
  
          LDD    CM 
          ADD    CM+2 
          ADD    CN 
          ADD    CN+3 
          ADD    CN+4 
          ADM    VFEF 
          ADM    VFEF+1 
          ADM    VFEF+2 
          ADM    VFEF+3 
          ADM    VFEF+4 
          ADD    CM+3 
          ADD    CM+4 
          ZJN    VFE2        IF NO VALIDATION REQUIRED
          SETMS  IO 
          LDN    0           READ SYSTEM SECTOR 
          RJM    RSS
          ZJN    VFE3        IF NO ERROR ENCOUNTERED
          PJN    VFE1        IF ERROR OTHER THAN READ 
          RJM    MSR         CHECK IF THE ERROR IS RECOVERABLE
  
 VFE1     LDC    ERSE        * QFM SYSTEM SECTOR ERROR.*
          RJM    IFI         ISSUE FILE IGNORED MESSAGE 
          LDN    1
 VFE2     LJM    VFEX        RETURN 
  
 VFE3     ENDMS 
          RJM    GFE         RESET INCLUSIVE DATES/MACHINE ID 
          ADN    6
          CRD    CM 
          LDD    CM+1 
          SCN    77 
          STD    CM+1 
  
*         CHECK FAMILY NAME SELECTION.
  
          LDD    CN 
          ZJN    VFE6        IF NO FAMILY NAME COMPARISON 
 VFE4     LDD    CN          COMPARE FAMILY NAME
          LMM    FMSS 
          NJN    VFE2        IF NO MATCH
          LDM    FMSS+1 
          LMD    CN+1 
          NJN    VFE2        IF NO MATCH
          LDM    FMSS+2 
          LMD    CN+2 
 VFE5     NJN    VFE2        IF NO MATCH
          LDM    FMSS+3 
          LMD    CN+3 
          SCN    77 
          NJN    VFE5        IF NO MATCH
  
*         CHECK USER INDEX SELECTION. 
  
 VFE6     LDD    CN+3 
          LPN    77 
          STD    T0 
          LDM    OASS+3 
          LPN    77 
          SBD    T0 
          SHN    14 
          ADM    OASS+4 
          SBD    CN+4 
          MJN    VFE5        IF BELOW LOWER USER INDEX
          LDM    OASS+3 
          LPN    77 
          STD    T0 
          LDD    CM+3 
          LPN    77 
          SBD    T0 
          SHN    14 
          ADD    CM+4 
          SBM    OASS+4 
 VFE7     MJN    VFE5        IF ABOVE UPPER USER INDEX
  
*         CHECK MACHINE ID. 
  
          LDM    VFEF 
          ZJN    VFE8        IF NO MACHINE ID SPECIFIED 
          LMM    RMSS 
          NJP    VFEX        IF NO MATCH ON MACHINE ID
  
*         CHECK CREATION DATE SELECTION.
  
 VFE8     LDM    CDSS+2 
          SBD    CM 
          MJN    VFE7        IF BELOW LOWER DATE
          NJN    VFE9        IF DATE WITHIN RANGE 
          LDM    CDSS+3 
          SCN    77 
          SBD    CM+1 
          MJN    VFE7        IF DATE NOT WITHIN RANGE 
 VFE9     LDD    CM+2        CHECK MAXIMUM DATE 
          ZJN    VFE11       IF DATE NOT SPECIFIED
          SBM    CDSS+2 
 VFE10    MJN    VFE7        IF DATE NOT WITHIN RANGE 
          NJN    VFE11       IF DATE WITHIN RANGE 
          LDD    CM+3 
          SCN    77 
          STD    T0 
          LDM    CDSS+3 
          SCN    77 
          SBD    T0 
          ZJN    VFE11       IF DATE WITHIN RANGE 
          PJP    VFEX        IF NOT WITHIN RANGE
 VFE11    LDM    FLSS        CHECK FILE SIZE
          SBM    VFEF+1 
          MJN    VFE14       IF BELOW RANGE 
          NJN    VFE12       IF WITHIN RANGE
          LDM    FLSS+1 
          SBM    VFEF+2 
          MJN    VFE10       IF BELOW RANGE 
 VFE12    LDM    VFEF+3      CHECK UPPER BOUND
          SHN    14 
          LMM    VFEF+4 
          LMC    777777 
          ZJN    VFE14       IF UNLIMITED UPPER VALUE 
          LDM    VFEF+3 
          SBM    FLSS 
          MJN    VFE14       IF ABOVE RANGE 
          NJN    VFE13       IF WITHIN RANGE
          LDM    VFEF+4 
          SBM    FLSS+1 
          MJN    VFE14       IF ABOVE RANGE 
 VFE13    LDN    0
 VFE14    LJM    VFEX        RETURN 
  
 VFEF     BSS    5           FILE SIZE RANGE DATA 
          SPACE  4
 EOIB     EQU    BFMS-502    EOI BUFFER 
          ERRPL  *-EOIB 
          SPACE  4,10 
 OVL0     EQU    *+5
          ERRNG  EPFW-OVL0-ZBFL 
  
          OVERFLOW  OVL 
          SPACE  4
          TTL    QFM - QUEUE FILE MANAGER.
          END 
