From: Alexander Terekhov (terekhov_at_[hidden])
Date: 2002-08-29 14:47:34
Darryl Green wrote:
> The standard afaik makes no distinction between program and process -
> because it doesn't deal with (allow?) MT programs. ....
Yeah, "the standard"... (see >>enclave<< and >>process<< terms below)
< from OS/390 (and z/OS) Language Environment" docs,
© Copyright IBM Corp. 1991, 1996 (1996, 2002) >
("3.1.1 Language Environment Program Management Model Terminology")
Some terms used to describe the program management model are common
programming terms; other terms are described differently in other
languages. It is important that you understand the meaning of the
terminology in a Language Environment context as compared to other
contexts. For more detailed definitions of these and other Language
Environment terms, consult the "Language Environment Glossary" in
General Programming Terms:
A collection of one or more programs cooperating to achieve
particular objectives, such as inventory control or payroll.
In Language Environment, normally a reference to the run-time
environment of HLLs at the enclave level.
Language Environment Terms and Their HLL Equivalents:
In Language Environment, refers to either a procedure,
function, or subroutine.
Equivalent HLL terms: COBOL--program; C/C++--function;
PL/I--procedure, BEGIN block.
The enclave defines the scope of HLL semantics. In Language
Environment, a collection of routines, one of which is named
as the main routine. The enclave contains at least one thread.
Equivalent HLL terms: COBOL--run unit, C/C++--program,
consisting of a main C function and its subfunctions,
PL/I--main procedure and its subroutines, and
Fortran--program and its subroutines.
The highest level of the Language Environment program
management model. A process is a collection of resources,
both program code and data, and consists of at least one
An execution construct that consists of synchronous
invocations and terminations of routines. The thread is
the basic run-time path within the Language Environment
program management model, and is dispatched by the system
with its own run-time stack, instruction counter, and
registers. Threads may exist concurrently with other
("3.1.2 Program Management", "Figure 3. Language Environment Resource Ownership)
("184.108.40.206.1 The Enclave Defines the Scope of Language Semantics"
("5.4 Chapter 31. Using nested enclaves)
Language Environment explicitly supports the execution of a single enclave
within a Language Environment process. However, by using the system services
and language constructs described in this chapter, you can create an
additional, or nested, enclave and initiate its execution within the same
The enclave that issues a call to system services or language constructs
to create a nested enclave is called the parent enclave. The nested enclave
that is created is called the child enclave. The child must be a main routine;
a link to a subroutine by commands and language constructs is not supported
under Language Environment.
If a process contains nested enclaves,
none or only one enclave can be running with POSIX(ON)."
("220.127.116.11.1 z/OS UNIX considerations")
To create a nested enclave under z/OS UNIX, you must either:
Be running with POSIX(OFF) and issue system(), or
Be running with POSIX(ON) and have set the environment variables
to signal that you want to establish a nested enclave. You can use
the __POSIX_SYSTEM environment variable to cause a system() to
establish a nested enclave instead of performing a spawn().
__POSIX_SYSTEM can be set to NO, No, or no.
> Ok - I see your point on this one. It (the "abandoned" word) could well be
> interpreted as meaning that any post terminate unwind (exception handling)
> isn't required to be possible/work.
> If this interpretation is correct it
> suggests (to me at least) that terminate() handlers are almost completely
> useless in C++?
Uhmm. Why? You might want to post a nice "bye-bye" message, or attempt to
do something like that (non-critical stuff)...
alexander. < awaiting completion of a couple of C/C++ build jobs running under
latest z/OS running on S/390 emulator (~60 MIPS!!) on Linux inside
VMware's Linux guest VM on my wonderful A30p ThinkPad running MS-
Win XP because Lotus Notus (and etc.) TOTALLY SUCKS under Linux! >
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk