No, the output is what it should be. Moving 0.4012 to WS-A changes the value to zero. Why? Because A has no decimal digits (if not specified, the decimal point is to the RIGHT of the last digit in a PICTURE). Hence the .4012 gets discarded and the value moved to WS-B is 0.
Update: your output does not match the PICTURE clause, too. Your output has 10 digits before the decimal point but WS-B is defined with 9 digits before the decimal point. If you want to post output, post the ACTUAL output, not whatever you interpret the output to be -- many times, your interpretation may not be right and you lose critical information by editing the output (such as adding an extra digits to the output).