Hab ich irgendwas von Variablen erwähnt ?
Ist doch nur Syntaxbeispiel.

Im Handbuch steht
%DEC(numeric or character expression{: precision:decimal places})

Wobei auch erst aus dem Text hervorgeht, dass es variabel nicht geht.
Ich kann es aber ohne Fehler variabel gestalten:

D MyPos 5I 0
D MyLen 5I 0

eval num2 = %dec(%subst(%editc(MyNum:'X'):MyPos:MyLen):31:0);

Das Gemeine hier ist, dass MyNum ja nicht variabel ist und somit Variabilität sich (fast) erübrigt.

Wobei, wenn ich die Syntax ansehe:
eval num2 = %dec(%subst(%editc(MyNum:'X'):MyPos:MyLen));
ja auch geht.