Microsoft KB Archive/214406

= CICS ABEND ATCV when using two phase commit and CICS remote environment =

Article ID: 214406

Article Last Modified on 5/10/2004

-

APPLIES TO


 * Microsoft COM Transaction Integrator for CICS and IMS 1.0
 * Microsoft COM Transaction Integrator for CICS and IMS 1.0 SP1

-



This article was previously published under Q214406



SYMPTOMS
A CICS ABEND error message is recorded in the CICS log on the mainframe computer when the COM Transaction Integrator (COMTI) method invoked is participating in a Microsoft Transaction Server transaction using two phase commit and SNA Server Sync Point Support (for IBM Sync Level 2). For example:

"DFHAC2236 WNWCI51C Transaction TSQU abend ATCV in program LU62TSQU. Updates to local recoverable resources will be backed out."

In this example, DFHAC2236 is the IBM message number or ID and WNWCI51C is the name of the CICS region.

This error can occur when you use a "CICS" remote environment (SNA Server version 4.0 and SNA Server version 4.0 Service Pack 1) or a "CICS Using LU6.2" remote environment (SNA Server version 4.0 SP2).

The COMTI component library installed in the Microsoft Transaction Server package would be marked as "Requires a transaction" or "Requires a new transaction".



CAUSE
The CICS program may have been modeled after Synclevel2.txt, the two-phase commit sample program provided with COMTI in the samples directory. This code contains the following:

******************************************************** NORMAL-TX-SYNCPOINT. IF EIBSYNC = X'FF' EXEC CICS SYNCPOINT END-EXEC EXEC CICS RECEIVE RESP(CMD-RESP) STATE(CONV-STATE) END-EXEC ELSE IF EIBSYNRB = X'FF' EXEC CICS SYNCPOINT ROLLBACK END-EXEC ELSE EXEC CICS ABEND ABCODE('UNKN') END-EXEC END-IF END-IF.
 * CHECK THE EIB FIELDS TO DETERMINE WHAT ACTION COMTI
 * HAS REQUESTED, THEN ISSUE EITHER A SYNCPOINT OR
 * ROLLBACK.

The EXEC CICS RECEIVE is inappropriate if the conversation is in a "free" state, but is appropriate if the conversation is in a "receive" state.



WORKAROUND
NOTE: This workaround may not address all the possible conversational states that may occur, however, it does handle those encountered during testing at Microsoft. Customers may find this solution is not comprehensive.

After the syncpoint command is issued (EXEC CICS SYNCPOINT), the conversation may either be in a receive state (code: 88) or in a free state (code: 85). If it is in a receive state, you should issue an EXEC CICS RECEIVE statement, as follows, otherwise just terminate the program as in the product sample.

The following code would accomplish the task:

*FIRST, DETERMINE THE CONVERSATION STATE. EXEC CICS EXTRACT ATTRIBUTES STATE (CONV-STATE) END-EXEC.

IF CONV-STATE = 88 EXEC CICS RECEIVE RESP(CMD-RESP) STATE(CONV-STATE) END-EXEC END-IF.
 * THEN, CONDITIONALLY, ISSUE THE RECEIVE.

Incidentally, similar logic would be appropriate after the EXEC CICS SYNCPOINT ROLLBACK END-EXEC statement presented above as excerpted from the COMTI sample.



MORE INFORMATION
For more information, please see the IBM manual, "CICS Trasnaction Server for OS/390 CICS Messages and Codes Relase 2." The document ID number is GC33-1694-01.

Keywords: kbprb kbfaq KB214406

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.