This value is saved in an area associated with the passed-in environment
token. It is copied into the CAA for the initial thread when the next
(call_main), (call_sub), (call_sub_addr), (call_sub_addr_nochk), or
(call_sub_addr_nochk2) function is done to start an application.
The application can then examine or update this user word in the
CAA (CEECAA_USER_WORD). When the application ends, the final value
in CEECAA_USER_WORD is not copied back into the area associated with
the environment token. When the next application is started using
a function such as (call_main), (call_sub), or(call_sub_addr), the
user word value last established by (set_user_word) is used again.
The user word associated with the environment token is initialized
to 0 when (init_main), (init_main_dp), (init_sub), or (init_sub_dp)
is done. The CAA for the initial process thread is initialized with
0 if no (set_user_word) function call has been done before the application
is started.
The user word in all CAAs other than the initial thread CAA is
set to 0. The user word in all CAAs in nested enclaves is set to 0.
When fork() is done, the user word in the CAA for the new process
inherits the value that is in the CAA at the time fork() is done.
The use of the CAA user word is not supported in the assembler
user exit routine (CEEBXITA and related modules), or in the CEEPIPI
service routines specified in the service routine vector (@LOAD,
@DELETE, @GETSTORE, @FREESTORE, @EXCEPRTN, @MSGRTN).
Any user code that runs on a CEEPIPI environment before the first
(call_main), (call_sub), (call_sub_addr), (call_sub_addr_nochk), or
(call_sub_addr_nochk2) request will see zero in the CAA_USER_WORD.
Examples of this code include static constructors run for programs
that get loaded when a CEEPIPI environment is initialized. Any changes
to the CAA_USER_WORD made by this code are overlaid when the next
(call_main), (call_sub), (call_sub_addr), (call_sub_addr_nochk),
or (call_sub_addr_nochk2) is done for that environment.