0DF 
          IDENT  0DF,DRFX 
          PERIPH J
          BASE   MIXED
          SST 
*COMMENT  0DF - DROP FILE.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          TITLE  0DF - DROP FILE. 
          SPACE  4,10 
***       0DF - DROP FILE.
*         G. R. MANSFIELD.  70/07/30. 
*         R. E. TATE.       70/11/30. 
*         M. E. MADDEN.     73/04/01. 
*         D. D. SADLER      75/01/18. 
*         P. D. HAAS.        85/01/20.
          SPACE  4,10 
***              0DF IS A LOCATION FREE ROUTINE TO BE USED FOR
*         DROPPING ANY SYSTEM FILE. 
* 
*         ALL FILES ARE REMOVED FROM THE LOCAL FNT
*         AND THE ASSIGNED EQUIPMENT OR TRACKS WILL BE RELEASED.
*         THE JOBS MASS STORAGE PRU LIMIT IS ALSO INCREMENTED, UNLESS 
*         BIT 0 OF ((LA)-1) IS SET. 
*         *0DF* DOES NOT SET THE FILE BUSY BEFORE DROPPING. 
*         NOTE - *0DF* WILL HANG WITH AN *HNGM* MONITOR FUNCTION
*         FOR THE FOLLOWING CONDITIONS -
*         1.  FNT ADDRESS FOR FILE TO BE DROPPED IS ZERO. 
*         2.  FILE TYPE IN FNT ENTRY IS ILLEGAL.
*         3.  PROCESSOR IS NOT DEFINED FOR THE FILE TYPE. 
          SPACE  4,10 
