All files are shared between threads. If a thread opens a file, it is not closed until it is explicitly closed or the program terminates.
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.