*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