Module map

If the MAP option is specified on the EXEC statement, a module map of the output load module is produced. The module map shows all control sections in the output module and all entry names in each control section. Named common areas are listed as control sections.

For each control section, the module map indicates its origin (relative to zero) and length in bytes (in hexadecimal notation). For each entry name in each control section, the module map indicates the location where the name is defined. These locations are also relative to zero.

If the module is not in an overlay structure, the control sections are arranged in ascending order according to their origins. An entry name is listed with the control section in which it is defined.

If the module is an overlay structure, the control sections are arranged by segment. The segments are listed as they appear in the overlay structure, top to bottom, left to right, and region by region. Within each segment, the control sections and their corresponding entry names are listed in ascending order according to their assigned origins. The number of the segment in which they appear is also listed.

In any module map, the following are identified by a dollar sign:

When the load module processed by the linkage editor does not have an origin of zero, the linkage editor generates a one-byte private code (unnamed control section) as the first text record. This private code is deleted in any subsequent reprocessing of the load module by the linkage editor.

Each control section that is obtained from a call library during automatic library call is identified by an asterisk after the control section name.

At the end of the module map is the entry address, that is, the relative address of the main entry point. The entry address is followed by the total length of the module in bytes; in the case of an overlay module, the length is that of the longest path. Pseudoregisters, if used, also appear at the end of the module map; the name, length, and displacement of each pseudoregister are given.

Figure 1 contains a module map and cross-reference listing with four control sections. There are three named control sections (ABC00, ABCSUB1, and ABCSUB2) and one unnamed control section (designated by $PRIVATE). Control sections ABCSUB1 and ABCSUB2 were obtained from a call library. Control section ABCSUB1 also has two additional entry points. The entry point for control section ABCSUB2 is named ABCENT2.
Figure 1. Linkage editor module map and cross-reference table
                                                CROSS REFERENCE TABLE

  CONTROL   SECTION           ENTRY
    NAME    ORIGIN  LENGTH    NAME     LOCATION   NAME     LOCATION   NAME   LOCATION  NAME   LOCATION
  $PRIVATE       0       8
  ABC00         08    1004
  ABCSUB1*    100C      DE
                              ABCSUB1    100C     ABCSUB1A    1016    ABCHLP1   108E
  ABCSUB2*    10E8     767
                              ABCENT2    10E8

  LOCATION  REFERS TO SYMBOL  IN CONTROL SECTION  LOCATION  REFERS TO SYMBOL  IN CONTROL SECTION
      31F            ABCSUB1         ABCSUB1           325            ABCSUB1A        ABCSUB1
      354            ABCENT2         ABCSUB2           360            ABCHLP1         ABCSUB1
      364            ABCSUB1A        ABCSUB1
 ENTRY ADDRESS       08
 TOTAL LENGTH      1850