Отвечая на вторую часть вопроса, он делает следующее:
Существует переменная i
, которая имеет некоторое значение, указывающее строку, из которой пользователь хочет получить значения.Когда эта строка достигнута, значения в трех переменных сохраняются в макропеременных, у которых есть номер строки в их имени, например, если i = 5, тогда он займет 5-ю строку и поместит три переменные в &var005
,&min005
, &max005
.
Однако существует ряд проблем с этим кодом.Во-первых, повторное использование i
в этом цикле - плохая идея;хотя он не делает ничего постоянного, он легко может с небольшими изменениями, которые могут возникнуть из-за других функций / исправлений.
Во-вторых, цикл, который в настоящее время структурирован, не имеет смысла.Он ничего не делает, основываясь на i
, поэтому просто помещает одни и те же 3 значения в одни и те же 3 макропеременные несколько раз.Мне кажется, что это чей-то взгляд на код, который они скопировали из интернета, но немного неправильно поняли.
Вероятно, то, что должен сделать, выглядит примерно так:
data _null_;
set &dset_in.;
call symput ("var" !! strip(put(_n_, 3.)), strip(Variabile));
call symput ("min" !! strip(put(_n_, 3.)), strip(lim_inf));
call symput ("max" !! strip(put(_n_, 3.)), strip(lim_sup));
run;
Это создаст макропеременные для каждой строки с номером строки в имени, используяавтоматический шаг данных петли.Однако это всего лишь предположение, не зная ничего о программе, кроме того, что я вижу здесь.
Но это все с оговоркой, что вся эта операция - плохая идея;хранение значений данных в макропеременных является плохой практикой программирования.Не делай этого.