Вы смешиваете область действия, которая часто нежелательна.
Какое так называемое улучшение вы хотите получить?
Цикл %do
сгенерирует исходный код для 2шаг данных if для каждой итерации макроса %do
.
Глобальное присваивание maximum
вне макроса ничего не делает в отношении установки или переопределения maximum
, который должен вызывать вызов макроса.Макрос SPORTS
должен быть вызван, чтобы что-то произошло, иначе вы просто компилируете макрос.Определение макроса также странным образом чередуется с run;
вне определения макроса.В общем, вы все делаете неправильно.
Макрос генерирует исходный код и, следовательно, не может изменить исходный код работающего (и, следовательно, уже скомпилированного шага данных)
На теоретическомминимум, вы можете захотеть
if array_one{&i} = '121' then sponsor = 'yes';
вместо
if array_one{i} = '121' then sponsor = 'yes';
, но это не поможет в более широком смысле.
Вы действительно пытаетесь оценитьразница между
do i = 1 to 12;
if array_one{i} = '121' then sponsor = 'yes';
if array_one{i} in ('44', '55') then participant = 'active';
end;
и макросом сгенерированного источника
if value01 = '121' then sponsor = 'yes';
if value01 in ('44', '55') then participant = 'active';
if value02 = '121' then sponsor = 'yes';
if value02 in ('44', '55') then participant = 'active';
if value03 = '121' then sponsor = 'yes';
if value03 in ('44', '55') then participant = 'active';
if value04 = '121' then sponsor = 'yes';
if value04 in ('44', '55') then participant = 'active';
if value05 = '121' then sponsor = 'yes';
if value05 in ('44', '55') then participant = 'active';
if value06 = '121' then sponsor = 'yes';
if value06 in ('44', '55') then participant = 'active';
if value07 = '121' then sponsor = 'yes';
if value07 in ('44', '55') then participant = 'active';
if value08 = '121' then sponsor = 'yes';
if value08 in ('44', '55') then participant = 'active';
if value09 = '121' then sponsor = 'yes';
if value09 in ('44', '55') then participant = 'active';
if value10 = '121' then sponsor = 'yes';
if value10 in ('44', '55') then participant = 'active';
if value11 = '121' then sponsor = 'yes';
if value11 in ('44', '55') then participant = 'active';
if value12 = '121' then sponsor = 'yes';
if value12 in ('44', '55') then participant = 'active';