CEE3ADDM — add new members to the enclave

This CWI interface dynamically augments the set of currently active members to an established environment. In addition, Language Environment notifies the members that a new load module was introduced into the enclave. This function is intended to be used when a new HLL is introduced into the currently executing mix of HLLs after a FETCH or dynamic call is performed.

Syntax

void CEE3ADDM (entry_point, lang_list, [fc])
POINTER     *entry_point;
POINTER     *lang_list;
FEED_BACK   *fc;
CEE3ADDM
Call this CWI interface as follows:
L     R15,CEECAACELV-CEECAA(,R12)
L     R15,2888(,R15)
BALR  R14,R15
entry_point (input)
The entry point returned by a Language Environment load service.
lang_list (output)
The pointer to the language list found in the load module if the load module is recognized by Language Environment. If the load module is not recognized by Language Environment, a zero is returned.
fc (output/optional)
The parameter in to which the callable service feedback code is placed. The following conditions might result from this service.
Condition  
CEE000 Severity 0
Msg_No N/A
Message The service completed successfully.
CEE38M Severity 4
Msg_No 3350
Message A member event handler was not found.
CEE38N Severity 4
Msg_No 3351
Message An event handler was unable to initialize properly.
CEE38V Severity 2
Msg_No 3359
Message The module or language list is not supported in this environment.
CEE39K Severity 1
Msg_No 3380
Message The load module was not recognized Language Environment.
Usage Notes:
  1. Language Environment recognizes the following entry_point styles; Language Environment does not recognize any other entry styles:
    • C/C++ for MVS/ESA-style PPA
    • C/370-style PPA
    • A Language Environment routine entry layout (see Routine layout)
    • Language Environment-format CEESTART
    • Language Environment callable service stubs
  2. For Language Environment-recognized load modules, the following series of event handlers is called:
    1. For those members that are contained within the newly-loaded load module and that have not yet been called for process initialization, Language Environment loads the member event handler and calls it for process initialization.
    2. For those members that are contained within the newly-loaded load module and that have not yet been called for enclave initialization, Language Environment calls the member event handler for enclave initialization.
    3. For those members that are contained within the newly-loaded load module, Language Environment calls the member event handler with the new load module event (see Event code 8 — new load module event).
    4. For an application running with the POSIX(ON) runtime option or a PL/I tasking application, those members that are contained within the newly-loaded load module and that have not yet been called for POSIX thread initialization, Language Environment calls the member event handler for POSIX thread initialization.
  3. For load modules Language Environment does not recognize, the following member event handler is called:
    • For all members that are currently active within the enclave, Language Environment calls the member event handler with the new load module event passing a zero for the CEESTART parameter; see Event code 8 — new load module event.
  4. When a member event handler is driven for the enclave initialization event due to the introduction of a new load module, Language Environment constructs the Initialization Parameter List (INPL) that is passed to the event handler. The INPL contains the following items:
    1. The entry point and the main entry point contain the entry_point that was passed into CEE3ADDM.
    2. The number of entries in the second half of the INPL is 7.
    3. The address of CEESTART is the CEESTART found in the newly introduced load module.
    4. The address of CEEBETBL points to a Language Environment constructed externals table.
    5. The member identifier is that of Language Environment.
    6. The main-opts word is zero.
  5. The lang_list returned can be used to determine if the load module is a candidate for deletion using release() or a COBOL CANCEL statement. The lang_list is a read-only entity.
  6. CEE3ADDM should be called by the member that issued the dynamic load.
  7. Option processing does not occur.
  8. No user exits are driven at this time.
  9. The program mask is adjusted to accommodate the presence of new members within the environment. However, the program mask is not adjusted if the member appears only in the dependent member list of a signature CSECT in the language list.
  10. No user code is called by Language Environment as a result of this call.
  11. The dependency list is honored; see Signature CSECT for details on the dependency list.