Damit könnte es zu tun haben.

Mein SQL sieht aus wie folgt:

EXEC SQL Prepare S1 from : mstfSqlStm ;
EXEC SQL Declare C1 Cursor for S1 ;
EXEC SQL Open C1 ;

DoU SqlCod <> 0 ;
EXEC SQL Fetch c1 into : mstfSqlData ;
If SqlCod < 0 ;
Iter ;
Endif ;
If SqlCod = 100 ;
Leave ;
Endif ;
// hier: Fill Subfile ...
Enddo ;

EXEC SQL
Close C1 ;

Aus der Subfile wird danach entsprechend ein Datensatz zur Bearbeitung ausgewählt, z.B. ein Update, das über ein Serviceprogramm erfolgt, in dem die Datei in den F-Bestimmungen so definiert ist:
FDatei UF A E Disk UsrOpn Commit(mblnCmtCtl),
d.h. optional mit Commit-Steuerung.
Dieser Schalter ist in meinem Fall aber auf aus gesetzt und ein Update erfolgt auch auf dem Satz.
Lt. Debugger komme ich aus diesem Serviceprogramm daher OHNE Sperre wieder heraus und erst das dann folgende erneute Einlesen der Subfile per SQL setzt dann die Sperre, die durch das Close nicht mehr aufgehoben wird.

Hast Du hierzu eine Idee, ob da die Ursache liegt?