Bit guessing what you're asking but....
A format applied to a variable with change how the variable values get WRITTEN. The format does not change the value stored in the variable.
For this reason applying the format "twice" will give you twice the same result - because the internal value of the variable hasn't changed.
IF you want to change the internal value then you need to assign the formatted value to the variable. Something like:
new_var=put(var, myformat.);
Please note: A format will always return a string and though always be character. If you want to get numerical values then use the input function - input(put(var,myformat.),best32.) - or even better define and use an informat (done via Proc Format INVALUE).