Wenn du gleich mit dynamischem SQL loslegst hast du auch entsprechende Schwierigkeiten.
Fang doch erst mal mit statischen SQL's an, also nicht zusammengebauten.
Dann gibt's auch weniger Anfangsprobleme mit den Variablen.
Ein SQL kann bis 32k lang sein und wird weitestgehend vom SEU unterstützt.
also:

c/exec sql
c+ declare cursor mycursor for
c+ select f1, f2, f3 ...
c+ from myfile
c+ where k1= : R1 and K2= : K2
c/end-exec

Der große Vorteil:
Um Hochkommata brauchst du dich fast gar nicht zu kümmern.
Du definierst einfach deine RPG-Variablen und kannst diese als Quelle und Ziel im SQL mit einem ":" angeben.

c/exec sql
c+ open mycursor
c/end-exec

c/exec sql
c+ fetch mycursor into : v1, : V2, ...
c/end-exec

c/exec sql
c+ close mycursor
c/end-exec

Bei dynamischem SQL musst du bei Zeichenfeldern darauf achten, dass enthaltene Hochkommata ja verdoppelt werden müssen, sonst gibts Syntaxfehler !
Dynamisches SQL ist auch mit RPGLE besser durchzuführen (Variablen bis 32K).