MUITO OBRIGADO! Consegue me dar só mais uma ajudinha? O código estava criando a tabela com o nome tipo Tabela_19APR2023 então eu só fiz uma mudança no formato a fim de criar com o nome TABELA_20230419. /* Defina a variável data como a data atual */ data _null_; call symput('data_dia_util',today()); /* CRIEI COMO VARIAVEL MACRO */ run; /* Defina a lista de feriados */ data feriados; input feriado; format feriado date9.; informat feriado date9.; /* USEI INFORMAT PARA QUE A LEITURA FUNCIONASSE */ datalines; 01JAN2023 15APR2023 21APR2023 01MAY2023 30MAY2023 09JUN2023 07SEP2023 12OCT2023 02NOV2023 15NOV2023 25DEC2023 ; run; /* Calcule a data do último dia útil */ data _null_; /* Subtraia 1 dia da data atual */ set feriados; /* Enquanto a data não for um dia útil, subtraia 1 dia */ do while(weekday(&data_dia_util) in (1,7) or feriado=&data_dia_util); /* No loop aqui, uso macro substituição */ %let data_dia_util = %eval(&data_dia_util-1); /* NOVAMENTE %let e %eval é SAS MACRO */ end; /* Exiba a data do último dia útil */ x=put(&data_dia_util,yymmddn8.); %let DATA_MOV=put(x,$10.); call symput('nome_tabela','tabela_' || &DATA_MOV); /* gerei varíavel macro o nome da sua tabela, aproveitando o mesmo data step*/ put x; run; /* Cria tabela vazia com nome tabela_aaaammdd */ data &nome_tabela; /* fazendo a macro substituição */ run; Na parte final do código, quando ele cria a tabela eu tentei colocar data tabela_&DATA_MOV; em vez de usar a variavel criada &nome_tabela. Não deu certo, sabe me explicar pq? sendo que na linha de cima : call symput('nome_tabela','tabela_' || &DATA_MOV) eu uso ela e ela me traz o resultado esperado. Pergunto isso porque na verdade a tabela vazia era só pra testar a variável, o que eu preciso mesmo é dessa macro variável DATA_MOV com o valor de 20230419 (por exemplo)
... View more