Ich verstehe das Problem nicht.
Da ein Format (egal ob SFL oder Record) eben Ein- und Ausgabefelder hat, ergeben sich unterschiedliche Strukturen.
Also fülle ich die OUT_DS mit den benötigten Informationen.
Bei Namensgleichheit mit z.B. einer PF kann ich eben folgendes tun:
eval-Corr OUT_DS IN_PFDS;
OUT_DS.FX = BlaBla;
WRITE SFLFMT OUT_DS;

READ/C FORMAT IN_DS;
eval-corr OUT_DS = IN_DS; // Zur Sicherheit

Der Rest ist eben Programmierlogik.