Wenn SFLNXTCHG ohne Bezugszahl verwendet wird, zeigt sich genau das Verhalten, da das Flag automatisch immer ON ist.

Mit Bezugszahl werden wirklich nur geänderte Sätze gelesen.

Wichtig ist daher, wie die BZ beim WRITE/UPDATE gesetzt ist.
*ON = Satz ist als geändert markiert
*OFF = Satz ist nicht geändert
Das hat den Grund, fehlerhafte Eingaben mit *ON markieren zu können, damit sie beim nächsten Verarbeitungszyklus auch wieder gelesen werden.

Beispiel:

dow 1=1;
readc MySubfile;
if %eof;
leave;
endif;
*inNN = *off;
if Fehler;
*inNN = *on;
update MySubfile;
leave;
endif;

update MySubfile;
enddo;

Übrigens:
Wenn du deine Schleife so durchführst, kannst du jederzeit per "iter" am Anfang der Schleife aufsetzen.
Hast du den READ aber am Ende, musst du kompliziertere Logik verwenden.

Was nun deine *INKL angeht, so wird diese bei jedem READC wieder gesetzt, wenn du die Verarbeitung auch bei gesetzter *INKL durchführst.
Normalerweise sollte aber eine F-Taste andere Aufgaben haben.
*INK-Bezugszahlen werden erst beim WRITE+READ/EXFMT neu ermittelt.