*DECK ACKQ
USETEXT COMCBEG 
USETEXT COMRAPL 
USETEXT COMRNET 
USETEXT COMRNDR 
USETEXT COMRQUE 
PROC ACKQ;
# TITLE ACKQ - CREATE ACKNOWLEDGE QUEUE ENTRY # 
  
      BEGIN  # ACKQ # 
  
# 
**    ACKQ    - CREATE ACKNOWLEDGE QUEUE ENTRY
* 
*     CREATE ACKNOWLEDGE QUEUE ENTRY. 
* 
*     PROC ACKQ.
* 
*     ENTRY   - NDR$COMMUN IS BASED ARRAY CONTAINING NDR COMMUNICATION. 
*               APL$HEADER IS BASED ARRAY CONTAINING APPLICATION TABLE. 
*               CONNECTION IS BASED ARRAY CONTAINING CONNECTION ENTRY.
* 
*     EXIT    - NDR$ACKQ POINTS TO ACKNOWLEDGE QUEUE ENTRY
* 
*     PROCESS - SAVE QU$ADDRESS POINTER.
*               OBTAIN FREE QUEUE ENTRY.
*               SAVE PTH$ENTRY AND RMT$ENTRY POINTERS.
*               ZERO CONTROL MESSAGE AREA.
*               POINT TO PATH ENTRY.
*               POINT TO REMOTE NAD ENTRY.
*               COPY NAD, DESTINATION, AND ACCESS CODE. 
*               COPY LOCAL TRUNK ENABLES. 
*               INITIALIZE FIRST PART OF NAME TO R. 
*               COPY PATH ID. 
*               INITIALIZE BLOCK TYPE TO BACK.
*               POINT NDR TO ACK QUEUE ENTRY. 
*               RESTORE PTH$ENTRY AND RMT$ENTRY POINTERS. 
*               RESTORE QU$ADDRESS POINTER. 
*               RETURN. 
# 
  
# 
****  PROC ACKQ - XREF LIST BEGIN.
# 
  
      XREF
        BEGIN 
        PROC GETFREE;                # GET FREE QUEUE ENTRY # 
        END 
  
# 
****  PROC ACKQ - XREF LIST END.
# 
  
  
      ITEM I I;                      # LOOP CONGROL VARIABLE #
      ITEM PTHADR I;                 # SAVE PTH$ENTRY POINTER # 
      ITEM RMTADR I;                 # SAVE RMT$ENTRY POINTER # 
      ITEM QUEADR I;               # SAVE QU$ADDRESS POINTER #
  
CONTROL EJECT;
  
      QUEADR = P<QU$ADDRESS>; 
      GETFREE;
      PTHADR = P<PTH$ENTRY>;
      RMTADR = P<RMT$ENTRY>;
      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$ACKMSG;
      QU$APPL = P<APL$HEADER>;
      QU$ACN = (P<CONNECTION> - P<APL$HEADER> - APL$LENGTH) 
               / CON$LENGTH + APL$MINACN; 
      QU$RTYCNT = CTLMSGRTYC; 
      QU$CTLNAD = RMT$NAD;
      QU$CTLDEST = RMT$DEST;
      QU$CTLACC = PTH$ACCESS; 
      QU$CTLLT = PTH$LTE; 
      QU$CTLNAME = "R" + O"100";
      QU$CTLP$ID = CON$PATHID;
      QU$CTLPATH = CON$PATHID;
      QU$BLKTYP = BACK; 
      NDR$ACKQ = P<QU$ADDRESS>; 
      P<PTH$ENTRY> = PTHADR;
      P<RMT$ENTRY> = RMTADR;
      P<QU$ADDRESS> = QUEADR; 
      RETURN; 
      END  # ACKQ # 
  
      TERM
