All static and controlled data is shared between threads. All other data can also be shared via arguments/parameters and via based references, as long as the data is allocated and is not freed until all of the threads have finished using the data. For example, if automatic variables in the attaching thread are shared with the attached thread, the attaching block must not terminate until the attached thread has finished using the shared variables.
Serialization of data is the responsibility of the user. If new generations of controlled data are allocated or if existing generations are freed, it is possible to have certain threads still accessing an older generation or a generation that no longer exists. This can lead to unpredictable results.
All allocated storage, unless freed explicitly, is not freed until program termination.
PL/I does not serialize either ALLOCATEs or FREEs in AREA variables.