Hi:
I cannot think of any situation where varname.sum would be a character value, as you indicate by '0' in your comparison.
[pre]
if _freq_p.sum='0' then change='100';
[/pre]
I suspect that your IF test is failing. _FREQ_P should be a numeric, analysis variable if you are getting a SUM statistic for it. Therefore, there is a difference between 0 (the number) and '0' (a text character that happens to be 0). You might as well code:
[pre]
if _freq_p.sum='Z' then change='100';
[/pre]
Also, if you expect CHANGE to be a numeric variable, then I would expect the change='100' to be causing some automatic conversion messages. If you want CHANGE to be a character variable, then you would have to alter your COMPUTE block to:
[pre]
Compute change / character length=5;
. . . more code . . .
Endcomp;
[/pre]
The DIVIDE function allows you to divide and if the denominator is 0, the DIVIDE function was invented so you would not get the divide by zero error messages.
I suspect that just a little more cleanup will have your program working.
cynthia