The major reason this code will fail: perhaps your data set already contains a variable named CHANGE. It's illegal to use the same name for both a variable and an array.
As @ballardw pointed out, it is not a good idea to use this form of a DATA step:
data outdb.outdata;
set outdb.outdata;
.....
This is dangerous, particularly when your code needs to be tested and debugged. It is possible that your original version of the data did not contain a variable named CHANGE, but one of the tests inadvertently added such a variable to the data set.
In any event, use an array name that does not duplicate the name of an existing variable. If that's not the problem, post the log because the log messages are always an important clue.
... View more