Ich kann dein Problem nicht nachvollziehen. Wahrscheinlich habe ich das falsch verstanden.
Wir haben V7R2. Da haben wir keine Probleme.

Es ist allerdings (ich denke schon immer) so, dass nicht benutzte Variablen vom Compiler aus dem Programm herausoptimiert wurden (CPF7031 in der Wandlungsliste). Das heißt, eine reine Deklaration des Datensatzes als externe Struktur bringt nichts, wenn die externe Struktur im weiteren Programm nicht verwendet wird.

Wenn du irgendwo im Programm eine unproblematische Verwendung des Datensatzes arrangierst, kannst du auch alle Felder sehen.

Hier sieht man den Inhalt nicht:
Code:
     FKUNDE     IF   E           K DISK
       dcl-ds KUNDESatz extname('KUNDE') end-ds;
     C                   READ      KUNDE
       *inlr = *on;
       return;
Hier kann man den Inhalt von KUNDESatz (alle Felder) im Debugger sehen:
Code:
     FKUNDE     IF   E           K DISK
       dcl-ds KUNDESatz extname('KUNDE') end-ds;
     C                   READ      KUNDE
       if KUNDESatz = *loval;
       endif;
       *inlr = *on;
       return;
Das "if KUNDESatz = *loval" ist natürlich inhaltlich sinnlos, da im if nichts gemacht wird. Aber es sorgt dafür, dass der Compiler KUNDESatz nicht herausoptimiert.