Language Environment process control block
Each process is represented by a process control block (PCB). All process resources are anchored, provided for, or can be obtained through the PCB. The PCB is generated during process initialization and deleted during process termination.
The following tables show the format of the PCB.
| Offsets | Type | Len | Name ( * = Reserved) | Description | |
|---|---|---|---|---|---|
| Dec | Hex | ||||
| 0 | (0) | STRUCTURE | 76 | CEEPCB | PCB mapping |
| 0 | (0) | CHARACTER | 76 | CEEPCB_EXTERNAL | External portion |
| 0 | (0) | CHARACTER | 8 | CEEPCBEYE | Eye catcher 'CEEPCB ' |
| 8 | (8) | BITSTRING | 1 | CEEPCBSYSTM | Underlying Operating System |
| 9 | (9) | BITSTRING | 1 | CEEPCBHRDWR | Underlying Hardware |
| 10 | (A) | BITSTRING | 1 | CEEPCBSBSYS | Underlying Subsystem |
| 11 | (B) | BITSTRING | 1 | CEEPCBFLAG2 | |
|
CEEPCBBIMODAL | Bimodal addressing is avail. | |||
|
CEEPCB_LVFORM | LIBVEC format 1=stat./0=dynam | |||
|
CEEPCB_VECTOR | Vector hardware available | |||
|
CEEPCB_CL24 | CEL Libvec AMODE24 is built | |||
|
CEEPCB_OMVS | z/OS UNIX is up and available | |||
|
* | RESERVED | |||
|
CEEPCB_PICI | PICI environment | |||
|
CEEPCB_REUSE | This CCIS process contains a reusable enclave environment | |||
| 12 | (C) | ADDRESS | 4 | CEEPCBDBGEH | A(debug event handler) |
| 16 | (10) | CHARACTER | 8 | CEEPCBDBGRSVD | Reserved for debugger |
| 24 | (18) | ADDRESS | 4 | CEEPCBDMEMBR | A(process member list) |
| 28 | (1C) | ADDRESS | 4 | CEEPCB_ZLOD | A(process load routine) |
| 32 | (20) | ADDRESS | 4 | CEEPCB_ZDEL | A(process delete routine) |
| 36 | (24) | ADDRESS | 4 | CEEPCB_ZGETST | A(process get storage rtn) |
| 40 | (28) | ADDRESS | 4 | CEEPCB_ZFREEST | A(process free storage rtn) |
| 44 | (2C) | ADDRESS | 4 | CEEPCB_LVTL | Address of a Lang Env library table that contains info about Language Environment libvecs, to determine which transfer vector should be used to access a library routine and be signal safed. |
| 48 | (30) | ADDRESS | 4 | CEEPCBRCB | Address of the RCB |
| 52 | (34) | ADDRESS | 4 | CEEPCB_SYSEIB | A(CICS® System EIB) |
| The following three fields are used by the CEEXGPPS (get permanent process storage) macro. This macro allows the member languages to quickly allocate storage at the process level that is freed only by CEL after member process termination. | |||||
| 56 | (38) | SIGNED | 4 | CEEPCBPSL | Length of perm process stg |
| 60 | (3C) | ADDRESS | 4 | CEEPCBPSA | Addr of perm process stg |
| 64 | (40) | ADDRESS | 4 | CEEPCBPSRA | Perm process stg overflow routine address |
| 68 | (44) | BITSTRING | 4 | CEEPCB_OMVS_LEVEL | z/OS UNIX release level (Multiple bits may be set) |
|
* | Reserved | |||
|
CEEPCB_OMVS_1120 | HOM1120 functions are present. | |||
|
CEEPCB_OMVS_1130 | HOM1130 functions are present. | |||
| 68 | (44) | BITSTRING | 3 | * | Reserved |
| 72 | (48) | ADDRESS | 4 | CEEPCB_CHAIN | Pointer to next PCB on PICI environment chain |
| 76 | (4C) | ADDRESS | 4 | CEEPCB_VSSFE | Address of the stack segment free routine |
| 80 | (50) | ADDRESS | 4 | CEEPCBPRFEH | Address of profile event handler |
| 84 | (54) | BITSTRING | 1 | CEEPCBFLAG6 | Additional PCB flags |
|
4 | CEEPCB_ESAME | ESAME-supported | ||
|
* | Reserved | |||
|
CEEPCB_SIMD | SIMD-supported | |||
| 85 | (55) | CHARACTER | 3 | CEEPCB_RSRVED | Reserved |
| 88 | (58) | ADDRESS | 4 | * | Reserved |
| 92 | (5C) | ADDRESS | 4 | CEEPCB_DBGINFO | Address of debugger Info block |
| Len | Type | Value | Name | Description |
|---|---|---|---|---|
| Constants | ||||
| 4 | DECIMAL | 16384 | CEEPCB_IS_SIZE | Init dummy stk size |
| 4 | DECIMAL | 2048 | CEEPCB_LIS_SIZE | Init dummy lib size |
| CAUTION: CEEPCB_IS_SIZE and CEEPCB_LIS_SIZE must be multiple of doubleword size. | ||||
| 4 | DECIMAL | 8 | CEEPCB_MAXLVTNUM | Maximum library transfer vector tables in Language Environment |
| Declare constants for operating system, hardware, and subsystem CEEPCBSYSTM, CEEPCBHRDWR, CEEPCBSYS | ||||
| 1 | DECIMAL | 0 | CEEPCBSYUND | Undefined |
| 1 | DECIMAL | 1 | CEEPCBSYUNS | Unsupported |
| 1 | DECIMAL | 2 | CEEPCBSYVM | VM |
| 1 | DECIMAL | 3 | CEEPCBSYMVS | z/OS Underlying hardware |
| 1 | DECIMAL | 0 | CEEPCBHWUND | Undefined |
| 1 | DECIMAL | 1 | CEEPCBHWUNS | Unsupported |
| 1 | DECIMAL | 2 | CEEPCBHW370 | System/370 non-X |
| 1 | DECIMAL | 3 | CEEPCBHWXA | System/370 XA |
| 1 | DECIMAL | 4 | CEEPCBHWESA | System/370 ESA underlying subsystem |
| 1 | DECIMAL | 0 | CEEPCBSSUND | Undefined |
| 1 | DECIMAL | 1 | CEEPCBSSUNS | Unsupported |
| 1 | DECIMAL | 2 | CEEPCBSSNON | No subsystem |
| 1 | DECIMAL | 3 | CEEPCBSSTSO | TSO |
| 1 | DECIMAL | 5 | CEEPCBSSCIC | CICS |
| Declare constants describing state of process | ||||
| 1 | DECIMAL | 0 | CEEPCBSTATE_INIT | Process init |
| 1 | DECIMAL | 1 | CEEPCBSTATE_TERM | Process term |
| 1 | DECIMAL | 2 | CEEPCBSTATE_ACTIVE | Process active |
| Name | Hex Offset | Hex Value | Level |
|---|---|---|---|
| CEEPCB | 0 | 1 | |
| CEEPCB_CHAIN | 48 | 3 | |
| CEEPCB_CL24 | B | 10 | 4 |
| CEEPCB_DBGINFO | 5C | 3 | |
| CEEPCB_ESAME | 54 | 80 | 4 |
| CEEPCB_EXTERNAL | 0 | 2 | |
| CEEPCB_LVFORM | B | 40 | 4 |
| CEEPCB_LVTL | 2C | 3 | |
| CEEPCB_OMVS | B | 08 | 4 |
| CEEPCB_OMVS_LEVEL | 44 | 3 | |
| CEEPCB_OMVS_1120 | 44 | 40 | 4 |
| CEEPCB_OMVS_1130 | 44 | 20 | 4 |
| CEEPCB_PICI | B | 02 | 4 |
| CEEPCB_REUSE | B | 01 | 4 |
| CEEPCB_SYSEIB | 34 | 3 | |
| CEEPCB_SIMD | 54 | 08 | 4 |
| CEEPCB_VECTOR | B | 20 | 4 |
| CEEPCB_VSSFE | 4C | 3 | |
| CEEPCB_ZDEL | 20 | 3 | |
| CEEPCB_ZFREEST | 28 | 3 | |
| CEEPCB_ZGETST | 24 | 3 | |
| CEEPCB_ZLOD | 1C | 3 | |
| CEEPCBBIMODAL | B | 80 | 4 |
| CEEPCBDBGEH | C | 3 | |
| CEEPCBDBGRSVD | 10 | 3 | |
| CEEPCBDMEMBR | 18 | 3 | |
| CEEPCBEYE | 0 | 3 | |
| CEEPCBFLAG2 | B | 3 | |
| CEEPCBFLAG6 | 54 | 3 | |
| CEEPCBHRDWR | 9 | 3 | |
| CEEPCBPRFEH | 50 | 3 | |
| CEEPCBPSA | 3C | 3 | |
| CEEPCBPSL | 38 | 3 | |
| CEEPCBPSRA | 40 | 3 | |
| CEEPCBRCB | 30 | 3 | |
| CEEPCBSBSYS | A | 3 | |
| CEEPCBSYSTM | 8 | 3 | |
| RESERVED | B | 04 | 4 |
Table 4 describes the PCB fields in more detail.
| Field | Contents |
|---|---|
| CEEPCBEYE | 8-character eyecatcher 'CEEPCB'. |
| CEEPCBSYSTM | Underlying operating system. The value indicates the operating system
supporting the active program. The values are defined as follows:
|
| CEEPCBHRDWR | Underlying hardware The value indicates the type of hardware on which the
program is executing; the values are defined as follows:
|
| CEEPCBSBSYS | Underlying subsystem The value indicates the subsystem, if any, on which the
program is executing; the values are defined as follows:
|
| CEEPCBFLAG2 | PCB flag bits; the bits are defined as follows:
|
| CEEPCBDBGEH | Address of the debug tool event handler. This field holds the address of the debug tool event handler. When this field is zero, a debug tool has not been initialized. |
| CEEPCBDBGRSVD | Reserved for the debug tool's use. A doubleword that is reserved for the debug tool's use. It is zeroed by Language Environment process initialization. |
| CEEPCBMEMBR | Address of the process level member list. An entry is reserved for each member known to Language Environment. There is one member list per process. The process level member list has the same format as the enclave level member list. For details, see Language Environment member list and event handler. |
| CEEPCB_ZLOD | Process-level LOAD service. This is the address of a LOAD service. Routines loaded using this service persist across enclaves within this process. For details, see Loading and deleting programs in different environments. |
| CEEPCB_ZDEL | Process level DELETE service. This is the address of a DELETE service. Routines loaded using CEEPCB_ZLOD must be deleted using this service. For details, see Loading and deleting programs in different environments. |
| CEEPCB_ZGETST | Process level GETMAIN service. This is the address of a GETMAIN service. Storage obtained using this service persist across enclaves within this process. |
| CEEPCB_ZFREEST | Process level FREEMAIN service. This is the address of a FREEMAIN service. Storage obtained using CEEPCB_ZGETST must be freed using this service. |
| CEEPCB_LVTL | Address of a Language Environment library vector. |
| CEEPCBRCB | Address of the RCB. |
| CEEPCB_SYSEIB | Address of CICS system EIB. |
| CEEPCBPSL | Length of permanent process storage. This field is used by the CEEXGPPS (get permanent process storage) macro. This macro allows the member languages to quickly allocate storage at the process level that is freed only by Language Environment after member process termination. |
| CEEPCBPSA | Address of permanent process storage. This field is used by the CEEXGPPS (get permanent process storage) macro. This macro allows the member languages to quickly allocate storage at the process level that is freed only by Language Environment after member process termination. |
| CEEPCBPSRA | Permanent process storage overflow routine address table that contains information for all Language Environment LIBVECs that allow signal safing of Language Environment library for asynchronous signals. This field is used by the CEEXGPPS (get permanent process storage) macro. This macro allows the member languages to quickly allocate storage at the process level that is freed only by Language Environment after member process termination. |
| CEEPCB_OMVS_LEVEL | z/OS UNIX release
level. The flags are as follows:
|
| CEEPCB_CHAIN | Used to run the PICI environment chain; it will be NULL when there is no next environment in the chain. |
| CEEPCB_VSSFE | Address of the stack segment free routine. |
| CEEPCBPRFEH | Address of the profile event handler |
| CEEPCBFLAG6 | Additional PCB flag bits. The bits are defined as follows:
|
| CEEPCB_DBGINFO | Address of the debugger info block. |