Я пытаюсь отделить имя набора данных, которое создается двумя макропеременными, подчеркиванием, но оно выдает ошибку в% macro create_table.
%macro create_tables;
* NOTE THE DOUBLE AMPERSAND! *;
data &&_produto&i_&&_mes_char&j;
Я пытался использовать точку в конце первой макропеременной, но не сработал, как ожидалось. как я мог решить эту ситуацию?
%macro create_tables;
* NOTE THE DOUBLE AMPERSAND! *;
data &&_produto&i_&&_mes_char&j;
set aux_base_defaults;
if fim_mes = &&_fim_mes&j and cod = &&_id_produto&i;
run;
%mend create_tables;
*------------------------------------------*;
* DEFINE MACRO VARIABLES *;
*------------------------------------------*;
proc sql;
create table produtos_a_considerar as
select b.sigla, a.cod
from (select distinct cod
from aux_base_defaults
group by cod) a
inner join ecl.referencia_produtos b on b.id_produto = a.cod;
quit;
data _null_;
set produtos_a_considerar;
call symput( '_produto' || left(trim(_N_)) , trim(sigla));
call symput( '_id_produto' || left(trim(_N_)) , cod);
call symput( '_obs_produto' , _N_ );
run;
data _null_;
set dim_fim_mes;
call symput( '_fim_mes' || left(trim(_N_)) , fim_mes );
call symput( '_mes_char' || left(trim(_N_)) , substr(mes_char,1,7));
call symput( '_obs_fim_mes' , _N_ );
run;
*-----------------------------------------*;
* SUBMIT EXAMPLE5 FOR EACH DATASET *;
*-----------------------------------------*;
%macro loop;
%do i=1 %to &_obs_produto;
%do j=1 %to &_obs_fim_mes;
%create_tables;
%end;
%end;
%mend loop;
%loop;