2017-02-14 9 views
1

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

data TableList; 
input tables $ cols $; 
cards; 
tab1 col 
tab2 cul 
; 
run; 


%macro test; 
    proc sql; 
     select tables 
     into:tabs separated by " "   
     from TableList; 
    quit; 

    %do i=1 %to 2;   
     %let t = %scan(&tabs,&i);  
     proc sql; 
      select cols 
     into: col   
      from TableList 
      where tables='&t'; 
     quit; 
     %put &col;   
    %end; 
%mend; 
%test; 

Проблемы с этим, когда я запускаю это код Я получил это сообщение об ошибке:

WARNING: Apparent symbolic reference COL not resolved. 
&col 

Почему это. Не изменяет ли значение & col с его истинным значением во время выполнения?

ОБНОВЛЕНИЕ: Установка «& t» вместо «& t» решена моя проблема. Код теперь работает.

data TableList; 
input tables $ cols $; 
cards; 
tab1 col 
tab2 cul 
; 
run; 

%macro test; 
    proc sql; 
     select tables 
     into:tabs separated by " "   
     from TableList; 
    quit; 
    %do i=1 %to 2;   
     %let t = %scan(&tabs,&i);  
     proc sql; 
      select cols 
     into: col   
      from TableList 
      where tables="&t"; 
     quit; 
     %put Column &col;   
    %end; 
%mend; 
%test; 

ответ

1

Несколько вопросов здесь

where tables='&t' не будут работать из-за одинарные кавычек. При использовании макропеременных вам нужно использовать двойные кавычки.

&t Также не определен

Это похоже на работу (т.е. печати cul в журнале), но я должен был определить t вручную.

data TableList; 
    input tables $ cols $; 
    cards; 
tab1 col 
tab2 cul 
; 
run; 

%let t=tab2; 

%macro test; 

    proc sql; 
     select tables 
      into:tabs separated by " "   
     from TableList; 
    quit; 

    %do i=1 %to 2; 
     %let t = %scan(&tabs,&i); 

     proc sql; 
      select cols 
       into: col   
      from TableList 
       where tables="&t"; 
     quit; 

     %put &col; 
    %end; 
%mend; 

%test; 

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

  • Нет связанных вопросов^_^