One extra note on this topic. In a usual DATA step you can use the index variable in a DO loop to create new variable names, for instance if i is the index (say do i = 1 to 10 by 1) then "x_i = " will create x_1, x_2 etc. Once of the reasons for VALSET is that IML cannot assign matrix names in this way, which seems odd. My previous post would not be an issue if IML could.