The language list is a vector of WXTRNs of the signature CSECTs and is generated by Language Environment. Language Environment checks for the presence of a member in the application in the language list. If the member represented by a specific offset in this list is not present or requires no special initialization, its WXTRN is unresolved. If the WXTRN is resolved, then Language Environment dynamically loads the event handler routine for that member, and stores the address in the member list. Language Environment then calls the event handler, passing an event code to the event handler routine. The language list has zero through seventeen entries statically allocated in Language Environment. Language Environment uses the number of entries in the language list as a loop counter when it is necessary to loop through the language list entries. The format of the language list is shown in the following code sample.
CELQLLST CSECT , LANGUAGE ENVIRONMENT LANGUAGE LIST HEADER
CELQLLST AMODE 64
CELQLLST RMODE 31
DC CL4'LLHD'
DC AL2(CEELLIST-CELQLLST) Length of list header
DC AL2(1) Lang Env list version number
DC A((LLISTEND-CEELLIST)/8) Number of list entries
DC F'0' Padding
DC AD(CEELLIST) Pointer to the language list
CEELLIST DS 0D Lang Env language list
WXTRN CELQSG00
DC AD(CELQSG00) 00 RSVD
WXTRN CELQSG01
DC AD(CELQSG01) 01 Language Environment
WXTRN CELQSG02
DC AD(CELQSG02) 02 RSVD
WXTRN CELQSG03
DC AD(CELQSG03) 03 C/C++
WXTRN CELQSG04
DC AD(CELQSG04) 04 RSVD
WXTRN CELQSG05
DC AD(CELQSG05) 05 RSVD for COBOL
WXTRN CELQSG06
DC AD(CELQSG06) 06 RSVD for Debug Tool
WXTRN CELQSG07
DC AD(CELQSG07) 07 RSVD for Fortran
WXTRN CELQSG08
DC AD(CELQSG08) 08 RSVD (do not use)
WXTRN CELQSG09
DC AD(CELQSG09) 09 RSVD
WXTRN CELQSG10
DC AD(CELQSG10) 10 RSVD for PL/I
WXTRN CELQSG11
DC AD(CELQSG11) 11 RSVD for Enterprise PL/I
WXTRN CELQSG12
DC AD(CELQSG12) 12 RSVD (do not use)
WXTRN CELQSG13
DC AD(CELQSG13) 13 RSVD
WXTRN CELQSG14
DC AD(CELQSG14) 14 RSVD
WXTRN CELQSG15
DC AD(CELQSG15) 15 Assembler
WXTRN CELQSG16
DC AD(CELQSG16) 16 RSVD
DC AD(0) Dummy entry must contain X'00'
DS 0D
LLISTEND DC AD(0) Mark the end of list
END