*DECK QUEOFF
USETEXT COMCBEG 
USETEXT COMRAPL 
USETEXT COMRNET 
USETEXT COMRNDR 
USETEXT COMRQUE 
PROC QUEOFF;
# TITLE QUEOFF - CREATE NAD OFF QUEUE ENTRY.  # 
  
      BEGIN  # QUEOFF # 
  
# 
**    QUEOFF - CREATE NAD OFF QUEUE ENTRY.
* 
*     CREATE NAD OFF QUEUE ENTRY. 
* 
*     ENTRY   - NDR$COMMUN IS BASED ARRAY CONTAINING COMMUNICATION AREA.
*               NAD$ENTRY IS BASED ARRAY CONTAINING LOCAL NAD ENTRY.
*               IF PATH ERROR --- 
*               APL$HEADER IS BASED ARRAY CONTAINING APPLICATION TABLE. 
*               CONNECTION IS BASED ARRAY CONTAINING CONNECTION ENTRY.
* 
*     EXIT    - NAD OFF ENTRY QUEUED. 
* 
*     PROCESS - OBTAIN FREE QUEUE ENTRY.
*               INITIALIZE QUEUE TYPE TO NAD OFF. 
*               INITIALIZE LOCAL NAD ORDINAL. 
*               COPY PATH ERROR FLAG. 
*               IF NOT PATH ERROR 
*               THEN: 
*                 SET LOCAL NAD OFF.
*               ELSE: 
*                 COPY ACN AND APPLICATION TABLE ADDRESS. 
*               QUEUE ON NAD OFF QUEUE. 
*               RETURN. 
# 
  
# 
****  PROC QUEOFF - XREF LIST BEGIN.
# 
      XREF
        BEGIN 
        PROC GETFREE;                # OBTAIN FREE QUEUE ENTRY #
        PROC QUEUE;                  # QUEUE #
        END 
  
# 
****  PROC QUEOFF - XREF LIST END.
# 
  
  
CONTROL EJECT;
  
      GETFREE;
      QU$TYPE = QT$NADOFF;
      QU$NADORD = NDR$NADORD; 
      QU$PTHERR = NDR$PTHERR; 
      IF NOT NDR$PTHERR 
      THEN
        BEGIN  # SET EST OFF #
        NAD$ESTOFF = TRUE;
        NAD$PREVOF = TRUE;
        IF NDR$RTNCOD EQ RTN$OFF
        THEN
          BEGIN 
          QU$DAYF = TRUE; 
          END 
  
        ELSE
          BEGIN 
          QU$DAYF = FALSE;
          END 
        END 
  
      ELSE
        BEGIN  # IDENTIFY PATH #
        QU$ACN = (P<CONNECTION> - P<APL$HEADER> - APL$LENGTH) 
                   /CON$LENGTH + APL$MINACN;
        QU$APPL = P<APL$HEADER>;
        END 
  
      QUEUE(LOC(NADOFFQ));
      RETURN; 
      END  # QUEOFF # 
  
      TERM
