*DECK DB$WSAR 
USETEXT CDCSCTX 
      PROC DB$WSAR; 
      BEGIN 
 #
* *   DB$WSAR - RELEASE WORKING STORAGE AREAS    PAGE  1
* *   BOB MCALLESTER                             DATE  04/19/82 
* 
* DC  PURPOSE 
* 
*     FREE THE MEMORY BLOCKS THAT ARE RESERVED FOR WORKING STORAGE
*     AREAS.
* 
* DC  ENTRY CONDITIONS
* 
* D   ASSUMPTIONS 
* 
*     P<TQT>
* 
* DC  EXIT CONDITIONS 
* 
*     MEMORY BLOCKS POINTED TO BY TQSCWSA, TQSBWSA AND TQMFPBUF 
*     HAVE BEEN DEALLOCATED.
* 
* DC  CALLING ROUTINES
* 
*     DB$SWPO                SWAP OUT USER TABLES 
*     DB$TQTD                DELETE TQT 
*     DB$WRP                 WRAP UP USER REQUEST 
* 
* DC  CALLED ROUTINES 
# 
      XREF PROC DB$FLOP;     # RECORD A FLOW POINT                     #
      XREF PROC DB$MFF;      # FREE A FIXED MEMORY BLOCK               #
# 
* DC  NON-LOCAL VARIABLES MODIFIED
* 
*     TQT 
*       TQMFPBUF             POINTER TO MFP BUFFER
*       TQSBWSA              POINTER TO SUBSCHEMA WSA 
*       TQSCWSA              POINTER TO SCHEMA WSA
* 
* DC  DESCRIPTION 
* 
*     EACH OF THE THREE TQT POINTERS IS EXAMINED. 
*     IF IT IS NON-ZERO, THE CORRESPONDING BUFFER IS RELEASED.
 #
  
  
#     B E G I N   D B $ W S A R   E X E C U T A B L E   C O D E .      #
  
      IF TQSCWSA[0] NQ 0
      THEN
        BEGIN 
  
        CONTROL IFGR DFFLOP,0;
          DB$FLOP("WSAR");
        CONTROL ENDIF;
  
        DB$MFF(TQSCWSA[0]); 
        TQSCWSA[0] = 0; 
        END 
  
      IF TQSBWSA[0] NQ 0
      THEN
        BEGIN 
        DB$MFF(TQSBWSA[0]); 
        TQSBWSA[0] = 0; 
        END 
  
      IF TQMFPBUF[0] NQ 0 
      THEN
        BEGIN 
        DB$MFF(TQMFPBUF[0]);
        TQMFPBUF = 0; 
        END 
  
      RETURN; 
  
      END 
      TERM
