Das Problem ist, dass die Felder der DS kein Array sind, sondern nur die DS.
Um den Betrag zu einem Array zu machen, musst du die Overlay-Struktur anwenden:

dcl-ds MyDs qualified;
MyArray char(50) dim(100);
F1 char(1) overlay(MyArray:1);
F2 Char(5) overlay(MyArray:*next);
W1 packed(11:2) overlay(MyArray:*next);
end-ds;

Sum = %xfoot(MyDs.W1);

Durch das Overlay weiß der Compiler, dass die Felder dann wieder Arrays sind.
Was i.Ü. auch z.B. für %sort() funktioniert.