Nun ja, der Compiler generiert hinter jedem Statement einen Breakpoint (als MI-Deklaration).
Der Einzelschritt läuft nun von einem Breakpoint zum nächsten.
Die Anzahl der Schritte beim lesen/Schreiben hängt von der Verwendung der Felder ab.
Der Compiler generiert nur Moves von/nach für die im Programm verwendeten Felder. Hat man diese in einer eigenen "E DS" noch zusätzlich definiert werden eben alle Felder angesprochen.

Sinn und Zweck kommt ggf. aus sehr alten Zeiten oder aus z.B. COBOL-Anwendungen.
In DDS-beschriebenen Feldern kann nun mal mit COBOL (mit RPG nur bei intern beschriebenen) auch Schrott in numerische Felder geschrieben werden.
Beim Lesen mit RPG fällt RPG dann beim Move von Schrott auf die Nase.
Durch Abzählen der Schritte beim Chain/Read im Debugger ist nun das problematisch Feld herauszufinden, da ja ein MCH-Fehler bei der RPG-EA-Anweisung und nicht beim tatsächlichen Move ausgeworfen wird .