*
; 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); *;