*DECK,QTEST 
USETEXT IP$COM
USETEXT MISC$ 
USETEXT QAC$COM 
USETEXT TSB$COM 
USETEXT ACN$COM 
USETEXT GLOBALI 
USETEXT QAB$COM 
USETEXT QCB$COM 
      PROC QTEST; 
      BEGIN # QTEST # 
*IF DEF,IMS 
 #
*1DC  QTEST 
* 
*     1. PROC NAME           AUTHOR              DATE 
*        QTEST               B. M. WEST          4 APRIL 1977 
*                            MODIFIED BY
*                            A. M. PRATT
* 
*     2. FUNCTIONAL DESCRIPTION.
*        CHECKS FOR ACTIVITY FOR QUEUE PROCESSING.
* 
*     3. METHOD USED. 
*        IF THERE IS AN IMMEDIATE QUEUE ACTION REQUEST TO BE DONE OR THE
*        IMMEDIATED ACTION CHAIN SUBMITTED TO QAC IS DONE OR THE
*        EXTENDED ACTION CHAIN IS DONE OR IT IS TIME TO SUBMIT EXTENDED 
*        QUEUE ACTION, THEN QTEST WILL REMOVE THE QCM CONNECTION FROM 
*        THE EVENT CHAIN AND LINK IT TO QCM AND RETURN, ELSE QTEST WILL 
*        RETURN.
* 
*        THE QCM CONNECTION IS A PSUEDO CONNECTION. 
* 
*     4. ENTRY PARAMETERS, NONE.
* 
*     5. EXIT PARAMETERS. NONE. 
* 
*     6. COMDECKS USED. 
*        RBF$COM
*        QAB$COM
*        TSBMDEFS 
*        TSBMBASE 
*        QCB$COM
* 
*     7. ROUTINES CALLED. 
*        LINK, REMOVE, DIFFER 
* 
*     8. DAYFILE MESSAGES. NONE.
* 
 #
*ENDIF
  
      XREF PROC LINK;        # LINKS CONNECTION TO MODULE/CHAIN        #
      XREF PROC REMOVE;      # REMOVES CONNECTION FROM CHAIN           #
      XREF FUNC DIFFER U;    # CALCULATES TIME INTERVAL                #
      XREF ITEM NEWTIM I; 
      XREF ITEM OLDTIM I; 
      ITEM HIT B; 
      HIT = FALSE;
#                                                                      #
#     SET UP QCB                                                       #
#                                                                      #
      P<QCB> = ADDRESS [ACN$CB[QCBACN]];
#                                                                      #
#     ARE THERE ANY CALLS TO QAC FOR IMMEDIATE ACTION SUBMITTED        #
#                                                                      #
      IF QCB$IMDSUBF NQ 0 
      THEN
#                                                                      #
#     YES, ARE THESE CALLS COMPLETED                                   #
#                                                                      #
        BEGIN 
        P<QAB> = ADDRESS[QCB$IMDSUBL];
  
        IF QAC$DONE 
        THEN
#                                                                      #
#       YES, SET HIT TRUE                                              #
#                                                                      #
          HIT = TRUE; 
        ELSE
          SYSACT = TRUE;                   #WE HAVE SYSTEM (PP) ACTIVIT#
        END 
      ELSE
#                                                                      #
#     NO, ARE THERE ANY IMMEDIATE QUEUE ACTION BLOCKS TO BE PROCESSED  #
#                                                                      #
      IF QCB$IMDTBSF NQ 0 
        THEN
#                                                                      #
#       YES, SET HIT TRUE                                              #
#                                                                      #
         HIT = TRUE;
#                                                                      #
#     ARE THERE ANY EXTENDED ACTION CALLS TO QAC                       #
#                                                                      #
      IF QCB$EXTSUBF NQ 0 
      THEN
#                                                                      #
#     YES, ARE THEY FINISHED                                           #
#                                                                      #
        BEGIN 
        P<QAB> = ADDRESS[QCB$EXTSUBL];
  
        IF QAC$DONE 
        THEN
#                                                                      #
#       YES, SET HIT TRUE                                              #
#                                                                      #
          HIT = TRUE; 
        ELSE
          SYSACT = TRUE;                   #WE HAVE PP ACTIVITY        #
        END 
      ELSE
#                                                                      #
#     NO, HAS THE EXTENDED ACTION INTERVAL BETWEEN QAC CALLS ELAPSED   #
#         AND ARE THERE DIVERTS TO DO                                  #
#                                                                      #
        BEGIN 
        IF (OLDTIM EQ NEWTIM OR QCB$EXTIME) 
           AND
           QCB$EXTTBSF NQ 0 
        THEN
#                                                                      #
#       YES, SET HIT TRUE                                              #
#                                                                      #
          BEGIN 
          HIT = TRUE; 
          QCB$EXTIME = TRUE;
          END 
        END 
#                                                                      #
#     MOVE CONNECTION TO QCM CHAIN IF HIT ON PREVIOUS TESTS            #
#                                                                      #
      IF HIT
      THEN
        BEGIN 
        REMOVE (CHAINS"EVENT"); 
        LINK (CHAINS"QCM$",NOEVENT);
        END 
      RETURN; 
      END   # QTEST # 
      TERM; 
