Common Anchor Area

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.

Table 1. Description of CAA fields
Hex Offset Type Len CAA Field Explanation
0 Bit 1 CEECAAFLAG0 CAA flag bits, defined as follows:
0–5
Reserved
6
CEECAAXHDL. A flag used by the condition handler. If the flag is set to 1, the application requires immediate return/percolation to the system on any interrupt or condition handler event.
7
Reserved
1 Bit 1 Reserved  
2 Bit 1 CEECAALANGP PL/I language compatibility flags external to Language Environment. The bits are defined as follows:
0–3
Reserved
4
CEECAATHFN. A flag set by PL/I to indicate a PL/I FINISH ON-unit is active. If the flag is set to 1, no PL/I FINISH ON-unit is active. If the flag is set to 0, a PL/I FINISH ON-unit could be active.
5–7
Reserved
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.
0
Undefined. This value should not appear after Language Environment is initialized.
1
Unsupported
3
z/OS
2AD Bit (8) 1 CEECAAHRDWR Underlying hardware. This value indicates the type of hardware on which the routine is running.
0
Undefined. This value should not appear after Language Environment is initialized.
1
Unsupported
2
System/370, non-XA
3
System/370, XA
4
System/370, ESA
2AE Bit (8) 1 CEECAASBSYS Underlying subsystem. This value indicates the subsystem (if any) on which the routine is running.
0
Undefined. This value should not occur after Language Environment is initialized.
1
Unsupported
2
None. The routine is not running under a Language Environment-recognized subsystem.
3
TSO
4
IMS™
5
CICS®
2AF Bit (8) 1 CEECAAFLAG2 CAA Flag 2, defined as follows:
0
Bimodal addressing is available.
1
Vector hardware is available.
2
Thread terminating.
3
Initial thread
4
Library trace is active. The TRACE runtime option was set.
5
Reserved
6
CEECAA_ENQ_Wait_Interruptible. Thread is in an enqueue wait.
7
Reserved
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:
0
CEECAASORT. A call to DFSORT is active.
1
CEECAA_USE_OLD_STK. Use the old stack.
2
CEECAA_CICS_EXT_REG . ERTLI CICS extended register interface is in effect
3
CEECAASHAB_RECOVER_IN_ESTAE
_MODE. When on, the Language Environment® ESTAE resumes to the abend shunt in the mode and key in which the Language Environment ESTAE was established
4–7
Reserved.
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.
0
CEECAA_SIGPUTBACK. The signal cannot be delivered, therefore the signal is put back to the kernel.
1
CEECAA_SA_RESTART. Indicates that a signal registered with the SA_RESTART flag interrupted the last kernel call, and the signal catcher returned.
2
Reserved
3
CEECAA_SIGSAFE. It is safe to deliver the signal, while in library code.
4
CEECAA_CANCELSAFE. It is safe to deliver the cancel signal, while in library code.
5
CEECAA_SIGRESYNCH. CEECAA_sigputsynch flag was on last time CEEOSIGR resolicited a signal.
6
CEECAA_FRZ_UNSAFE. This thread is in an unsafe state to be frozen.
7
CEECAA_NOAPPREGS. User application registers may be saved in a nonstandard place.
8
CEECAA_EINTR_RSOL. Secondary Signal resolicitation is in progress, after EINTR errno from inner function.
9
CEECAA_EINTR_PUTB. Secondary resolicited signal has been put back.
10
CEECAA_EINTR_REST. User signal catcher returned after catching secondary resolicited signal with SA_RESTART in effect.
11
CEECAA_EINTR_SIGG. Stray signal interrupted CEEOSIGG while secondary signal resolicitation was in progress.
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.