A common module accessing IMS/DB2 databases and VSAM files needs to be developed. This program is then going to be called from a CICS application. The program DOES NOT contain any EXEC CICS statements.
How should this program be LINK and CALLED. Is this a good candidate for EXCI?
You would be SEVERLY restricting the functionality of the rest of your CICS region whilst this access is going on. In addition, you will not get any of the transactional support provided within CICS (not the least of which is avoiding a double update problem) and indeed could get into a situation whereby the whole of the CICS region is locked.
My strong advice is not to do this.
If you wanted to run this as a batch job and then send the results to a CICS transaction, then this is certainly possible. The question is how to get the results back to the CICS transaction that started the operation. One way would be to submit the job from CICS and then use the spooling facilities to read the results for the job.
Alternatively, use MQ to create a suitable Q and then get the batch job to send its results to this Q. Indeed, you could go a step further and get MQ to start the batch job as a result of a message arriving into a Q.
You could get the batch job to send its results back to CICS using EXCI. You would write a CICS program to be run as a result of the EXCI XC LINK operation but that means the CISC transaction that started the whole thing off would have to discover where/when the results are available.
My advice would be to drop the whole idea and rewrite the relevant program to use CICS' facilities.
CICS Technical Strategist -- CICS expert at Search390.com
Editor's note: Do you agree with this expert's response? If you have more to share, post it in one of our .VO7aaqqaAFk.0@/search390>discussion forums.
This was first published in July 2003