You give DATA.s(3,1) the desired value in line 8 of exec2w. Then you overwrite it with the wrong value in line 22.
I found debugging your code confusing at first. This was caused by your declaration of DATA as global. The use of global variables is generally discouraged in Matlab, as they tend to lead to confusing effects. In this case the confusion stemmed from the fact that global variables survive the 'clear' command, so I struggled a bit with finding which function actually set the values. ('clear all' does the trick, it turns out.)
Your code runs exactly the same if you delete all 'global DATA' commands, as DATA is transferred in the function calls.