Das Problem ist ja, dass du wieder nicht dynamisch based Felder auf die Struktur machen kannst.
RPG kann nur auf das Zielfeld zugreifen in dem du den Pointer verschiebst.
Du kannst ihn auch berechnen per

ptr = %addr(DSName) + FeldPosition;

Was Dezimalfelder angeht, so kannst du das nur einzeln lösen:

dcl-s Dec1_0 packed(1:0) based ptr;
dcl-s Dec2_0 packed(2:0) based ptr;
usw.

Dann im Code:
if packed;
select;
when Size = 1,0;
Dec1_0 = %dec(%trim(Valie(j):1:0);
when Size = 2,0;
Dec2_0 = %dec(%trim(Valie(j):1:0);
when Size = 11,2:
Dec11_2 = %dec(%trim(Valie(j):11:2);
endsl;
endif;