IBM Support

878 AKEX abends in CICS after upgrading to z/OS 2.1

Question & Answer


Question

Why am I receiving abend 878 AKEX in various modules within CICS Transaction Server for z/OS (CICS TS) after upgrading to z/OS V2.1? For example, I have seen the abend 878 in CICS, RACF, and IMS modules. It just depends on who is getmaining storage when the failure occurs.

This is the CICS message I receive when the abend occurs:

 DFHFC0001 An abend (code 878/AKEX) has occurred at offset X'FFFF' in module DFHFCVC 

These are the messages from RACF:

 IRR401I 878 ABEND DURING RACF PROCESSING OF  492    
    492               LOCATE REQUEST FOR ENTRY PYF121
 IRR401I 878 ABEND DURING RACF PROCESSING
 IRR413I RACF MANAGER REQUEST ID WAS RCK02005

Answer

The abend 878 is occurring when storage is getmained for buffers because more MVS storage is needed than what is available. The reason for the lack of z/OS storage is due to VSAM buffers being getmained below the line for a Non Shared Resources (NSR) dataset even though CICS requested the VSAM buffers be allocated above the line.

This is due to a new SMS data class attribute introduced in z/OS 2.1. Basically, the ACB RMODE31 keyword can now be specified in ISMF data class definitions. For more details, refer to Specifying VSAM SMB access method bias using a data class in the z/OS documentation.

In this case, there was a data class where the ACB RMODE31 was specified as "CB" which means put the VSAM Control Blocks above the line. However, it also means put the VSAM Buffers below the line.

The various values for the new ACB RMODE31 keyword are:

  • ALL specifies that both VSAM control blocks and I/O buffers are obtained above 16 megabytes.

  • BUFF specifies that only VSAM I/O buffers are obtained above 16 megabytes so VSAM control blocks are obtained below the line .

  • CB specifies that only VSAM control blocks are obtained above 16 megabytes, and I/O buffers below the line.

  • NONE specifies that both I/O buffers and VSAM control blocks are built below 16 megabytes. This is the default.

Here is the order that the new ACB RMODE31 keyword is actioned:

  1. The JCL AMP specifications continue to take precedence over the specifications in the data class.

  2. The data class specifications take precedence over the ACB specifications. <=== This is new in z/OS 2.1

  3. If no JCL AMP or data class then take what is in the ACB specification.

So, if there is not a JCL AMP override or data class override then when CICS opens the dataset the buffers and control blocks will be above the line.

To specify that buffers and control blocks should be getmained BELOW the line which would likely cause 878 abends, the JCL AMP override statement would look like the following with RMODE31=NONE specified:

 //DDNAME    DD DISP=SHR,DSN=USASSC1.IYNX7.KSDS,AMP=('RMODE31=NONE')  

To specify that buffers and control blocks should be getmained ABOVE the line which would resolve the problem, you can use a JCL AMP override statement like the following with RMODE31=ALL specified:

 //DDNAME    DD DISP=SHR,DSN=USASSC1.IYNX7.KSDS,AMP=('RMODE31=ALL')   

To view what a data class override in ISMF would look like, you can use the following steps from within TSO:

  1. Enter DM for Data Management (found under "Utilities" by default)

  2. Enter 1 for ISMF

  3. Enter 4 for Dataclass

  4. Enter PF11 to scroll to the right until you see "RMODE31 (51)"

Then you will see the overrides in column 51: alt text

From TSO, you can also determine what data class is associated with a dataset:

  1. Enter 2 for Data Set (found under "Utilities" by default)

  2. Type in the dataset name

  3. Press ENTER to display the data set information including the data class

Additional Diagnostics
Here is what a normal ACB in CICS looks like (when looking at a system dump and using IPCS command VERBX DFHPDxxx 'FCP=3' where xxx is your release level of CICS like 690 for CICS TS 5.2): alt text

The offset you want to look at is X'30'. The x'80' bit is ACBR31B (buffers above the line). The x'40' bit is ACBR31C (control blocks above the line). Note that CICS ALWAYS sets these bits in the ACB (using ACBOFLGS) before sending the ACB to VSAM on an OPEN request.

Here is an ACB with ACBR31B at offset X'30' off. VSAM has turned this bit off since there was a data class that specified CB for RMODE31. alt text

[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSGMGV","label":"CICS Transaction Server"},"Platform":[{"code":"PF035","label":"z\/OS"}],"Component":"Storage","Version":"","Line of Business":{"code":"LOB35","label":"Mainframe SW"}}]

Product Synonym

CICS/TS CICSTS CICS TS CICS Transaction Server

Document Information

Modified date:
01 September 2016

UID

dwa1300139