The following are the codes I had pasted before finally calling the macro. Every code worked fine and the error popped up while calling the Macro. Hope this helps! libname CSD "/folders/myshortcuts/SAS_Assignment";Run; PROC IMPORT DATAFILE="/folders/myshortcuts/SAS_Assignment/Cross Sell_Data.csv" OUT=CSD.cross_sell_data DBMS=CSV REPLACE; RUN; DATA CSD.DEV CSD.VAL; SET CSD; IF RANUNI (1000)<= 0.7 THEN OUTPUT CSD.DEV; ELSE OUTPUT CSD.VAL; RUN; PROC SQL;CREATE TABLE L AS SELECT * FROM CSD; SELECT COUNT (*) FROM L WHERE INS=1;QUIT; PROC SQL;CREATE TABLE L AS SELECT * FROM CSD; SELECT COUNT (*) FROM L WHERE INS=0;QUIT; %MACRO FINE_CLASS (DSN,DEPVAR,TOT_RESP,TOT_NRESP,CLASS_VAR,GRPS); PROC RANK DATA =&DSN. GROUPS=&GRPS. OUT=BIN_DSN; VAR &CLASS_VAR.; RANKS BIN; RUN; PROC SQL; CREATE TABLE FINE_CLASSED AS SELECT COUNT(*) AS NOBS, MIN(&CLASS_VAR.) AS MIN_VAL, MAX(&CLASS_VAR.) AS MAX_VAL, SUM(CASE WHEN &DEPVAR. = 1 THEN 1 ELSE 0 END) AS RESP, SUM(CASE WHEN &DEPVAR. = 0 THEN 1 ELSE 0 END) AS NRESP FROM BIN_DSN GROUP BY BIN; QUIT; DATA FINE_CLASSED1; SET FINE_CLASSED; TOT_RESP=&TOT_RESP.; TOT_NRESP=&TOT_NRESP.; WOE=LOG(((RESP/TOT_RESP)+0.000000001)/((NRESP/TOT_nRESP)+0.000000001)); IV=((RESP/TOT_RESP)-(NRESP/TOT_NRESP))*WOE*100; RUN; PROC PRINT DATA = FINE_CLASSED1;RUN; /*PROC DELETE DATA = FINE_CLASSED1;*/ /*PROC DELETE DATA = FINE_CLASSED;*/ /*PROC DELETE DATA = BIN_DSN;RUN;*/ %MEND; ODS HTML FILE="/folders/myfolders/sasuser.v94/SP.XLS"; %FINE_CLASS(CSD,INS,11175,21089,AcctAge,10); ODS HTML CLOSE;
... View more