For those interested, here is an alternative to macro loops way of implementing data-driven looping: CALL EXECUTE made easy for SAS data-driven programming.