*DECK DB$LKRU 
USETEXT CDCSCTX 
      PROC DB$LKRU((AREAFLAG)); 
      BEGIN 
 #
* *   DB$LKRU - RELEASE RUN-UNIT RECORD LOCKS    PAGE  1
* *   P. A. MURRAY                               DATE  09/24/80 
* 
* DC  PURPOSE 
* 
*     TO RELEASE ALL OF THE RECORD LOCKS FOR A RUN-UNIT.
* 
* DC  ENTRY CONDITIONS
* 
*     PARAMETERS
# 
      ITEM AREAFLAG B;       # TRUE = DELETE AREA LOCKS                #
# 
*     ASSUMPTIONS 
* 
*     P<RSB> IS SET 
*     P<CSFIXED> IS SET 
*     TQT POINTER IS SET. 
* 
* DC  EXIT CONDITIONS 
* 
*     ALL OF THE RECORD LOCKS FOR THE RUN-UNIT ARE DELETED. 
*     IF AREAFLAG = TRUE, AREA LOCKS ARE ALSO DELETED.
* 
* DC  CALLING ROUTINES
* 
*     DB$CMT$ - COMMIT TRANSACTION SYMBIONT 
*     DB$DRP$ - DROP TRANSACTION SYMBIONT 
      DB$LOK  - CDCS LOCK PROCESSOR 
* 
* DC  CALLED ROUTINES 
# 
      XREF PROC DB$FLOP;     # GENERATE FLOW POINT                     #
      XREF PROC DB$LOKD;     # DELETE LOCK ENTRY                       #
# 
* DC  NON-LOCAL VARIABLES MODIFIED
* 
*     NONE
* 
* DC  DESCRIPTION 
* 
*     LOOP THROUGH THE AREA CONTROL BLOCK ENTRIES IN THE RSB.  FOR EACH 
*     AREA, CALL DB$LOKD TO DELETE ALL THE RECORD LOCKS.
*     ALSO DELETE AREA LOCKS IF AREAFLAG PARAMETER IS TRUE. 
* 
 #
  
# 
*     LOCAL VARIABLES 
# 
      ITEM AREAOFFSET;       # OFFSET IN RSB FOR AREA BLOCK            #
      ITEM SAVEARBLK I ;     # SAVE RSB AREA CONTROL BLOCK POINTER     #
  
  
#     S T A R T   O F   D B $ L K R U   E X E C U T A B L E   C O D E .#
  
  
      CONTROL IFGR DFFLOP,0;
        DB$FLOP("LKRU   "); 
      CONTROL ENDIF;
  
      RCMLOK[0] = FALSE;     # TO BE SURE WE DELETE ALL LOCKS          #
      SAVEARBLK = P<RSARBLK>; 
      FOR AREAOFFSET=DFRSBFIX + (CSFARENO[0] -1) * DFARECON 
      STEP -DFARECON  UNTIL DFRSBFIX
      DO
        BEGIN 
        P<RSARBLK> = LOC(RSB) + AREAOFFSET; 
        IF RSARALT[0] GR 0
        THEN
          BEGIN 
          DB$LOKD(AREAFLAG);
          END 
        END 
      P<RSARBLK> = SAVEARBLK; 
      RETURN; 
      END 
      TERM; 
