Потому что вы подождали, пока не закончатся циклы DO, чтобы записать какие-либо наблюдения.Если вы хотите написать несколько наблюдений, вы должны переместить ваш оператор output
в цикл do.
Также ваша программа никогда не инициализирует gallon
, поэтому mpg
всегда будет отсутствовать и поэтому будет меньше 250, что означаетВаш внешний цикл DO будет выполняться только один раз.
На ваш вопрос в письменном виде можно ответить без программы, поскольку 10 * 20 меньше 250. Если предположить, что вы также хотите изменить значения mpg
, возможно, этобольше, чем вы хотели?
data mileage;
do mpg = 20 by 1 until (miles ge 250);
do gallon=1 to 10 until (miles ge 250);
miles = gallon * mpg;
output;
end;
end;
run;
Возможность комбинировать итерационный цикл с условием UNTIL - одна из многих приятных особенностей цикла DO шага данных.