If you want to terminate the transaction without issuing a message or abend, set a
return code of X'4'.
Warning: Setting a return code of X'4' for APPC transaction routing leads to
unpredictable results, and should be avoided.
Returning a value in DYRRETC has no effect when the routing program is invoked
for notification or at termination of the transaction.
If the system is unavailable or unknown
The dynamic routing program is invoked again if the remote system name that you
specify on the route selection call is not known or is unavailable. When this
happens, you have a choice of actions:
v You can tell CICS not to continue trying to route the transaction, by issuing a
return code of ‘8’ in DYRRETC. If the reason for the error is that the system is
unavailable, CICS issues message ‘DFHAC2014’ or ‘DFHAC2029’ to the terminal
user. If the reason for the error is that the system is unknown, DFHAPRT abends
the transaction.
v You can tell CICS to terminate the transaction without issuing a message or
abend by placing a return code of ‘4’ in DYRRETC. However, note the above
warning about setting return code ‘4’.
v If the reason for the error is that no sessions are immediately available to the
remote system, you can reset field DYRQUEUE to ‘Y’ (it must previously have
been set to ‘N’—the request is not to be queued—for this error to occur), issue a
return code of ‘0’ in DYRRETC, and try to route the transaction again.
If you try to route the transaction again without resetting DYRQUEUE to ‘Y’ (and
without changing the sysid), and the system is still unavailable, DFHDYP is
reinvoked. If you then choose to set return code ‘8’, CICS terminates the
transaction with message ‘DFHAC2030’.
v You can change the sysid, and issue a return code of ‘0’ in DYRRETC to try to
route the transaction again. Note that if you change the sysid, you may also need
to supply a different remote transaction ID. You need to do this if, for example,
the transaction has a different remote transaction name on each system.
A count of the times the routing program has been invoked for routing purposes for
this transaction is passed in field DYRCOUNT. Use this count to help you decide
when to stop trying to route the transaction.
Invoking the dynamic routing program at end of routed transactions
If you want your dynamic routing program to be invoked again when the routed
transaction has completed, you must set the DYROPTER field in the
communications area to 'Y' before returning control to CICS. You might want to do
this, for example, if you are keeping a count of the number of transactions currently
executing on a particular CICS region. However, during this reinvocation, the
dynamic routing program should update only its own resources. This is because, at
this stage, the final command to the terminal from the application program in the
AOR may be pending, and the dynamic routing program is about to terminate.
dynamic transaction routing
554
CICS TS for OS/390: CICS Customization Guide