Da Feldnamen zur Compilezeit in Adressen übersetzt werden, können Namen zur Laufzeit nicht dynamisch ermittelt werden.
Du kannst aber z.B. eine Tabelle mit Namen und Adressen initialisieren und diese Adressen dann per Value an das Programm übergeben, so dass diese die Adresse wieder als normale Referenz übernehmen.
Gegen die berühmten Pufferüberschreibungen musst du allerdings selber arbeiten:

d myflds ds
d fldname1 10 inz('NAME1')
d fldadr1 * inz(%addr(NAME1)

usw. usw.