Tasks are abended when they exceed a specified interval or limit. Sometimes it is not apparent why a task is or is not abended, because the intervals specified in the sysgen do not seem to be applied. Typical abend messages include the following:
DC001003 TASK: <task-code> PROG: <program-name> STALLED WAITING FOR <resource>
DC244003 (SYSTEM/DATABASE) (CALL/IO/LOCK/STORAGE) Resource limit exceeded
How can we understand more clearly what causes these messages to be issued?
As transactions are running, they are monitored in terms of time and resource usage. Their run-time statistics are compared to various limits which can be specified in the Sysgen definition, and when their usage exceeds the specified limit, they are abended. These limits can be specified at the system and task level. At run-time, the system checks the specified values as follows:
- A task definition that matches the task under which this transaction is running. If the task is submitted on one CV but is executing on another CV, we look for a task defined on the back-end with the DC/UCF front-end task name.
- If that's not found, we look for a definition for task DCXXBULK. Again, if the task is submitted on one CV but is executing on another CV, we look for this on the back-end CV.
- Finding neither of the above, we look for task RHDCNP3S, again on the target CV.
- If none of these tasks are defined in the CV upon which the task is executing, then we look at the system-level limits defined in that CV.
- If the transaction involved is invoked by an ADS/O dialog, then we look for task ADS2. Unique limits cannot be specified at the dialog level; all ADS dialogs use the task ADS2.
If any of these tasks specifies an EXTERNAL WAIT FOREVER, EXTERNAL WAIT NO, or a specific value for EXTERNAL WAIT, that will override the SYSGENed value for timing out the task. Similarly, a task specification of INACTIVE INTERVAL IS OFF or a specific value for INACTIVE INTERVAL will override the system default value. Limits for CALL, DBIO, LOCKS, and STORAGE are applied similarly, with values specified at the task level overriding the values specified at the system level. If any of these task-level definitions exist in the back-end CV, that will explain why the system-level values are not applied.
Syntax and details about how limits are set can be found in the CA IDMS System Generation manual.