BASE SAS actually automatically ends a PROC or DATA process when it encounters a RUN statement or the next PROC or DATA statement.
So the second data _null_ statement actually reinitializes the variable a to missing, and when you add anything to a missing value you still get missing as the result.
If you remove this second data _null_ statement, the process works correctly.
Included is a brief test that I completed in BASE SAS.
Code:
filename out 'c:\temp\test.html';
data _null_;
file out;
length a 4;
a=0;
put 'Value: ' a+(-1) ' <br>';
a = a+1;
put 'Value: ' a +(-1) '<br>';
run;
Output:

~ Angela Hall
http://blogs.sas.com/content/bi