*DECK FCRSTR
USETEXT COMCBEG 
USETEXT COMRAPL 
USETEXT COMRNAM 
USETEXT COMRNET 
USETEXT COMRNDR 
USETEXT COMRQUE 
USETEXT COMRRTN 
PROC FCRSTR;
# TITLE FCRSTR - PROCESS SUPERVISORY MESSAGE FC/RST/R. #
  
      BEGIN  # FCRSTR # 
  
# 
**    FCRSTR - PROCESS SUPERVISORY MESSAGE FC/RST/R.
* 
*     FCRSTR PRCESSES THE FC/RST/R SUPERVISORY MESSAGE REQUEST. 
* 
*     PROC FCRSTR.
* 
*     ENTRY   - QU$ADDRESS ISBASED ARRAY CONTAINING FC/RST/R SUPR MSG.
*               APL$HEADER IS BASEDARRAY CONTAINING APPL HEADER.
*               CONNECTION IS BASED ARRAY CONTAINING ACN. 
* 
*     EXIT    - NSUP UPDATED. 
*               FC/BRK IN PROGRESS BIT CLEARED. 
*               FC/RST CONTROL MESSAGE INITIATED. 
* 
*     PROCESS - IF CONNECTION INITIALIZED NOT SET 
*                 OR FC/BRK IN PROGRESS BIT NOT SET 
*                 OR FC/BRK SENT BY THIS SIDE 
*               THEN: 
*                 QUEUE ON ERRLGL QUEUE.
*                 FREE QUEUE ENTRY. 
*               ELSE: 
*                 UPDATE NSUP.
*                 CLEAR FC/BRK IN PROGRESS BIT. 
*                 GET FREE QUEUE. 
*                 BUILD FC/RST CONTROL MESSAGE. 
*                 ADD ACN AND APPL TABLE ADDRESS. 
*                 SET FC/RST QUEUE TYPE.
*                 INITIATE NAD REQUEST. 
*               RETURN. 
* 
* 
****  PROC FCRSTR - XREF LIST BEGIN.
# 
  
      XREF
        BEGIN 
        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;                # RETRUN NSUP REPLY #
        END 
  
# 
****  PROC FCRSTR - XREF LIST END.
# 
  
  
CONTROL EJECT;
  
      IF NOT CON$INIT 
        OR NOT CON$FC$BRK 
        OR CON$FCBRKS 
      THEN
        BEGIN 
        QERRLGL(LGL$PROTCL,0,QU$UCPA,QU$BLKHDR,QU$SUPWD1,0,0);
        FREE; 
        END 
  
      ELSE
        BEGIN 
        RTNNSUP;
        CON$FC$BRK = FALSE; 
        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 = $FCRST;
        QU$CTLLGTH = RSTLENGTH; 
        NADREQ(PTH$NADORD); 
        END 
  
      RETURN; 
      END  # FCRSTR # 
  
      TERM
