[code:b1f31]
*----------------------------------------------*
returns the number of observations in a dataset
*----------------------------------------------* ;
%macro obscnt (data) /des='returns number obs from a SAS dataset' ;
%local data data_id rc ;
%if &data = %str() %then %let data = %data(&syslast) ;
%let data_id = %sysfunc(open(&data)) ;
%if &data_id %then %do ;
%sysfunc(attrn(&data_id, nobs))
%end ;
%else %do ;
%put WARNING: Open for dataset %data(&data) failed ;
%put WARNING: Macro OBSCNT will return the number of observations as missing. ;
%put %sysfunc(sysmsg()) ;
.
%end ;
%let rc = %sysfunc(close(&data_id)) ;
%mend obscnt ;
data test ;
var='1' ;
run ;
%put NOTE: The number of observations in WORK.TEST is %obscnt(test) ;
%put NOTE: The number of observations in sashelp.class is %obscnt(sashelp.class) ;[/code:b1f31]