*DECK INITAPL 
USETEXT COMCBEG 
USETEXT COMRAPL 
USETEXT COMRQUE 
PROC INITAPL; 
# TITLE INITAPL - INITIALIZE APPLICATION TABLE HEADER # 
  
      BEGIN  # INITAPL #
  
# 
**    INITAPL - INITIALIZE APPLICATION HEADER.
* 
*     THIS PROCEDURE WILL INITIALIZE THE APPLICATION TABLE HEADER FOR 
*     A VALIDATED NETON REQUEST.
* 
*     PROC INITAPL. 
* 
*     ENTRY  -   QU$ADDRESS IS BASED ARRAY CONTAINING VALIDATED NETON 
*                APL$HEADER IS BASED ARRAY FOR NEW APPLICATION TABLE
* 
*     EXIT   -   APPLICATION TABLE INITIALIZED
* 
*     PROCESS  - SETUP APPLICATION TABLE HEADER 
*                IF APPLICATION IS SERVER 
*                THEN        "SCAN FOR REMOTE CONNECTION" 
*                  FOR EACH CONNECTION TABLE ENTRY: 
*                    IF REMOTE CONNECTION PENDING 
*                    THEN:  
*                      IF CONNECTION IN MINACN-MAXACN RANGE 
*                      THEN:  
*                        SEND CON/REQ/R TO NEWLY NETTED ON APPLICATION. 
*                      ELSE:  
*                        PUT REMOTE CON REQUEST ON WAIT ASSIGNMENT Q... 
*                RETURN.
* 
* 
****  PROC INITAPL - XREF LIST BEGIN. 
# 
  
      XREF
        BEGIN 
        PROC CONREQR;                # SEND CON/REQ/R # 
        PROC QUEUE;                  # ADD ENTRY TO QUEUE # 
        PROC DEQUEUE;                # REMOVE ENTRY FROM QUEUE #
        END 
  
# 
****  PROC INITAPL - XREF LIST END. 
# 
  
  
      ITEM ACNRANGE I;               # MINACN - MAXACN RANGE #
      ITEM CONINDX I;                # CONNECTION TABLE INDEX # 
      ITEM QUEADDR I;                # NETON Q ENTRY ADDRESS #
  
CONTROL EJECT;
  
      APL$MINACN = QU$MINACN;        # SETUP APPLICATION TABLE HEADER # 
      APL$MAXACN = QU$MAXACN; 
      APL$NSUP   = QU$NSUP; 
      APL$UCPQ   = 0; 
      APL$MSGQ   = 0; 
      APL$WAIT   = 0; 
      APL$SWAPQ  = 0; 
      APL$MSGCNT = 0; 
      APL$TIMER  = 0; 
      APL$ERRLGL = 0; 
      APL$FLAGS  = 0; 
      APL$NETON  = TRUE;
      APPL$UPD = TRUE;
      QUEADDR = P<QU$ADDRESS>;
      ACTIVAPPLS = ACTIVAPPLS + 1;
  
      IF APL$SVR
      THEN
        BEGIN  # SERVER APPLICATION # 
        P<CONNECTION> = P<APL$HEADER> + APL$LENGTH; 
        ACNRANGE = APL$MAXACN - APL$MINACN; 
  
        FASTFOR CONINDX = 0 STEP 1 UNTIL (APL$NUMCON - 1) 
        DO
          BEGIN  # SCAN ACNS FOR REMOTE CONNECTION REQUESTS # 
  
          IF CON$PATHID NE 0
          THEN
            BEGIN  # REMOTE CONNECTION PENDING #
            DEQUEUE(LOC(CON$DELAYQ)); 
  
            IF CONINDX GT ACNRANGE
            THEN
              BEGIN  # CONNECTION REQUEST QUEUED ON ACN NOT IN USE #
              QUEUE(LOC(WAITASIGNQ)); 
              CON$PATHID = 0; 
              END 
  
            ELSE
              BEGIN  # TELL UCP ABOUT CONNECTION REQUEST #
              CONREQR;
              END 
  
            END 
  
          P<CONNECTION> = P<CONNECTION> + CON$LENGTH; 
          END 
  
        END 
  
      P<QU$ADDRESS> = QUEADDR;
      RETURN; 
      END  # INITAPL #
  
      TERM
