I had to see because I was just like you.
It seems that only variables in an unnamed, so-called empty, common block retain their definition status throughout the program. Unclosed variables in a named shared block become undefined upon return from a subroutine, unless the other current active program module contains a common statement for the same common block.
From the standard (Fortran 77, but the latter contains a similar wording):
17.3 Events that make entities become Undefined
[...]
6. The execution of the RETURN statement or the END statement within the subroutine causes all entities within the subroutine to become undefined, except for the following:
[...]
e. Objects in a named generic block that appears in a subroutine and is displayed in at least one other program module that directly or indirectly refers to the subroutine
source share