APAR PQ02023 Readme file

PQ02023 Adds d_purge_user() to Clean Up for DDMS Apps Using Temp ACBs
---------------------------------------------------------------------
  An external DDMS function call is provided (d_purge_user()) to clean up
  all leftover structures for DDMS apps using temporary ACBs.

  Prerequisite
  ------------
  Install this fix on top of English 1.3.1 (PTF3) CS/2 UQ05603 or ECS/2 UQ11442.

  Problem Description
  -------------------
  When running many DDMS apps which use temporary ACB resources, the DAE work
  pool memory is depleted.

  Other Fix Included
  ------------------
  Also included in this fix is:
  PQ18251 - Visual Age app compiled with /Gt traps after many calls to DDMS.

  APAR Installation
  -----------------
  1. Shut down CS/2.
  2. Backup the files being replaced:
     a. Under \cs2\backup\ create directories: PQ02023\dll\
                                               PQ02023\dll\32_bit\
                                               PQ02023\include\c\
     b. To \cs2\backup\PQ02023\dll\ copy:
        cs2\dll\cs2dmcls.dll
     c. To \cs2\backup\PQ02023\dll\32_bit\ copy:
        cs2\dll\32_bit\cs232dm.dll
        cs2\dll\32_bit\cs232tdm.dll
     d. To \cs2\backup\PQ02023\include\c\ copy:
        cs2\include\c\cs2dmcal.h
        cs2\include\c\cs2dm.h
  3. Download the PQ02023.zip into a temporary directory.
  4. Issue:  pkunzip PQ02023.zip
  5. Copy the 5 files to their respective directories:
     cs2dmcls.dll -> \cs2\dll
     cs232dm.dll  -> \cs2\dll\32_bit
     cs232tdm.dll -> \cs2\dll\32_bit
     cs2dmcal.h   -> \cs2\include\c
     cs2dm.h      -> \cs2\include\c
  6. Restart CS/2.

  Documentation Update
  --------------------
  The following has to be added to the "Device Data Management Support"
  book in Chapter 11 between d_output() and d_query():

--------------------------------------------------------
d_purge_user - Purge DAE ACB


+-----------+-------+-------+-------+-------+-------+-------+-------+-------+
|  Support  | CS/2  | ECS2  | CS/VM | CSDOS | CS6000|ECS6000| CSSUN | CS/NT |
+-----------+-------+-------+-------+-------+-------+-------+-------+-------+
| Originator|   X   |   X   |   X   |       |   X   |   X   |   X   |   X   |
+-----------+-------+-------+-------+-------+-------+-------+-------+-------+
| Process   |   X   |   X   |   X   |       |   X   |   X   |   X   |   X   |
+-----------+-------+-------+-------+-------+-------+-------+-------+-------+

Purpose: Purges from the local DDMS server all internal structures associated
with the calling ACB name. This command is useful when a DDMS application
is started and stopped many times and it is coded to use a DAE Temporary ACB
name. Coding this API in such application will prevent the DAE work pool
from getting full.

NOTE: This API should be invoked as the last DDMS API the program executes
      before terminating. Ensure that all pending DDMS API calls have been
      completed prior to issuing this call.

Format
+---------------------------------------------------------------------------+
| >>---d_purge_user( address of RDS )------------------------------------>< |
+---------------------------------------------------------------------------+

RDS: The address of an RDS. See "RDS" on page 10-17. Use the "originator"
field to specify the DAE application ACB name. Use the "destination" field
to specify the local DDMS server.


Related Topics
- Chapter 2. "Connection Commands"


Common Return codes for d_purge_user

E_SUCCESSFUL                             /* Normal successful completion     */
E_ORGNOTCONN                             /* Originator not connected.        */
E_DESNOTCONN                             /* Destination not connected.       */


Coding Example in C

#include 
CS2AP_RDS_T daerds;                            /*DAE RDS  */
RDS         rds;                               /*DDMS RDS */
char ACB_name [CS2RSNAMSIZ_N];
NAME orig = { NULL, ACB_name };
NAME dest = { NULL, "CS2DMR00.CS2NODE" };
             .
             .
   tmp.rsname = ACB_name;
   CS2_TEMP_RES(&daerds, &tmp);
             .
             .
   rds.originator  = &orig;
   rds.destination = &dest;
             .
             .
   d_connect( &rds, &req, &resp);
             .
             .
   /* main program logic */
             .
             .
   /*------------------------------------------------------------------------*/
   /*  Program using DAE Temporary ACB names is about to terminate.          */
   /*  Invoke the d_purge_user() so that DDMS deletes all our internal       */
   /*  structures which are not needed for this temporary DAE ACB anymore.   */
   /*------------------------------------------------------------------------*/
   d_purge_user( &rds);

   CS2_STOP_RES(&daerds);
   CS2_PURGE_RES(&daerds);

- End -------------------------------------------------------------------------



Last modified: January 23, 2004
DAE File Repository   |   DAE   |   Email DAE

   About IBM  |   Privacy  |   Terms of use  |   Contact