As each release of CA IDMS is distributed, there is a need to adjust some parameters in the SYSGEN. The SYSTEM statement values for STACKSIZE and ABEND STORAGE are two fields a DBA may want to modify for the latest releases of CA IDMS. Many customers have not changed these parameters unless they have experienced an abend situation.
New releases of CA IDMS have implemented code that can be executed concurrently by many tasks. These design changes have made our internal calls provide for locking mechanisms in all areas of code that often are accompanied by a need for stack storage allocated from a TCE (task). This allocation is done by the #GETSTK macro. The #GETSTK macro is cheaper in CPU cycles than the #GETSTG macro.
The #GETSTK gets a specified number of fullwords to use as a work area. These fullwords are taken from the TCE stack area. The stack area is allocated to each TCE when the CV starts up and is allocated out of XA storage. This provides a unique work area for each task that executes.
The STACK is also used to save and restore registers whenever calls made to process internal requests.
The introduction of new user exits, database procedures, system mode TCP/IP generic listeners and system mode SQL routines will also increase the use of stack space.
If a task EXCEEDS the STACKSIZE that we allocate to a TCE, we detect the problem and use the ABEND STORAGE as a stack area. If a task has been detected exceeding the STACKSIZE and overflowing into ABEND STORAGE, we will abort the task with a D009 abend.
Example: DC027007 Vxx Tnn TASK: taskname ABENDED WITH CODE D009
However, aborting the task also requires stack space. If ABEND STORAGE allocated by the SYSTEM statement in the SYSGEN is inadequate, the abend recovery will exceed the ABEND STORAGE allocation, which is disastrous. The CA-IDMS CV will abend with a U3973 or possibly a U3970 recursive abend.
If a task is using the ABEND STORAGE and another task overflows its stack, the second task will attempt to use the same ABEND STORAGE area. The CV will abend with a U3973 abend because the ABEND STORAGE is already in use by another TCE (task).
Modify the SYSTEM statement in the SYSGEN.
The ABEND STORAGE should be set to 600. This will allocate 600 fullwords of XA storage for a task that may overflow.
The STACKSIZE should be set to 3,000 or higher. This will allocate 3000 fullwords of XA storage.
After making the changes generate the system. A restart of the CV is required to implement the changes, they cannot be changed dynamically.
A simple way to monitor your usage of STACKSIZE is the DCMT DISPLAY STATISTICS SYSTEM command and look to the right of the INTERNAL statistics for the Stack column. You will see the stack High Water Mark (HWM) and also the Sysgen Threshold (sysgen statement value).
Remember - overallocation can always be tuned downward, but under-allocation may cause the CA IDMS CV to abend.
System Generation Guide section SYSTEM Statement Parameters
GI76847 - RECOMMENDED CA IDMS/DC SYSGEN OPTIONS FOR RELEASE