Object program structures
High Level Assembler supports two object-program models. The
older load module
model generally involves one or more independently
relocatable control sections combined into a single block of machine
language text, which is loaded into a single contiguous portion of
memory. Addresses within this block of text are resolved to locations
within the block, or are left unresolved. Such programs are considered
one-dimensional structures. Examples include z/OS® load modules, CMS modules, and z/VSE® phases.
- z/VM® and z/OS
- The second object-program model is the Generalized Object
File format (GOFF). GOFF supports a two-dimensional structure called
program objects. For more information about GOFF, refer to z/OS MVS Program
Management: Advanced Facilities. The loaded program can
consist of one or more contiguous blocks of machine language text
grouped in classes and placed in different portions of memory. Each contribution
of machine language text to a class is provided by an owning section,
and the independently relocatable text from a section that contributes
to a class is an element. For certain types of class,
an element can contain parts. Unlike a control
section, a program object section can specify more than one independently
relocatable block of text. Addresses within each class can be resolved
to addresses in the same or different classes. A class in a program
object has behavior properties like those of a load module.
Section names are specified with the CSECT, RSECT, and START statements, and class and part names are specified with the CATTR statement. Additional attributes can be assigned to external symbols with the XATTR statement.
The program object model can be created only when the GOFF option
is specified. The load module
model can be created when either
the NOGOFF or GOFF option is specified, but there are limitations
on source program statements if GOFF is specified.
Note: The term section
is used in different senses
for each object-program model. In the load module model, a section
is a control section. In the program object model, a section is a
one-dimensional cross-section of program object data containing contributions
to one or more classes.
- z/VM and z/OS
- Note: Features supported by High Level Assembler when you specify the GOFF option might not be supported by the system linker/binder or run-time environment where the assembled program is processed. You should check the relevant product documentation before utilizing the assembler's features.
