Thanks for your response. Yes, some values are as small as .00005 and some as big as 99999999.456789. Rounding off is not working to correct them. The PROC LOGISTIC code is shown below. There are 8 independent variables- Original Variable, Square root of it, square, cube, cube root, log, inverse, exp. ODS OUTPUT EFFECTNOTINMODEL = Estimate&i.; PROC LOGISTIC DATA = &output. DESC; MODEL &depvar. = &varName. &srtvar1. &sqvar1. &logvar1. &invvar1. &cbvar1. &cbrtvar1. &expvar1. / SELECTION = S MAXSTEP = 1 DETAILS; RUN; There are some warnings while executing array code - " Invalid argument to function operation : EXP, SQRT and *** " . I thought it is because of missing values. I put condition in array - IF NOT MISSING THEN DO. But these warnings are still coming. Detailed Code : %macro test(input = ,depvar=, output=); data _null_; call symput ("library", put(upcase(substr("&input",1,index("&input",'.')-1)), $8.)); call symput ("datset", put(upcase(substr("&input",index("&input",'.')+1,length("&input"))), $32.)); run; *Selecting numeric variables; proc sql noprint; select name into : numvar separated by " " from dictionary.columns where LIBNAME = "&library" and MEMNAME = "PREDATA" and type = 'num'; quit; %let varn=%sysfunc(countw(&numvar%str( ))); *Run for all the numeric variables; %DO i=1 %TO &varn; *Selecting Variable one by one; %let varName =%scan(%sysfunc(compbl(&numvar)),&i,%str( )); %let srtvar1 = sqrt_&varName.; %let sqvar1 = sq_&varName.; %let logvar1 = log_&varName.; %let invvar1 = inv_&varName.; %let cbvar1 = cb_&varName.; %let cbrtvar1= cbrt_&varName.; %put &varName. &srtvar1.; options symbolgen; ODS OUTPUT EFFECTNOTINMODEL = Estimate&i.; PROC LOGISTIC DATA = &output. DESC; MODEL &depvar. = &varName. &srtvar1. &sqvar1. &logvar1. &invvar1. &cbvar1. &cbrtvar1. / SELECTION = S MAXSTEP = 1 DETAILS; RUN; options nosymbolgen; %end; %mend;
... View more