The purpose of the load notification user
exit is to provide customers running applications with LRR active
the ability to improve performance by preventing the use count for
frequently used modules from dropping below one.
The load notification
user exit registered via CEEBLNUE is invoked:
- Once during region initialization processing
- After each successful load of a module by Language Environment®
- Once during region termination processing.
When invoked during region initialization processing,
the load notification user exit can initialize some form of module
list which can be used during subsequent invocations to keep track
of modules which have an extra load.
When invoked after the
successful load of a module, the load notification user exit would
perform an extra load, if desired, and update the module list.
When
invoked during region termination processing, the load notification
user exit would delete the modules identified in the list so that
they are actually removed from storage.
The load notification
user exit will be loaded and called only when Library Routine Retention
(LRR) is active.
For
more information about creating and using the load notification user
exit, see Customizing user exits.
Syntax: Load_Notification_User_Exit
(CEELNUEPTR)
- CEELNUEPTR (INPUT)
- A pointer to the load notification user exit control block.
Figure 1. CEELNUE
control block map
The CEELNUE control block elements shown in
Figure 1 are described as follows:
- eye-catcher (INPUT)
- A 4-byte character field containing "LNUE" indicating this is
the CEELNUE control block.
- version (INPUT)
- A 1-byte binary field containing the control block version. This
field is set to 0x01 for the first version.
- flags (INPUT)
- A 1-byte binary field containing flags as shown:
x... .... load-type
0... .... OS
1... .... HFS
.000 0000 reserved
The flags are defined as follows:
- load-type (INPUT)
-
- 0
- OS module was loaded
- 1
- z/OS UNIX module
was loaded
- size (INPUT)
- A 2-byte integer field containing the size of the CEELNUE control
block. This field will be set to 0x0018 for the first version.
- function-code (INPUT)
- A 2-byte integer field containing the code of the function being
performed when the load notification user exit gets control. The
following function code values for the first version are:
- 0
- Initialization
- 1
- Load
- 2
- Termination
- module-name-length (INPUT)
- A 2-byte integer field. When the function-code is 1, this field
contains the length of the name of the module that was just loaded.
This value will be 8 when an OS module was loaded. When the function-code
is 0 or 2 the value should be ignored.
- module-name-ptr (INPUT)
- A 4-byte address. When the function-code is 1, this field contains
the address of the name of the module that was just loaded. The module
name pointed to will be 8 characters in length, padded on the right
with blanks as necessary, when an OS module was loaded. When the function-code
is 0 or 2 the value should be ignored.
- user-word (INPUT/OUTPUT)
- A 4-byte binary field. This field is to be used to communicate
information between successive calls to the load notification user
exit. The very first time the load notification user exit is called,
this field will be 0. The load notification user exit may modify
the value in this field. The value will be saved by Language Environment and returned
on subsequent invocations. Language Environment will only
honor changing the field during the initialization function.
- reserved
- A 4-byte reserved field.
Usage notes
- The load notification user exit must be written in Assembler.
If you write the load notification user exit in Language Environment-enabled
assembler, be sure to specify MAIN=NO on the CEEENTRY macro.
- The load notification user exit must not call any HLL programs.
- The load notification user exit must not create a Language Environment enclave.
- The load notification user exit must not use any Language Environment services.
- Language Environment issues
a system dependent LOAD for the name contained in CEEBLNUE. If the
load is successful, then the load notification user exit is invoked.
- Upon return from the load notification user exit, Language Environment takes no
action other than continuing with its processing, as no return codes
are defined.
- The load notification user exit is invoked in AMODE(31). The RMODE
can be either ANY or 24.
- Registers provided on entry to the load notification user exit
are:
- Register 1
- Points to a word which contains the address of the CEELNUE control
block.
- Register 12
- Points to the CAA.
- Register 13
- Points to a standard save area. The exit routine can save the
registers here across its processing.
- Register 14
- Contains the return address.
- Register 15
- Contains the entry point address upon entry.
- Registers provided on exit to the load notification user exit
are:
- Registers 15-1
- Undefined.
- Registers 2-13
- Unchanged.
- Register 14
- Contains the return address.