Nun, dazu gehört Anwendungslogik und dazu gibt es verschiedene Ansätze.
Zuerst aber mal solltest du die Subfile beim Lesen aus der PF/LF entweder eine Input-Datei verwenden oder einen READ(N) (No Lock).

Nun zur Logik:
Die einfachste Variante, den zu bearbeitenden Satz per Chain nun ohne (N) lesen, ein anderer wartet dann die Satzwartezeit (default 1Minute) und bekommt einen Fehler, den man mit CHAIN(E) und %error() abfangen kann.
Die komplizierte Logik (häufig per SQL mit Frameworks realisiert):
Die Daten bearbeiten lassen und beim Update mit den vorherigen Werten abgleichen, ob sich was geändert hat, also z.B.:
update myfile set f1=: newval1 where k1=: KeyVal and f1 = : OldVal1;
Liefert SQLCOD =100 heißt dies, das keine Information zum Update gefunden wurde was 2 Möglichkeiten bietet:
1. Der Satz ist gelöscht worden
2. F1 stimmt mit dem vorher gelesenen Wert nicht mehr überein
Nun muss man dem Bediener halt ermöglichen, seine Bearbeitung auf Grund der geänderten Situation zu wiederholen.