Stimmt, Pointer sind die Lösung:

dcl-ds DSFILE extname('FILE') qualified;
end-ds;

dcl-s PointerKW pointer inz(%addr(DSFILE.KW01));
dcl-s KW based(PointerKW) dim(nn);

Bei Birgittas Vorschlag entnimmst du die Startposition aus DSPFFD.
Das ist nur bei Dateiänderungen halt nicht dynamsich.
Aber wer ändert schon bestehende Dateien;-).

Das Problem bei externen DS'n ist ja, dass diese nicht erweiterbar sind, im Gegensatz zu den alten DS'n, an die ich einfach anhägen kann.

Übrigenes arbeite ich auch bei SQL gerne mit Pointern, da SQL immer noch nur einstufige DS'n unterstützt. Mit Templates und Pointern kann man das sehr schön vereinfachen ohne ständig irgendwas zu moven.