Each thread is represented by a common anchor area (CAA), which is the central communication area for Language Environment. All thread- and enclave-related resources are anchored, provided for, or can be obtained through the CAA. The CAA is generated during thread initialization and deleted during thread termination. When calling Language Environment-conforming routines, register 12 points to the address of the CAA.
Use CAA fields as described. Do not modify fields and do not use routine addresses as entry points, except as specified. Fields marked ‘Reserved’ exist for migration of specific languages, or internal use by Language Environment. Language Environment defines their location in the CAA, but not their use. Do not use or reference them except as specified by the language that defines them.
Table 1 describes the CAA fields. For more information about the CAA and other structures to which it refers (for example, the DLL failure control block, CEEDLLF), see z/OS Language Environment Vendor Interfaces.
Hex Offset | Type | Len | CAA Field | Explanation |
---|---|---|---|---|
0 | Bit | 1 | CEECAAFLAG0 | CAA flag bits, defined as follows:
|
1 | Bit | 1 | Reserved | |
2 | Bit | 1 | CEECAALANGP | PL/I language
compatibility flags external to Language Environment. The
bits are defined as follows:
|
3 | Char | 5 | Reserved | |
8 | Address | 4 | CEECAABOS | Start of the current storage segment. This field is initially set during thread initialization. It indicates the start of the current stack storage segment. It is altered when the current stack storage segment is changed. |
C | Address | 4 | CEECAAEOS | This field is used to determine if a stack overflow routine must be called when allocating storage from the user stack. Normally, the value of this field will represent the end of the current user stack segment. However, its value can also be zero to force the call of a stack overflow routine for every allocation of storage from the user stack. This field is used by function prologs that do not use FASTLINK linkage conventions. |
10 | Char | 52 | Reserved | |
44 | Signed | 2 | CEECAATORC | Thread level return code. The thread level return code set by CEESRC callable service. |
46 | Signed | 2 | CEECAATURC | |
48 | Char | 44 | Reserved | |
74 | Address | 4 | CEECAATOVF | Address of stack overflow routine. |
78 | Char | 168 | Reserved | |
120 | Address | 4 | CEECAAATTN | Address of the Language Environment attention handling routine. The address of the Language Environment attention handling routine supports common run-time environment’s polling code convention for attention processing. |
124 | Char | 56 | Reserved | |
15C | Address | 4 | CEECAAHLLEXIT | Address of the Exit List Control Block set by the HLL user exit CEEBINT. |
160 | Char | 56 | Reserved | |
198 | Bit (96) | 12 | CEECAAHOOK | Code to pass control to the debugger. |
1A4 | Address | 4 | CEECAADIMA | A(debugger entry) |
1A8 | Char | 68 | CEECAAHOOKS | Hook area. This is the start of 18 fullword execute hooks. Language Environment initializes each fullword to X'07000000'. The hooks can be altered to support various debugging hook mechanisms. |
1A8 | Char | 4 | CEECAAALLOC | ALLOCATE descr. built |
1AC | Char | 4 | CEECAASTATE | New statement begins |
1B0 | Char | 4 | CEECAAENTRY | Block entry |
1B4 | Char | 4 | CEECAAEXIT | Block exit |
1B8 | Char | 4 | CEECAAMEXIT | Multiple block exit |
1BC | Char | 32 | CEECAAPATHS | PATH hooks |
1BC | Char | 4 | CEECAALABEL | At a label constant |
1C0 | Char | 4 | CEECAABCALL | Before CALL |
1C4 | Char | 4 | CEECAAACALL | After CALL |
1C8 | Char | 4 | CEECAADO | DO block starting |
1CC | Char | 4 | CEECAAIFTRUE | True part of IF |
1D0 | Char | 4 | CEECAAIFFALSE | False part of IF |
1D4 | Char | 4 | CEECAAWHEN | WHEN group starting |
1D8 | Char | 4 | CEECAAOTHER | OTHERWISE group |
1DC | Char | 4 | CEECAACGOTO | GOTO hook for C |
1E0 | Char | 4 | CEECAARSVDH1 | Reserved hook |
1E4 | Char | 4 | CEECAARSVDH2 | Reserved hook |
1E8 | Char | 4 | CEECAAMULTEVT | Multiple Event Hook |
1EC | Bit (32) | 4 | CEECAAMEVMASK | Muliple Event Hook Mask -End of Debug |
1F0 | Char | 80 | CEECAAMEMBER_AREA | |
1F0 | Address | 4 | CEECAACGENE | C/370™ CGENE |
1F4 | Address | 4 | CEECAACRENT | C/370 writable static |
1F8 | Char | 8 | CEECAACFLTINIT | Used to convert fixed to float cfltini |
200 | Address | 4 | CEECAACPRMS | Address of parameters passed to main module |
204 | Signed | 4 | CEECAAC_RTL | Combination of 24 unique C/370 trc typ |
208 | Address | 4 | CEECAACTHD | |
20C | Address | 4 | CEECAACURRFECB | |
210 | Address | 4 | CEECAAEDCV | C/370 vector table |
214 | Address | 4 | CEECAACPCB | Reserved |
218 | Address | 4 | CEECAACEDB | C/370 CEDB |
21C | Char | 3 | Reserved | |
21F | Char | 1 | CEECAASPCFLAG3 | Used for SPC |
220 | Address | 4 | CEECAACIO | Address of cio |
224 | Char | 4 | CEECAAFDSETFD | Used by FD_* macros |
228 | Char | 2 | CEECAAFCBMUTEXOK | |
22A | Char | 2 | Reserved | |
22C | Char | 4 | CEECAATC16 | |
230 | Signed | 4 | CEECAATC17 | |
234 | Address | 4 | CEECAAEDCOV | C/370 Open Libvec |
238 | Signed | 4 | CEECAACTOFSV | |
23C | Address | 4 | CEECAATRTSPACE | C/370 Open Libvec |
240 | Char | 24 | Reserved | |
258 | Address | 4 | CEECAA_TCASRV_USERWORD | TCA Service Rtn Vctr |
25C | Address | 4 | CEECAA_TCASRV_WORKAREA | |
260 | Address | 4 | CEECAA_TCASRV_GETMAIN | |
264 | Address | 4 | CEECAA_TCASRV_FREEMAIN | |
268 | Address | 4 | CEECAA_TCASRV_LOAD | |
26C | Address | 4 | CEECAA_TCASRV_DELETE | |
270 | Address | 4 | CEECAA_TCASRV_EXCEPTION | |
274 | Address | 4 | CEECAA_TCASRV_ATTENTION | |
278 | Address | 4 | CEECAA_TCASRV_MESSAGE | |
27C | Char | 4 | Reserved | |
280 | Address | 4 | CEECAALWS | Addr of PL/I LWS |
284 | Address | 4 | CEECAASAVR | Register save |
288 | Char | 36 | Reserved | |
2AC | Bit | 1 | CEECAASYSTM | Underlying operating system. The
value indicates the operating system supporting the active environment.
|
2AD | Bit (8) | 1 | CEECAAHRDWR | Underlying hardware. This value indicates
the type of hardware on which the routine is running.
|
2AE | Bit (8) | 1 | CEECAASBSYS | Underlying subsystem. This value
indicates the subsystem (if any) on which the routine is running.
|
2AF | Bit (8) | 1 | CEECAAFLAG2 | CAA Flag 2, defined as follows:
|
2B0 | Unsign | 1 | CEECAALEVEL | Language Environment level identifier. This contains a unique value that identifies each release of Language Environment. This number is incremented for each new release of Language Environment. |
2B1 | Bit (8) | 1 | CEECAA_PM | Image of current program mask. |
2B2 | Bit (16) | 2 | CEECAA_INVAR | Field that is at the same fixed offset in 31-bit and 64-bit CAAs |
2B3 | Bit | 1 | Reserved | |
2B4 | Address | 4 | CEECAAGETLS | Address of stack overflow for library routines. |
2B8 | Address | 4 | CEECAACELV | Address of the Language Environment library vector. This field is used to locate dynamically loaded Language Environment routines. |
2BC | Address | 4 | CEECAAGETS | Address of the Language Environment prolog stack overflow routine. The address of the Language Environment get stack storage routine is included in prolog code for fast reference. |
2C0 | Address | 4 | CEECAALBOS | Start of the library stack storage segment. This field is initially set during thread initialization. It indicates the start of the library stack storage segment. It is altered when the library stack storage segment is changed. |
2C4 | Address | 4 | CEECAALEOS | This field is used to determine if a stack overflow routine must be called when allocating storage from the library stack. Normally, the value of this field will represent the end of the current library stack segment. However, its value can also be zero to force the call of a stack overflow routine for every allocation of storage from the library stack. This field is used by function prologs that do not use FASTLINK linkage conventions. |
2C8 | Address | 4 | CEECAALNAB | Next available library stack storage byte. This contains the address of the next available byte of storage on the library stack. It is modified when library stack storage is obtained or released. |
2CC | Address | 4 | CEECAADMC | Language Environment shunt routine address. Its value is initially set to 0 during thread initialization. If it is nonzero, this is the address of a routine used in specialized exception processing. |
2D0 | Signed | 4 | CEECAAACD | Most recent CAASHAB abend code. |
2D0 | Signed | 4 | CEEAAABCODE | Most recent abend completion code. |
2D4 | Signed | 4 | CEECAAARS | Most recent CAASHAB reason code. |
2D4 | Signed | 4 | CEECAAARSNCODE | Most recent abend reason code. |
2D8 | Address | 4 | CEECAAERR | Address of the current condition information block. After completion of initialization, this always points to a condition information block. During exception processing, the current condition information block contains information about the current exception being processed. Otherwise, it indicates no exception being processed. |
2DC | Address | 4 | CEECAAGETSX | Address of the user stack extender routine. This routine is called to extend the current stack frame in the user stack. Its address is in the CEECAA for performance reasons. |
2E0 | Address | 4 | CEECAADDSA | Address of the Language Environment dummy DSA. This address determines whether a stack frame is the dummy DSA, also known as the zeroth DSA. |
2E4 | Signed | 4 | CEECAASECTSIZ | Vector section size. This field is used by the vector math services. |
2E8 | Signed | 4 | CEECAAPARTSUM | Vector partial sum number. This field is used by the vector math services. |
2EC | Signed | 4 | CEECAASSEXPNT | Log of the vector section size. This field is used by the vector math services. |
2F0 | Address | 4 | CEECAAEDB | Address of the Language Environment EDB. This field points to the encompassing EDB. |
2F4 | Address | 4 | CEECAAPCB | Address of the Language Environment PCB. This field points to the encompassing PCB. |
2F8 | Address | 4 | CEECAAEYEPTR | Address of the CAA eye catcher. The CAA eye catcher is CEECAA. This field can be used for validation of the CAA. |
2FC | Address | 4 | CEECAAPTR | Address of the CAA. This field points to the CAA itself and can be used in validation of the CAA. |
300 | Address | 4 | CEECAAGETS1 | Non-DSA stack overflow. This field is the address of a stack overflow routine, which cannot guarantee that the current register 13 is pointing at a stack frame. Register 13 must point, at a minimum, to a save area. |
304 | Address | 4 | CEECAASHAB | ABEND shunt routine. Its value is initially set to zero during thread initialization. If it is nonzero, this is the address of a routine used in specialized exception processing for ABENDs that are intercepted in the ESTAE exit. |
308 | Address | 4 | CEECAAPRGCK | Routine interrupt code for CEECAADMC. If CEECAADMC is nonzero, and a routine interrupt occurs, this field is set to the routine interrupt code and control is passed to the address in CEECAAMDC. |
30C | Bit (8) | 1 | CEECAAFLAG1 | CAA flag bits, defined as follows:
|
30D | Char | 1 | CEECAASHAB_KEY | IPK result when CEECAASHAB is set. |
30E | Char | 2 | Reserved | |
310 | Signed | 4 | CEECAAURC | Thread level return code. This is the common place for members to set the return codes for subroutine-to-subroutine return code processing. |
314 | Address | 4 | CEECAAESS | Determine if a stack overflow routine must be called when allocating storage from the user stack. Normally, the value of this field will represent the end of the current user stack segment. However, its value can also be zero to force the call of a stack overflow routine for every allocation of storage from the user stack. This field is used by function prologs that use FASTLINK linkage conventions. |
318 | Address | 4 | CEECAALESS | Determine if a stack overflow routine must be called when allocating storage from the library stack. Normally, the value of this field will represent the end of the current library stack segment. However, its value can also be zero to force the call of a stack overflow routine for every allocation of storage from the library stack. This field is used by function prologs that use FASTLINK linkage conventions. |
31C | Address | 4 | CEECAAOGETS | Overflow from user stack allocations. |
320 | Address | 4 | CEECAAOGETLS | Overflow from library stack allocations. |
324 | Address | 4 | CEECAAPICICB | Address of the preinitialization compatibility control block. |
328 | Address | 4 | CEECAAOGETSX | User DSA exit from OPLINK. |
32C | Signed | 2 | CEECAAGOSMR | Go some more—Used CEEHTRAV multiple. |
32E | Signed | 2 | Reserved | |
330 | Address | 4 | CEECAALEOV | This field is the address of the Language Environment library vector for z/OS UNIX support. |
334 | Signed | 4 | CEECAA_SIGSCTR | SIGSAFE counter. |
338 | Bit (32) | 4 | CEECAA_SIGSFLG | SIGSAFE flags indicate the signal
safety of the library and are defined, as follows.
|
33A | Bit (16) | 2 | Reserved | |
33C | Char | 8 | CEECAATHDID | This field is the thread identifier |
344 | Address | 4 | CEECAA_DCRENT | Reserved |
348 | Address | 4 | CEECAA_DANCHOR | Reserved |
34C | Address | 4 | CEECAA_CTOC | TOC anchor for CRENT. |
354 | Signed | 4 | CEECAACICSRSN | CICS reason code from member language. |
358 | Address | 4 | CEECAAMEMBR | Address of thread-level member list. |
35C | Address | 4 | CEECAA_SIGNAL_STATUS | Signal status of the terminating thread member list. |
360 | Address | 4 | CEECAA_HCOM_REG7 | HCOM saved R7. |
360 | Address | 4 | CEECAA_HCOM_REG14 | HCOM saved R14. |
364 | Address | 4 | CEECAA_STACKFLOOR | Lowest usable address in XP stack. |
368 | Address | 4 | CEECAAHPGETS | XP stack extension rtn. |
36C | Address | 4 | CEECAAEDCHPXV | C/C++ XPLINK libvec. |
370 | Address | 4 | CEECAAFOR1 | Reserved for FORTRAN. |
374 | Address | 4 | CEECAAFOR2 | Reserved for FORTRAN. |
378 | Address | 4 | CEECAATHREADHEAPID | Thread heap ID. |
37C | Signed | 4 | CEECAA_SYS_RTNCODE | System (kernel) return code. |
380 | Signed | 4 | CEECAA_SYS_RSNCODE | System (kernel) reason code. |
384 | Address | 4 | CEECAAGETFN | Address of the WSA swap routine. |
388 | Address | 4 | CEECAA_JIT1 | Reserved. |
38C | Address | 4 | CEECAA_JIT2 | Reserved. |
390 | Address | 4 | CEECAASIGNGPTR | Pointer to 'signam’ external variable in a C application. |
394 | Signed | 4 | CEECAASIGNG | Value of sign of lgamma() -1 - negative sign 0 - zero +1 - positive sign. |
398 | Address | 4 | CEECAA_FORDBG | Ptr to AFHDBHIM - FORTRAN hook interface. |
39C | Bit (8) | 1 | CEECAAAB_STATUS | Validity flags. |
39D | Unsign | 1 | CEECAA_STACKDIRECTION | Stack direction. |
39E | Bit | 2 | Reserved | |
3A0 | Signed | 4 | CEECAAAB_GR0 | Reg 0 at the time of abend. |
3A4 | Signed | 4 | CEECAAAB_ICD1 | SDWAICD1. |
3A8 | Signed | 4 | CEECAAAB_ABCC | SDWAABCC. |
3AC | Signed | 4 | CEECAAAB_CRC | SDWACRC. |
3B0 | Address | 4 | CEECAAAGTS | Entry point of CEEVAGTS routine. |
3B4 | Address | 4 | CEECAA_LER5N1 | Reserved. |
3B8 | Address | 4 | CEECAAHERP | Address of CEEHERP routine. |
3BC | Address | 4 | CEECAAUSTKBOS | Start of user stack segment. |
3C0 | Address | 4 | CEECAAUSTKEOS | End of user stack segment. |
3C4 | Address | 4 | CEECAAUSERRTN@ | Address of thread start routine. Undefined on IPT or prior to thread init event. |
3C8 | Bit | 8 | CEECAAUDHOOK | Hook swapping XPLINK. |
3D0 | Address | 4 | CEECAACEL_HPXV_B | Address of XPLINK compat vector for Base library. |
3D4 | Address | 4 | CEECAACEL_HPXV_M | Address of XPLINK compat vector for Math library. |
3D8 | Address | 4 | CEECAACEL_HPXV_L | Address of XPLINK compat vector for Locale library. |
3DC | Address | 4 | CEECAACEL_HPXV_O | Address of XPLINK compat vector for Open library. |
3E0 | Address | 4 | CEECAACEL4VEC3 | Address of 3rd C-RTL library vector. |
3E4 | Address | 4 | CEECAA_CEEDLLF | Address of the newest CEEDLLF control block. |
3E8 | Address | 4 | CEECAA_SAVSTACK | Zero or saved stack pointer. This field can be used to save the stack pointer before calling a routine with OS_NOSTACK linkage. After the call returns, this field must be set back to zero. |
3EC | Char | 4 | Reserved | |
3F0 | Char | 4 | CEECAA_USER_WORD | 4-byte user field available for application use. In pre-initialization (CEEPIPI) environments, this field is initialized in the IPT CAA from the CEEPIPI set_user_word function. This field is initialized to 0 in non-CEEPIPI environments (including all nested enclaves), and for all non-IPT CAAs in CEEPIPI environments. This field is not otherwise accessed by Language Environment. |
3F4 | Address | 4 | CEECAA_SAVSTACK_ASYNC | Zero or address of field that is zero or saved stack pointer. An application that has large sections of code that do not require access to the Language Environment stack but could benefit from having an additional register available can use this field. |