The basics of initialization and termination

Initialization and termination establish the state of various parts of the Language Environment program management model that supports multilanguage applications. The program management model describes three major entities of a program structure:
Process
A collection of resources (code and data).
Enclave
A collection of program units consisting of at least one main routine.
Thread
The basic unit of execution.

The z/OS UNIX System Services (z/OS UNIX) program management model differs somewhat from the Language Environment program management model. Refer to Mapping the POSIX program management model to the Language Environment program management model for more information. For more detailed definitions of program management and other Language Environment terms, see Program management model.

When you run a routine, Language Environment initializes the runtime environment by creating a process, an enclave, and an initial thread. You can modify initialization by running a user exit, written either in assembler or in an HLL.

During termination, threads (either single or multiple, depending on whether your application is POSIX-conforming), enclaves, and processes are terminated. Through the runtime options of Language Environment and callable services for termination, you can control how a thread, enclave, or process terminates. For example, you can control whether an abend or a return code is generated from an application that terminates with an unhandled condition of severity 2 or greater. See Termination behavior for unhandled conditions.

Related runtime options:
ABTERMENC
Specifies whether an enclave terminates with an abend or with a return code and a reason code when there is an unhandled condition of severity 2 or greater
TERMTHDACT
Specifies the level of information that you want to receive after an unhandled condition of severity 2 or greater causes a thread to terminate
Related callable services:
CEE3ABD
Terminates an enclave with or without clean-up and the value of clean-up specifies which dumps to take during termination.
CEE3AB2
Terminates an enclave with or without clean-up, whose value specifies which dumps to take during termination, and a user specified reason code.
CEE3GRC
Returns the user enclave return code to your routine. Along with CEE3SRC, it allows you to use return code-based programming techniques.
CEE3PRM
Returns to your routine the parameter string specified when your application was invoked. Use CEE3PR2 for parameter strings greater than 80 characters.
CEE3PR2
Returns to the calling routine the argument string and its associated length, specified at program invocation.
CEE3SRC
Sets the user enclave return code, which is used to calculate the final enclave return code at termination
Related user exits:
CEEBXITA
An assembler user exit for enclave initialization, and enclave and process termination
CEEBINT
An HLL user exit (written in C, C++ (with C linkage), Enterprise PL/I for z/OS or PL/I for MVS & VM, or Language Environment-conforming assembler) called at enclave initialization
See Using runtime user exits for more information about user exits.
Preinitialization interface:
CEEPIPI
CEEPIPI performs various initialization functions

See Using preinitialization services for more information about the preinitialization interface.

See z/OS Language Environment Programming Reference for syntax information about runtime options and callable services.