This doesn't explain everything, but at least part of the problem is that you have carriage returns at the end of their values. This means that it's printing something like this:
-bad 0.0 -aswap -AMX -decim 1792<CR>
...except that each "line" is printed on top of the previous one, because they're separated by carriage returns rather than linefeeds. Now, if you compare what I just described to your output, it won't quite match (mine gives " \pdly 6792swap -AMX -decim 1792"), so I think there's another in there somewhere for some reason.
The cause of this is probably that the file you're reading from is in DOS/Windows format, which uses a carriage return followed by linefeed at the end of each line; unix just uses linefeed, and tends to treat the carriage return as part of the content of the line, e.g. reading it into variables at the end ... just like you're getting. One option is to convert the file to unix format with
dos2unix or some similar program. Another is to remove the carriage returns as you read from the file, something like this:
set decim = `cat decimfile | tr -d '\r'`
(with whatever actual command you're using instead of the
cat part.) Or, you can clean the variables after reading them with:
set decim = `echo $decim | tr -d '\r'`
Note that there are a number of different conventions for how to "write" a carriage return; I've been using "
tr understands "\r", and some other programs will use "^m" or "^M".