CICS
What can cause an AICA abend?


CICS transaction abend codes are listed in the CICS Messages and Codes manual.

An AICA transaction abend means that your code is taking longer to execute than is allowed. There is a parameter (that your CICS Systems Programmers can adjust) that governs how long tasks can execute. If you code executes for longer than this limit without giving control back to CICS, then an AICA abend will result.

From an application developer perspective there are 3 common reasons for your code to end with this abend code:
  1. Your code is stuck in an endless (or very long running) loop. You may need to add some diagnostics / debug your code to check whether this is the case.

  2. Your code is taking a long time to execute, because it is doing an awful lot of processing. If this is the case you may want to check your design to ensure that you are not trying to do too much processing within a single task, or that you are not trying to do too much processing without giving control back to CICS.

    To give control back to CICS and allow it to schedule other higher priority tasks (should there be any), use the SUSPEND command within the body of your processing :

      EXEC CICS
           SUSPEND
           RESP(WS-RESP)
      END-EXEC

  3. Your code is taking a long time to execute, because you are executing it in a test environment with diagnostic messages turned on. If you have lots of diagnostics in your code that are writing progress messages during execution, the increased level of I/O as a result of these messages could be the reason that your code is executing past the AICA time limit. It could be that in a production environment (where you would probably not expect to have such messages turned on), execution time would not be a problem. If this is the case, you may want to ask your CICS Systems Programmers to increase the AICA time limit in your test environment.