*
;
options nosource;
%macro mimaval (data,variable);
options nonotes;
%global minvalue maxvalue;
%let minvalue = . ; %let maxvalue = . ;
%if &data = or &data = . %then %goto quit_1;
%if &variable = or &variable = . %then %goto quit_2;
%if %sysfunc(exist(&data)) = 0 %then %goto quit_3;
proc means data=&data noprint min max;
var &variable;
output out=_minmax_ min = v_min max = v_max;
run;
data _NULL_;
set _minmax_;
call symput('minvalue',v_min);
call symput('maxvalue',v_max);
run;
proc datasets nolist;
delete _minmax_;
quit;
%goto final;
%quit_1 : %put MACRO-HALT: No data set specified ;
%goto final;
%quit_2 : %put MACRO-HALT: No variable specified ;
%goto final;
%quit_3 : %put MACRO-HALT: Dataset %upcase(&data) does not exist ;
%final : ;
%put minimal value of &variable in &data is: &minvalue;
%put maximal value of &variable in &data is: &maxvalue;
options notes;
%mend; options source;
%mimaval(maps.germany,x);
%mimaval(maps.germany,y);
%mimaval(maps.us,y);
%mimaval(maps.us,x);
%mimaval(maps.brazil,x);
%mimaval(maps.brazil,y);
*;