*DECK     CSOAHL
USETEXT TEXTCS; 
USETEXT TEXTSS; 
USETEXT TXTAPSS 
PROC CSOAHL;
# TITLE CSOAHL - ADD HISTORY LINES #
  
      BEGIN # CSOAHL #
# 
**    CSOAHL - ADD HISTORY LINES. 
* 
*     C. BRION          82/05/19. 
*     D.K. ENDO         83/02/17      ADD FILTERED HISTORY. 
* 
*     THIS PROCEDURE RECEIVES HISTORY EVENT LINES AND ADDS THEM TO THE
*     THE HISTORY BUFFER. 
* 
*     PROC CSOAHL 
* 
*     ENTRY 
*       WCBWORD[0] = ENTRY WORD COUNT 
*       MSGBUF[0] = TEXT LINE TO ADDED TO THE HISTORY BUFFER. 
* 
*     EXIT
*       HISTORY BUFFER UPDATED WITH NEW TEXT LINE.
* 
# 
  
# 
****  PROC CSOAHL XREF LIST.
# 
  
      XREF
        BEGIN 
        PROC SSTETS;                     # SS-ENLARGE TABLE SPACE # 
        PROC SSTRTS;                     # SS-RELEASE TABLE SPACE # 
        PROC MOVE;                       # MACREL-MOVE MEMORY # 
        END 
# 
****
# 
  
# 
*     PROC CSOAHL ITEMS.
# 
  
      ITEM ENTCNT       I;               # ENTRY COUNT                # 
      ITEM NENTLOC      U;               # LOC OF NEXT ENTRY INTO BUF # 
      ITEM NENTSIZ      U;               # NUM WORDS IN NEW ENTRY LINE# 
  
  
  
  
# 
*     PROC CSOAHL EXECUTION STARTS HERE 
# 
  
# 
*     HISTORY BUFFER MAY BE FULL. IF SO, REMOVE THE OLDEST EVENT LINE 
*     ENTRY FROM THE BUFFER.
# 
  
      ENTCNT = HBFQL/HBFESIZ$;
      IF ENTCNT EQ MXHSBLCNT$ 
      THEN
        BEGIN 
  
# 
*     BUFFER FULL.  REMOVE THE FIRST ENTRY. 
# 
  
        SSTRTS(P<HBFQ>,0,HBFESIZ$);        # RELEASE OLDEST ENTRY # 
        ENTCNT = ENTCNT - 1;
        END 
  
# 
*     NOW MUST ADD EVENT LINE IN MSGBUF TO THE HISTORY BUFFER.
*     ALLOCATE EXTRA SPACE FOR NEXT ENTRY.
# 
  
      NENTLOC = HBFQL;
      SSTETS(P<HBFQ>,NENTLOC,HBFESIZ$); 
  
# 
*     MOVE NEXT ENTRY LINE INTO BUFFER. 
# 
  
      NENTSIZ = WCB$WC[0] - 2;
      ENTCNT = ENTCNT + 1;
      MOVE(NENTSIZ,MSGBUF[0],HBFQ[ENTCNT]); 
  
# 
*     SAVE THE AUDIENCE GROUP NUMBER, THE NPUCB ORDINAL, AND THE WORD 
*     COUNT IN THE ENTRY. 
# 
  
      HBF$AGRP[ENTCNT] = ABHADR[0]; 
      HBF$NORD[ENTCNT] = ABHABN[0]; 
      HBF$WC[ENTCNT] = NENTSIZ; 
  
      END # CSOAHL #
  
 TERM 
