Давайте смоделируем ваш случай. Предположим, у нас есть 3 datasets
, как показано ниже -
data get_currency_1;
input month code $ new_rate currency_rate;
cards;
1 USD 2 2
2 CHF 2 1.5
3 GBP 1 1.5
;
data get_currency_2;
input month code $ new_rate currency_rate;
cards;
1 USD 3 1.5
2 USD 4 4
3 JPY 0.5 1.5
;
data get_currency_3;
input month code $ new_rate currency_rate;
cards;
1 USD 1 1.5
2 USD 3 1.5
3 USD 2.5 2.5
;
Теперь давайте запустим ваш код, где мы присваиваем значение currency_rate
.
Пусть i = 1 Итак, набор данных get_currency_1
будет доступен. По мере выполнения шага будет доступен каждый ряд, и значение currency_rate
будет присвоено макропеременной currency_rate
, и эта итерация будет продолжаться до конца шага данных. В это время последнее значение будет иметь значение currency_rate и будет последним значением макропеременной currency_rate
, поскольку после этого шаг заканчивается.
%let i=1; /*Let's assign 1 to i*/
data _null_;
set get_currency_&i;
if month = &i and code = 'USD' then currency_rate=new_rate;
else currency_rate=1.5;
call symput ('currency_rate', currency_rate);
run;
%put Currency rate is: ¤cy_rate;
Currency rate is: 1.5
Пусть i = 3:
%let i=3; /*Let's assign 3 to i*/
data _null_;
set get_currency_&i;
if month = &i and code = 'USD' then currency_rate=new_rate;
else currency_rate=1.5;
call symput ('currency_rate', currency_rate);
run;
%put Currency rate is: ¤cy_rate;
Currency rate is: 2.5
Вы не можете иметь несколько значений для одной макропеременной.