COMPSFI 
COMMON
          CTEXT  COMPSFI - SET FILE INTERLOCK.
          SPACE  4
 QUAL$    IF     -DEF,QUAL$ 
          QUAL   COMPSFI
 QUAL$    ENDIF 
*         COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          BASE   MIXED
          SPACE  4
***       SFI - SET FILE INTERLOCK. 
*         R. A. JAPS.        76/04/01.
*         J. L. LARSON.      81/09/17.
          SPACE  4
***       *SFI* SETS OR CLEARS THE INTERLOCK FOR THE SPECIFIED
*         ENTRY IN THE EJT, QFT, OR SYSTEM FNT. 
* 
*         IF SFI$ IS DEFINED, CONTROL IS RETURNED TO THE CALLER 
*         IF THE FILE IS NOT INTERLOCKED. 
* 
*         ENTRY  (A) = ABSOLUTE ADDRESS OF ENTRY TO INTERLOCK.
*                (T1) = INTERLOCK FUNCTION. 
*                       *CEIN* = CLEAR EJT ENTRY INTERLOCK AND CHECK
*                       FOR JOB ADVANCE (NEEDED WHEN INTERLOCKED JOB
*                       IS AT A CONTROL POINT OTHER THAN THAT OF THE
*                       REQUESTING PP). 
*                       *CFIN* = CLEAR INTERLOCK. 
*                       *SFIN* = SET INTERLOCK. 
*                       *VFIN* = VERIFY FILE NAME AND SET INTERLOCK.
*                (MB) = *UTEM* ENTRY TO VERIFY FILE NAME IF 
*                       *VFIN* OPTION SELECTED. 
* 
*         EXIT   (A) = 0, IF OPERATION COMPLETE.
*                    = 1, IF INTERLOCK ALREADY SET (*SFI$* ONLY 
*                         FOR *SFIN* OR *VFIN* OPTION). 
*                    = 2, IF FILE NAME DID NOT MATCH (*VFIN* ONLY). 
*                    = 3, IF ENTRY TO SET INTERLOCK ON IS NOT IN USE
*                         (FOR *SFIN* OR *VFIN* OPTION).
*                    .GT. 3, IF *ORET* ERROR FLAG SET WHILE WAITING 
*                         TO SET INTERLOCK (*SFI$* NOT DEFINED FOR
*                         *SFIN* OR *VFIN* OPTION). 
* 
*         USES   T0, T1, T2, CM - CM+4. 
* 
*         NOTES  *SFI* CAN BE USED TO ISSUE ANY *UTEM* SUBFUNCTION
*                IF *SFI$* IS DEFINED, SO CALLER IS RESPONSIBLE FOR 
*                ALL *UTEM* RETURN STATUS PROCESSING. 
  
  
 SFI$     IF     -DEF,SFI$
 SFI4     LDD    CM+1        RETURN REJECT STATUS 
 SFI$     ENDIF 
  
 SFI      SUBR               ENTRY/EXIT 
 SFI$     IF     -DEF,SFI$
          STD    T2          SAVE ABSOLUTE ADDRESS OF ENTRY 
          SHN    -14
          SHN    6
          RAD    T1 
 SFI1     LDD    T2          SET ABSOLUTE ADDRESS OF ENTRY
          STD    CM+4 
          LDD    T1 
          SHN    14 
          STD    CM+3 
          SHN    -14
 SFI$     ELSE
          STD    CM+4        SET ABSOLUTE ADDRESS OF ENTRY
          SHN    -14
          STD    CM+3 
          LDD    T1 
 SFI$     ENDIF 
          STD    CM+1        SET NUMBER OF REQUESTS AND INTERLOCK FLAG
          MONITOR  UTEM      VERIFY AND/OR INTERLOCK FILE 
          LDD    CM+1 
 SFI$     IF     DEF,SFI$ 
          UJN    SFIX        RETURN 
 SFI$     ELSE
          ZJN    SFIX        IF OPERATION COMPLETE
          SBN    2
 SFI2     PJN    SFI4        IF FILE NAME MISMATCH OR ENTRY NOT USED
  
*         DELAY BEFORE RETRY. 
  
          LDD    HN          DELAY 128*64 MICRO SECONDS 
          STD    T0 
 SFI3     SOD    T0 
          MJN    SFI1        IF DELAYED ENOUGH
          PAUSE 
          DELAY 
          LDD    CM+1 
          LMN    ORET 
          ERRNG  ORET-4      RETURN STATUS DEPENDS ON VALUE 
          ZJN    SFI2        IF OPERATOR OVERRIDE 
          UJN    SFI3        CONTINUE DELAY 
 SFI$     ENDIF 
          SPACE  4
 QUAL$    IF     -DEF,QUAL$ 
          QUAL   *
 SFI      EQU    /COMPSFI/SFI 
 QUAL$    ENDIF 
          BASE   *
          ENDX
