Acompanhando a execução da macro no SAS

Mostrei no post Acompanhando o processo no SAS utilizando o Sysecho como utilizar o comando sysecho para acompanhar um procedimento extenso, algo que leva muito tempo para ser executado ou com muitas etapas. Porém, seria interessante também fazer um acompanhamento parecido quando executamos uma macro.

Por exemplo, suponha que você tenha a macro abaixo que insere uma coluna nova em uma tabela qualquer:
%macro insere_coluna(tabela_input, tabela_output);
data &tabela_output;
     set &tabela_input;
     coluna_nova = coluna1 + coluna2;
run;
%mend;
Se você quiser inserir essa coluna nova na tabela1, tabela2 e tabela3, e ter como resultado novas tabelas chamadas output1, output2 e output3, bastaria executar a macro:
%insere_coluna(tabela1, output1);
%insere_coluna(tabela2, output2);
%insere_coluna(tabela3, output3);
E está feito!
Porém, se o processo for demorado, é interessante saber se está na primeira, na segunda ou na terceira tabela. Imagino que seja intuitivo para todos que utilizar algo como sysecho “executando &tabela_input” não irá fucionar, pois o SAS entende tudo que está dentro das aspas é simplesmente um texto (faça o teste caso não tenha entendido!). Para que ele entenda que você está chamando uma variável de uma macro, é preciso finalizar com um ponto final. Seu código ficaria:
%macro insere_coluna(tabela_input, tabela_output);
data &tabela_output;
sysecho "executando &tabela_input.";
     set &tabela_input;
     coluna_nova = coluna1 + coluna2;
run;
%mend;

%insere_coluna(tabela1, output1);
%insere_coluna(tabela2, output2);
%insere_coluna(tabela3, output3);

Veja que o ponto final faz com que o SAS entenda que o input da macro já foi escrito e acabou. Nada que é escrito após esse ponto é lido como uma variável da macro.

Espero que agora o leitor consiga acompanhar tranquilamente as macros gigantescas que estiver escrevendo!

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *