*DECK     NVFTDQE 
USETEXT          TEXTNVF
USETEXT          TEXTSS 
USETEXT          TXTANVF
USETEXT          TXTAPSS
  
PROC NVFTDQE; 
# TITLE NVFTDQE - DISPATCH QUEUE ENTRIES FOR T-A PROCESS.              #
  
      BEGIN  # NVFTDQE #
# 
**    NVFTDQE - DISPATCH QUEUE ENTRIES FOR T-A PROCESS. 
* 
*     E. THAVIKULWAT    81/08/17
*     C. BRION          83/04/11
* 
*     THIS PROCEDURE IS THE MAIN MODULE FOR TERMINAL TO APPLICATION 
*     PROCESSING AND IS CALLED INTO EXECUTION WHENEVER THERE IS DATA
*     IN ANY OF ITS INPUT QUEUE .  THE PROCEDURE'S MAIN FUNCTION IS TO
*     ROUTE EACH ENTRY IN ITS INPUT QUEUE TO THE APPROPRIATE ROUTINES.
* 
*     PROC NVFTDQE
* 
*     ENTRY:  
*       TAINPQ  - TERMINAL TO APPLICATION INPUT QUEUE 
*       VCBRDQ  - VCB READ DATA QUEUE 
*       VDATAQ  - VALIDATION DATA QUEUE 
* 
*     EXIT: 
*       ALL DATA IN ALL QUEUES HAVE BEEN PROCESSED. 
* 
*     NOTES:  
*       THE 3 INPUT QUEUES ARE PROCESSED IN THE FOLLOWING ORDER:  
*         1) TAINPQ 
*         2) VCBRDQ 
*         3) VDATAQ 
*       EACH QUEUE IS EMPTIED BEFORE THE NEXT QUEUE IS INTERROGATED.
* 
*     METHOD: 
*       CALL *SSTRQE* TO COPY THE FIRST ENTRY FROM A SPECIFIED QUEUE
*       INTO THE WORKING BUFFER.  EACH ENTRY IS THEN ROUTED TO THE
*       APPROPRIATE ROUTINE TO BE PROCESSED.
# 
  
# 
****  PROC NVFTDQE - XREF LIST. 
# 
  
      XREF
        BEGIN 
        PROC NVFTACC;        # PROCESS CR/ACC SM                       #
        PROC NVFTBRK;        # PROCESS FC/BRK SM                       #
        PROC NVFTCB;         # PROCESS CR/CB SM                        #
        PROC NVFTETI;        # PROCESS INPUT FROM TERMINAL             #
        PROC NVFTINA;        # PROCESS FC/INACT SM - TIMER EXPIRED     #
        PROC NVFTITE;        # PROCESS CR/ITE SM                       #
        PROC NVFTRCN;        # PROCESS CR/RCN SM                       #
        PROC NVFTRVD;        # RECEIVE VCB DATA                        #
        PROC NVFTTCH;        # PROCESS TCH/TCHAR SM                    #
        PROC NVFTVVD;        # VERIFY VALIDATION DATA                  #
        PROC SSTRQE;         # TRANSFER QUEUE ENTRY TO FIXED BUFFER    #
        PROC NVFTSPC;        # SWITCH PENDING CONNECTIONS              #
        END 
  
# 
****
# 
  
      ITEM I          I;     # LOOP VARIABLE                           #
      ITEM SMID  S:CTQSTAT;  # SUBSCRIPT FOR GOTO SWITCH               #
  
      SWITCH TASWT:CTQSTAT
                   LLCRACC : SACC,     # LABEL FOR CR/ACC SM           #
                   LLCRCB  : SCB,      # LABEL FOR CR/CB SM            #
                   LLCRITE : SITE,     # LABEL FOR CR/ITE SM           #
                   LLCRRCN : SRCN,     # LABEL FOR CR/RCN SM           #
                   LLBRK   : SIUSR,    # LABEL FOR INTR/USR SM         #
                   LLFCINA : SINA,     # LABEL FOR TIMER EXPIRED       #
                   LLTCTCH : STCHAR,   # LABEL FOR TCH/TCHAR SM        #
                   LLNETN  : SNETN,    # LABEL FOR NET/ON/N SM         #
                   LLNETA  : SNETA;    # LABEL FOR NET/ON/A SM         #
  
# 
*     DISPATCH ENTRIES FROM *TAINPQ* TO APPROPRIATE ROUTINES. 
# 
      FOR I = 0 WHILE TAQLNGTH NQ 0 
      DO
        BEGIN 
        SSTRQE(P<TAINPQ>,WCBUF,ABHBUF,MSGBUF);  # TRNSFR TO FIX BUFFER #
        IF ABHABT[0] EQ APMSG 
           OR ABHABT[0] EQ APPBLK 
        THEN                           # MSG OR BLK DATA BLOCK         #
          BEGIN 
          NVFTETI;                     # EDIT TERMINAL INPUT           #
          END 
        ELSE                           # SUPERVISORY MESSAGE           #
          BEGIN 
          SMID = WCB$SMID[0];          # GET INTERNAL SM IDENTIFIER    #
          GOTO TASWT[SMID]; 
  
LLCRACC:                               # CR/ACC SM                     #
          NVFTACC;                     # PROCESS CR/ACC SM             #
          GOTO ENDTAS;
  
LLCRCB:                                # CR/CB SM                      #
          NVFTCB;                      # PROCESS CR/CB SM              #
          GOTO ENDTAS;
  
LLCRITE:                               # CR/ITE SM                     #
          NVFTITE;                     # PROCESS CR/ITE SM             #
          GOTO ENDTAS;
  
LLCRRCN:                               # CR/RCN SM                     #
          NVFTRCN;                     # PROCESS CR/RCN SM             #
          GOTO ENDTAS;
  
LLBRK:                                 # INTR/USR SM                   #
          NVFTBRK;                     # PROCESS BREAK SM              #
          GOTO ENDTAS;
  
LLFCINA:                               # FC/INACT SM - NVF TIMER EXP   #
          NVFTINA;                     # PROCESS NVF TIMER EXPIRED     #
          GOTO ENDTAS;
  
LLTCTCH:                               # TCH/TCHAR SM                  #
          NVFTTCH;                     # PROCESS TCH/TCHAR SM          #
          GOTO ENDTAS;
  
LLNETN: 
LLNETA: 
          NVFTSPC;                     # NET/ON/N AND NET/ON/A SM # 
          GOTO ENDTAS;
  
ENDTAS:                                # END OF CASE                   #
          END 
        END 
  
# 
*     CALL *NVFTRVD* TO PROCESS ENTRIES FROM *VCBRDQ* QUEUE.
# 
      FOR I = 0 WHILE VRDLNGTH NQ 0 
      DO
        BEGIN 
        SSTRQE(P<VCBRDQ>,WCBUF,ABHBUF,MSGBUF);  # TRNSFR TO FIX BUFFER #
        NVFTRVD;                       # RECEIVE VCB DATA              #
        END 
  
# 
*     CALL *NVFTVVD* TO PROCESS ENTRIES FROM *VDATAQ* QUEUE.
# 
      FOR I = 0 WHILE VDQLNGTH NQ 0 
      DO
        BEGIN 
        SSTRQE(P<VDATAQ>,WCBUF,ABHBUF,MSGBUF);  # TRNSFR TO FIX BUFFER #
        NVFTVVD;                       # VERIFY VALIDATION DATA        #
        END 
  
      END  # END NVFTDQE #
  
TERM
