All files are shared between threads. If a thread (other than MAIN) opens a file, it must be closed before that thread terminates.
A file opened in a MAIN thread is not closed until it is expicitly closed or the program ends.
Serialization is the responsibility of the user. Refer to Sharing data between threads.
The message file and the display statement are automatically serialized by PL/I.