Oracle Transacion Blocks & Undo

AnthonyMillard1

New Member
I am currently doing an exercise in converting a existing Progress 91C (ADM1.1) application which uses smart objects into OpenEdge 10.1A.

We currently user Oracle Clients of 8 or 9, and Oracle Databases of 8, 9i or 10.

The issue I am having in my evaluation of OE10 is using an Oracle 8 client (8.1.7) against an Oracle 9i database (9.2.0.4.0)

We have a maintenance program which is controlled by multiple dialog boxes, some dialogs are called from dialog boxes as more details is added to the the data being created.

If we are 3 levels deep in the program and an action in that level has allowed a record to be created and then deleted, if we then cancel this level dialog box which undo's that transaction block we get the following error message

SYSTEM ERROR: bfundo: rmdel failed. (19)

I am unable to find much detail on this error message.

I have been able to simplify the maintenance program into the following lines of code.


/* Start of Code */
DO TRANSACTION ON ERROR UNDO, RETURN "ADM-ERROR":U
ON STOP UNDO, RETURN "ADM-ERROR":U:


run main-record.
RETURN.


END.

PROCEDURE main-record:
DO ON ERROR UNDO, RETURN ERROR
ON STOP UNDO, RETURN ERROR:

run sub-record.

END.

end procedure.


PROCEDURE Sub-Record:

DO ON ERROR UNDO, RETURN ERROR
ON STOP UNDO, RETURN ERROR:

/* Create a table */
CREATE <table>.
ASSIGN <table values>.

/* Find and delete the table created above */
FOR EACH <table> WHERE <where clause>:
DELETE <table>.
END.

UNDO, RETURN ERROR.

END.

END procedure.

/* End of code */

On running this under Progress 91c I have no errors returned, under OE10 I get the above system error.

I appreciate that the above code can be changed so that it works and I have noticed that if I remove the FOR EACH around the delete everything works run OK.

However, I do not know how many other places in our application have the same issue and therefore I am trying to find out Why this is now happening under EO10 and if I am able to get the dataserver/oracle transactions to function as they did before.
We are also concerned that without checking every line of code we may not see any other issues of this type during our tests plans until the application is out there in the real world.

Any help/advice would be very much appreciated

Thanks in advance

Tony
 
Back
Top