*DECK AGEREQ
USETEXT COMCBEG 
USETEXT COMRAPL 
USETEXT COMRQUE 
USETEXT COMRRTN 
PROC AGEREQ;
# TITLE AGEREQ - DECREMENT CONNECTION REQUEST TIMER.  # 
  
      BEGIN  # AGEREQ # 
  
# 
**    AGEREQ - DECREMENT CONNECTION REQEST TIMER. 
* 
*     DECREMENTS CONNECTION REQUEST TIMER AND  ISSUES CON/ACRQ/A
*     AND FREES THE ACN IF TIMER IS EXPIRED.
* 
*     PROC AGEREQ.
* 
*     ENTRY   - APL$HEADER IS BASED ARRAY CONTAINING APPLICATION HDR
* 
*     EXIT    - CONNECTION REQUEST TIMER DECREMENTED. 
*               CON/ACRQ/A SENT AND ACN FREED IF TIMER EXPIRED. 
* 
*     PROCESS - IF ACN IS IN PROCESS OF CONNECTING
*               THEN
*                 DEQUEUE CONNECTION REQUEST ON DELAY QUEUE 
*                 IF REMOTE CONNECTION REQUEST
*                 THEN
*                   RETURN ENTRY TO DELAY QUEUE 
*                 ELSE
*                   INCREMENT TIMER 
*                   IF TIMER EXPIRED
*                   THEN
*                     SEND CON/ACRQ/A 
*                     RELEASE ACN ENTRY 
*               RETURN. 
* 
* 
****  PROC AGEREQ - XREF LIST BEGIN.
# 
  
      XREF
        BEGIN 
        PROC ACRQA;                  # INITIATE CON/ACRQ/A REPLY #
        PROC DEQUEUE;                # REMOVE ENTRY FROM QUEUE #
        PROC FREEACN;                # MAKE ACN AVAILABLE AGAIN # 
        PROC QUEUE;                  # ADD ENTRY TO QUEUE # 
        END 
  
# 
****  PROC AGEREQ - XREF LIST END.
# 
  
  
      ITEM CONINDX I; 
CONTROL EJECT;
  
      P<CONNECTION> = P<APL$HEADER> + APL$LENGTH; 
      SLOWFOR CONINDX = 0 STEP 1 UNTIL (APL$NUMCON - 1) 
      DO
        BEGIN  # FOR EACH CONNECTION #
        IF CON$PATHID NE 0
          AND NOT CON$REQ$R 
        THEN
          BEGIN 
          DEQUEUE(LOC(CON$DELAYQ)); 
  
          IF QU$TYPE NE QT$UCPMSGI
          THEN
            BEGIN      # IGNORE REMOTE CONNECTION REQUEST # 
            QUEUE(LOC(CON$DELAYQ)); 
            END 
  
          ELSE
            BEGIN      # CON/ACRQ/R ON DELAY QUEUE #
            QU$REQCLK = QU$REQCLK - 1;
            IF QU$REQCLK EQ 0 
            THEN
              BEGIN 
              ACRQA(ACRQ$NORES);
              FREEACN(QT$FLUSH);
              END 
  
            ELSE
              BEGIN 
              QUEUE(LOC(CON$DELAYQ)); 
              END 
  
            END 
  
          END 
        P<CONNECTION> = P<CONNECTION> + CON$LENGTH; 
        END 
  
      END 
      TERM
