You need to declare it before you need to use it inside the function where you need to use it.
It looks like p is in your workspace but that might be a different p. Did you use or create a p before you called the global line? The warnings you see tell you that if you use global, it should be the first line in your function. So somehow I think your p is not the global one you thought, but is instead a local p. Is your global p a table or cell array. What does this show:
Are you stopped at a breakpoint? I think that workspace is not the one corresponding to the code. For example in your code is a variable SoilTypeState but that does not show up in your workspace panel so the workspace panel doesn't seem like it corresponds to the code you are showing, so that's why I think maybe you're stopped at a breakpoint in a different function and then just scrolled down past that to line 325.