0BF 
          IDENT  0BF,BGFX 
          PERIPH J
          BASE   MIXED
          SST 
*COMMENT  0BF - BEGIN FILE. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          TITLE  0BF - BEGIN FILE.
          SPACE  4
***       0BF - BEGIN FILE. 
* 
*         G. R. MANSFIELD.   70/09/01.
*         J. L. LARSON.      81/10/05.
          SPACE  4
***              0BF IS A LOCATION FREE ROUTINE WHICH ENTERS FILES INTO 
*         THE LOCAL FNT (IN NFL).  IT MAY BE USED BY ANY PP PROGRAM OR
*         ROUTINE FOR THIS PURPOSE. IF THE FILE HAS BEEN PREVIOUSLY 
*         ENTERED INTO THE *FNT*, *0BF* ADVANCES THE EXIT ADDRESS BY
*         ONE AND RETURNS WITH THE FILE LEFT NOT BUSY.  IF THE FILE HAS 
*         NOT BEEN PREVIOUSLY ENTERED INTO THE *FNT* IT WILL BE ENTERED 
*         AND LEFT BUSY UPON RETURN.
*                DEPENDING ON OPTIONS SELECTED BY THE CALLER, 
*         THE FILE WILL BE ASSIGNED TO A SPECIFIED EQUIPMENT, 
*         TO THE BEST MASS STORAGE EQUIPMENT, OR TO THE 
*         TERMINAL EQUIPMENT. 
          SPACE  4
***       OPERATOR MESSAGES.
* 
* 
*         *WAIT FNT SPACE.* = *0BF* IS WAITING FOR ADDITIONAL NFL TO
*         BE ASSIGNED SO ANOTHER LOCAL FNT ENTRY CAN BE CREATED.
          SPACE  4
***       ENTRY CONDITIONS. 
* 
* 
*         ((LA)-1) = 2/,1/A,3/AL,1/S,2/,1/L,1/R,1/N 
*                A           ACCESS LEVEL SPECIFIED.
*                AL          FILE ACCESS LEVEL. 
*                S           IF SET, CREATE SPECIAL FILE USING
*                            ONE OF THE RESERVED FNT ENTRIES.  SEE
*                            SYMBOL *SRFE* IN *PPCOM* FOR A LIST OF 
*                            SPECIAL FILES. 
*                L           IF SET, RETURN TO CALLER ON LOCAL FILE 
*                            LIMIT (MAXIMUM NFL REACHED).  IF THIS
*                            OPTION IS NOT SELECTED, *0BF* WILL SET 
*                            THE *FLET* ERROR FLAG ON THE CONTROL 
*                            POINT AND DROP THE PP. 
*                R           IF SET, RETURN TO CALLER TO ENTER PP 
*                            RECALL STACK ON WAIT FOR NFL INCREASE. 
*                            *0BF* HAS ALREADY ISSUED *ROCM* FOR
*                            ROLLABLE JOB WHEN FL INCREASE IS NOT 
*                            AVAILABLE, OR DISPLAYED *WAIT FNT SPACE* 
*                            MESSAGE AT THE CONTROL POINT.  THE 
*                            CALLER SHOULD NOW ISSUE *RECM* TO ENTER
*                            THE PP RECALL STACK.  IF THIS OPTION IS
*                            NOT SELECTED, *0BF* WILL ISSUE *ROCM* OR 
*                            DISPLAY MESSAGE, AND ISSUE THE *RECM* TO 
*                            ENTER THE CALLER PP REQUEST INTO THE 
*                            PP RECALL STACK AND DROP THE PP. 
*                N           IF SET, RETURN TO CALLER ON NFL INCREASE 
*                            IN PROGRESS.  *0BF* EXITS WITH STATUS
*                            FROM *COMPNFL*.  IF THIS OPTION IS NOT 
*                            SELECTED, ACTION DEPENDS ON *R* OPTION 
*                            SETTING. 
* 
*         (FS) = 1/0,1/T,1/M,9/EQ 
*                T           IF SET, PREVENT TRACK ASSIGNMENT 
*                            IF FILE TO BE ASSIGNED TO MASS STORAGE.
*                M           IF SET, FORCE MASS STORAGE ASSIGNMENT
*                            RATHER THAN TERMINAL EQUIPMENT IF
*                            *EQ* = 0 SPECIFIED.
*                EQ          IF NONZERO, ASSIGN FILE TO THIS
*                            EQUIPMENT (FOR NON-MASS STORAGE
*                            NON-ALLOCATABLE EQUIPMENT, CALLER MUST 
*                            PREVIOUSLY HAVE COMPLETED *REQM* 
*                            FUNCTION TO REQUEST THIS EQUIPMENT). 
*                            IF *EQ* = 0, *M* = 0, AND
*                            *T* = 0 FOR A TERMINAL ORIGIN JOB, 
*                            ASSIGN TERMINAL EQUIPMENT FOR SPECIAL
*                            FILES *INPUT* AND *OUTPUT*.  OTHERWISE 
*                            FOR *EQ* = 0, ASSIGN FILE TO THE BEST
*                            MASS STORAGE EQUIPMENT.  NOTE THAT 
*                            IF THE CALLER REQUESTS ASSIGNMENT
*                            OF THE NULL EQUIPMENT (*EQ* = *NEEQ*), 
*                            THIS PREVENTS MASS STORAGE ASSIGNMENT
*                            AND THE CALLER CAN LATER OVERRIDE THE
*                            NULL EQUIPMENT WITH A DIFFERENT
*                            EQUIPMENT SELECTION (SINCE THE NULL
*                            EQUIPMENT DOES NOT NEED TO BE RELEASED 
*                            AND THERE ARE NO TRACKS ASSOCIATED WITH
*                            IT THAT NEED TO BE DROPPED). 
* 
*         (FN - FN+3) = FILE NAME LEFT JUSTIFIED WITH 0 FILL. 
* 
*         (IR - IR+4) = CALLER PP REQUEST.
          SPACE  4
***       EXIT CONDITIONS.
* 
* 
*         (A) = 0 IF FILE LOCAL FNT ENTRY CREATED.
*             .LT. 0 IF STORAGE FOR NFL INCREASE IS NOT AVAILABLE 
*                WHEN *N* OPTION IS SELECTED BY CALLER. 
*             = 1 IF WAITING FOR NFL INCREASE TO COMPLETE 
*                WHEN *N* OPTION IS SELECTED BY CALLER. 
*             = 2 IF CALLER IS TO ENTER PP RECALL STACK TO WAIT FOR 
*                NFL INCREASE WHEN *R* OPTION IS SELECTED BY CALLER.
*             = 4 IF LOCAL FILE LIMIT (MAXIMUM NFL) REACHED 
*                WHEN *L* OPTION IS SELECTED BY CALLER. 
*             = LARGE POSITIVE NUMBER IF ADVANCE EXIT TAKEN 
*                FOR FILE ALREADY EXISTS CONDITION. 
* 
*         (FN - FN+4) = FNT ENTRY.
* 
*         (FS - FS+4) = FST ENTRY.
* 
*         (FA) = RELATIVE ADDRESS OF LOCAL FNT ENTRY IN NFL.
* 
*         ADVANCE EXIT IF FILE PREVIOUSLY ASSIGNED. 
*         FST ENTRY SET BUSY IF NEW ENTRY IS MADE.
          SPACE  4
*CALL     COMPMAC 
*CALL     COMSCPS 
*CALL     COMSLFD 
*CALL     COMPREL 
*CALL     COMSZOL 
          SPACE  4
****      DIRECT LOCATION ASSIGNMENTS.
  
  
 FS       EQU    20 - 24     FST ENTRY (5 LOCATIONS)
 FN       EQU    40 - 44     FILE NAME (5 LOCATIONS)
 FA       EQU    57          FNT RELATIVE ADDRESS 
****
          TITLE  MAIN ROUTINE.
 0BF      SPACE  4
*         BGF - MAIN ROUTINE. 
  
  
          ORG    5
 BGF      SUBR               ENTRY/EXIT 
          LDM    -1          SAVE OPTIONS 
          STI    LA 
          LPN    1
          ZJN    BGF0        IF NO RETURN ON NFL INCREASE 
          LCN    BGF6-BGF5   SET TO RETURN ON NFL INCREASE
          RAM    BGFA 
  
*         GET ACCESS LEVEL FOR FILE.
  
 BGF0     LDI    LA          GET PARAMETER WORD 
          SHN    21-11
          PJN    BGF0.1      IF NO ACCESS LEVEL SPECIFIED 
          SHN    0-6-21+11   EXTRACT ACCESS LEVEL 
          LPN    7
          UJN    BGF0.2      SAVE ACCESS LEVEL
  
 BGF0.1   LDD    CP          GET JOB ACCESS LEVEL 
          ADK    JSCW 
          CRD    CM 
          LDD    CM+1 
          SHN    -11
 BGF0.2   STD    T3          SAVE ACCESS LEVEL
  
*         CREATE LOCAL FNT ENTRY. 
  
 BGF1     LDD    FS          SAVE EST ORDINAL AND FLAGS 
          STD    T2 
          LDI    LA          GET SPECIAL FILE FLAG
          LPN    40 
          LMN    CRFS        CREATE LOCAL FNT ENTRY SUBFUNCTION 
          STD    CM+1 
          LDD    MA          SET FILE NAME
          CWD    FN 
          MONITOR  PLFM      PROCESS LOCAL FNT ENTRY
          LDD    CM+1        SET FNT ADDRESS
          STD    FA 
          LDD    CM+4 
          NJN    BGF2        IF FILE NOT CREATED
  
*         PROCESS NEWLY CREATED FILE. 
  
          LDC    LOFT*100    SET FILE TYPE
          STD    FN+4 
          LDN    ZERL        CLEAR FST INFORMATION
          CRD    FS 
          LJM    SFT         SET FILE TYPE
  
*         IF THE FILE IS FOUND, ADVANCE EXIT FROM ROUTINE.
  
 BGF2     SHN    21-0 
          PJN    BGF3        IF NOT FILE ALREADY EXISTS STATUS
          NFA    FA,R        GET FNT ENTRY
          CRD    FN 
          ADN    FSTL        GET FST ENTRY
          CRD    FS 
          AOM    BGF         ADVANCE EXIT 
          UJN    BGF5        EXIT 
  
*         PROCESS LOCAL FILE LIMIT (MAXIMUM NFL REACHED). 
  
 BGF3     SHN    21-1-21+0+22 
          PJN    BGF4        IF NOT LOCAL FILE LIMIT
          LDI    LA 
          LPN    4
          NJN    BGF5        IF RETURN REQUESTED
          LDN    FLET        SET LOCAL FILE LIMIT ERROR FLAG
          STD    CM+1 
          MONITOR  CEFM 
          MONITOR  DPPM      DROP PP
          LJP    PPR         EXIT TO PP RESIDENT
  
*         PROCESS NFL INCREASE. 
  
 BGF4     LDD    CP          GET CURRENT NFL SIZE 
          ADN    FLSW 
          CRD    CM 
          AOD    CM          REQUEST ADDITIONAL 100B WORDS
          RJM    NFL         REQUEST STORAGE INCREASE 
 BGFA     NJN    BGF6        IF NFL NOT ASSIGNED
*         NJN    BGF5        (RETURN ON NFL INCREASE) 
          LJM    BGF1        RETRY CREATE OF FNT ENTRY
  
 BGF5     LJM    BGFX        EXIT 
  
 BGF6     PJN    BGF7        IF WAITING FOR COMPLETION OF NFL INCREASE
          LDD    CP 
          ADN    JCIW 
          CRD    CM 
          LDD    CM+3        CHECK FOR *DIS* JOB
          LPC    1000 
          ADD    CM+2        CHECK FOR NON-ROLLABLE JOB 
          NJN    BGF7        IF JOB NOT ROLLABLE
*         LDN    ROSR        JOB SCHEDULAR ROLLOUT OPTION 
          ERRNZ  ROSR        CODE DEPENDS ON ZERO VALUE 
          STD    CM+1        ROLLOUT THIS CONTROL POINT 
          MONITOR  ROCM 
          UJN    BGF8        CHECK RETURN OPTION
  
 BGF7     LDD    LA 
          RAM    BGFB 
          LDD    CP          CONSOLE MESSAGE *WAIT FNT SPACE.*
          ADN    MS2W 
          CWM.   =C*WAIT FNT SPACE.*,TR 
 BGFB     EQU    *-1
 BGF8     LDI    LA 
          LPN    2
          NJN    BGF5        IF RETURN TO ENTER PP RECALL STACK 
*         UJN    EPR         ENTER PP RECALL
          TITLE  SUBROUTINES. 
 EPR      SPACE  4,10 
**        EPR - ENTER PP RECALL.
* 
*         ENTRY  (IR - IR+4) = RECALL PARAMETERS. 
* 
*         EXIT   TO *PPR*.
* 
*         USES   CM - CM+4. 
* 
*         MACROS LJP, MONITOR.
  
  
 EPR      LDN    ZERL        ENTER DEFAULT TIMED RECALL 
          CRD    CM 
          LDN    NFIR        NFL INCREASE PENDING REASON CODE 
          STD    CM 
          LDD    MA          STORE PP CALL IN MESSAGE BUFFER
          CWD    IR 
          ADN    1
          CWD    CM          STORE RECALL STACK REASON CODE 
          MONITOR  RECM 
          LJP    PPR         ENTER PP RESIDENT
 SFT      SPACE  4,15 
**        SFT - SET FILE TYPE.
* 
*         EXIT   (T1) = RELOCATION ADDRESS. 
*                (FN - FN+4) = FNT WORD.
*                (FS - FS+4) = FST WORD.
*                TO *AMS* IF NOT MS EQUIPMENT.
*                TO *PSI* IF MS EQUIPMENT.
* 
*         USES   FN+4, FS, T1, CM - CM+4. 
* 
*         MACROS SFA. 
  
  
 SFT      LDC    TSFN-4      SET SPECIAL FILE ADDRESS 
          ADD    LA 
          STD    T1 
 SFT1     LDN    4           ADVANCE TABLE
          RAD    T1 
          LDI    T1          CHECK ENTRY
          ZJN    SFT2        IF END OF TABLE
          LMD    FN          COMPARE NAMES
          NJN    SFT1        IF NAMES DO NOT MATCH
          LDM.   1,T1 
          LMD    FN+1 
          NJN    SFT1        IF NAMES DO NOT MATCH
          LDM.   2,T1 
          LMD    FN+2 
          NJN    SFT1        IF NAMES DO NOT MATCH
          LDM.   3,T1 
          LMD    FN+3 
          SCN    77 
          NJN    SFT1        IF NAMES DO NOT MATCH
 SFT2     LDD    T2          CHECK EQUIPMENT
          LPC    1777 
          NJN    SFT3        IF EQUIPMENT SPECIFIED 
          LDM.   3,T1        CHECK ASSIGNMENT BYTE
          LPN    40 
          ZJN    SFT4        IF NOT TERMINAL ASSOCIATED FILE
          LDD    CP          GET JOB EJT ORDINAL
          ADN    TFSW 
          CRD    CM 
          SFA    EJT,CM      GET JOB EJT ENTRY ADDRESS
          ADN    SCLE 
          CRD    CM 
          LDD    CM          GET JOB ORIGIN TYPE
          LPN    17 
          LMN    TXOT 
          NJN    SFT4        IF NOT TERMINAL JOB
          LDN    TTEQ        TTY EST ORDINAL
 SFT3     LPC    777
          ZJN    SFT4        IF NO EQUIPMENT SPECIFIED
          STD    FS          SET EST ORDINAL IN FST 
          SFA    EST         READ EST ENTRY 
          ADK    EQDE 
          CRD    CM 
          LDD    CM          CHECK FOR MASS STORAGE EQUIPMENT 
          SHN    21-13
          PJN    PSI         IF NOT MASS STORAGE
 SFT4     LDD    T2          CHECK REQUEST
          SHN    21-12
          MJN    PSI         IF MS SPACE NOT TO BE ASSIGNED 
*         UJN    AMS         ALLOCATE MS SPACE
 AMS      SPACE  4,15 
**        AMS - ALLOCATE MASS STORAGE SPACE.
* 
*         ENTRY  (T1) = RELOCATION ADDRESS. 
*                (T3) = FILE ACCESS LEVEL.
*                (FS) = EST ORDINAL IF SPECIFIED. 
* 
*         EXIT   (FS) = EST ORDINAL.
*                (FS+1) = FIRST TRACK FOR FILE. 
*                TO *PSI*.
* 
*         USES   FS, FS+1, CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 AMS      LDN    ZERL        CLEAR PARAMETERS 
          CRD    CM 
          LDD    FS          SET EST ORDINAL IN REQUEST 
          STD    CM+1 
          NJN    AMS1        IF EQUIPMENT 
          LDM.   3,T1        SET MASS STORAGE ASSIGNMENT PARAMETER
          LPN    7
          STD    CM+2 
          LDD    T3          SET ACCESS LEVEL PARAMETER 
          ADN    40          SET ACCESS LEVEL FLAG PARAMETER
          SHN    6
          RAD    CM+3 
 AMS1     MONITOR RTCM       REQUEST TRACK CHAIN
          LDD    CM+1        SET EQUIPMENT
          LPC    777         EST ORDINAL = 0 IF NO EQUIPMENT ASSIGNED 
          STD    FS 
          LDD    CM+4        SET FIRST TRACK
          STD    FS+1 
*         UJN    PSI         PROCESS SPECIAL FILE STATUS
 PSI      SPACE  4,15 
**        PSI - PROCESS SPECIAL FILE STATUS.
* 
*         ENTRY  (FN - FN+4) = FNT WORD.
*                (FS - FS+4) = FST WORD.
*                (T3) = ACCESS LEVEL. 
* 
*         EXIT   UPDATED FNT/FST/FUT INFORMATION COPIED TO NFL. 
* 
*         USES   CM - CM+4. 
* 
*         MACROS NFA. 
  
  
 PSI      LDD    CP          CHECK FOR JOB WITH SSJ= BLOCK
          ADC    SEPW 
          CRD    CM 
          LDD    CM+3 
          LPN    37 
          ADD    CM+4 
          ZJN    PSI1        IF NO SSJ= ADDRESS SPECIFIED 
          LDN    SSST        SET SPECIAL SYSTEM FILE
          UJN    PSI2        COMPLETE FNT/FST 
  
 PSI1     LDD    CP          CHECK FOR USER FILE PRIVACY
          ADN    JCIW 
          CRD    CM 
          LDD    CM+3        SET USER FILE PRIVACY STATUS 
          SHN    0-7
          LPN    1
          ERRNZ  UPST-1      ADJUST CODE IF VALUE CHANGES 
 PSI2     RAD    FN+4 
          NFA    FA,R        STORE FNT ENTRY
          CWD    FN 
          ADN    FSTL        STORE FST WORD 
          CWD    FS 
          ADN    FUTL-FSTL   GET FUT WORD 
          CRD    CM 
          LDD    T3          SET ACCESS LEVEL IN FUT
          RAD    CM+2 
          NFA    FA,R        REPLACE FUT WORD 
          ADN    FUTL 
          CWD    CM 
          LDN    0           SET EXIT 
          LJM    BGFX        RETURN 
 TSFN     SPACE  4,10 
**        TSFN - TABLE OF SPECIAL FILE NAMES. 
*         ENTRY = 5 WORDS.
* 
*T        42/ FILE NAME,1/T,2/,3/MS 
*         T      TERMINAL FILE ASSIGNMENT 
*         MS     RTCM MASS STORAGE ALLOCATION PARAMETER.
  
 TSFN     BSS    0
  
          VFD    42/0LINPUT,1/1,2/0,3/LOCS
          VFD    42/0LOUTPUT,1/1,2/0,3/OUTS 
          VFD    42/0LPUNCH,3/0,3/OUTS
          VFD    42/0LPUNCHB,3/0,3/OUTS 
          VFD    42/0LP8,3/0,3/OUTS 
          VFD    42/0LLGO,3/0,3/LGOS
          VFD    42/0,3/0,3/LOCS  ALL SCRATCH FILES 
          SPACE  4,10 
**        EJT MANAGED TABLE PROCESSOR.
  
  
          CEJT
 NFI      SPACE  4
**        COMMON DECK.
  
  
*CALL     COMPNFL 
          SPACE  4,10 
          OVERFLOW 5,ZBFL 
          END 
