MainframeKit

ASRD

Illegal macro call or attempt to access the CSA or TCACICS ABEND

The task ended because the program used an unsupported assembler macro or tried to touch CICS internal control areas it may not use.

MOST LIKELY

An assembler program still uses a macro-level call that CICS no longer supports.

FIRST CHECK

Read the messages logged with the abend (DFHSR0618, then DFHAP0001 or DFHSR0001) to find the program and offset.

TRY IT ▸

MainframeKit assistant

What it means

CICS protects some of its internal areas, such as the CSA and the TCA. When a program reaches into them, or uses an old assembler macro CICS no longer supports, the error shows up as a program check and CICS ends the task with ASRD.

Wrongly defining a non-assembler program as assembler, or link-editing a program without the right EXEC interface stub, can also cause it.

Typical causes

  • An assembler program still uses a macro-level call that CICS no longer supports.
  • Code reads the TCA address from field CSAQRTCA (formerly CSACDTA) in the CSA.
  • A program is defined to CICS with the wrong language (for example assembler when it is COBOL).
  • The program was link-edited without the correct EXEC interface stub.
  • Register 12 or 13, which normally address the TCA and CSA, point to storage the program cannot reach.

How to fix it

  1. Read the messages logged with the abend (DFHSR0618, then DFHAP0001 or DFHSR0001) to find the program and offset.
  2. Replace macro-level or direct CSA/TCA access with EXEC CICS API or SPI commands.
  3. Check the PROGRAM definition's language and correct it if it is wrong.
  4. Relink the program with the proper EXEC interface stub.
  5. Use the steps for finding where a program check occurred to pinpoint the failing instruction.

Example

Illustrative only; names and values are invented.

DFHAC2236 09:41:30 APPL01 Transaction TRN1 abend ASRD in program PROG01 term T001. Updates to local recoverable resources will be backed out.