Clarification on DO CONCURRENT

I have a question.
What is the difference between a variable with SHARED locality compared with one with unspecified locality (in a do concurrent of course)?
Are there examples of different behaviour, or is the SHARED locality just a guarantee given by the programmer to the compiler?
Or examples where without the SHARED locality the code is non conforming.

Thanks