what i try is as below DATA HH;
SET HIGH.HH;
IF CFACPR=0 THEN DELETE;RUN;
PROC SORT
DATA=HH (KEEP =SHRCD EXCHCD PERMNO DATE PRC CFACPR SHROUT CFACSHR
WHERE =( SHRCD IN (10,11) AND EXCHCD IN (1,2,3,31,32,33) ) )
OUT=HL(DROP=SHRCD EXCHCD );
BY PERMNO DATE;
RUN;
DATA HL;
SET HL;
BY PERMNO DATE;
retain H L;
H = max(ABS( divide (PRC, CFACPR)));
L = min(ABS( divide (PRC, CFACPR)));
RUN;
DATA FLAG;
SET HL;
BY PERMNO DATE;
retain FLAG;
if first.permno then do;
counter = 0;
first_date = date;
end;
day_of_year = intnx('day', date, first_date);
if day_of_year <= 365 and not missing(day_of_year) then FLAG = 'UNQUALIFIED';
if PRC > LAG(H) AND date >= '01JAN1963'd then FLAG = MAX;
if PRC < LAG(L) AND date >= '01JAN1963'd then FLAG = MIN;
else FLAG = COMPARISON;
end;run;
... View more