IBM Support

Intermittent PGMIDERR occurs when routing transactions using CPSM WLM

Question & Answer


Question

Why am I receiving PGMIDERR exceptions intermittently in my terminal owning region (TOR) when using the CICSPlex SM Web User Interface (CPSM WUI) to dynamically route CICS transactions?

I have a program defined as DYNAMIC that is routed from my CICS TOR to two application owning regions (AORs). The program had ran for a while when I noticed the transactions were not being routed to the available target AORs as expected. Instead I am receiving PGMIDERR exceptions intermittently due to the transactions running locally in the TOR.

Answer

This error occurs due to a restriction in CICS dealing with multiple mirrors being allocated in an AOR from a single task in a TOR. The mirror transaction is always long-running for DPLs. Therefore it suspends after returning to the client and does not terminate until the client program issues a syncpoint request or terminates successfully.

When the client program issues a syncpoint request, or terminates successfully, the intercommunication component sends a message to the mirror transaction that causes it also to issue a syncpoint request and terminate. The successful syncpoint by the mirror transaction is indicated in a response sent back to the client region, which then completes its syncpoint processing, so committing changes to any protected resources.

The problem scenario is as follows:

alt text

This figure shows in the client region transaction ABCD issued a distributed program link (DPL) for program PRGA using tranid TXNA. This causes a mirror task to be allocated in the server region under TXNA which Issues the LINK to PRGA and runs the program. PRGA completes and returns control to the client. Transaction ABCD then issues another DPL for program PRGB using tranid TXNB, This causes a second mirror task to be allocated in the server region under TXNB. TXNB issues the LINK to PRGB which fails with an INVREQ (RESP=16 RESP2=15) to the client, as documented by CICS in the Application Programming Reference for the EXEC CICS LINK command:

   16 INVREQ          RESP2 values:          15  The program issuing the link request is already in conversation with a mirror task and the              TRANSID specified is different from the transaction identifier of the active mirror.   

Since CPSM is being used to route transactions from the TOR to the AORs, the dynamic routing program (EYU9XLOP) tries to route this LINK request to each of the available targets. Each attempt is unsuccessful so the LINK request is ran locally and receives a PGMIDERR because the program is not defined locally to the TOR.

Therefore, in order to issue multiple distributed program links from the same client task, the client task must either:

  • issue an EXEC CICS SYNCPOINT between each request,

  • specify SYNCONRETURN on the LINK request, or

  • use the same TRANSID for each request

The TRANSID option is available on both the LINK command and the program resource definition.

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

Product Synonym

CICS/TS CICSTS CICS TS CICS Transaction Server

Document Information

Modified date:
14 May 2015

UID

dwa1190933