Boost logo

Boost :

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
 topic GLOSSARY.

    General Programming Terms:

    Application program
        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)
(" 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)."
(" 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, gregod at, cpdaniel at, john at