Load Module Record Formats


SYM Record


+---+---+-------+-------------~ ~-----+
| 0 | 1 | 2,3   |   4-243      ~      |
+---+---+-------+-------------~ ~-----+
  |   |   |       |
  |   |   |       +-SYM data and ESD data
  |   |   |
  |   |   +-Count in bytes of SYM and ESD data
  |   |
  |   +-Subtype (information for TESTRAN)
  |     1000 0000 – this SYM record contains ESD items
  |                 (SD, PC, or CM) from a load module
  |                 that was not “under test”.  The TEST
  |                 attribute was not specified when it
  |                 was link edited.
  |
  +- Identification – specifies SYM record – 0100 0000 (x’40’)
 

CESD Record


+---+-----------+-------+-------+-------------~ ~--------+
| 0 |  1-3      |  4,5  |  6,7  |  8-247       ~         |
+---+-----------+-------+-------+-------------~ ~--------+
  |   |           |       |       |
  |   |           |       |       +- ESD data – see below
  |   |           |       |
  |   |           |       +-Count, in bytes of ESD data
  |   |           |
  |   |           +-ESDID of first ESD item
  |   |
  |   +-Spare – binary zeros (3 bytes)
  |
  +-Identification – 0010 0000 (x’20’)
 
  
  

CESD Data


+------~ ~---+---+-----------+---+-----------+
|  1-8       | 9 |  10-12    | 13|  14-16    |
+------~ ~---+---+-----------+---+-----------+
  |            |    |          |   |
  |            |    |          |   +-ID/Length
  |            |    |          |     length (3 bytes) when
  |            |    |          |     type is: SD, PC, CM or PR
  |            |    |          |     ID (2 bytes) when type is LR
  |            |    |          |     Zero (3 bytes) when type is
  |            |    |          |     WX, NULL or ER (Hex ‘06’ 
  |            |    |          |     indicates never call)
  |            |    |          |
  |            |    |          +-Segment Number – in which this 
  |            |    |            symbol appears.  Zero when type is
  |            |    |            ER, WX or NULL (1 byte)
  |            |    |          
  |            |    +-Address – linkage editor assigned address of 
  |            |      this symbol.  Zero when type is ER, WX or NULL. 
  |            |
  |            +-Type – Selection Definition    (SD)  xxxx 0000
  |                     Label Reference         (LR)  xxxx 0011
  |                     Private Code            (PC)  xxxx 0100
  |                     Common                  (CM)  xxxx 0101
  |                     Pseudo Register         (PR)  xxxx 0110
  |                     NULL                          0000 0111
  |                     External Reference      (ER)  xxxx 0010
  |                     Weak External Reference (WX)  xxxx 1010
  |               Sub classification
  |                     Delete  xxx1 xxxx
  |                     Replace xxx1 xxxx
  |                     Insert  xx1x xxxx
  |                     Chain   x1xx xxxx
  |                     Map     1xxx xxxx
  |
  +-Symbol – 8 bytes symbol name (zero when type is NULL)
  
 

Control Record


+---+-----------+-------+-------+---~ ~---+---~ ---+
| 0 |  1-3      |  4-5  |  6-7  |  8-15   | 16-205 |
+---+-----------+-------+-------+---~ ~---+---~ ---+
  |   |           |       |       |         |
  |   |           |       |       |         +-Control Data (see below)
  |   |           |       |       | 
  |   |           |       |       +-Channel Command Word (CCW)
  |   |           |       |
  |   |           |       +-Count (2 bytes binary zero)
  |   |           |
  |   |           +-Count – in bytes of the control data (CESD ID,
  |   |             length of control section) following the CCW field
  |   |
  |   +-Spare – binary zero
  |
  +-Identification * Control Record – 0000 0001  
                   * Control Record that precedes the last text
                     record of this overlay segment – 0000 0101 (EOS)
                   * Control Record that precedes the last text
                     record of the module – 000 1101 (EOM)    


Control Data (for Control Record)


+---+---+---+---+---+-~ ~-+---+---+---+
| C | L | C | L | C |  ~  | L | C | L |
+---+---+---+---+---+-~ ~-+---+---+---+
  |   |
  |   +-Length of text record and/or length of control section –
  |     specifies the length of the control section (in bytes)
  |     to which the text in the following record belongs, or the
  |     number of bytes of a control section contained in the
  |     following text record (2 bytes)
  |
  +-CESD entry number – specifies the composite external symbol
                        directory entry that contains the control
                        section name of the control section of 
                        which this text is a part (2 bytes)
			 

