*DECK     NVFSDQE 
USETEXT          TEXTNVF
USETEXT          TEXTSS 
USETEXT          TXSANVF
  
PROC NVFSDQE; 
# TITLE NVFSDQE - DISPATCH QUEUE ENTRIES FOR MAINTAIN-APPL-STATUS PROC #
  
      BEGIN  # NVFSDQE #
# 
**    NVFSDQE - DISPATCH QUEUE ENTRIES FOR MAINTAIN-APPL-STATUS PROCESS.
* 
*     E. THAVIKULWAT    81/12/18
* 
*     THIS PROCEDURE IS THE MAIN MODULE FOR MAINTAIN STATUS OF
*     APPLICATION PROCESS AND IS CALLED INTO EXECUTION WHENEVER THERE IS
*     DATA IN THE *ASQ* QUEUE.  THE PROCEDURE'S MAIN FUNCTION IS TO 
*     ROUTE EACH ENTRY IN ITS INPUT QUEUE TO THE APPROPRIATE ROUTINES.
* 
*     PROC NVFSDQE
* 
*     ENTRY:  
*       ASQ - APPLICATION STATUS QUEUE
* 
*     EXIT: 
*       ALL QUEUE ENTRIES PROCESSED.
* 
*     METHOD: 
*       CALL *SSTRQE* TO COPY THE FIRST ENTRY IN THE QUEUE INTO THE 
*       WORKING BUFFER.  EACH ENTRY IS THEN ROUTED TO THE APPROPRIATE 
*       ROUTINE TO BE PROCESSED.
# 
  
# 
****  PROC NVFSDQE - XREF LIST. 
# 
  
      XREF
        BEGIN 
        PROC NVFSNOF;        # PROCESS FAIL/APPL AND NET/OFF SM        #
        PROC NVFSNON;        # PROCESS NET/ON SM                       #
        PROC NVFSTIM;        # PROCESS TIMEOUT OF REQUEST STARTED APPL #
        PROC SSTRQE;         # TRANSFER QUEUE ENTRY TO FIXED BUFFER    #
        END 
  
# 
****
# 
  
      ITEM I          I;     # LOOP VARIABLE                           #
      ITEM SMID  S:ASQSTAT;  # SUBSCRIPT FOR GOTO SWITCH               #
  
      SWITCH SASWT:ASQSTAT
                 LLFAIL  : SFAIL,      # LABEL FOR FAIL/APPL SM        #
                 LLNETON : SNETON,     # LABEL FOR NET/ON SM           #
                 LLNETOF : SNETOFF,    # LABEL FOR NET/OFF SM          #
                 LLTIME  : TIMEOUT;    # LABEL FOR TIMEOUT PROCESSING  #
# 
*     DISPATCH ENTRIES FROM *ASQ* TO APPROPRIATE ROUTINES.
# 
      FOR I = 0 WHILE ASQLNGTH NQ 0 
      DO
        BEGIN 
        SSTRQE(P<ASQ>,WCBUF,ABHBUF,MSGBUF);  # TRANSFER TO FIX BUFFER  #
        SMID = WCB$SMID[0];            # GET INTERNAL SM IDENTIFIER    #
        GOTO SASWT[SMID]; 
  
LLFAIL:                                # FAIL/APPL SM                  #
LLNETOF:                               # NET/OFF SM                    #
        NVFSNOF;                       # PROCESS FAIL/APPL, NET/OFF SM #
        GOTO ENDSAS;
  
LLNETON:                               # NET/ON SM                     #
        NVFSNON;                       # PROCESS NET/ON SM             #
        GOTO ENDSAS;
  
LLTIME: 
        NVFSTIM;                       # TIMEOUT PROCESSING            #
        GOTO ENDSAS;
  
  
ENDSAS:                                # END OF CASE                   #
        END 
  
      END  # END NVFSDQE #
  
TERM
