*DECK FCBRKR
USETEXT COMCBEG 
USETEXT COMRAPL 
USETEXT COMRNAM 
USETEXT COMRNET 
USETEXT COMRNDR 
USETEXT COMRQUE 
USETEXT COMRRTN 
PROC FCBRKR;
# TITLE FCBRKR - PROCESS SUPERVISORY MESSAGE FC/BRK/R. #
  
      BEGIN  # FCBRKR # 
  
# 
**    FCBRKR - PROCESS SUPERVISORY MESSAGE FC/BRK/R.
* 
*     FCBRKR PROCESSES THE FC/BRK/R SUPERVISORY MESSAGE REQUEST.
*     FC/ACK AND FC/RST ENTRIES ON THE MESSAGE QUEUE ARE DISCARDED. 
* 
*     PROC FCBRKR.
* 
*     ENTRY   - QU$ADDRESS IS BASED ARRAY COTAINING FC/BRK/R SUPR MSG.
*               APL$HEADER IS BASED ARRAY CONTAINING APPL HEADER. 
*               CONNECTION IS BASED ARRAY CONTAINING ACN. 
* 
*     EXIT    - NSUP UPDATED. 
*               FC/BRK CONTROL MESSAGE INITIATED. 
*               FC/ACK AND FC/RST ENTRIES ON MESSAGE QUEUE DISCARDED. 
* 
*     PROCESS - IF CONNECTION INITIALIZED NOT SET 
*                 OR FC/BRK IN PROGRESS BIT SET 
*               THEN: 
*                 QUEUE ON ERRLGL QUEUE.
*                 FREE QUEUE ENTRY. 
*               ELSE: 
*                 UPDATE NSUP.
*                 SET FC/BRK IN PROGRESS BIT
*                 GET FREE QUEUE ENTRY. 
*                 BUILD FC/BRK MESSAGE. 
*                 ADD ACN AND APPL TABLE ADDRESS. 
*                 SET FCBRK QUEUE TYPE. 
*                 INITIATE NAD REQUEST. 
*                 INITIATE DISCARD OF FC/ACK AND FC/RST MESSAGES. 
*               RETURN. 
* 
* 
****  PROC FCBRKR - XREF LIST BEGIN.
# 
  
      XREF
        BEGIN 
        PROC DISCARD;                # DISCARD FC/ACK AND FC/RST MSGS # 
        PROC GETFREE;                # OBTAIN FREE QUEUE ENTRY #
        PROC NADREQ;                 # INITIATE NAD REQUEST # 
        PROC QERRLGL;                # QUEUE ON ERR/LGL QUEUE # 
        PROC FREE;                   # FREE QUEUE ENTRY # 
        PROC RTNNSUP;                # RETURN NSUP REPLY #
        END 
  
# 
****  PROC FCBRKR - XREF LIST END.
# 
  
  
      ITEM RC         I;             # SAVE REASON CODE # 
  
CONTROL EJECT;
  
      IF NOT CON$INIT 
        OR CON$FC$BRK 
      THEN
        BEGIN 
        QERRLGL(LGL$PROTCL,0,QU$UCPA,QU$BLKHDR,QU$SUPWD1,0,0);
        FREE; 
        END 
  
      ELSE
        BEGIN 
        RC = QU$RC; 
        RTNNSUP;
        CON$FC$BRK = TRUE;
        CON$FCBRKS = TRUE;
        GETFREE;
        QU$WD2 = 0; 
        QU$WD3 = 0; 
        QU$WD4 = 0; 
        QU$WD5 = 0; 
        QU$WD6 = 0; 
        QU$WD7 = 0; 
        P<PTH$ENTRY> = CON$PATHAD;
        P<RMT$ENTRY> = PTH$RMTNAD;
        QU$TYPE = QT$OUTCTLM; 
        QU$RTYCNT = CTLMSGRTYC; 
        QU$APPL = P<APL$HEADER>;
        QU$ACN = (P<CONNECTION> - P<APL$HEADER> - APL$LENGTH) 
                 / CON$LENGTH + APL$MINACN; 
        QU$CTLNAD = RMT$NAD;
        QU$CTLDEST = RMT$DEST;
        QU$CTLACC = PTH$ACCESS; 
        QU$CTLLT = PTH$LTE; 
        QU$CTLNAME = "R" + O"100";
        QU$CTLPATH = CON$PATHID;
        QU$BLKTYP = BT$CMD; 
        QU$CTLP$ID = CON$PATHID;
        QU$CTLFC = $FCBRK;
        QU$CTLRC = RC;
        QU$CTLLGTH = BRKLENGTH; 
        NADREQ(PTH$NADORD); 
        DISCARD;
        END 
  
      RETURN; 
      END  # FCBRKR # 
  
      TERM
