Nunja, RPG und dynamisches SQL gestaltet sich halt schwierig.
Sinn und Zweck von embedded SQL ist ja eigentlich, dass das Programm genau die Daten liest, die es benötigt.

Für dynamische Cursor ist RPG (auch ILE und VARPG) weniger gut geeignet.

Hierfür sind SQLDA-Strukturen, SQL-Feldtypen und Pointer erforderlich und würde hier den Rahmen sprengen.

Ich würde mir da genauere Gedanken über die Funktion des Programmes machen.
Quasi-dynmaische Where-Klauseln sind da eher unproblematisch:

select ...
where key1 between : From1 and : To1 and ...

Wenn ein Selektionskriterium nicht gefüllt ist, füllt man halt FromX mit *loval und ToX mit *hival (o.ä.).