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
- Read the messages logged with the abend (DFHSR0618, then DFHAP0001 or DFHSR0001) to find the program and offset.
- Replace macro-level or direct CSA/TCA access with EXEC CICS API or SPI commands.
- Check the PROGRAM definition's language and correct it if it is wrong.
- Relink the program with the proper EXEC interface stub.
- 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.