*DECK DB$LNKD 
USETEXT CUGDFTX 
      PROC DB$LNKD(BLOCK);
      BEGIN 
 #
* *   DB$LNKD -- DELETE LINKED BLOCK             PAGE  1
* *   C O GIMBER                                 11/05/75 
* 
* DC  PURPOSE 
* 
*     THIS PROC DELINKS A BLOCK FROM A LINKED CHAIN OF BLOCKS.
* 
* DC  ENTRY CONDITIONS
* 
*     PARAMETERS
# 
      ITEM BLOCK;            #ADDRESS OF BLOCK TO BE DELINKED#
# 
* DC  EXIT CONDITIONS 
* 
*     BLOCK IS DELINKED AND MEMORY RETURNED.
*     PARAMETER CONTAINS ADDRESS OF NEXT BLOCK IN CHAIN.
* 
* DC  CALLED ROUTINES 
# 
      XREF PROC DB$MFF;      #FREE FIXED BLOCK# 
# 
* DC  NON-LOCAL VARIABLES 
# 
      XREF ARRAY DB$RA0;
        BEGIN 
        ITEM PRIOR(0,24,18); #PRIOR AND NEXT POINTERS MUST BE IN# 
        ITEM NEXT(0,42,18);  #THESE LOCATIONS OF THE FIRST WORD OF# 
                             #EACH BLOCK ENTRY TO BE DELINKED#
        END 
 #
# 
# 
*     LOCAL VARIABLES.
# 
      ITEM SAVED; 
  
  
#     B E G I N   D B $ L N K D   E X E C U T A B L E   C O D E .      #
  
      NEXT[PRIOR[BLOCK]] = NEXT[BLOCK]; 
      IF NEXT[BLOCK] NQ 0 THEN
        PRIOR[NEXT[BLOCK]] = PRIOR[BLOCK];
      SAVED = NEXT[BLOCK];
      NEXT[BLOCK] = DFNPTR;  # LEAVE INVALID LINKAGES IN THE OLD BLOCK #
      PRIOR[BLOCK] = DFNPTR;
      DB$MFF(BLOCK);
      BLOCK = SAVED;
      RETURN; 
      END 
      TERM; 
