Program management support of class attributes

Starting with version 2, program objects support multiple text classes. Each class has a name and a set of class attributes. Not all class attributes defined for GOFF format object modules and program objects are supported by other z/OS® operating system components.

Classes may be combined into segments (based on class attributes) by the binder. Each segment will be loaded into contiguous storage by the program management loader. The criteria used by the binder to combine classes into segments may change from release to release. The only criteria currently used for dividing a program into segments are class loading behavior (initial/defer) and rmode.

This topic discusses the current level of binder support for the more important class attributes defined for the ED record in GOFF object modules:
alignment
The binder supports doubleword, quadword and page alignments for classes. A class is assigned the most restrictive alignment of any element or part comprising the class, but at least doubleword. The loader supports doubleword and page alignment. A segment containing any classes which are quadword–aligned are marked as page–aligned.
rmode
The binder supports rmodes 24, ANY, or 64. When RMODE64 features are not enabled (that is, RMODE=64 is not specified or RMODEX is not specified):
  1. If a save is done to a PDS load module, all rmode 64 fields in ESDs are changed to rmode ANY. rmode 64 is treated as rmode ANY by the LOADW API call and the batch loader interfaces.
  2. If a save is done to a program object, the ESDs remain as rmode 64 in the saved module, but the loader honors rmode 64 only for a deferred load class.
class loading attributes
Do not load with module and Deferred are fully supported and are used when combining classes into segments. Movable,Shareable and Read only attributes are stored in the saved program object but do not currently have any effect on processing.
descriptive or text
Descriptive classes are never loaded with the module and cannot contain adcons. Examples are B_ESD or user-defined ADATA classes.
binding method
Catenate classes are ordinary text classes. Merge classes are composed of parts defined by PR (part reference) records and are mapped into a single element at the module level. For example, PR records of the same name from different input sections are mapped to a single module-level PD (part definition)
data or code (executable or non-executable)
This attribute is saved in the program object but has no effect on processing.
namespace
The namespace of a class must be the same as the namespace of all symbols (LD/ER/PR ESD names) in that class. namespace 1 is used for all non-merge classes. namespace 2 and namespaces 3 are valid only for merge classes. namespace 2 is used for pseudoregisters and namespace 3 is used for parts. See Chapter 2 in z/OS MVS Program Management: User's Guide and Reference for more information.
fill
Defines a fill byte used for all areas of the class that have no initializing data.
usability attributes
Usability attributes in ED records (RENT, REUS, and so on) are not supported by the binder