Включение макропеременной SAS при создании файла XML из SAS - PullRequest
0 голосов
/ 06 декабря 2018

Я создаю XML-файл в SAS и хочу заменить EveningTelePhoneNum в операторе put макропеременной, но, похоже, это не нравится.Смотрите пример кода:

put '  <Contact>';
if (pi ne "") then put '    <PersonalId>' pi +(-1) '</PersonalId>';
if (pi ne "") then put '    <EveningTelephoneNum>' '. ' +(-1) '</EveningTelephoneNum>';
put '  </Contact>';

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Используйте библиотечный движок XML для надежного и простого экспорта плоской структуры данных.

Например:

libname myxml XML "C:\Temp\sandbox.xml";

%let moneyvar = invoice;

data myxml.acura;
  set sashelp.cars;
  where make = "Acura";
  keep model &moneyvar;
run;

Я использовал макропеременную moneyvar (хотя полностьюне обязательно) подражать идее EveningTelePhoneNum в вашем вопросе.

0 голосов
/ 06 декабря 2018

Если вы пытаетесь сделать:

%let fieldname=EveningTelephoneNum ;
put '  <Contact>';
if (pi ne "")         then put '    <PersonalId>' pi   +(-1) '</PersonalId>';
if (&fieldname ne "") then put '    <&fieldname>' '. ' +(-1) '</&fieldname>';
put '  </Contact>';

Это не сработает, потому что макросы не разрешаются внутри одинарных кавычек.Вы можете попробовать (не проверено):

%let fieldname=EveningTelephoneNum ;
put '  <Contact>';
if (pi ne "")         then put '    <PersonalId>' pi   +(-1) '</PersonalId>';
if (&fieldname ne "") then put "    <&fieldname>" '. ' +(-1) "</&fieldname>";
put '  </Contact>';

Но я могу неправильно понять ваш вопрос.И, вероятно, есть более простые способы создания файла XML, чем запись вручную с помощью операторов PUT.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...