Ein CHAIN sucht genau den Schlüssel, der ggf. auch verkürzt angegeben werden kann.
Allerdings gilt bei "not %found()" der Zeiger als undefiniert, so dass ein nächster READE a) nicht erfolgreich sein muss oder b) nicht zwingend den nächsten Satz abgibt.
Nur SETLL/SETGT setzt den Dateizeiger für einen nachfolgenden READE/READPE.

Was den Austausch der Anweisung angeht:

SETLL ohne Bezugszahl, anschließend "if not %found()".

Übrigens: Der Status %eof(), %found(), %error() ist für jede Datei statisch bis zu nächsten IO-Anweisung derselben Datei, so dass mit %xxx(Datei) der Status jederzeit erneut prüfbar ist.