IBM Mainframe Forum Index
Log In
IBM Mainframe Forum Index Mainframe: Search IBM Mainframe Forum: FAQ Register

Asynchronous CICS Processing Question

IBM Mainframe Forums -> CICS
Post new topic   Reply to topic
View previous topic :: View next topic  
Author Message

New User

Joined: 03 May 2016
Posts: 12
Location: usa

PostPosted: Mon Mar 06, 2017 6:13 pm
Reply with quote

We have a new process that we implemented that is not working very efficiently.

Basically, we have a CICS program that receives a request for all customer information. The program then reads a customer master that has many (sometimes dozens) of trailers. Each trailer has a key to an account on a different application. The program cycles through the trailers sequentially, reads the information from the master indicated on the trailer and then formats part of a response back to the caller. When all of the trailers are processed, one full response is returned to the calling program.

The problem is that one application in particular is very slow for each individual response (we're not just reading a file on our system - we have to call a program that transmits the query out to another vendor and finally returns it back to the program) . So, if the customer has a lot of accounts on this application, we can sometimes time out when we're processing sequentially like this.

I started looking into processing the transaction asynchronously. I want to fire off all of my requests to the slow application first, process all remaining trailers and then come back and collect all of the responses that come back from my initial requests.

I was pretty excited when I saw the Run and Fetch APIs. They address exactly what I'm looking for. Unfortunately, we don't have that CICS version.

Instead, it sounds like START and RETRIEVE may be what I need to go with. Is it correct that I can shoot off a START for each one of my "slow" application requests and come back with a RETRIEVE at the end of my processing to pick them back up? If so, what kind of response do I get if the RETRIEVE isn't ready yet? Can I just move onto the next one (recycling through until I finally get them all)?

Or, is there a better way of doing this? i.e. Would it be better to have each of the started transactions write their responses to a temporary queue and just have my main, calling program read the queue as a final step? Or... something else?

Thanks for any input!
Back to top
View user's profile Send private message
Rohit Umarjikar

Global Moderator

Joined: 21 Sep 2010
Posts: 2672
Location: NYC,USA

PostPosted: Thu Apr 13, 2017 10:08 pm
Reply with quote

So the problem is with Vendor application which indirectly causing the whole trx slow down. is that what you are telling?
I am not sure if this will work.
1. Get all the trailer data PUT in request -MQ ('X') with some timestamp token and continue your further processing ...
2. add a transaction that triggers the Vender application program
3. Let the Vendor his part and PUT back the response into response-MQ ( 'Y') the end of the main program you get do a GET on 'Y' MQ and validate the timestamp token and once matched then formulate the final response back to the caller else you can DELAY and GET again till whatever time caller and you agree upon the WAIT.
Back to top
View user's profile Send private message
View previous topic :: :: View next topic  
Post new topic   Reply to topic View Bookmarks
All times are GMT + 6 Hours
Forum Index -> CICS


Similar Topics
Topic Forum Replies
No new posts CICS webservice - Flexible Interface CICS 0
No new posts icetool empty file and not empty file... DFSORT/ICETOOL 5
No new posts Prod parallel execution on mainframe ... CICS 1
No new posts Assembler test under mask question PL/I & Assembler 5
No new posts COBOL/CICS Emulators CICS 4
Search our Forums:

Back to Top