Each enclave is represented by an enclave data block (EDB), which supports the program model. All enclave-related resources are provided in the EDB; it is generated during enclave initialization and deleted during enclave termination. Fields in the EDB should be used as described in other topics of this information. In particular, fields should not be modified and routine addresses should not be used as entry points, except as specified.
Offsets | Type | Len | Name (Dim) ( * = Reserved) | Description | |
---|---|---|---|---|---|
Dec | Hex | ||||
0 | (0) | STRUCTURE | 164 | CEEEDB | EDB mapping |
0 | (0) | CHARACTER | 164 | CEEEDB_EXTERNAL | External portion |
0 | (0) | CHARACTER | 8 | CEEEDBEYE | Eyecatcher 'CEEEDB ' |
8 | (8) | BITSTRING | 4 | CEEEDBFLAGS | Enclave information |
8 | (8) | BITSTRING | 1 | CEEEDBFLAG1 | EDB Flags |
|
CEEEDBMAINI | Main program initialized | |||
|
CEEEDB_INITIAL_AMODE | ||||
|
CEEEDBACTIV | Environment is now active | |||
|
CEEEDBTIP | Termination In Progress | |||
|
CEEEDBPICI | Pre-Init Compat. is active | |||
|
CEEEDB_POSIX | z/OS UNIX is active and runtime option POSIX(ON) is active | |||
|
CEEEDBMULTITHREAD | Multithreading environment | |||
|
CEEEDB_OMVS_DUBBED | z/OS UNIX is dubbed | |||
9 | (9) | BITSTRING | 1 | CEEEDBIPM | Initial Program Mask |
10 | (A) | BITSTRING | 1 | CEEEDBPM | Current® Program Mask |
11 | (B) | UNSIGNED | 1 | CEEEDB_CREATOR_ID | Enclave creator ID |
12 | (C) | ADDRESS | 4 | CEEEDBMEMBR | A(member list body) |
16 | (10) | ADDRESS | 4 | CEEEDBOPTCB | A(options control block) |
20 | (14) | SIGNED | 4 | CEEEDBURC | User Return Code |
24 | (18) | SIGNED | 4 | CEEEDBRSNCD | CEL Reason Code |
28 | (1C) | ADDRESS | 4 | CEEEDBDBGEH | Addr of debugger event handler |
32 | (20) | SIGNED | 4 | CEEEDBANHP | CEL Anywhere Heap ID |
36 | (24) | SIGNED | 4 | CEEEDBBEHP | CEL Below Heap ID |
40 | (28) | ADDRESS | 4 | CEEEDBCELV | Addr of CEL LIBVEC |
44 | (2C) | ADDRESS | 4 | CEEEDBPCB | A(PCB) |
48 | (30) | ADDRESS | 4 | CEEEDBELIST | Exit list from HLL user exit |
52 | (34) | ADDRESS | 4 | CEEEDB_PL_ASTRPTR | A(appl parm str) |
56 | (38) | ADDRESS | 4 | CEEEDBDEFPLPTR | A(main parm list) |
60 | (3C) | SIGNED | 4 | CEEEDBCXIT_PAGE | Cxit_page value for user exit |
64 | (40) | CHARACTER | 4 | CEEEDB_DEBUG_TERMID | Debugger terminal ID |
68 | (44) | ADDRESS | 4 | CEEEDBPARENT | Addr of the parent enclave CAA |
When
the enclave is created, its creator (or parent) needs to provide:
|
|||||
72 | (48) | ADDRESS | 4 | CEEEDB_R13_PARENT | A(DSA of enclave creator) |
76 | (4C) | CHARACTER | 64 | CEEEDB_LER3 | Lang Env V1R3M0 externals |
76 | (4C) | CHARACTER | 8 | * | Reserved from Lang Env V1R2M0 |
84 | (54) | ADDRESS | 4 | CEEEDBLEOV | Addr of z/OS UNIX LIBVEC |
88 | (58) | ADDRESS | 4 | CEEEDBENVAR | Address of environment variable array. This is the case only when a POSIX-C prog is not part of the application. WARNING: this field should not be updated by other than CEL or C initialization. |
92 | (5C) | ADDRESS | 4 | CEEEDBENVIRON | Address of environment variable anchor. In POSIX-C, it is the environ variable, otherwise it points to the CEEEDBENVAR. |
96 | (60) | ADDRESS | 4 | CEEEDB_CEEOSIGR@ | CEEOSIGR address |
100 | (64) | ADDRESS | 4 | CEEEDBOTRB | Pointer to trace table |
The following five fields are used by the CEEXGPES (get permanent enclave storage) macro. This macro allows member languages to quickly allocate storage that is freed by CEL only after member enclave termination. | |||||
104 | (68) | ADDRESS | 4 | CEEEDBPSA31 | Address and length of ... |
108 | (6C) | SIGNED | 4 | CEEEDBPSL31 | ... preallocated 31 storage |
112 | (70) | ADDRESS | 4 | CEEEDBPSA24 | Address and length of ... |
116 | (74) | SIGNED | 4 | CEEEDBPSL24 | ... preallocated 24 storage |
120 | (78) | ADDRESS | 4 | CEEEDBPSRA | Addr of overflow routine |
124 | (7C) | ADDRESS | 4 | CEEEDB_CAACHAIN@ | Pointer to IPT's CAA |
128 | (80) | BITSTRING | 4 | CEEEDBFLAGS1 | Additional external |
128 | (80) | BITSTRING | 1 | CEEEDBFLAG1A | Flags |
|
CEEEDB_SIGENABLED | Signals enabled | |||
|
CEEEDB_MVS_BATCH | Running z/OS batch | |||
|
CEEEDB_TERM_DNFR | Do not free heap or delete programs during termination of the enclave. | |||
|
CEEEDB_TERM_NOEDSA | No scan for exit DSAs at enclave termination. | |||
|
CEEEDB_CICS_OPEN_PROGRAM |
|
|||
|
CEEEDB_MAIN_HP | Main uses XP linkage | |||
|
CEEEDB_HPLINK | XPLINK is being used | |||
|
CEEEDB_EVNTDEST | Running destructors | |||
129 | (81) | BITSTRING | 1 | CEEEDBFLAG1B | Flags |
|
CEEEDB_2_ENV_TABLES |
|
|||
|
CEEEDB_CICS_REUSE_ENCLAVE |
|
|||
|
CEEEDB_CICS_RE_DIRTY |
|
|||
|
CEEEDB_EXEC_EXIT |
|
|||
|
* | Reserved | |||
130 | (82) | CHARACTER | 2 | * | Reserved |
132 | (84) | ADDRESS | 4 | CEEEDB_CEEOSGR1@ | CEEOSIGR end address |
136 | (88) | ADDRESS | 4 | CEEEDB_XPL_NODLL_FDS | Pointer to chain of XPLINK compat descriptors representing NODLL func pointers |
140 | (8C) | CHARACTER | 8 | CEEEDB_LER4 | |
140 | (8C) | BITSTRING | 4 | CEEEDBMEMBERCOMPAT | |
Member compatibility flags | |||||
140 | (8C) | BITSTRING | 1 | CEEEDBMEMBERCOMPAT1 | |
|
CEEEDBPLITASKING | PL/I tasking | |||
|
* | Reserved | |||
141 | (8D) | BITSTRING | 1 | CEEEDBMEMBERCOMPAT2 | Reserved |
142 | (8E) | BITSTRING | 1 | CEEEDBMEMBERCOMPAT3 | Reserved |
143 | (8F) | BITSTRING | 1 | CEEEDBMEMBERCOMPAT4 | Reserved |
144 | (90) | SIGNED | 4 | CEEEDBTHREADSACTIVE | Threads active |
148 | (94) | CHARACTER | 8 | CEEEDB_LER5 | |
148 | (94) | SIGNED | 4 | CEEEDBCURMSGFILEDCBPTR | DCB ptr |
152 | (98) | ADDRESS | 4 | CEEEDB_CEEINT_INPUT_R1 | |
When the request block boundary is crossed, a new enclave is created and request block info must be maintained. This is to maintain compatibility with the VS COBOL II definition of a run unit. The following two fields allow support for implicit enclave create. | |||||
156 | (9C) | ADDRESS | 4 | CEEEDB_LAST_RBADDR | A(Last request block) |
160 | (A0) | SIGNED | 4 | CEEEDB_LAST_RBCNT | Index of last request blk |
164 | (A4) | SIGNED | 4 | CEEEDB_ENVLENGTH | Length of envar array of pointers |
168 | (A8) | ADDRESS | 4 | CEEEDBENVAR_A | Address of alternate environment variable array |
172 | (AC) | ADDRESS | 4 | CEEEDBENVIRON_A | Address of alternate environment variable anchor |
Len | Type | Value | Name | Description |
---|---|---|---|---|
Declare constants to identify creator of an enclave | ||||
1 | DECIMAL | 1 | CEEEDB_CREATOR_BINIT | batch (BINIT) |
1 | DECIMAL | 2 | CEEEDB_CREATOR_RINI | CICS (RINI) |
1 | DECIMAL | 3 | CEEEDB_CREATOR_BCREN | cr_enc(BCREN) |
1 | DECIMAL | 4 | CEEEDB_CREATOR_PIPI_MAIN | preinit main |
1 | DECIMAL | 5 | CEEEDB_CREATOR_PIPI_SUBR | preinit subr |
1 | DECIMAL | 6 | CEEEDB_CREATOR_IMPLICIT | LINK SVC |
1 | DECIMAL | 7 | CEEEDB_CREATOR_EXEC | POSIX exec() |
1 | DECIMAL | 0 | CEEEDBTRMRSN_NORMAL_RETURN | |
1 | DECIMAL | 1 | CEEEDBTRMRSN_CEETREN_EXIT | |
1 | DECIMAL | 2 | CEEEDBTRMRSN_CEETREC_EXIT | |
1 | DECIMAL | 3 | CEEEDBTRMRSN_CEEEXIT_EXIT | _exit() |
1 | DECIMAL | 4 | CEEEDBTRMRSN_UNHANDLED_ COND | |
1 | DECIMAL | 5 | CEEEDBTRMRSN_PTHREAD_EXIT | |
1 | DECIMAL | 6 | CEEEDBTRMRSN_QUIESCE | |
1 | DECIMAL | 7 | CEEEDBTRMRSN_CEEEXIT_EXEC | exec |
1 | DECIMAL | 1 | CEEEDB_PIN_UNSET | |
1 | DECIMAL | 2 | CEEEDB_PIN_UNAVAIL | |
1 | DECIMAL | 3 | CEEEDB_PIN_SET | |
Maximum member ID and maximum member number both relate to the number of CEL members currently supported. The range of member ID values is from 0 to max_member_id. | ||||
4 | DECIMAL | 17 | CEEEDB_MAXMEMID | max member ID |
4 | DECIMAL | 18 | CEEEDB_MAXMEMNUM | max member number |
Name | Hex Offset | Hex Value | Level |
---|---|---|---|
CEEEDB | 0 | 1 | |
CEEEDB_CAACHAIN@ | 7C | 4 | |
CEEEDB_CEEINT_INPUT_R1 | 98 | 4 | |
CEEEDB_CEEOSIGR@ | 60 | 4 | |
CEEEDB_CEEOSGR1@ | 84 | 4 | |
CEEEDB_CICS_OPEN_PROGRAM | 80 | 6 | |
CEEEDB_CREATOR_ID | B | 4 | |
CEEEDB_DEBUG_TERMID | 40 | 3 | |
CEEEDB_ENVLENGTH | A4 | 3 | |
CEEEDB_EVNTDEST | 80 | 01 | 6 |
CEEEDB_EXTERNAL | 0 | 2 | |
CEEEDB_HPLINK | 80 | 6 | |
CEEEDB_INITIAL_AMODE | 8 | 40 | 5 |
CEEEDB_LAST_RBADDR | 9C | 3 | |
CEEEDB_LAST_RBCNT | A0 | 3 | |
CEEEDB_LER3 | 4C | 3 | |
CEEEDB_LER4 | 8C | 3 | |
CEEEDB_LER5 | 94 | 3 | |
CEEEDB_MAIN_HP | 80 | 6 | |
CEEEDB_MVS_BATCH | 80 | 40 | 6 |
CEEEDB_OMVS_DUBBED | 8 | 01 | 5 |
CEEEDB_PL_ASTRPTR | 34 | 3 | |
CEEEDB_POSIX | 8 | 04 | 5 |
CEEEDB_R13_PARENT | 48 | 3 | |
CEEEDB_SIGENABLED | 80 | 80 | 6 |
CEEEDB_TERM_DNFR | 80 | 20 | 6 |
CEEEDB_XPL_NODLL_FDS | 88 | 4 | |
CEEEDBACTIV | 8 | 20 | 5 |
CEEEDBANHP | 20 | 3 | |
CEEEDBBEHP | 24 | 3 | |
CEEEDBCELV | 28 | 3 | |
CEEEDBCURMSGFILEDCBPTR | 94 | 4 | |
CEEEDBCXIT_PAGE | 3C | 3 | |
CEEEDBDBGEH | 1C | 3 | |
CEEEDBDEFPLPTR | 38 | 3 | |
CEEEDBELIST | 30 | 3 | |
CEEEDBENVAR | 58 | 4 | |
CEEEDBENVAR_A | 168 | 3 | |
CEEEDBENVIRON | 5C | 4 | |
CEEEDBENVIRON_A | 172 | 3 | |
CEEEDBEYE | 0 | 3 | |
CEEEDBFLAGS | 8 | 3 | |
CEEEDBFLAGS1 | 80 | 4 | |
CEEEDBFLAG1 | 8 | 4 | |
CEEEDBFLAG1A | 80 | 5 | |
CEEEDBIPM | 9 | 4 | |
CEEEDBLEOV | 54 | 4 | |
CEEEDBMAINI | 8 | 80 | 5 |
CEEEDBMEMBERCOMPAT | 8C | 4 | |
CEEEDBMEMBERCOMPAT1 | 8C | 5 | |
CEEEDBMEMBERCOMPAT2 | 8D | 5 | |
CEEEDBMEMBERCOMPAT3 | 8E | 5 | |
CEEEDBMEMBERCOMPAT4 | 8F | 5 | |
CEEEDBMEMBR | C | 3 | |
CEEEDBMULTITHREAD | 8 | 02 | 5 |
CEEEDBOPTCB | 10 | 3 | |
CEEEDBOTRB | 64 | 4 | |
CEEEDBPARENT | 44 | 3 | |
CEEEDBPCB | 2C | 3 | |
CEEEDBPICI | 8 | 08 | 5 |
CEEEDBPLITASKING | 8C | 80 | 6 |
CEEEDBPM | A | 4 | |
CEEEDBPSA24 | 70 | 4 | |
CEEEDBPSA31 | 68 | 4 | |
CEEEDBPSL24 | 74 | 4 | |
CEEEDBPSL31 | 6C | 4 | |
CEEEDBPSRA | 78 | 4 | |
CEEEDBRSNCD | 18 | 3 | |
CEEEDBTHREADSACTIVE | 90 | 4 | |
CEEEDBTIP | 8 | 10 | 5 |
CEEEDBURC | 14 | 3 |
Table 4 describes the EDB fields in more detail.
Field | Contents |
---|---|
CEEEDBFLAG1 | CEEEDB flags. The bits in this flag byte are
defined as follows:
|
CEEEDBIPM | The initial program mask. This is the result of ORing all of the member language's program mask requirements. Language Environment sets the program mask to this value during initialization. |
CEEEDBPM | The current program mask setting. |
CEEEDB_CREATOR_ID | ID of enclave creator. The values defined in
this byte are as follows:
|
CEEEDBMEMBR | Address of a list of member entries. An entry is reserved for each member known to Language Environment®. There is one member list per enclave. For details, see Language Environment member list and event handler. |
CEEEDBOPTCB | Address of the options control block. Enclave initialization processes the runtime options and generates the options control block, CEEOCB. There is one CEEOCB per enclave. This pointer makes the runtime options easily available to all members. |
CEEEDBURC | User return code. This field contains the return code generated and stored here by the user program. It is augmented by the Language Environment reason code and returned at enclave termination. |
CEEEDBRSNCD | Language Environment reason code. The value indicates the reason for Language Environment termination. It augments the return code, and is returned separately at enclave termination. |
CEEEDBDBGEH | Debugger event handler. This field holds the address of the debugger event handler, which is loaded by Language Environment. For more information, see Debugging and performance analysis. |
CEEEDBANHP | Language Environment Anywhere heap ID. This field holds the identification for Language Environment's defined heap storage that is typically allocated above the 16M line. For more information, see Dynamic storage (heap) services for more information. |
CEEEDBBEHP | Language Environment below heap ID. This field holds the identification for Language Environment's defined heap storage that is always allocated below the 16M line; see Dynamic storage (heap) services for more information. |
CEEEDBCELV | Address of Language Environment LIBVEC. This field holds the address of Language Environment's library vector table (LIBVEC). Access to Language Environment routines is through this vector table. |
CEEEDBPCB | Address of the process control block. This field holds the address of Language Environment's process control block (PCB). This allows access to process-level resources and information. |
CEEEDBELIST | Address of exit list from the HLL user exit. The address of a list of user exits provided by the user with the HLL user exit. Language Environment copies the value to the EDB. |
CEEEDB_PL_ASTRPTR | Address of the user parameter list varying string pointer. |
CEEEDBDEFPLPTR | The default pointer that is the inbound parameter list. |
CEEEDBCEXIT_PAGE | Cxit_page value for user exit parameter list. |
CEEEDB_DEBUG_TERMID | Debugger terminal ID under CICS. |
CEEEDBPARENT | Address of parent enclave CAA. When the enclave
is created, its creator (or parent) needs to provide:
|
CEEEDB_R13_PARENT | Address of DSA enclave creator. CEEEDB_R13_PARENT is a convenient way to provide return information. It is a pointer to the DSA which contains all the registers of the enclave's parent. |
CEEEDB_LER3 | External section. |
CEEEDBLEOV | Address of the LIBVEC for z/OS® UNIX support. |
CEEEDBENVAR | Address of the environment variable array. |
CEEEDBENVAR_A | Address of the alternate environment variable array. |
CEEEDBENVIRON | Address of the environment variable anchor. |
CEEEDBENVIRON_A | Address of the alternate environment variable anchor. |
CEEEDB_CEEOSIGR@ | Address of the CEEOSIGR routine. |
CEEEDBOTRB | Address of the in-core wrapping trace table |
CEEEDBPSA31 | Address and preallocated 31 storage. |
CEEEDBPSL31 | Length of preallocated 31 storage. |
CEEEDBPSA24 | Address of preallocated 24 storage. |
CEEEDBPSL24 | Length of preallocated 24 storage. |
CEEEDBPSRA | Address of overflow routine. |
CEEEDBFLAG1A | Additional EDB flags, as follows:
|
CEEEDB_CICS_OPEN_PROGRAM |
|
CEEEDB_MAIN_HP | Main uses XPLINK linkage. |
CEEEDB_HPLINK | XPLINK is being used. |
CEEEDB_CEEOSGR1@ | CEEOSIGR and address |
CEEEDB_XPL_NODLL_FDS | Pointer to a chain of XPLINK compatibility descriptors representing NODLL function pointers. |
CEEEDB_ENVLENGTH | Length to envar array of pointers. |