Advertisements

SAS tem um poderoso recurso de programação chamado Macros, que nos permite evitar seções repetitivas de código e usá-las repetidamente quando necessário. Também ajuda a criar variáveis dinâmicas dentro do código que podem tomar diferentes valores para diferentes instâncias de execução de um mesmo código. As macros também podem ser declaradas para blocos de código que serão reutilizados várias vezes de forma similar às variáveis de macro. Veremos ambos nos exemplos abaixo.

Macro variables

Essas são as variáveis que possuem um valor a ser usado de novo e de novo por um programa SAS. Elas são declaradas no início de um programa SAS e chamadas mais tarde no corpo do programa. Elas podem ser Globais ou Locais no escopo.

Variável Macro Global

São chamadas variáveis macro globais porque podem ser acessadas por qualquer programa SAS disponível no ambiente SAS. Em geral elas são as variáveis atribuídas ao sistema que são acessadas por múltiplos programas. Um exemplo geral é a data do sistema.

Exemplo

Below é um exemplo da variável SAS chamada SYSDATE que representa a data do sistema. Considere um cenário para imprimir a data do sistema no título do relatório SAS todos os dias em que o relatório é gerado. O título mostrará a data atual e o dia sem codificarmos nenhum valor para eles. Usamos o conjunto de dados SAS embutido chamado CARS disponível na biblioteca SASHELP.

proc print data = sashelp.cars;where make = 'Audi' and type = 'Sports' ; TITLE "Sales as of &SYSDAY &SYSDATE";run;

Quando o código acima é executado obtemos a seguinte saída.

Variável Macro local

Estas variáveis podem ser acessadas por programas SAS nos quais elas são declaradas como parte do programa. Elas são tipicamente usadas para fornecer diferentes varaibels para a mesma sl de declarações SAS que podem processar diferentes observações de um conjunto de dados.

Sintaxe

As variáveis locais são decalcadas com sintaxe abaixo.

% LET (Macro Variable Name) = Value;

O campo Valor pode tomar qualquer valor numérico, texto ou data, conforme requerido pelo programa. O nome da variável Macro é qualquer variável SAS válida.

Exemplo

As variáveis são usadas pelas instruções SAS usando o caractere & anexado no início do nome da variável. Abaixo o programa nos dá toda a observação do make ‘Audi’ e digite ‘Sports’. Caso queiramos o resultado de um make diferente, precisamos alterar o valor da variável make_name sem alterar qualquer outra parte do programa. No caso de trazer programas esta variável pode ser referenciada repetidamente em qualquer declaração SAS.

%LET make_name = 'Audi';%LET type_name = 'Sports';proc print data = sashelp.cars;where make = &make_name and type = &type_name ; TITLE "Sales as of &SYSDAY &SYSDATE";run;

Quando o código acima é executado obtemos a mesma saída que o programa anterior. Mas vamos mudar o nome do tipo para ‘Wagon’ e executar o mesmo programa. Vamos obter o resultado abaixo.

Macro Programs

Macro é um grupo de instruções SAS que é referido por um nome e usá-lo em um programa em qualquer lugar, usando esse nome. Ele começa com uma instrução %MACRO e termina com uma instrução %MEND.

Syntax

As variáveis locais são declaradas com a sintaxe abaixo.

# Creating a Macro program.%MACRO <macro name>(Param1, Param2,….Paramn);Macro Statements;%MEND;# Calling a Macro program.%MacroName (Value1, Value2,…..Valuen);

Exemplo

O programa abaixo decalifica um grupo de Staemnets SAT sob uma macro chamada ‘show_result’; Esta Macro está sendo chamada por outras instruções SAS.

%MACRO show_result(make_ , type_);proc print data = sashelp.cars;where make = "&make_" and type = "&type_" ;TITLE "Sales as of &SYSDAY &SYSDATE";run;%MEND;%show_result(BMW,SUV);

Quando o código acima é executado obtemos a seguinte saída.

Macros de uso comum

SAS tem muitas instruções MACRO que são incorporadas na linguagem de programação SAS. Eles são usados por outros programas SAS sem declará-los explicitamente. Exemplos comuns são – terminar um programa quando alguma condição é satisfeita ou capturar o valor do tempo de execução de uma variável no log do programa. Abaixo estão alguns exemplos.

Macro %PUT

Esta instrução de macro escreve texto ou informação de macro variável no log SAS. No exemplo abaixo o valor da variável ‘hoje’ é escrito no log do programa.

data _null_;CALL SYMPUT ('today',TRIM(PUT("&sysdate"d,worddate22.)));run;%put &today;

Quando o código acima é executado obtemos a seguinte saída.

Macro %RETURN

Execução desta macro causa a terminação normal da macro atualmente em execução quando determinada condição se avalia como verdadeira. No exemplo abaixo, quando o valor da variável “val” se torna 10, a macro termina de outra forma ela contnua.

%macro check_condition(val); %if &val = 10 %then %return; data p; x = 34.2; run; %mend check_condition; %check_condition(11) ;

Quando o código acima é executado, obtemos a seguinte saída.

Macro %END

Esta definição de macro contém um loop %DO %WHILE que termina, como requerido, com uma declaração %END. No exemplo abaixo a macro chamada teste pega uma entrada do usuário e executa o loop DO usando este valor de entrada. O fim do loop DO é alcançado através da instrução %end enquanto o fim da macro é alcançado através da instrução %mend.

%macro test(finish); %let i = 1; %do %while (&i <&finish); %put the value of i is &i; %let i=%eval(&i+1); %end;%mend test;%test(5)

Quando o código acima é executado obtemos a seguinte saída.

Advertisements

Deixe uma resposta

O seu endereço de email não será publicado.