*DECK     SSTRQE
USETEXT TEXTSS
PROC SSTRQE (P$TABL$,WC,HEAD,ENTRYQ); 
# TITLE SSTRQE - REMOVE QUEUE ENTRY. #
  
      BEGIN  # SSTRQE # 
# 
**    SSTRQE - REMOVE QUEUE ENTRY.
* 
*     F. HOU.                81/09/09.
* 
*     THIS PROCEDURE REMOVES THE FIRST QUEUE ENTRY OF QUEUE TABL
*     TO A SPECIFIED BUFFER.
* 
*     PROC SSTRQE (P$TABL$,WC,HEAD,ENTRYQ)
* 
*     ENTRY      P$TABL$ = BASED ARRAY POINTER FOR QUEUE TABL.
*                WC      = FIRST WORD ADDRESS OF ARRAY TO RECEIVE 
*                          THE WORD COUNT PORTION OF THE QUEUE ENTRY. 
*                HEAD    = FIRST WORD ADDRESS TO RECEIVE THE HEADER 
*                          PORTION OF THE QUEUE ENTRY.
*                ENTRYQ  = FIRST WORD ADDRESS OF ARRAY TO RECEIVE 
*                          THE ENTRY PORTION OF THE QUEUE ENTRY.
* 
*     EXIT       THE FIRST ENTRY OF QUEUE TABL HAS BEEN REMOVED.
* 
*     NOTES      THE FIRST QUEUE ENTRY DELETED AFTER THE COPY IS DONE.
* 
*     METHOD
* 
*     MOVE THE FIRST ENTRY OF QUEUE TABL TO SPECIFIED BUFFER:WC,HEAD
*     AND ENTRYQ. 
*     REMOVE TABLE SPACE FROM QUEUE TABL. 
* 
# 
  
      ITEM P$TABL$    I;     # BASED ARRAY POINTER FOR QUEUE TABL.     #
      ITEM HEAD       I;     # HEAD WORD TO RECEIVE HEADER.            #
  
      ARRAY WC [0:0] S(1);   # WORD TO RECEIVE WORD COUNT              #
        BEGIN 
        ITEM WC$WORD U(00,00,60);  # OVERLAPPING WORD                  #
        ITEM WC$CNT  U(00,48,12);  # 12 BIT WORD COUNT                 #
        END 
  
      ARRAY ENTRYQ [0:0] S(1);  # ARRAY OF WC-2 WORDS TO RECEIVE ENTRY #
        BEGIN 
        ITEM ENTRYQQ U(00,00,60); 
        END 
  
# 
****  PROC SSTRQE - XREF LIST.
# 
  
      XREF
        BEGIN 
        PROC MOVEI;          # MOVE BLOCK OF CENTRAL MEMORY WORDS.     #
        PROC SSTRTS;         # REMOVE TABLE SPACE                      #
        END 
  
# 
****
# 
  
      ITEM COUNT      I;     # WORD COUNT OF ENTRY PORTION             #
      ITEM FROM       I;     # FIRST WORD ADDRESS OF FROM BLOCK        #
      ITEM TO         I;     # FIRST WORD ADDRESS OF TO BLOCK          #
  
      BASED ARRAY TEMP [0:0] S(2);  # TEMP BASED ARRAY                 #
        BEGIN 
        ITEM TEMP$F U(00,00,60);    # FOR WC                           #
        ITEM TEMP$S U(01,00,60);    # FOR HEAD                         #
        END 
  
  
  
  
  
      $BEGIN                 # INCREMENT COUNT FOR STATISTICS          #
      SVT$VAL[SVL"RQE"] = SVT$VAL[SVL"RQE"] + 1;
      $END
  
  
      P<TEMP>=P$TABL$;       # SET BASED ARRAY TEMP POINTER            #
      WC$WORD[0]=TEMP$F[0];  # MOVE WC PORTION                         #
      HEAD = TEMP$S[0];      # MOVE HEAD PORTION                       #
  
      COUNT=WC$CNT[0]-2;     # NUMBER OF WORD COUNT FOR ENTRYQ PORTION #
      FROM =P$TABL$+2;       # FIRST WORD ADDRESS OF FROM BLOCK        #
      TO   =LOC(ENTRYQ);     # FIRST WORD ADDRESS OF TO BLOCK          #
      MOVEI (COUNT,FROM,TO); # MOVE ENTRYQ PORTION                     #
  
      SSTRTS (P$TABL$,0,WC$CNT[0]);  # REMOVE TABLE SPACE              #
  
      END  # SSTRQE # 
  
      TERM
