In you first data step, I would not use this line as my last else statement.
else Season='Winter';
in your second data step the same thing is happening but you set Season = "Fall";
if your records have data like "DECEMBER", "Dec", "MARCH", "MAR: they would all be set to Winter.
use the last else statement to catch any data that has errors based on the prior statement.
like this
else Season = 'Error';
Does month always have mixed case data?
maybe upcase the test like this
if upcase(substr(month,1,3)) in ('JAN','FEB',MAR') then Season = "Winter";
You also have winter defined as containing defernent months in the 2 data steps.