Troubleshooting
Problem
You receive an ASRD abend (abendASRD) when running an application program in CICS Transaction Server for z/OS (CICS TS). You might also receive message DFHSR0618 An illegal macro call or reference to the CSA or TCA has caused the abend which follows.
Cause
The most likely cause of the ASRD abend is that the application, exit, or URM is illegally trying to obtain the task's TCA address from a field at offset +4C (hex) in the CICS CSA. This is field CSAQRTCA, previously known as CSACDTA.
Since the introduction of Open Transaction Environment (OTE), it has been invalid to use CSACDTA because it only gives the address of the TCA of the task running on QR TCB. If your task is running on an open TCB, it means it gives the address of another CICS task's TCA.
Direct access to CICS control blocks by applications was withdrawn in CICS/ESA 4.1. All CICS and CICSPlex SM (CPSM) use of CSACDTA was removed in CICS TS 3.1. In CICS TS 3.2, the CSAQRTCA (CSACDTA) field is loaded with a fetch protected address that results in an ASRD abend if the field is referenced. ASRD is an existing abend code and can occur for other reasons. See the explanation of ASRD in the CICS documentation for a list of reasons.
Since the introduction of Open Transaction Environment (OTE), it has been invalid to use CSACDTA because it only gives the address of the TCA of the task running on QR TCB. If your task is running on an open TCB, it means it gives the address of another CICS task's TCA.
Direct access to CICS control blocks by applications was withdrawn in CICS/ESA 4.1. All CICS and CICSPlex SM (CPSM) use of CSACDTA was removed in CICS TS 3.1. In CICS TS 3.2, the CSAQRTCA (CSACDTA) field is loaded with a fetch protected address that results in an ASRD abend if the field is referenced. ASRD is an existing abend code and can occur for other reasons. See the explanation of ASRD in the CICS documentation for a list of reasons.
Resolving The Problem
Use the CICS system programming interface (SPI) in application to obtain information from CICS when possible. If this is not possible, you can use the DFHKERN macro in assembler as a threadsafe way of obtaining a TCA address.
You must add the following two statements to your program to declare DSECTS:
DFHAFCD TYPE=DSECT
DFHKERN TYPE=PROCESSOWN
An example of using DFHKERN is:
DFHKERN FUNCTION=INQUIRE_TASK,TCAADDRESS=R12,STACK_AVAIL=NO
It must be stressed that this type of direct access to the TCA is unsupported. There is no high level language equivalent of the DFHKERN macro, nor will one be provided. It is also release dependent so assembler programs using this must be reassembled when upgrading CICS TS releases.
You can determine who is accessing the CSA by following the Procedure at: Finding where a program check occurred.
You must add the following two statements to your program to declare DSECTS:
DFHAFCD TYPE=DSECT
DFHKERN TYPE=PROCESSOWN
An example of using DFHKERN is:
DFHKERN FUNCTION=INQUIRE_TASK,TCAADDRESS=R12,STACK_AVAIL=NO
It must be stressed that this type of direct access to the TCA is unsupported. There is no high level language equivalent of the DFHKERN macro, nor will one be provided. It is also release dependent so assembler programs using this must be reassembled when upgrading CICS TS releases.
You can determine who is accessing the CSA by following the Procedure at: Finding where a program check occurred.
Related Information
[{"Type":"MASTER","Line of Business":{"code":"LOB70","label":"Z TPS"},"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SSGMGV","label":"CICS Transaction Server"},"ARM Category":[{"code":"a8m0z00000007d1AAA","label":"Developing applications"}],"ARM Case Number":"","Platform":[{"code":"PF035","label":"z\/OS"}],"Version":"5.4.0;5.5.0;5.6.0;6.1.0;6.2.0"}]
Product Synonym
CICS/TS CICS TS CICS Transaction Server
Was this topic helpful?
Document Information
Modified date:
05 January 2026
UID
swg21264616