Writing global user exit programs
You must write global user exit programs in assembler language and they must be quasireentrant. However, if your user exit program calls the XPI, it must be fully reentrant.
Remember: A reentrant program is coded to allow one copy
of itself to be used concurrently by several tasks; it does not modify
itself while running. A quasireentrant program is serially reusable
by different tasks. When it receives control it must be in the same
state as when it relinquished control. Such a program can modify itself
while running, and is therefore not fully reentrant.
For more information about quasireentrant programs, see Multithreading: Reentrant, quasi-reentrant, and threadsafe programs.