PROC SQL SELECT with a join to the lookup table is an alternative way to do this kind of thing. It is generally more reliable because it uses declarative statements with no looping. It is also more data-driven, so changes can often be made in the data alone: the SQL code remains the same. SQL is more portable and familiar to those new to SAS. I reduce my use of the DATA step to a minimum; mostly just complex within-row calculations or order-dependent between-row calculations.