Relocation Directory Record


+---+-----------+-------+-------+---~ ~---+-----~ ~-----+
| 0 |  1-3      |  4,5  |  6,7  |  8-15   |  16-255     |
+---+-----------+-------+-------+---~ ~---+-----~ ~-----+
  |   |            |      |       |         |
  |   |            |      |       |         +-RLD data (see below)
  |   |            |      |       |         
  |   |            |      |       +-Spare – binary zeros (8 bytes) 
  |   |            |      |
  |   |            |      +-Count – in bytes, of the relocation 
  |   |            |                dictionary information following  
  |   |            |                the spare 8-byte field (2 bytes)
  |   |            |     
  |   |            +-Count – binary zeros (2 bytes)
  |   |
  |   +-Spare – binary zeros (3 bytes)
  |
  +-Identification (1 byte)
                   * a relocation dictionary record – 0000 0010
                   * the last record of the segment – 0000 0010
                   * the last record of the module  - 0000 1110

RLD Data


+---+---+-+-----+-+-----+--~ ~--+-+-----+-+-----+-+-----+
| R | P |F|  A  |F|  A  |       |F|  A  |F|  A  |F|  A  |
+---+---+-+-----+-+-----+--~ ~--+-+-----+-+-----+-+-----+
  |   |  |   |  
  |   |  |   +-Address – linkage editor assigned address
  |   |  |               of the address constant (3 bytes)
  |   |  |
  |   |  +-Flag (see below) (1 byte)
  |   |
  |   +-Position Pointer – contains the entry number of the CESD
  |        entry (or translation table entry) that indicates which
  |        control section holds the address constant (2 bytes)
  |
  +-Relocation Pointer – contains the entry number of the CESD
       entry (or translation table entry) that indicates which
       symbol value is to be used in the computation of the
       address constant’s value (2 bytes)

Flag Data – xxxxLLST
xxxx specifies the type of this RLD item (address constant)
0000 – nonbranch-type in assembler language, DC A(name)
0001 – branch-type in assembler language, DC V(name)
0010 – pseudo register displacement value
0011 – pseudo register cumulative displacement value
1000 and 1001 – this address constant is not to be relocated 
                Because it refers to an unresolved symbol
LL specifies the length of the address constant
01 – 2 byte
10 – 3 byte
11 – 4 byte
S specifies the direction of relocation
0 – positive
1 – negative
T specifies the type of the next RLD item
0 – the following RLD item has a different relocation and/or
    position pointer
1 – the following RLD item has the same relocation and
    position pointer as this and therefore is omitted


Control and Relocation Directory Record


+---+-----------+-------+-------+---~ ~---+-----~ ~-----+
| 0 |  1-3      |  4,5  |  6,7  |  8-15   |  16-255     |
+---+-----------+-------+-------+---~ ~---+-----~ ~-----+
  |   |            |      |       |         |
  |   |            |      |       |         +-RLD data
  |   |            |      |       |         
  |   |            |      |       +-CCW (8 bytes) 
  |   |            |      |
  |   |            |      +-Count – in bytes, of the relocation 
  |   |            |                dictionary information following  
  |   |            |                the spare 8-byte field (2 bytes)
  |   |            |     
  |   |            +-Count – in bytes, of control information
  |   |                 following the last RLD address field.
  |   |                 The control information contains the ID
  |   |                 and length of control sections in the
  |   |                 following text record.  (2 bytes)
  |   |
  |   +-Spare – binary zeros (3 bytes)
  |
  +-Identification (1 byte)
                   * control and RLD record          – 0000 0011
                   * control and RLD record followed by the
                     Last text record of a segment   – 0000 0111 (EOS)
                   * control and RLD record followed by the
                     Last text record of the module  – 0000 1111 (EOM)


CSECT Identification Record (IDR)


