*DECK TXTREL
USETEXT COMCBEG 
USETEXT COMCAPR 
USETEXT COMCCAE 
USETEXT COMQDEF 
USETEXT COMQFIL 
USETEXT COMQNET 
USETEXT COMQTXT 
    PROC TXTREL;
      BEGIN    # TXTREL # 
# 
**    TXTREL     RELEASE ALL TEXT BUFFERS FOR AFT ENTRY.
* 
*     PROC TXTREL 
* 
*     ENTRY      ACN = AFT ENTRY INDEX
*                FILETBF = POINTER TO TEXT BUFFER CHAIN.
* 
*     EXIT       NORMAL BUFFERS LINKED TO EMPTY CHAIN 
*                OVERFLOW BUFFERS RETURNED TO CMM 
*                TXTBUF$OVF DECREMENTED IF NECESSARY
*                FILETBF = 0. 
* 
*     PROCESS    SEE ENTRY/EXIT.
# 
  
# 
****  XREF
# 
      XREF
        BEGIN 
        PROC ABORTQ;               # ABORT JOB #
        PROC CMMFRF;               # FREE CMM BLOCK # 
        PROC NAME;                 # DEBUG CODE # 
        END 
  
# 
****  XREF END
# 
  
  
      ITEM LINK       U;           # LINK TO NEXT BUFFER #
  
        $BEGIN
        NAME("TXTREL"); 
        $END
  
      LINK = FILETBF;              # POINTER TO BUFFER CHAIN #
      ASLONGAS LINK NE 0           # WHILE BUFFER IN CHAIN #
      DO
        BEGIN 
        P<TXTBUF> = LINK;          # POINT TO BUFFER #
        LINK = TXTBUF$LNK;         # LINK TO NEXT BUFFER #
        IF TXTBUF$CMM              # IF OVERFLOW BUFFER # 
        THEN
          BEGIN 
          TXTBUF$OVF = TXTBUF$OVF - 1;
          IF TXTBUF$OVF LT 0
          THEN
            BEGIN 
            ABORTQ("TXTREL"); 
            END 
  
          CMMFRF(P<TXTBUF>);       # FREE FIXED BLOCK # 
          END 
  
        ELSE                       # NORMAL BUFFER #
          BEGIN 
          TXTBUF$LNK = TXTBUF$EMP; # LINK TO HEAD OF EMPTY CHAIN #
          TXTBUF$EMP = P<TXTBUF>; 
          END 
  
        END 
  
      FILETBF = 0;                 # FLAG BUFFER CHAIN EMPTY #
  
      END  # TXTREL # 
    TERM
