all such problems have underlying causes in areas where we are not looking. I am sure the record locking is working. The most obvious possible problem is the a) not found condition for the chain, or b) the not eof condition for the read, or c) the misplaced Set Lower Limit. Is there only one record in the control file? if not, the read might be getting the wrong record. Is this the case?
I do not think it is a locking problem.