It was reported the ctLOKDYN mode behaved in an unexpected manner regarding the persistent lock behavior for transaction-controlled files previously implemented. Essentially, ctLOKDYN(tranPersist) also changed the behavior of locks outside of transactions and it was preferred to have locks acquired and released entirely outside of a transaction to be immediately released. Currently, they are held until a TRANBEG() + TRANEND(ctFREE) is called if the tranPersist mode is set. This behavior change was not mentioned in the original implementation for the persistent lock feature.
The function that unlocks a data record was modified such that it now rejects an unlock request for a record in a transaction-controlled file when the persistent transaction lock state is enabled only if a transaction is active at the time the unlock request is made. This means that an unlock request that is made outside a transaction will ignore the persistent transaction lock state.