2016-06-15 2 views
0

, поэтому у меня есть набор данных, элементами которого являются строки писем в кавычках. Один элемент данных может выглядеть так: «[email protected]» «[email protected]» «[email protected]» «[email protected]»sas передал цитированные строки макросу

У меня есть следующая команда и данные макроса Шаг:

%macro Emailer(RCP=); 
/* body of the e-mail*/ 
data _null_; 
    file tmp; 
    put "Hello, World! <BR>"; 
run; 

/*to-from*/ 
Filename tmp Email 
Subject="Hello World Test" 
To= (&RCP) 
CT= "text/html"; 
%mend Emailer; 

data _null_; 
    set EmailLists; 
    call execute('%Emailer(RCP='||ListOfEmails||')'); 
run; 

Но я продолжаю получать «ОШИБКА: параметр Макрос содержит синтаксическую ошибку».

Это потому, что мои элементы данных имеют пробелы или кавычки или и то, и другое?

Заранее спасибо.

+0

Ваш макрос смотрит вверх тормашками. Вы пишете файл TMP, прежде чем определять его с помощью инструкции FILENAME. – Tom

+0

Могу ли я вызвать шаг данных сразу после утверждения FILENAME? – Prototank

+0

Вы можете ссылаться на fileref, определяемый оператором FILENAME, в любое время после его определения. Вы должны опубликовать более четкие примеры того, что в нем содержится в базе данных EMAILLISTS. Имеет ли он несколько записей или только одну запись? – Tom

ответ

1

Один из способов тестирования - передать параметры напрямую, а не с шага данных. Сначала я переупорядочу порядок выступлений, как отмечали комментаторы.

%macro Emailer(RCP=); 
    filename myEmail Email; 
    data _null_; 
    file myEmail Subject = "Hello World Test" 
       To = (&RCP) 
       CT = "text/html"; 
    put "Hello, World! <BR>"; 
    run; 
    filename myEmail clear; 
%mend Emailer; 

И попытаться сделать какие-либо из этих работ (не может сделать свой 64-битную SAS работать с моим 32-бит перспективы, поэтому я не могу проверить все это):

%Emailer(RCP="[email protected]" "[email protected]" "[email protected]") 
%Emailer(RCP="[email protected] [email protected] [email protected]") 
%Emailer([email protected] [email protected]m [email protected]) 
%Emailer([email protected] ; [email protected] ; [email protected]) 

После вы выясните, какая форма работает, остальное должно быть легко.

+0

Отличный ответ! Для ваших собственных целей, если это когда-либо появляется, правильная форма такова: % Emailer (RCP = "[email protected]" "[email protected]" "[email protected]") без пробелов , – Prototank

+0

Интересно ... Просто любопытством вы пробовали что-то вроде этого? '% Emailer (RCP =" [email protected]; [email protected]; [email protected] ")'? –