Das Umbenennen in der DS hat keinen Einfluss auf IO.
Das hat nichts mit der Umbenennung in den I-Bestimmungen zu tun!

Die DS wird definiert "as is", die Verwendung entscheidest du und nicht der Compiler.
Eine Beziehung zwischen DS und IO gibt es generell nicht.
Nur die RPG-Definition "Eine Variable existiert nur 1 x", scheint eine Beziehung herzustellen. In Wirklichkeit generiert der Compiler die passenden MOVE's.

Indicator sind vom Typ "ind" (N), in der Datei vom Typ CHAR(1). Das ist nicht dasselbe. Deshalb klappt das auch nicht mit OUTPUT-DS's. Hier hilft allenfalls INDARA in der DSPF/PRTF, da dann die *IN nicht zur DS gehören.

Die Variable IND97 entspricht daher nicht *IN97 bzw. *IN(97) und du scheiters bei EVAL-CORR.
Nur mit Definition kannst du i.d.R nichts reißen.

In den I-Definitionen werden auch nur die Felder aufgeführt, die in der Quelle verwendet sind.
Wenn alle benötigt werden, kann man eine DS extern, nicht qualified, definieren.
Was allerdings dann wieder scheitert, wenn ein Feld in mehreren DSN's auftaucht.

Die einzige Lösung sind Qualified DS'n mit "Read/Write DSName".
D.h. auch, dass O-Bestimmungen durch Write ersetzt werden müssen.