Link to home
Start Free TrialLog in
Avatar of sonmic
sonmic

asked on

SAS result is not correct

Hi,

In the code below the instruction
IF %EVAL(%SUBSTR(&mnd,1,2)) EQ "01" THEN DO ;
doesn't work correct.
The result is :
866  %PUT &mnd ;
0111
867  %PUT &vmnd ;
0011
868  %PUT &mnd1 ;
00
it should be :
866  %PUT &lmnd ;
0111
867  %PUT &vmnd ;
1210
868  %PUT &mnd1 ;
12


DATA _NULL_ ;
	%LET periode = 201101 ;
	%LET ljaar    = %SUBSTR(&periode,1,4) ; 
	%LET mnd      = %SUBSTR(&periode,5,2)%SUBSTR(&periode,3,2) ; 
	IF %EVAL(%SUBSTR(&mnd,1,2)) EQ "01" THEN DO ;
		%LET vmnd = 12%EVAL(%SUBSTR(&periode,3,2) - 1) ;
		%LET mnd1 = 12 ;
		END ;	
	ELSE DO ;
		IF %SUBSTR(&mnd,1,2) GE '10' THEN DO ;
			%LET vmnd = %EVAL(%SUBSTR(&periode,5,2) - 1)%EVAL(%SUBSTR(&periode,3,2)) ;
			%LET mnd1 = %EVAL(%SUBSTR(&periode,5,2) - 1) ; ;
		 	END ;
		ELSE DO ;
			%LET vmnd = 0%EVAL(%SUBSTR(&periode,5,2) - 1)%EVAL(%SUBSTR(&periode,3,2)) ;
			%LET mnd1 = 0%EVAL(%SUBSTR(&periode,5,2) - 1) ;
		 	END ;
		END ;
RUN ;

Open in new window

ASKER CERTIFIED SOLUTION
Avatar of theartfuldazzler
theartfuldazzler
Flag of South Africa image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial