Что именно "%" перед переменной в SAS pass-through точно делает / или означает? - PullRequest
1 голос
/ 06 марта 2012

что именно означает "%" в проходе через? Я получил этот код от других, код работает нормально, но я просто не понимаю, почему пришлось бы ставить% перед переменными. Если это макрос%, я не вижу кода макроса в библиотеке. Любое объяснение поможет

proc sql;
  connect to odbc as d(datasrc=source);
  create table out as select * from connection to d
  (
    select
      t.id,t.rule_id,
      %application_id,
      t.date,
      %dpv, %dpvfn1, %dpvfn2, %dpvfn3,
      %AddressValid,%AddressValidMsg,%AddressType,    
      from &db2 t
      join &db3 dxs on t.id=dxs.id
 left join &db4 dxr on t.id=dxr.id
  );
  disconnect from d;
quit;

1 Ответ

1 голос
/ 07 марта 2012

% MACRO X;VAR% MEND;

Приведенный выше пример является определением макроса.

В вашем вопросе все столбцы с% фактически выполняют вызовы макросов и заменяют вызовы значениями, присутствующими в ихопределения макросов. Например, в вашем запросе выбора ...

select
      t.id,t.rule_id,
      %application_id,
      t.date,
      %dpv, %dpvfn1, %dpvfn2, %dpvfn3,
      %AddressValid,%AddressValidMsg,%AddressType,    
      from &db2 t
      join &db3 dxs on t.id=dxs.id
 left join &db4 dxr on t.id=dxr.id

%application_id,%dpv, %dpvfn1, %dpvfn2, %dpvfn3,%AddressValid,%AddressValidMsg,%AddressType

Все вышеперечисленные вызовы макросов извлекут соответствующие определения и заменят их вместо столбцов выбора ...

...