To me, one of the most important ideas is included in ballardw's response but not explained enough. Consider this variation on the array processing:
array q [3] q1 q2 q5;
do i = 1 to 3;
if q[i] =8 then then q[i]=.A;
else if q[i]=9 then q[i] = .B;
else if q[i]=10 then q[i]=.C
end;
The idea is that you can afford to permanently change your existing data ... IF you can still distinguish among the answers greater than 7 and identify what they were originally. Special missing values let you do that. Once you have saved special missing values instead of the original values, procedures will automatically treat those values differently than they would nonmissing values.
... View more