SAS - Duda en macro de SAS - Ayuda!

   
Vista:

Duda en macro de SAS - Ayuda!

Publicado por Mónica (1 intervención) el 09/05/2011 11:40:40
TENGO ESTE CÓDIGO, DONDE LAS TABLAS A Y B ESTÁN BIEN INFORMADAS, VER ARCHIVOS ADJUNTOS. ¿POR QUÉ LA TABLA RESULTANTE C NO CONTIENE NINGÚN REGISTRO? ¿HAY ALGÚN PROBLEMA EN EL CICLO DE FECHAS QUE GENERA LA MACRO?

Por favor, alguien me puede ayudar? Gracias!

Este es el código:

proc datasets lib = work nolist nowarn memtype = (data view) kill;
quit;


%MACRO X;

%let salir_ciclo=0;
%let num=0;
%let FECHA=0;
%let FECHA_SIGUIENTE=0;
/*aqui*/
proc sql nowarn noprint;
drop table C;
quit;
/**/
/*****************************************************************************************
CICLO PARA RECORRER TODOS LOS MESES ENTRE FECDESDE Y FECHASTA
*****************************************************************************************/

%DO %WHILE (&salir_ciclo=0);

data _NULL_;

FECHA = intnx('month',&DT_PRCS_DESDE,+&NUM,'e');

IF FECHA <= &DT_PRCS_hasta THEN DO;
call symput('FECHA',FECHA);
call symput('num',&NUM+1);
END;
ELSE DO;
call symput('salir_ciclo',1);
END;

run;

%IF &salir_ciclo EQ 0 %THEN %DO;


data C(KEEP=ENTITY CONTRA1 ID_PROD feoperac)
NUM_CONTRATOS(KEEP=FEOPERAC num_Contr);

merge A (IN=A KEEP=ENTITY CONTRA1 ID_PROD)
B (IN=B WHERE=( FECDESDE <= &FECHA AND
FECHASTA > &FECHA ) ) end=last;

by ENTITY CONTRA1;

retain hayContr 0 num_Contr 0;
length FEOPERAC 4.;

IF A and B and hayContr=0 THEN DO;
hayContr=1;
num_Contr = num_Contr + 1;
FEOPERAC=&FECHA;
output WORK.C;
END;

IF last.CONTRA1 THEN DO;
hayContr=0;
END;

IF last THEN DO;
FEOPERAC=&FECHA;
output WORK.NUM_CONTRATOS;
END;


run;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder