Nun, da RPG immer noch kompiliert wird, also ein PGM-Objekt erstellt werden muss, ist ein dynamischer EVAL so nicht möglich.

Die einzige Möglichkeit ist hier dynamisches SQL !

Zwar kann die SQL-Anweisung SET nicht verwendet werden, aber ein SELECT ist immer möglich. Dieser kann auch mittles Prepare und Execute vorbereitet und ausgeführt werden.
Sicher, für einen Select brauch ich eine Datei, aber ich brauch keine Daten, kann also eine Pseudodatei nehmen.
Keine Daten ? Dann gibts ja keine Sätze !
Fast richtig, es gibt aber mindestens eine Funktion die IMMER ein Ergebnis liefert:

"Select count(*) from MyFile" ! ==> Ergebnis ist mindestens 0 !

Und was ist mit der Formel ?

"Select count(*), >Formel< from MyFile"

Die Syntaxprüfung wird automatisch durchgeführt, über die SQLCA bekomme ich auch die genaue Position der fehlerhaften Formel.
Habe ich keinen SQL-Fehler, kann ich mittels
"open ..."
"fetch ... using descriptor ..."
"close ..."
den dynamschen Select ausführen.

Wie ich nun dynamisches SQL benutze wird ziehmlich gut in den SQL-Handbüchern beschrieben und würde hier den Rahmen sprengen.