Die Performance auf diese Art mit einzelnen SQL's zu lösen ist wirklich grottenschlecht.
Ich habe das für einen Kunden realisiert (es wurde als SQL-Funktion benötigt) und musste hier dramatische Einbußen hinnehmen.
In Java ist es so, dass ich einen Datensatz lese und mit den entsprechenden GetSet-Methoden nur noch auf Speicherobjekte zugreife. Ein SQL wird da nicht mehr ausgeführt.
Möchtest du das dynamisch in einer ILE-Prozedur analog betreiben musst du den Datansatz per SQL komplett einlesen und dir eine Tabelle der Feldnamen mit den Werten dazu aufbauen (das geht auch dynamisch). Dann stellst du eine "READ"-Funktion zur Verfügung, die ggf. über den Schlüssel cached und einzelne Get/Set's für die Feldinformationen.
Um es mit dem Begriff "Streng typisierte Objekte" zu vergleichen müsstest du real für jedes Feld einen namentlichen Get/Set-Zugriff generieren, also GetKundenNr/SetKundenNr, GetName1/SetName1, ...
Da ILERPG aber nicht objektorientiert ist kann man solche Ansätze eher in die Tonne drücken da sie weder performant noch hilfreich sind.
Ein simpler Zugriffshandler für komplette Strukturen mit diversen Zugriffen ist da allemal effektiver und logischer.