HLASM Language Reference
HLASM Language Reference HLASM Language Reference
| SECT_A CSECT , Define section SECT_A | CLASS_X CATTR RMODE(ANY) Define class CLASS_X | - - - Statements for CLASS_X | CLASS_Y CATTR RMODE(24) Define class CLASS_Y | - - - Statements for CLASS_Y | SECT_A CSECT , Resume section SECT_A | - - - Statements for class B_TEXT | CLASS_X CATTR , Resume class CLASS_X | - - - More statements for CLASS_X | Class Binding and Loading Attributes | Each class is bound into a separately relocatable loadable segment, using one of | two binding attributes. | Classes containing parts use merge binding (described at “Parts (MVS and | CMS)” on page 61). Parts are the smallest independently relocatable | components of a merge class. | Classes not containing parts use concatenation binding, in which elements, | after suitable alignment, are placed one after another. Zero-length elements are | retained but take no space in the program object. Elements are the smallest | independently relocatable components of a concatenation class | Each class must have uniform binding and loading attributes. More than one class | may have identical attributes, and the binder may put such classes into one | segment. The most usual class attributes are RMODE, alignment, and Loadability; | see “CATTR Instruction (MVS and CMS)” on page 112 for further information. | Class loading attributes determine the load-time placement of segments in virtual | storage. Loadable segments are loaded as separately relocated non-contiguous | entities at different origin addresses. | Default Class Assignments | High Level Assembler provides compatible behavior with “load module” model | object files generated when the NOGOFF option is active. When the GOFF option | is specified, the assembler automatically follows each CSECT, RSECT, and START | statement by defining two classes: B_TEXT and B_PRV. | B_TEXT contains the machine language text associated with the section name, | and is assigned the RMODE of the section name. The section name is | assigned to an entry point at the origin of the class. If a subsequent CATTR | statement declares a class name before any other statements have defined | storage, the element defined by the section name and the B_TEXT class name | will be empty. | B_PRV contains any external dummy sections defined by DXD instructions, or by | DSECTs named in Q-type address constants. If none are defined, the | elements in this class will be empty. (“PRV” is the binder's term for a “Pseudo | Register Vector,” the cumulative collection of external dummy sections.) | High Level Assembler assigns the name of the section as an entry name at the | initial byte of B_TEXT, and assigns to it the AMODE of the section name. | These two classes are bound in the same way as ordinary control sections and | dummy external sections are bound in the load module model, and can be used to | generate a load module if certain restrictions are satisfied. 60 HLASM V1R5 Language Reference
| You may declare other classes in addition to the defaults, but the resulting program | object will not be convertible to a load module. | Parts (MVS and CMS) | Parts are the smallest externally named and independently relocatable subdivisions | of elements in a merge class. A class containing parts may contain only parts, and | a class containing anything other than parts may not contain any parts. | ENTRY statements may not define an entry point in a part. | You define a part with the CATTR instruction, which must follow the initiation of an | executable section. The name of the class to which the part belongs is provided in | the name entry of the CATTR instruction, and the name of the part is specified as | an operand. The first definition of a class name may also specify the attributes of | the class. (See “CATTR Instruction (MVS and CMS)” on page 112 for further | information.) | For example, suppose you define two parts in a class: | SECT_B CSECT , Define section SECT_B | PClass CATTR Part(Part_R),RMODE(ANY) Define class PClass, part Part_R | - - - Statements included in Part_R | PClass CATTR Part(Part_S) Define part Part_S in class PClass | - - - Statements included in Part_S | PClass CATTR Part(Part_R) Resume class PClass and part Part_R | - - - More statements included in Part_R | These statements define a “merge” class PClass containing two parts, Part_R and | Part_S. If other classes or other object files declare parts with the same names in | the same class, the binder will merge their contents to determine the final part | definition in the program object. | You may provide additional statements for a part by specifying a CATTR statement | with the class name in the name entry and the part name specified as the operand. | No other class attributes may be specified following the first CATTR statement | declaring the class. | Parts are automatically assigned a “merge” attribute, meaning that more than one | identically named part may appear in a class defined in other assemblies or | compilations. The binder will assign the longest length and strictest alignment of all | such identically-named parts, and will merge the machine language text | contributions of each to form the final text belonging to that part. The order of text | merging depends on the sequence of parts processing by the binder. | Note: During linking, parts may be arranged in any order, depending on their | priority attribute. Do not assume any ordering relationship among parts. Location Counter Setting | The assembler maintains a separate location counter for each section, element, | and part. The location counter setting for the first section starts at 0, except when | an initial section is started with a START instruction that specifies a nonzero | location counter value. The location values assigned to the instructions and other | data in a section, element, or part are, therefore, relative to the location counter | setting at the beginning of that section, element, or part. Chapter 3. Program Structures and Addressing 61
- Page 30 and 31: Coding Made Easier Linkage between
- Page 32 and 33: Character Set Compatibility with Ea
- Page 34 and 35: Assembler Language Coding Conventio
- Page 36 and 37: Assembler Language Coding Conventio
- Page 38 and 39: Assembler Language Coding Conventio
- Page 40 and 41: Assembler Language Coding Conventio
- Page 42 and 43: Assembler Language Structure Condit
- Page 44 and 45: Assembler Language Structure Machin
- Page 46 and 47: Assembler Language Structure Condit
- Page 48 and 49: Terms, Literals, and Expressions Te
- Page 50 and 51: Terms, Literals, and Expressions -
- Page 52 and 53: Terms, Literals, and Expressions As
- Page 54 and 55: Terms, Literals, and Expressions Se
- Page 56 and 57: Terms, Literals, and Expressions Fo
- Page 58 and 59: Terms, Literals, and Expressions I
- Page 60 and 61: Terms, Literals, and Expressions Th
- Page 62 and 63: Terms, Literals, and Expressions 1.
- Page 64 and 65: Terms, Literals, and Expressions
- Page 66 and 67: Terms, Literals, and Expressions
- Page 68 and 69: Terms, Literals, and Expressions Th
- Page 70 and 71: | Chapter 3. Program Structures and
- Page 72 and 73: Source Module A source module is co
- Page 74 and 75: The CSECT instruction can be used a
- Page 76 and 77: | in linker control statements for
- Page 78 and 79: This is not only convenient, but it
- Page 82 and 83: | For executable sections, the loca
- Page 84 and 85: Addressing | The System/390® and z
- Page 86 and 87: Addressing | Parts must always be r
- Page 88 and 89: Addressing Literal Pools ALPHA LR 3
- Page 90 and 91: Addressing If the symbol is the nam
- Page 92 and 93: Addressing External Symbol Dictiona
- Page 94 and 95: Addressing 74 HLASM V1R5 Language R
- Page 96 and 97: Part 2. Machine and Assembler Instr
- Page 98 and 99: General Instructions Chapter 4. Mac
- Page 100 and 101: Input/Output Operations For further
- Page 102 and 103: Branching with Extended Mnemonic Co
- Page 104 and 105: Symbolic Operation Codes variations
- Page 106 and 107: Operand Entries Registers You can s
- Page 108 and 109: Operand Entries “Program Structur
- Page 110 and 111: Operand Entries Format │ Coded or
- Page 112 and 113: Examples of Coded Machine Instructi
- Page 114 and 115: Examples of Coded Machine Instructi
- Page 116 and 117: Examples of Coded Machine Instructi
- Page 118 and 119: Examples of Coded Machine Instructi
- Page 120 and 121: Chapter 5. Assembler Instruction St
- Page 122 and 123: *PROCESS Statement *PROCESS Stateme
- Page 124 and 125: ACONTROL Instruction ►►──
- Page 126 and 127: ACONTROL Instruction FLAG(PAGE0) in
- Page 128 and 129: AINSERT Instruction character_strin
| SECT_A CSECT , Define section SECT_A<br />
| CLASS_X CATTR RMODE(ANY) Define class CLASS_X<br />
| - - - Statements for CLASS_X<br />
| CLASS_Y CATTR RMODE(24) Define class CLASS_Y<br />
| - - - Statements for CLASS_Y<br />
| SECT_A CSECT , Resume section SECT_A<br />
| - - - Statements for class B_TEXT<br />
| CLASS_X CATTR , Resume class CLASS_X<br />
| - - - More statements for CLASS_X<br />
| Class Binding and Loading Attributes<br />
| Each class is bound into a separately relocatable loadable segment, using one of<br />
| two binding attributes.<br />
| Classes containing parts use merge binding (described at “Parts (MVS and<br />
| CMS)” on page 61). Parts are the smallest independently relocatable<br />
| components of a merge class.<br />
| Classes not containing parts use concatenation binding, in which elements,<br />
| after suitable alignment, are placed one after another. Zero-length elements are<br />
| retained but take no space in the program object. Elements are the smallest<br />
| independently relocatable components of a concatenation class<br />
| Each class must have uniform binding and loading attributes. More than one class<br />
| may have identical attributes, and the binder may put such classes into one<br />
| segment. The most usual class attributes are RMODE, alignment, and Loadability;<br />
| see “CATTR Instruction (MVS and CMS)” on page 112 for further information.<br />
| Class loading attributes determine the load-time placement of segments in virtual<br />
| storage. Loadable segments are loaded as separately relocated non-contiguous<br />
| entities at different origin addresses.<br />
| Default Class Assignments<br />
| High Level Assembler provides compatible behavior with “load module” model<br />
| object files generated when the NOGOFF option is active. When the GOFF option<br />
| is specified, the assembler automatically follows each CSECT, RSECT, and START<br />
| statement by defining two classes: B_TEXT and B_PRV.<br />
| B_TEXT contains the machine language text associated with the section name,<br />
| and is assigned the RMODE of the section name. The section name is<br />
| assigned to an entry point at the origin of the class. If a subsequent CATTR<br />
| statement declares a class name before any other statements have defined<br />
| storage, the element defined by the section name and the B_TEXT class name<br />
| will be empty.<br />
| B_PRV contains any external dummy sections defined by DXD instructions, or by<br />
| DSECTs named in Q-type address constants. If none are defined, the<br />
| elements in this class will be empty. (“PRV” is the binder's term for a “Pseudo<br />
| Register Vector,” the cumulative collection of external dummy sections.)<br />
| High Level Assembler assigns the name of the section as an entry name at the<br />
| initial byte of B_TEXT, and assigns to it the AMODE of the section name.<br />
| These two classes are bound in the same way as ordinary control sections and<br />
| dummy external sections are bound in the load module model, and can be used to<br />
| generate a load module if certain restrictions are satisfied.<br />
60 <strong>HLASM</strong> V1R5 <strong>Language</strong> <strong>Reference</strong>