Nunja, so ganz verstehe ich die Frage nicht.
Im Gegensatz zu F-Bestimmungen liest du mit SQL ja genau die Daten, die du benötigst.

Wie Birgitta schon sagt, mittels WHERE-Klausel (mit Hostvariablen) bekommst du genau die geforderten Sätze was einen SETLL/SETGT/READE/REDPE überflüssig macht.

Allerdings benötigst du hier halt immer die Sequenz:

exec sql open MyCursor;
dow SQLCOD = *zero;
exec sql fetch MyCursor into ...;
if SQLCOD = *zero;
// Verarbeitung
endif;
enddo;
exec sql close MyCursor;

Wenn man sicher ist, dass genau 1 Satz zurückkommt, kann man auf den Cursor verzichten:

exec sql select f1, f2, ... into :f1, :f2 from ... where ...;