Your post does not include enough information to help answer the question. Posting test data in the form of a datastep is required. For instance, there is no example of what dod or adt is?
Your text is all in opposites, you say dod is numeric, but line 221 is clearly telling you an issue as you have compress() which requires a text var, with dod var which is numeric.
Also, there is no error, only telling you you have differing types for your variables. If its not working, try simplifying your code down, only do one function per run, e.g. see what the compress does, then what the inputs do, this is stepwise error analysis. Only build up long complicated multi calls when you know bits work.