+---+---+---+-----~ ~-----+
| 0 | 1 | 2 |   3-255     |
+---+---+---+-----~ ~-----+
  |   |   |   |
  |   |   |   +- IDR Data
  |   |   |
  |   |   +-Sub-Type Indicator – specified type of IDR data
  |   |        contained on this record (bits 1-3 reserved)
  |   |        ---- 0001 data supplied by HMASPZAP
  |   |        ---- 0010 Linkage Editor data
  |   |        ---- 0100 Translator-supplied data
  |   |        ---- 1000 User (System) supplied data (from
  |   |                  IDENTIFY function)
  |   |        1--- ---- Indicates the last IDR of this load module
  |   |
  |   +-Byte Count – of IDR data in this record, including the field
  |                  (value range 6 to 255)
  |
  +-Identification – indicates that this is:
                     1000 0000 – a CSECT Identification Record

HMAZAP Data


+---+-------+-----------+-----~ ~-----+-----~ ~-----+
| 0 |  1-2  |  3-5      |  6-13       |  14-247     |
+---+-------+-----------+-----~ ~-----+-----~ ~-----+
  |   |       |           |             |
  |   |       |           |             +-Up to 18 repetitions
  |   |       |           |               of bytes 1-13
  |   |       |           |             
  |   |       |           +-Data specified during HMASPZAP processing
  |   |       |           
  |   |       +-Date of HMASPZAP processing (packed decimal) YYDDD
  |   |       
  |   +-ESDID of CSECT processed by HMASPZAP
  |
  +-Flags and count
     Bit 0 – reserved
     Bit 1 – chain bit – a 1 indicates that the next record is also
                         available for HMASPZAP data
     Bis 2-7 – number of HMASPZAP entries used on this record
               (value range 0 to 19)

 

Linkage Editor Data


+-----~ ~-----+-------+-----------+
|  0-9        | 10-11 |  12-14    |
+-----~ ~-----+-------+-----------+
  |             |       |
  |             |       +-Date of last linkage editor processing
  |             |         of this module (packed decimal) YYDDD
  |             |
  |             +-Version and Modification level of the linkage
  |               editor that produced this module
  |               (packed decimal) VVMM
  |
  +-Program Name of the linkage editor that produced this module


Translator Data


+-------+-----~ ~-----~ ~-------------+
|  0-1  | Variable         n to n+14  |
+-------+-----~ ~-----~ ~-------------+ 
  |       |               |
  |       |               +-Translator description data
  |       |
  +-------+-> ESDID(s) or CSECT(s) whose object code was
              produced by the translator described in
              this data item.  This field is repeated as
              many times as necessary with the high order
              bit of the last ESDID in the list set to 1

 

Translator Description


+---+---~ ~---+-----+-----------+-----~ ~-----+
| 0 |   1-10  |11-12| 13-15     |             |
+---+---~ ~---+-----+-----------+-----~ ~-----+
  |   |         |     |           |
  |   |         |     |           +-When present, same as bytes 1-15
  |   |         |     |             but data applies to a translator
  |   |         |     |             whose output is source code 
  |   |         |     |             (a PL/S compiler)
  |   |         |     |           
  |   |         |     +-Date of compilation/assembly (packed decimal)
  |   |         |       YYDDD
  |   |         |     
  |   |         +-Version and Modification level of translator
  |   |           (packed decimal) VVMM
  |   |
  |   +-Program name of translator, left justified and padded to
  |     the right with blanks
  |
  +-Indicator:
    0000 0000 – only one translator was described on object END
                card for these CSECTS
    0000 0001 – two translators were described on object END card
                (that is, PL/S Compiler and Assembler) and are
                Included here.

User Data (Linkage Editor IDENTIFY Function)


+-------+-----------+---+----------~ ~------------+
|  0-1  |  2-4      | 5 | variable 1 to 40 bytes  |
+-------+-----------+---+----------~ ~------------+
  |       |           |   |
  |       |           |   +-From 1 to 40 bytes of variable user
  |       |           |     (or system) supplied data as specified
  |       |           |      on the Linkage Editor IDENTIFY control
  |       |           |      statement.  Assumed to be printable
  |       |           |      EBCDIC characters.
  |       |           |   
  |       |           +-Count – number of characters in the user
  |       |                     data field
  |       |
  |       +-Date on which this data was supplied to the module via
  |         via the Linkage Editor IDENTIFY control statement.
  |
  +-ESDID of the CSECT to which the user data applies