procedureopenedgeprogress-4glfinally

Progress 4GL, Is there a reason a buffer record would not be available in a finally block of an internal procedure? Is this expected behavior?


I have an internal procedure that defines a buffer for a temp table and creates a record for that tt using the buffer but the buffer is not available in the finally block

Example

define temp-table table1 no-undo
    field field1 as char
    . 

run procedure1. 

procedure procedure1: 

    define buffer btable1 for table1. 

    create btable1. 
    assign btable1.field1 = "Test". 

    find first table1. 

    finally: 

        message "Temp table available?:" avail table1 
                skip(1) 
                "Temp table buffer available?:" avail btable1 
                view-as alert-box. 
    end finally. 
end procedure.

Solution

  • Expected behavior, as per the documentation:

    The transaction of the associated block is either complete (success) or undone (failure) when FINALLY executes. Buffers scoped to the associated block of the FINALLY block are not available when the FINALLY block executes. This is because either the buffer was undone and released, or committed and released.