Hi Ray,
The record is locked as long the block containing your code is executed, supposing you're not inside another transaction.
The do transaction solution didn't work because the buffer was used outside the transaction scope, which made Progress to downgrade the lock to share-lock. This...