View previous topic :: View next topic
|
Author |
Message |
MSTP
New User
Joined: 21 Jun 2007 Posts: 30 Location: Baltimore
|
|
|
|
Hello
I have a CICS program and its behaving differently each time. Not sure what is wrong.
1) DECLARE CURSOR WITH HOLD OPTION
2) FETCH 1 ROW write it into an array
3) FETCH Next row and write into an array and then process the prev read record.
4) Determine How many MQ messages (let says 4) to be written into a Queue for prev read record
5) Write the message into the Queue and then issue CICS SYNCPOINT to release the message in the queue and next statement issue CEE3DLY for 20 seconds so that the message in the queue which were released process .
6) STEP 5 is being performed using an INLINE perform until limit of 4 is reached.
7) CLOSE the cursor
8) DELETE the table rows for which the cursor was opened
9) ISSUE CICS SYNCPOINT
The problem is during STEP 5 which it has to perform 4 times it is going back to STEP 1 in middle of the perform. Not sure what is wrong. Please advise. When I perform the same transaction using XPEDITER I get correct results.
thanks
Prasad. |
|
Back to top |
|
|
Nic Clouston
Global Moderator
Joined: 10 May 2007 Posts: 2454 Location: Hampshire, UK
|
|
|
|
No idea as there is no code to analyse. |
|
Back to top |
|
|
Rohit Umarjikar
Global Moderator
Joined: 21 Sep 2010 Posts: 3076 Location: NYC,USA
|
|
|
|
Prasad,
Quote: |
5) Write the message into the Queue and then issue CICS SYNCPOINT to release the message in the queue and next statement issue CEE3DLY for 20 seconds so that the message in the queue which were released process . |
1.Why do you need to issue SYNCPOINT for every messages? ain't you be doing this per UOW which in this case is 4 messages?
2.Why do you need to Delay here? Ideally without Delay it should be processed. It is a bad design to delay for 20 seconds for every messages to get processed and especially in online environments. Ain't your MQs suppose to be defined with Trigger Type as F when you are processing messages as bulk than one at a time?
Code: |
Trigger type . . . . . . : F F=First, E=Every, D=Depth, N=None |
3. Check your Perform statements make sure THRU has a correct EXIT Name.
4. Do you aware of CICS DELAY? If yes then why don't you use that if at all required? |
|
Back to top |
|
|
John Poulakos
Active User
Joined: 13 Jun 2012 Posts: 178 Location: United States
|
|
|
|
CICS DELAY is not threadsafe and your program uses DB2, which runs with it's own storage protect key. Your potential for a hung transaction is very high. |
|
Back to top |
|
|
Rohit Umarjikar
Global Moderator
Joined: 21 Sep 2010 Posts: 3076 Location: NYC,USA
|
|
|
|
CICS DELAY is threadsafe when the interval is 0 and by default it is 0.
Moreover TS did not come back to discuss further, so let us save our time replying to this post any further. |
|
Back to top |
|
|
John Poulakos
Active User
Joined: 13 Jun 2012 Posts: 178 Location: United States
|
|
|
|
Sorry, I didn't see the date. |
|
Back to top |
|
|
|