Hi Kurt , Numobs macro just gives a count of number of observations .and the value of &PLAN is given as M1 and M2 and for &W is mentioned as below in the code . Here is the full code Note : Error message is coming out to be like ERROR: A character operand was found in the %EVAL function or %IF condition where &&CDD_FMT_&PLN._&W = A %LET W = 1; DATA USER.DBDTL3_&PLN ; SET DBDTL2_&PLN ; %IF %NUMOBS(DBDTL2_&PLN) > 0 %THEN %DO; %DO %WHILE (&W <= &CDDCNT) ; %IF &&CDD_FMT_&PLN._&W = 'A' %THEN %DO; CDD_VL_&PLN._&W = INPUT(CDD_TX_&PLN._&W,30.)/100; %END; %ELSE %IF &&CDD_FMT_&PLN._&W = 'F' %THEN %DO; CDD_VL_&PLN._&W = INPUT(CDD_TX_&PLN._&W,30.)/100; %END; %ELSE %IF &&CDD_FMT_&PLN._&W = 'M' %THEN %DO; CDD_VL_&PLN._&W = INPUT(CDD_TX_&PLN._&W,30.)/100; %END; %ELSE %IF &&CDD_FMT_&PLN._&W = 'O' %THEN %DO; CDD_VL_&PLN._&W = INPUT(CDD_TX_&PLN._&W,30.)/100; %END; %ELSE %IF &&CDD_FMT_&PLN._&W = 'Q' %THEN %DO; CDD_VL_&PLN._&W = INPUT(CDD_TX_&PLN._&W,30.)/100; %END; %ELSE %IF &&CDD_FMT_&PLN._&W = 'P' %THEN %DO; CDD_VL_&PLN._&W = INPUT(CDD_TX_&PLN._&W,30.)/1000; %END; %ELSE %IF &&CDD_FMT_&PLN._&W = 'G' %THEN %DO; CDD_VL_&PLN._&W = INPUT(CDD_TX_&PLN._&W,30.)/10000; %END; %ELSE %IF &&CDD_FMT_&PLN._&W = 'J' %THEN %DO; CDD_VL_&PLN._&W = INPUT(CDD_TX_&PLN._&W,30.)/10000; %END; %ELSE %IF &&CDD_FMT_&PLN._&W = 'H' %THEN %DO; CDD_VL_&PLN._&W=INPUT(CDD_TX_&PLN._&W,30.)/1000000; %END; %ELSE %IF &&CDD_FMT_&PLN._&W = 'OK' %THEN %DO; CDD_VL_&PLN._&W=INPUT(CDD_TX_&PLN._&W,30.)/1000000; %END; %ELSE %IF &&CDD_FMT_&PLN._&W = 'D' %THEN %DO; CDD_VL_&PLN._&W = INPUT(CDD_TX_&PLN._&W, YYMMDD10.); FORMAT CDD_VL_&PLN._&W MMDDYY10.; %END; %ELSE %DO; CDD_VL_&PLN._&W = CDD_TX_&PLN._&W ; %END; %LET W = %EVAL(&W + 1 ); %END; %* End of DO WHILE LOOP; %END; %* End of NUMOBS > 0 if statement ; RUN ;
... View more