Accessing program object class information

The initial load segment of a program object can contain a binder-generated text class that describes the other loadable classes in the program object. This descriptive class is only present in program objects stored as COMPAT=PM3 or higher and when one of the following is true:

If COMPAT is specified or defaulted to PM1 or PM2, this descriptive class is suppressed with no error indication. Language Environment-enabled programs that do not use a prelinker step require the IEWBLIT control block.

The information can be accessed in one of the following two ways: For either of the above means of access, the calling program will see the data as a structure defined for assembler programs in the shipped IEWBLIT mapping macro. The field names in that macro match those used in Table 1.
The structure contains names, locations, and lengths of each class in the program object. It also contains the following attribute information about each class:
The structure begins with a header that specifies the number of class entries and the length of each:
Table 1. BLIT structure format
Field Name Field Type Offset Length Description
BLIT_EYE_CATCHER Char 0 8 Constant 'IEWBLIT '
BLIT_ LENGTH Binary 8 4 Total structure length with entries
BLIT_VERSION Binary 12 1 Structure version = 1
*   13 3 * reserved *
BLIT_HEADER_LENGTH Binary 16 4 Length to CTABLE
BLIT_CENTRY_LENGTH Binary 20 4 Length of one class entry
BLIT_CENTRY_COUNT Signed 24 4 Number of entries in the BLIT_CTABLE
BLIT_DEFER_COUNT Binary 28 4 Number of class entries
*   32 8 * reserved *
BLIT_LOADER_TOKEN Char 40 8 [For loader use]
BLIT_CIE_ADDR Pointer 48 4 Address of Import/Export table or offset in segment on DASD
BLIT_MOD_ATTR Bit 52 4 Module attributes
      BLIT_XPLINK Bit 52.0 0.1 XPLINK linkage convention
  Bit 52.1 0.2 reserved
       BLIT_LC_CLASSES Bit 52.3 0.2 Indicates if there are loadable C classes
00
not known if there are loadable C_ classes in module
10
no loadable C_ classes in module
11
11=loadable C_ classes in module
*   56 8 * reserved *
BLIT_CTABLE   64   Start of class entries
Each of the class entries has the following format:
Table 2. BLIT class entry format
Field Name Field Type Offset Length Description
BLIT_CLASS_NAME Char 0 16 Name of class, blank padded
BLIT_CLASS_LENGTH Binary 16 4 Length of class when loaded
BLIT_CLASS_ADDR Pointer 20 4 Address of initial load class or offset in segment on DASD or zero for deferred load class
BLIT_RMODE Binary 24 1

00=RMODE_UNSPEC
01=RMODE_24
03=RMODE_ANY
04=RMODE_64

BLIT_ALIGN Binary 25 1 Power® of 2 class alignment in storage; for example, 3=doubleword aligned (2**3 = 8)
BLIT_LOAD_ATTR Bit 26 1  

     BLIT_RO

Bit 26.0 0.1 Read only if on

      BLIT_NOLOAD  

Bit 26.1 0.1 Always off – load classes are not listed in this table

      BLIT_DEFER

Bit 26.2 0.1 Deferred load if on

BLIT_LANG_ATTR

Bit 27 1  

      BLIT_PADDING

Bit 27.0 0.1 The class has 16-byte initial padding.
    28 4 * reserved *