I’ve seen this discussed before (on Midrange.Com I think) and it’s something to do with how the compiler interprets the EVAL statement with so many 15.6 length fields.
I can’t remember what the exact explanation was, but if you break the EVAL down into its component parts then everything works fine. E.g:
C Eval @tqty = @1 * @2
C Eval @tqty = @tqty * @3
C Eval @tqty = @tqty * @4
C Eval @tqty = @tqty * @5
Will give you the correct result.
All the best