*DECK DELCDR
USETEXT NIPDEF
USETEXT ACNB
USETEXT ACB 
USETEXT AT
 PROC DELCDR((ACNBFWA)); # DELINK ACNB FROM CONNECTION DATA RING       #
 STARTIMS ; 
 #
*1DC  DELCDR
*     1. PROC NAME           AUTHOR              DATE 
*        DELCDR              E. GEE              85/04/02 
* 
*     2. FUNCTIONAL DESCRIPTION.
*        DELINK ACNB FROM THE CONNECTION DATA RING. 
* 
*     3. METHOD.
*        DELINK THE ACNB FROM THE CONNECTION DATA RING. 
*        IF ACB POINTS TO THIS ACNB,
*          UPDATE ACB T POINT TO NEXT ACNB IN CONNECTION DATA RING. 
* 
*     4. ENTRY PARAMETERS.
*        ACNBFWA             ADDRESS OF ACNB TO BE DELINKED 
* 
*     5. EXIT PARAMETERS. 
*        NONE.
* 
*     6. COMDECKS CALLED. 
*        ACB                 APPLICATION CONTROL BLOCK
*        ACNB                APPLICATION CONNECTION BLOCK 
*        AT                  APPLICATION TABLE
*        NIPDEF              CONSTANT DEFINITIONS 
* 
*     7. ROUTINES CALLED. 
*        XTRACE              TRACE PROCEDURE CALL 
* 
*     8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION.
*        NONE 
* 
 #
 STOPIMS; 
# 
      EXTERNAL REFERENCES 
# 
      XREF
        BEGIN 
        PROC XTRACE;
        END 
# 
      FORMAL PARAMETERS 
# 
      ITEM ACNBFWA    U;               # FWA OF ACNB TO BE DELINKED    #
# 
      LOCAL VARIABLES 
# 
      ITEM CDRBP      U;               # CDR BACK POINTER              #
      ITEM CDRFP      U;               # CDR FORWARD POINTER           #
      CONTROL EJECT;
  
      BEGIN                            # BEGIN DELCDR                  #
  
      CONTROL IFEQ DEBUG,1; 
      XTRACE("DECDR");
      CONTROL FI; 
  
      P<ACNB> = ACNBFWA;               # FWA OF ACNB TO BE DELINKED    #
      P<ACB> = ATACBA[ACNBAN[0]];      # FWA OF ACB                    #
      CDRFP = ACNBCDRFP[0];            # NEXT ACNB IN CDR              #
      CDRBP = ACNBCDRBP[0];            # PREVIOUS ACNB IN CDR          #
      ACNBCDRFP[0] = 0;                # CLEAR CDR POINTERS            #
      ACNBCDRBP[0] = 0; 
      P<ACNB> = 0;                     # DELINK REMOVED ACNB FROM CDR  #
      IF CDRFP EQ ACNBFWA 
      THEN                             # ONLY ACNB LEFT IN CDR         #
        BEGIN 
        ACBCDRP[0] = 0;                # CLEAR CDR POINTER IN ACB      #
        END 
      ELSE                             # RELINK CDR AROUND DELINKED ONE#
        BEGIN 
        ACNBCDRFP[CDRBP] = CDRFP; 
        ACNBCDRBP[CDRFP] = CDRBP; 
        IF ACNBFWA EQ ACBCDRP[0]
        THEN                           # ACNB IS POINTED TO BY ACB     #
          BEGIN 
          ACBCDRP[0] = CDRFP;          # NEW ACNB POINTED TO BY ACB    #
          END 
        END 
  
      RETURN; 
  
      END                              # END DELCDR                    #
TERM
