Of course, we are only guessing. But here are a few reasonable guesses.
First, did you actually read the log to see whether there were any important messages? At a minimum, the issue that @VDD mentioned about labels being in quotes comes to mind.
Secondly, the logic is probably off. It looks like you got a message about needing a matching END statement, and just stuck one in at the end of the program to remove the error. But that doesn't make the logic correct. More likely, it should be placed much closer to the DO statement. As it stands now, most of your DATA step executes only when w1evsmk=1 ... since that never happens, it is no surprise that your other new variables are always missing.
Finally, there's no evidence that you actually examined the data to see whether the results are correct. You run a PROC FREQ at the end. How about adding:
tables H1TO1 * H1TO2;
Then you would have some basis to see whether results for W1EVSMK are correct or not.
... View more