View previous topic :: View next topic |
Author |
Message |
S.MADHUMATHI Beginner
Joined: 25 Jun 2004 Posts: 13 Topics: 5
|
Posted: Mon Jul 12, 2004 6:07 am Post subject: ROLLBACK |
|
|
Hai,
I just have a doubt whether a rollback can be made in TDQ. If so how can we do it?
Thanks,
Madhu. |
|
Back to top |
|
|
Mike Chantrey Intermediate
Joined: 10 Sep 2003 Posts: 234 Topics: 1 Location: Wansford
|
Posted: Mon Jul 12, 2004 9:39 am Post subject: |
|
|
The TDQ must be defined as recoverable (your CICS sysprog will check/alter this if required). Then TDQ updates can be rolled back as per VSAM files - 'EXEC CICS SYNCPOINT ROLLBACK' or when the transaction abends. |
|
Back to top |
|
|
Ed Goodman Beginner
Joined: 12 Dec 2002 Posts: 10 Topics: 2
|
Posted: Mon Jul 12, 2004 4:43 pm Post subject: |
|
|
Be careful here! We had a situation where a bad record in the TDQ caused a transaction to abend, then the automatic recovery cuased the bad record to go back into the TDQ.
You need to make SURE the program takes a checkpoint or something after it reads in the TDQ record. |
|
Back to top |
|
|
S.MADHUMATHI Beginner
Joined: 25 Jun 2004 Posts: 13 Topics: 5
|
Posted: Tue Jul 13, 2004 4:07 am Post subject: ROLLBACK |
|
|
Thanks Mike and Ed.
How to check whether the TDQ is declared as RECOVERABLE??. I searched through CEMT ( CEMT I TD(Q1)). Which option specifies whether the TDQ is RECOVERABLE?.
Ed. how the bad record again went to the TDQ after a recovery is done?. This is similar to the situation I faced. In my case TDQ had normal values. Then after an RLDB abend the transaction is re-initiated with low values?.Wat could be the reason? |
|
Back to top |
|
|
Mike Chantrey Intermediate
Joined: 10 Sep 2003 Posts: 234 Topics: 1 Location: Wansford
|
Posted: Tue Jul 13, 2004 8:42 am Post subject: |
|
|
Recovery status of TDQ:
CEMT doesn't seem to show this (not at my CICS release, CTS 1.3 anyhow)
If you have access to CEDA (or its read-only equivalent CEDC):
CEDA EX GR(*) TDQUEUE(xxxx)
then type 'V' (view) to the right of theTDQUEUE name and the queue's attributes will be displayed. Page down and look at the RECOVSTATUS value.
If you don't have access to CEDA/CEDC then try
CECI INQUIRE TDQUEUE(xxxx)
and ENTER again to execute the command. Page down and you will get a numeric value (CVDA) for RECOVSTATUS. These values are documented in the 'CICS application programming reference', (for info 30=NOTRECOVERABLE, 216=LOGICAL, 215=PHYSICAL).
You may find it helpful to look up the descriptions of physical and logical recovery in the 'CICS resource definition Guide' TDQUEUE section. |
|
Back to top |
|
|
S.MADHUMATHI Beginner
Joined: 25 Jun 2004 Posts: 13 Topics: 5
|
Posted: Wed Jul 14, 2004 2:13 am Post subject: reply for ROLLBACK |
|
|
Thanks Mike.
My TDQ is declared as logically Recoverable(Recoverable Staus is 216). In my case a TDQ invokes a transaction. The Transaction in turn links to DB programs, in that situation a RLDB Abend occurs and low values have been populated in TDQ,which re-initiated the transaction.How to check if a ROLLBACK has been done?.I am in a doubt whether the cause for the low values in the TDQ after the RLDB- Abend is because of the abend not handled properly. Is that correct? or could be anyother reason?
Thanks,
Madhu. |
|
Back to top |
|
|
Mike Chantrey Intermediate
Joined: 10 Sep 2003 Posts: 234 Topics: 1 Location: Wansford
|
Posted: Fri Jul 16, 2004 8:50 am Post subject: |
|
|
Does the transaction actually abend when the RLDB occurs or do you have a HANDLE ABEND active? If I remember correctly, the ROLLBACK will not be done if you handle the abend (unless you subsequently do an EXEC CICS ABEND in your own code). |
|
Back to top |
|
|
|
|