2011-01-26 3 views
1

У меня возникают два вопроса на следующий код SAS:вопрос по умолчанию инициализируется значение переменной SAS

%let crsnum=3; 
data revenue; 
set sasuser.all end=final; 
where course_number=&crsnum; 
total+1; 
if paid=’Y’ then paidup+1; 
if final then do; 
    call symput(’numpaid’,paidup); 
    call symput(’numstu’,total); 
    call symput(’crsname’,course_title); 
end; 
run; 
proc print data=revenue noobs; 
    var student_name student_company paid; 
    title "Fee Status for &crsname (#&crsnum)"; 
    footnote "Note: &numpaid Paid out of &numstu Students"; 
run; 

Первый вопрос, в строке 5, она имеет

if paid=’Y’ then paidup+1; 

«paidup «здесь должна быть переменная. Мне кажется, что SAS устанавливает начальное значение по умолчанию «заплачено» как 0. Это правда?

Второй вопрос, в коде сегменте

title "Fee Status for &crsname (#&crsnum)"; 

Как # & crsnum работу? Или в чем функциональность # здесь?

ответ

1

Первый вопрос: да, это то, что сделал SAS - он инициализировал переменную с помощью 0 и «сохранил» значение переменной в цикле набора данных. (Если переменная paidup уже существует в исходных данных, в вашем случае sasuser.all)

Второй вопрос: в коде, вы в курсе, что нет ничего особенного в #: он будет выглядеть как литерал до разрешенного значения &crsnum в названии. Так что, если & crsname является Ла и & crsnum является , название будет читать

Fee Статус для Л (# 3)

#, однако, может повлиять на заголовки, когда А by группа находится в игре, если она включена в заголовок определенным образом - см. Документацию here под заголовком «Вставка информации о группе в заголовок».

Смежные вопросы