martes, 16 de julio de 2013

Macro para recorrer una tabla SAS

A veces resulta útil recorrer una tabla SAS y en base al valor de determinado campo ejecutar un proceso dado. A continuación un sencillo ejemplo para recorrer una tabla cuyo nombre se pasa por parámetro y evaluar el valor de un campo de la tabla que  también se pasa como parámetro. En base al valor de este campo se ejecutaría determinado código.



%macro recorrer_tabla(tabla,campo);

%let dsid = %sysfunc (open(&tabla));   
%let nobs = %sysfunc (attrn(&dsid, NOBS));
%if &nobs > 0 %then %do;
    %do i = 1 %to &nobs;    
        %let rc = %sysfunc(fetch(&dsid));
                                                                                                                                                                                                                                              
        %let valor = %sysfunc (getvarc(&dsid,%sysfunc(varnum(&dsid,&campo))));       
        %put valor &i = &valor;
        /* Logica a ejecutar en base al valor */
    %end;
%end;
%let rc = %sysfunc (close(&dsid));

%mend recorrer_tabla;


%let tabla = prueba;
%let campo = mes;
%recorrer_tabla(&tabla,&campo);

data prueba;
mes = '201301';output;mes='201302';output;mes='201303';output;
run;

No hay comentarios:

Publicar un comentario