***       ENTRY CONDITIONS. 
* 
* 
*         (FA) = 12/FNT ENTRY RELATIVE ADDRESS IN NFL 
* 
*         ((LA)-1) = 10/, 1/D, 1/R
* 
*         WHERE - 
* 
*                D = PROCESS *ROFT* FILES.  THIS SHOULD ONLY BE SET BY
*                    *1RO* DURING ERROR PROCESSING OR BY *1AJ* DURING 
*                    *DMP=* PROGRAM ABNORMAL TERMINATION PROCESSING TO
*                    ALLOW THE DM* FILE TO BE RELEASED. 
* 
*                R = RESOURCE UPDATE CONTROL.  FOR MAGNETIC TAPE
*                    FILES AND PERMANENT FILES ON PACKS (FOR
*                    SUBSEQUENT CALL TO *0RF*/*0RT*). 
*                    0 = *RETURN* FILE. 
*                    1 = *UNLOAD* FILE (DOES NOT DECREMENT RESOURCE 
*                        FILE COUNT). 
          SPACE  4,10 
***       EXIT CONDITIONS.
* 
* 
*         (A) = (FA) = 0 IF OPERATION COMPLETED SUCCESSFULLY. 
* 
*         (A) .LT. 0 IF MASS STORAGE DEVICE INACCESSIBLE. 
*         (T5) = EST ORDINAL OF INACCESSIBLE DEVICE, IF INACCESSIBLE. 
*                NOTE - THE INACCESSIBLE DEVICE MAY BE A DEVICE OTHER 
*                       THAN THE ONE ON WHICH THE FILE BEING RETURNED 
*                       RESIDES.
*         (FA) = FNT ORDINAL, IF DEVICE INACCESSIBLE. 
*         FNT LEFT BUSY, IF DEVICE INACCESSIBLE.
*         (FS - FS+4) = FST WORD OF FNT ENTRY.
          SPACE  4,10 
**        0-LEVEL OVERLAYS CALLED.
* 
* 
*         *0DQ*, *0FA*, *0PT*, *0RF*, *0RP*, *0RT*. 
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMPMAC 
*CALL     COMPREL 
*CALL     COMSCPS 
*CALL     COMSLFD 
*CALL     COMSZOL 
          SPACE  4,10 
****      DIRECT LOCATION ASSIGNMENTS.
  
  
 T8       EQU    16          CHECKPOINT REQUEST 
 FS       EQU    20 - 24     FST INFORMATION (5 LOCATIONS)
 QA       EQU    26 
 FA       EQU    57          FNT ENTRY RELATIVE ADDRESS IN NFL
  
****
          TITLE  MAIN ROUTINE.
 DRF      SPACE  4,10 
**        DRF - MAIN ROUTINE. 
  
  
          ORG    5
 DRF      SUBR               ENTRY/EXIT 
          LJM    IFP         IDENTIFY AND EXECUTE FILE PROCESSOR
 EZO      SPACE  4,25 
**        EZO - EXECUTE ZERO-LEVEL OVERLAY. 
* 
*         ENTRY  (A) = OVERLAY NAME.
*                (FA) = RELATIVE FNT ADDRESS IN NFL.
*                (FS - FS+4) = FST INFORMATION. 
*                ((OVL)-1) = FLAGS. 
* 
*         EXIT   (A) = (FA) = 0.
* 
*         ERROR  TO *DRFX* IF MASS STORAGE DEVICE INACCESSIBLE. 
* 
*         CALLS  EXR, *0DQ*, *0FA*, *0PT*, *0RF*, *0RP*, *0RT*. 
* 
*         MACROS EXECUTE. 
  
  
 EZO      BSS    0
          EXECUTE 0DQ,= 
          EXECUTE 0FA,= 
          EXECUTE 0PT,= 
          EXECUTE 0RF,= 
          EXECUTE 0RP,= 
          EXECUTE 0RT,= 
          RJM.   EXR
          PJN    DRF2        IF NO INACCESSIBLE DEVICE ERROR
          NFA    FA,R 
          ADN    FSTL        RESTORE FST INFORMATION
          CRD    FS 
          LCN    0
 DRF1     UJN    DRFX        EXIT 
  
 DRF2     UJN    *+2         CHECK EQUIPMENT ASSIGNED 
 DRFA     EQU    DRF2 
          UJN    PFT4        CONTINUE WITH *0RF* CALL 
  
 DRF3     LDC    0
 DRFB     EQU    *-1
          ZJN    DRF4        IF NOT TO RELEASE EQUIPMENT
          STD    CM+1 
          MONITOR  DEQM      RELEASE ASSIGNED EQUIPMENT 
  
*         CLEAR FNT ENTRY IN NFL. 
  
 DRF4     LDD    FA          SET RELATIVE FNT ADDRESS 
          STD    CM+4 
          LDN    DLFS        SELECT DELETE LOCAL FILE 
          STD    CM+1 
          MONITOR  PLFM      CLEAR FNT ENTRY
*         LDN    0
          STD    FA 
          UJN    DRFX        EXIT 
 PFT      SPACE  4,30 
**        PFT - RELEASE PERMANENT FILE. 
* 
*         USES   CM - CM+4. 
* 
*         CALLS  EZO. 
* 
*         MACROS MONITOR, NFA, SFA. 
* 
*         NOTE   LOADING *0FA*, *0OD*, *0PT*, *0RF*, *0RP*, OR *0RT*
*                AND THEIR PARAMETERS OVERLAYS CODE STARTING AT *PFT*.
* 
*                *0FA* IS CALLED TO RETURN A PERMANENT FILE FOR 
*                WHICH A MATCHING FAST-ATTACH FNT ENTRY WAS FOUND.
* 
*                *0OD* IS CALLED TO RETURN ALL OPTICAL DISK FILES.
*                *OPT* IS CALLED TO CLEAR THE PRIMARY FILE POINTERS 
*                IN THE JOB EJT ENTRY WHEN DROPPING THE PRIMARY FILE. 
* 
*                *0RP* IS CALLED TO RETURN ALL OTHER PERMANENT FILES. 
* 
*                *0RF* IS CALLED AFTER *0RP* TO DECREMENT THE JOB 
*                RESOURCE COUNTS WHENEVER THE PERMANENT FILE IS THE 
*                LAST DIRECT ACCESS FILE ATTACHED TO THIS JOB THAT
*                RESIDES ON A SPECIFIC REMOVABLE AUXILIARY PACK.
* 
*                *0RT* IS CALLED FOR ALL FILES ASSIGNED TO TAPE 
*                EQUIPMENT (*MT*, *NT*, *CT*, *AT* OR *TE*) TO CLEAR
*                THE ASSOCIATED VSN FILE ENTRY AND TO DECREMENT THE 
*                JOB RESOURCE COUNTS. 
  
  
 PFT4     LDN    5           FLAG *0RP* PROCESSING COMPLETED
          STD    FS+1 
          NFA    FA,R        STORE FST (FIRST TRACK BYTE CLEAR) 
          ADN    FSTL 
          CWD    FS 
          AOM    DRFA-OVL    ENABLE DELETION OF FNT ENTRY 
 PFT5     LDM    -1-OVL      GET *0DF* PARAMETER WORD 
          LPN    1
          STM    -1          SET RESOURCE UPDATE CONTROL
          LDC    3R0RF
          LJM    EZO-OVL     LOAD AND EXECUTE *0RF* 
  
  
 OVL      EQU    *+1         ZERO-LEVEL OVERLAY LOAD ADDRESS
  
  
 PFT      BSS    0           ENTRY
          LDD    CM+3        SET FILE MODE
          LPN    77 
          STM    OVL-1       SET *0RP* PARAMETER WORD 
          LDD    FS+4        CHECK FILE TYPE
          SHN    21-12
          PJN    PFT1        IF NOT FAFT
          LDC    2RFA        SET *0FA* CALL 
          STM    EZOA 
 PFT1     SFA    EST,FS      FETCH EST ENTRY
          ADK    EQDE 
          CRD    CM 
          LDD    CM+4 
          SHN    3
          ADN    MDGL 
          CRD    CM 
          LDD    CM 
          SHN    0-12 
          LMN    3
          NJN    DRF5        IF NOT REMOVABLE AUXILIARY DEVICE
          LDD    FA 
          STD    CM+4        SET RELATIVE FNT ADDRESS 
          LDN    DLCS 
          STD    CM+1 
          MONITOR  PLFM      COUNT FILES ATTACHED ON DEVICE 
          SOD    CM+3 
          NJN    DRF5        IF NOT LAST FILE 
  
*         PROCESS LAST FILE ON A REMOVABLE AUXILIARY DEVICE.
  
          LDD    FS+1 
          SHN    0-13 
          NJN    PFT3        IF *0RP* NOT YET CALLED
          LDN    OVL
          RAD    LA 
          LDD    FS+1 
          NJN    PFT2        IF INTERMEDIATE PROCESSING STATE 
          LJM    PFT4-OVL    DECREMENT RESOURCE COUNTS
  
 PFT2     LJM    PFT5-OVL    CONTINUE PROCESSING
  
 PFT3     SOM    DRFA        ENABLE *0RF* PROCESSING
  
*         SET ZERO-LEVEL OVERLAY ENTRY CONDITIONS.
  
 DRF5     LDN    OVL         ADJUST LOAD ADDRESS
          RAD    LA 
          LDC    3R0RP       SET OVERLAY NAME 
 EZOA     EQU    *-1
          LJM    EZO-OVL     EXECUTE OVERLAY
 IFP      SPACE  4,15 
**        IFP - IDENTIFY FILE PROCESSOR.
* 
*         ENTRY  (FA) = FNT ENTRY RELATIVE ADDRESS IN NFL.
* 
*         EXIT   TO FILE PROCESSORS WITH FOLLOWING -
*                (A) = 2. 
*                (T8) = CHECKPOINT REQUEST. 
*                (CM - CM+4) = FNT ENTRY. 
*                (FS - FS+4) = FST INFORMATION. 
* 
*         USES   T1.
* 
*         MACROS MONITOR, NFA.
  
  
 IFP      BSS    0           ENTRY
          LDM    -1          CHECK *DROP ROFT* FLAG 
          LPN    2
          NJN    IFP1        IF *ROFT* FILE TO BE DROPPED 
          STM    TFTY+ROFT   CLEAR PROCESSOR
 IFP1     LDD    FA 
          ZJN    IFP2        IF NO FNT ADDRESS
          NFA    FA,R 
          CRD    CM          READ FNT 
          ADN    FSTL 
          CRD    FS 
          LDD    CM+4        GET FILE TYPE
          SHN    -6 
          SBN    MXFT 
          PJN    IFP2        IF ILLEGAL FILE TYPE 
          ADC    TFTY+MXFT   SET TABLE ADDRESS
          ADD    LA 
          STD    T1 
          LDI    T1 
          NJN    IFP3        IF PROCESSOR PRESENT 
 IFP2     MONITOR  HNGM      HANG PP
*         LDN    0
          LJM    DRFX        EXIT 
  
 IFP3     LPC    3777        SET PROCESSOR ADDRESS
          STM    IFPA 
          LMI    T1          SET CHECKPOINT REQUEST 
          STD    T8 
          LDN    2
          LJM    *           EXIT TO FILE PROCESSOR 
 IFPA     EQU    *-1
 TFTY     SPACE  4,10 
**        TFTY - TABLE OF FILE TYPE PROCESSORS. 
* 
*         ENTRY  1 WORD.
*         INDEXED BY FILE TYPE. 
* 
*T,       1/C, 11/ADDR
* 
*         C = CHECKPOINT REQUEST. 
*         ADDR = ADDRESS OF FILE PROCESSOR. 
  
  
 TFTY     INDEX 
  
          INDEX  INFT,INP+4000  INPUT 
          INDEX  QFFT,QUE+4000  QUEUED = DROP FILE
  
          INDEX  ROFT,RFA    ROLLOUT = RELEASE FILE 
*         INDEX  ROFT,0      (IF *ROFT* FILE ILLEGAL) 
          INDEX  LIFT,LIB    LIBRARY
          INDEX  PTFT,PTY    PRIMARY
  
          INDEX  PMFT,PFT    PERMANENT = 0RP
          INDEX  SYFT,SYS    SYSTEM FILE TYPE 
          INDEX  LOFT,RFA    LOCAL FILE TYPE = DROP FILE
          INDEX  MXFT 
 LIB      TITLE  FILE TYPE PROCESSORS.
 LIB      SPACE  4,20 
**        LIB - PROCESS LIBRARY FILE. 
* 
*         EXIT   TO *SYS*.
*                IF THE TRACK INTERLOCK BIT (BIT 11 OF FST BYTE 4)
*                IS SET, THE TRACK INTERLOCK ON THE FIRST TRACK IS
*                CLEARED.  IF THE PF ACTIVITY BIT (BIT 3 OF FUT BYTE 2) 
*                IS SET, THE PF ACTIVITY COUNT FOR THAT EQUIPMENT 
*                IS DECREMENTED.
* 
*         USES   CM - CM+4. 
* 
*         MACROS MONITOR, NFA.
  
  
 LIB      BSS    0           ENTRY
          LDD    FS+4        CHECK TRACK INTERLOCK
          SHN    21-11
          PJN    LIB1        IF INTERLOCK NOT SET 
          LDD    FS+1 
          STD    CM+2 
          LDD    FS          SET EST ORDINAL
          STD    CM+1 
          LDN    CTIS        SELECT CLEARING OF TRACK INTERLOCK 
          STD    CM+3 
          MONITOR  STBM      CLEAR INTERLOCK
 LIB1     NFA    FA,R        READ *FUTL* WORD OF FNT
          ADN    FUTL 
          CRD    CM 
          LDD    CM+2 
          LPN    10 
          ZJN    LIB2        IF PF ACTIVITY BIT NOT SET 
          LDD    FS 
          STD    CM+1 
          LDN    DPAS        DECREMENT PF ACTIVITY
          STD    CM+3 
          MONITOR  STBM 
 LIB2     LJM    SYS         RETURN SYSTEM FILE 
 INP      SPACE  4,15 
**        INP - PROCESS INPUT FILE. 
* 
*         EXIT   TO *DRFX*, IF INPUT FILE IS CONTROL STATEMENT FILE.
*                TO *RFA*, IF NOT CONTROL STATEMENT FILE. 
* 
*         MACROS NFA. 
  
  
 INP      BSS    0           ENTRY
          LDC    FNTN        CHECK FNT RELATIVE ADDRESS 
          LMD    FA 
          NJN    INP2        IF NOT CONTROL STATEMENT FILE
          LDD    CM+4 
          SCN    77          CHANGE FILE NAME TO -INPUT*- 
          RAM    INPB+4 
          AOD    FS+4        SET STATUS COMPLETE
          LDD    LA 
          RAM    INPA 
          NFA    FA,R 
          CWM.   INPB,ON     REWRITE FILE NAME
 INPA     EQU    *-1
          ADK    FSTL-1      STORE FILE STATUS
          CWD    FS 
          LDN    0
          LJM    DRFX        EXIT 
  
 INP2     LDN    0
          UJN    RFA         RELEASE FILE ASSIGNMENT
  
  
 INPB     VFD    42/6LINPUT*,6/1,12/NDST
 PTY      SPACE  4,10 
**        PTY - PROCESS PRIMARY FILE. 
* 
*         EXIT   TO *RFA*.
* 
*         USES   CM - CM+4. 
  
  
 PTY      BSS    0           ENTRY
          LDD    CP 
          ADN    TFSW 
          CRD    CM 
          LDN    0           CLEAR PRIMARY FILE RELATIVE ADDRESS
          STD    CM+1 
          LDD    CP 
          ADN    TFSW 
          CWD    CM 
          LDN    1
*         UJN    RFA         RELEASE FILE ASSIGNMENT
 QUE      SPACE  4,10 
**        QUE - PROCESS QUEUE FILE. 
* 
*         EXIT   TO *RFA*.
  
  
 QUE      EQU    INP2 
 SYS      SPACE  4,10 
**        SYS - PROCESS SYSTEM FILE.
* 
*         EXIT   TO *DRF3*. 
  
  
 SYS      EQU    DRF3 
 RFA      SPACE  4,25 
**        RFA - RELEASE FILE ASSIGNMENT.
* 
*         ENTRY  (A) = 0 IF QUEUE FILE. 
*                    = 1 IF PRIMARY FILE. 
*                    = 2 FOR OTHER FILE TYPES.
*                (T8) = CHECKPOINT REQUEST. 
*                (FA) = FNT ADDRESS.
*                (FS - FS+4) = FST INFORMATION. 
* 
*         EXIT   TO *DRF5* TO LOAD AND EXECUTE -
*                            *0DQ* IF QUEUE FILE. 
*                            *0OD* IF OPTICAL DISK FILE.
*                            *0PT* IF PRIMARY FILE. 
*                            *0RT* IF TAPE FILE.
*                TO *SYS* FOR ALL OTHER FILES.
* 
*         USES   T2, QA, CM - CM+4. 
* 
*         CALLS  RMS. 
* 
*         MACROS SFA. 
  
  
 RFA      BSS    0           ENTRY
          STD    T2 
          LDM    -1          SET RETURN / UNLOAD FLAG 
          LPN    1
          STM    OVL-1
          LDD    FS 
          ZJN    RFA3        IF EST ORDINAL ZERO
          SFA    EST
          ADK    EQDE        READ EST ENTRY 
          CRD    CM 
          LDD    CM          CHECK EQUIPMENT TYPE 
          SHN    21-13
          PJN    RFA6        IF NOT MASS STORAGE
          SOD    T2 
          MJN    RFA2        IF QUEUE FILE
          RJM    RMS         RELEASE MASS STORAGE SPACE 
          LDD    T2 
          NJN    RFA3        IF NOT PRIMARY FILE
          STD    FS 
          STD    FS+1 
          LDC    2RPT        SELECT *0PT* 
 RFA1     STM    EZOA 
          LJM    DRF5        LOAD AND EXECUTE OVERLAY 
  
 RFA2     LDD    FS+1 
          NJN    RFA4        IF FILE USED 
 RFA3     LJM    SYS         DELETE FNT ENTRY 
  
 RFA4     LDN    0           SELECT QFT SEARCH
          STD    QA 
          STM    OVL-1       RELEASE DISK SPACE 
          LDC    2RDQ 
          UJN    RFA1        LOAD AND EXECUTE *0DQ* 
  
 RFA6     LDD    CM+3        CHECK DEVICE TYPE
          LMC    2RNT 
          ZJN    RFA8        IF TAPE DEVICE 
          LMC    2RMT&2RNT
          ZJN    RFA8        IF TAPE DEVICE 
          LMC    2RCT&2RMT
          ZJN    RFA8        IF TAPE DEVICE 
          LMC    2RAT&2RCT
          ZJN    RFA8        IF TAPE DEVICE 
          LDD    CM 
          SHN    21-12
          MJN    RFA7        IF ALLOCATABLE DEVICE
          LDD    FS 
          LPC    777
          STM    DRFB        SET EQUIPMENT TO RELEASE 
 RFA7     LDD    CM+3        CHECK DEVICE TYPE
          LMC    2RTE 
          ZJN    RFA8        IF *TE*
          LMC    2ROD&2RTE
          NJP    RFA3        IF NOT *OD*
          LDC    2ROD        SET *0OD* OVERLAY
          STM    RFAA 
 RFA8     LDD    FS+2 
          LPN    77          ISOLATE RANDOM ADDRESS 
          STD    FS+2 
          LDD    FS+4 
          SHN    21-2 
          MJN    RFA9        IF PREVIOUS *0RT* REJECT 
          SHN    2-21 
          STD    FS+4 
 RFA9     LDC    2RRT 
*         LDC    2ROD        (IF OPTICAL DISK)
 RFAA     EQU    *-1
          UJP    RFA1        LOAD AND EXECUTE *0RT* OR *0OD*
 RMS      SPACE  4,15 
**        RMS - RELEASE MASS STORAGE. 
* 
*         ENTRY  (FA) = FNT ENTRY RELATIVE ADDRESS IN NFL.
*                (T8) = CHECKPOINT REQUEST. 
*                (FS - FS+4) = FST INFORMATION. 
* 
*         USES   CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 RMS      SUBR               ENTRY/EXIT 
          LDD    FS+1 
          ZJN    RMSX        IF FILE UNUSED 
          STD    CM+2 
          LDD    FS 
          LMD    T8          MERGE CHECKPOINT REQUEST 
          STD    CM+1 
          MONITOR DTKM       DROP TRACKS
  
*         INCREMENT PRU LIMIT FIELD IN CONTROL POINT AREA.
*         ACTUAL COUNT OF SECTORS RETURNED VIA DTKM IS IN CM+3 - CM+4.
  
          LDN    CICS        INCREMENT CP AREA FIELD FUNCTION CODE
          STD    CM 
          LDK    ACLW        ADDRESS OF MASS STORAGE SECTOR LIMIT 
          STD    CM+1 
          LDN    0D*100+18D  POSITION AND WIDTH OF LIMIT FIELD
          STD    CM+2 
          LDD    MA          UADM FUNCTION MESSAGE BUFFER CONTENTS
          CWD    CM 
          LDN    1           SET UADM REQUEST COUNT AND NO DROP OF PPU
          STD    CM+1 
          STD    CM+2 
          MONITOR UADM       INCREMENT MASS STORAGE SECTOR LIMIT
*         LDN    0
          UJN    RMSX        RETURN 
          SPACE  4,10 
          RSTR               RESTORE INSTRUCTIONS 
 OVERFLOW SPACE  4,10 
**        OVERFLOW CHECKS.
* 
*         BYTES WHICH CAN BE ADDED BEFORE *OVL* IN *0DF*
*         AND STILL ALLOW *0DQ*, *0FA*, *0PT*, *0RF*, *0RP*, AND
*         *0RT* TO LOAD.
  
  
          ERRNG  ZDFL-OVL-ZDQL  CHECK LENGTH OF *0DQ* 
          ERRNG  ZDFL-OVL-ZFAL  CHECK LENGTH OF *0FA* 
          ERRNG  ZDFL-OVL-ZODL  CHECK LENGTH OF *0OD* 
          ERRNG  ZDFL-OVL-ZPTL  CHECK LENGTH OF *0PT* 
          ERRNG  ZDFL-OVL-ZRFL  CHECK LENGTH OF *0RF* 
          ERRNG  ZDFL-OVL-ZRPL  CHECK LENGTH OF *0RP* 
          ERRNG  ZDFL-OVL-ZRTL  CHECK LENGTH OF *0RT* 
  
          ERRNG  ZDFL-*      BYTES WHICH CAN BE ADDED TO *0DF*
  
          END 
