*DECK EVNTSCN 
USETEXT COMCBEG 
USETEXT COMRLRA 
USETEXT COMRNDR 
USETEXT COMRSSC 
PROC EVNTSCN; 
# TITLE EVNTSCN - EVENT SCANNER.  # 
  
      BEGIN  # EVNTSCN #
  
# 
**    EVNTSCN - EVENT SCANNER.
* 
*     SCAN AND PROCESS EVENTS REQUIRING IMMEDIATE ATTENTION 
*     SUCH AS UCP REQUESTS AND NDR COMPLETIONS. 
* 
*     PROC EVNTSCN. 
* 
*     ENTRY   - NONE
* 
*     EXIT    - ALL EVENTS PROCESSED. 
* 
*     PROCESS - IF A UCP REQUEST IS AVAILABLE 
*               THEN: 
*                 CALL UCP REQUEST TO HANDLE IT.
*               FOR EACH NDR COMMUNICATION AREA:  
*                 IF FUNCTION COMPLETE
*                 THEN: 
*                   CALL NDR COMPLETION.
*               RETURN. 
* 
*     NOTES   - RHF CALLS THE EVENT SCANNER AFTER EVERY RECALL. 
# 
  
# 
****  PROC EVNTSCN - XREF LIST BEGIN. 
# 
      XREF
        BEGIN 
        PROC UCPREQ;                 # UCP REQUEST #
        PROC NDRCOMP;                # NDR COMPLETION # 
        ITEM NDRCOM  I;              # NDR COMMUNICATION AREA # 
        ITEM MAXNDRS I;              # MAXIMUM NDRS # 
        END 
  
# 
****  PROC EVNTSCN - XREF LIST END. 
# 
  
  
      ITEM I          I;            # I IS A LOOP VARIABLE #
CONTROL EJECT;
  
      IF RA$SSC$LK
      THEN
        BEGIN  # UCP REQUEST AVAILABLE #
        UCPREQ; 
        END 
  
      FASTFOR I=0 STEP NDR$LENGTH WHILE I LS MAXNDRS*NDR$LENGTH 
      DO
        BEGIN 
        P<NDR$COMMUN> = NDRCOM + I; 
        IF NDR$FUNCOM NQ 0
        THEN
          BEGIN  # NDR FUNCTION COMPLETE #
          NDRCOMP;
          END 
  
        END 
  
      RETURN; 
      END  # EVNTSCN #
  
      TERM
