Mainframe Path Start learning free
CoreError and abend codesAICA

CICS AICA — runaway task

A task kept the processor without giving up control for longer than the region's runaway interval (ICVR), so CICS ended it. Usually a loop in the program.

What happened

A transaction ended with abend AICA and CICS took a transaction dump. Other users may have seen the region slow down just before.

Terminal message (illustrative)Illustrative example
DFHAC2206 10:31:07 CICSPRD1 Transaction RPT2 failed with abend AICA. Updates to local
          recoverable resources backed out.

What it means

CICS watches how long a task keeps control of the processor without giving it up. The limit is the ICVR system initialization parameter, in milliseconds. IBM's default is 2000; it can be 0 (no runaway checking) or 250 up to 2,700,000, in multiples of 250. A task that goes past it is ended with AICA.

Only time with the processor counts. A request that can suspend the task resets the timer, so a loop that keeps issuing such requests is not caught by AICA. A transaction can also have its own runaway value (RUNAWAY); 0 there turns the check off for that transaction.

Typical causes

The look-alike AICA cannot catch

If the loop issues requests that can suspend it, the region just gets slow. Nothing abends. Find it by elapsed time and CPU: CEMT I TASK, or your site's CICS monitor. Then PURGE it (FORCEPURGE only if PURGE does not work) and disable the transaction until it is fixed.

Where to look

How to fix it

  1. Find the loop in the program and fix its end condition.
  2. Test it with the data that triggered it.
  3. Do not just raise ICVR: a higher limit only lets the loop run longer.

Interview question

A CICS region is slow, one task has run for 15 minutes, but there is no AICA. Why not, and what do you do?

Stuck on something else?
Ask the community or search the full course.

Ask a question