*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