*COMDECK PBLLRMOV 
_$J+? 
_*****************************
*                            *
*        PBLLRMOV            *
* UNCHAIN ENTRY FROM ACT LCB *
*                            *
*****************************?
_$R-,G-,I-     NON-RECURSIVE
               INTERRUPTABLE ?
_***********************************************************************
*                                                                      *
**OVERVIEW- PBLLRMOV UNCHAINS AN ENTRY FROM THE ACTIVE LCB             *
*           CHAIN AND UPDATES THE GLOBAL STRUCTURE CELCBACT            *
*           CONTAINING THE POINTERS TO THE FIRST AND LAST              *
*           ACTIVE LCBS. IF THE LCB BEING REMOVED IS THE NEXT          *
*           STATISTIC LCB TO DUMP (CUNXTLCB), IS                       *
*           ADVANCED TO THE NEXT ACTIVE LCB.                           *
*                                                                      *
**INPUT-  LINE NO. OF LCB TO REMOVE.                                   *
*                                                                      *
**OUTPUT-  UPDATED CHAIN OF ACTIVE LCBS.                               *
*                                                                      *
**EXTERNAL SUBROUTINES- NONE                                           *
*                                                                      *
***********************************************************************?
PROCEDURE PBLLRMOV (LINENO : B0LINO); 
VAR ACTLCB,                                 _ CURRENT ACTIVE LCB       ?
    PREVLCB : BZLCBP;                       _ PREVIOUS ACTIVE LCB      ?
BEGIN 
  WITH CELCBACT DO                          _ FIRT, LAST ACTIVE LCBS   ?
  BEGIN 
    ACTLCB := CEFRST;                       _ PRIME                    ?
    PREVLCB:= CEFRST;                       _  POINTERS                ?
    WHILE NIL " ACTLCB DO                   _ LOOP THRU ACTIVE LCBS    ?
    WITH ACTLCB' DO 
    BEGIN 
      IF LINENO = BZLINO THEN               _ TEST FOR ENTRY TO REMOVE ?
      BEGIN 
        IF ACTLCB = PREVLCB                 _ TEST IF 1ST ENTRY        ?
        THEN CEFRST := BZTMRCHN             _ YES - UNCHAIN 1ST ENTRY  ?
        ELSE PREVLCB'.BZTMRCHN := BZTMRCHN; _ NO  - UNCHAIN ENTRY      ?
        IF CUNXTLCB = ACTLCB THEN           _ LCB REMOVED NEXT STAT BLK?
        BEGIN 
          CUNXTLCB := BZTMRCHN;             _ CHAIN TO NEXT ACTIVE LCB ?
        END;
        BZTMRCHN := NIL;                    _ZERO OLD TIMER CHAIN      ?
        ACTLCB := NIL;                      _ CAUSE EXIT FROM LOOP     ?
      END 
      ELSE
      BEGIN 
        PREVLCB := ACTLCB;                  _ SAVE CURRENT LCB         ?
        ACTLCB  := BZTMRCHN;                _ CHAIN TO NEXT LCB        ?
      END;
    END;
    IF NIL = PREVLCB'.BZTMRCHN              _ TEST FOR END OF CHAIN    ?
    THEN CELST := PREVLCB;                  _ YES- SET UP LAST LCB PTR ?
  END; _WITH? 
END;   _PBLLRMOV? 
