*DECK LOCACK
USETEXT COMCBEG 
USETEXT COMRAPL 
USETEXT COMRNAM 
USETEXT COMRNDR 
USETEXT COMRQUE 
PROC LOCACK;
# TITLE LOCACK - CREATE LOCAL FC/ACK. # 
  
      BEGIN  # LOCACK # 
  
# 
**    LOCACK    - CREATE LOCAL FC/ACK.
* 
*     PROC LOCACK.
* 
*     ENTRY   - QU$ADDRESS IS BASED ARRAY CONTAINING WRITE REQUEST. 
*               NDR$COMMUN IS BASED ARRAY CONTAINING WRITE COMPLETION.
*               APL$HEADER IS BASED ARRAY CONTAINING APPLICATION TABLE. 
*               CONNECTION IS BASED ARRAY CONTAINING CONNECTION ENTRY.
* 
*     EXIT    - FC/ACK IS QUEUED FOR APPLICATION. 
* 
*     PROCESS - SAVE QU$ADDRESS.
*               OBTAIN A FREE QUEUE ENTRY.
*               INITIALIZE ABT, ACT, AND TLC. 
*               INITIALIZE FC/ACK.
*               INSERT ACN AND ABN. 
*               INITIATE SUPERVISORY REPLY. 
*               RESTORE QU$ADDRESS. 
*               RETURN. 
# 
  
# 
****  PROC LOCACK - XREF LIST BEGIN.
# 
      XREF
        BEGIN 
        PROC GETFREE;                # OBTAIN FREE QUEUE ENTRY #
        PROC SUPRPLY;                # INITIATE SUPERVISORY REPLY # 
        END 
  
# 
****  PROC LOCACK - XREF LIST END.
# 
  
  
      ARRAY [0:0] S(1); 
        BEGIN  # LOCACK PRESET #
        ITEM PRS$WD1    I(00,00,60);  # WORD ONE #
        ITEM PRS$FC     I(00,00,16) = [$FCACK];  # FC/ACK # 
        ITEM PRS$ACN    I(00,24,12);  # ACN # 
        ITEM PRS$ABN    I(00,36,18);  # ABN # 
        END 
  
      ITEM QUEADR     I;             # PRESERVES QUADDRESS BASED ARRAY #
  
CONTROL EJECT;
      QUEADR = P<QU$ADDRESS>; 
      GETFREE;
      $SUPTLC = 1;
      QU$BLKHDR = $SUPHDR;
      PRS$ACN = NDR$ACN;
      PRS$ABN = NDR$ABN;
      QU$SUPWD1 = PRS$WD1;
      QU$CHARGE = 0;
      QU$ERRLGL = FALSE;
      SUPRPLY;
      P<QU$ADDRESS> = QUEADR; 
      RETURN; 
  
      END  # LOCACK # 
  
      TERM
