2015-11-04 3 views
2

У меня есть серия похожих файлов, из которых мне нужно создать наборы данных SAS. Я хотел бы сделать макрос, который, учитывая имя файла в качестве параметра, может выводить шаг данных. Возможно ли это теоретически?Шаг данных внутри макрофункции

Я довольно новый для SAS, и я сделал этот простой пример:

%macro computeFormAndDomain(formName, domainName); 
    data thing; 
     input Name $; 
     datalines; 
     Bob 
     Jill 
     ; 
    run; 
%mend; 

%computeFormAndDomain("test", "test2"); 
proc print data=thing; 
run; 

Однако это возвращает ошибку «ERROR: Макрос COMPUTEFORMANDDOMAIN генерироваться КАРТОЧКИ (строки данных) для шага DATA, что может привести к неправильные результаты. Шаг DDATA и макрос прекратят выполнение. " Какие корректировки нужно сделать или есть лучший способ добиться того, чего я хочу?

+1

Вы не можете использовать утверждение карточки внутри макроса. Существуют и другие способы передачи данных в потоке в макрос. Это поможет узнать больше о том, что вы делаете. Я вижу, что у вас есть макрос с двумя параметрами, но вы не используете их, так что там история? –

+0

@data_null_ Если вы не отправляете ответ в качестве ответа ;-) –

+0

Просто для того, чтобы прояснить что-то: это не макро * функция *. Это * макрос *. Функция макросов не существует в SAS; макрос в стиле функции делает, но делает что-то совершенно другое (возвращает одно значение в открытом коде). – Joe

ответ

3

Вы не можете использовать КАРТЫ/ДАТАЛЬНИКИ в макросе по правилу. Вам необходимо предоставить информацию в макрос как уже построенный набор данных (или, как-то иначе). См. Например, this thread, обсуждая проблему.

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