SAS: видимая символьная ссылка не разрешена для ссылки на макрос - PullRequest
0 голосов
/ 03 июля 2018

Я понял и видел в других программах, что следующий синтаксис верен.

%let variable = 'something';

statement name "&variable\othertext";        // something\othertext

Однако в коде, который я написал, я получаю это сообщение об ошибке: Кажущаяся символическая ссылка не разрешена. для строки LIBNAME REMOTE

%let month  =   'JUN';      
%let year   =   '18';       

%let    zos =   ***********
signon  zos     ********************;

libname name    "*********************************";

rsubmit;
libname remote  "AAAA.BBBB.&month&year.SASLIB"  access = readonly;

proc download inlib=remote outlib=name;
run;

libname remote clear;
endrsubmit;

signoff;

Чего мне не хватает?

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Макропеременные MONTH и YEAR определяются в локальном сеансе, но вы пытаетесь разрешить их в удаленном сеансе.

Используйте %SYSRPUT и %SYSLPUT для назначения макропеременных между сеансами.

/* Local to remote */
%LET MONTH = 12 ;
%LET YEAR  = 2018 ;
%SYSLPUT MONTH = &MONTH ;
%SYSLPUT YEAR  = &YEAR ;

rsubmit ;
  %PUT &MONTH &YEAR ;
  /* resolves 12 and 2018 respectively */

  /* remote to local */
  %SYSRPUT FOO = BAR ;
endrsubmit ;

%PUT &FOO ; /* resolves to BAR */
0 голосов
/ 03 июля 2018

Может помочь больше контекста, но, скорее всего, вы не понимаете, какую роль играет период в разрешении ссылок на макропеременные (символы) Чтобы позволить вам размещать буквы и цифры рядом со ссылками на макропеременные, SAS нужен способ определить, где заканчивается имя макроса и начинается простой текст. Для этого используется период.

Итак, если вы хотите сгенерировать эту строку

"AAAA.BBBB.JAN18.SASLIB"

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

%let month=JAN ;
%let year= 18;

Затем, когда вы замените значения ссылками на макропеременные, вам понадобится дополнительный период после & YEAR, чтобы он действительно был сгенерирован. Вероятно, вам следует просто привыкать всегда добавлять точку при обращении к макропеременной.

"AAAA.BBBB.&month.&year..SASLIB"
...