z/OS MVS Program Management: Advanced Facilities
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


ALIGNT: Align text

z/OS MVS Program Management: Advanced Facilities
SA23-1392-00

ALIGNT allows you to specify the alignment (in the loaded module) for a section or part. If this is a section with multiple text classes, unless specific classes are named, all elements in the section (with the exception of those elements in merge classes) will be aligned as indicated. For merge classes, the specified alignment will be for all the parts in that merge class. The alignment specification will not be preserved if the module is rebound.

The syntax of the ALIGNT call is:

FUNC=ALIGNT
Specifies that the control section or parts are to be aligned as specified.
VERSION=1 | 2 | 3 | 4 | 5 | 6 | 7 | 8
Specifies the version of the parameter list to be used. The default value is VERSION=1.
Note: If VERSION is defaulted or specified as 1-7, BDY and CLASSL cannot be specified as macro keywords.
RETCODE=retcode — RX-type address or register (2-12)
Specifies the location of a fullword integer that is to receive the return code returned by the binder.
RSNCODE=rsncode — RX-type address or register (2-12)
Specifies the location of a 4-byte hexadecimal string that is to receive the reason code returned by the binder.
WORKMOD=workmod — RX-type address or register (2-12)
Specifies the location of an 8-byte area that contains the workmod token returned on the CREATEW request.
SECTION=section — RX-type address or register (2-12)
Specifies the location of a varying character string that contains the name of the control section or common section to be page aligned.
BDY=bdy — RX-type address or register (2-12)
Specifies the location of a fullword that contains the boundary alignment to use for the named section. The alignment may be any power of 2 value from 1 to 4096 (unaligned to a 4K page boundary). A value of 0 may also be specified, which will cause the alignment value from the ESD to be used (as if no ALIGNT had been specified). If no value is provided for BDY, the default value is 4096.
CLASSL=classl — RX-type address or register (2-12)
Specifies the location of a class list which lists the names of the classes to align to the boundary. The class list has the following format:
Table 1. CLASSL format
Field Name Length
Class_Count 4
Class_Names_List 18
where Class_Names_List is an array of class count entries, using the format:
Table 2. Class_Names_List format
Field Name Length
Class_Name_Length 2
Class_Name 16
Note: Class_Name_Length must be between 1 and 16.

Processing notes

An ALIGNT request is valid only when the processing intent is BIND.

If the section, or a class name (if specified), does not exist, a message will be issued.

The page_aligned attribute is set, as required, for the target workmod and, when the module is saved, in the output directory.

Alignment requests remain in effect only for the current bind. The alignment specification in the ESD record is not changed.

Prior to VERSION=8, the alignment boundary value is not specified and is always as if page was specified. The meaning of page is 4096, unless the ALIGN2 option is used, in which case it is 2048. However, beginning with VERSION=8, the ALIGN2 option will have no effect. If a 2K boundary is required, it must be explicitly requested.

If the alignment value is 0, this causes the alignments to be reset to the original ESD values, which would be used if no ALIGNT statement had been specified.

If no class names are specified, then the specified boundary alignment will be used to align all classes of the specified section, with the exception of any merge classes. Any alignment information previously specified for class names will be discarded.

Alignment values for merge classes will apply to all the parts in the merge class, in addition to the class itself. Only parts in merge classes can be aligned; pseudo-registers cannot be aligned this way because they do not retain an owning section name which is needed to identify the part.

If class names are specified, then those classes will be aligned. A merge class name may be listed. If the same section name is specified on more than one ALIGNTs which specifies class names, those class names will be added to the list of classes to be aligned.

If ALIGNT, which specifies a section name with no class names, is followed by one or more ALIGNTs that do specifiy class names, any unspecified classes in the section (excluding any merge classes) will be aligned according to the first ALIGNT that had no class names.

Though the class list names are variable length (with a halfword length preceding them), the format is a fixed-length array, so each array element must be exactly 18 bytes (except possibly the last).

Return and reason codes

The common binder API reason codes are shown in Table 1.

Return Code Reason Code Explanation
00 00000000 Normal completion. Section will be aligned during bind operation.
04 83000710 Duplicate alignment request. A request to page align this section has already been processed. This request is ignored.
12 83000104 Function not allowed for INTENT=ACCESS. Request rejected.

Parameter list

If your program does not use the IEWBIND macro, place the address of the ALIGNT parameter list in general purpose register 1.

Table 3. ALIGNT parameter list
       
PARMLIST DS 0F  
  DC A(ALIGNT) Function code
  DC A(RETCODE) Return code
  DC A(RSNCODE) Reason code
  DC A(WORKMOD) Workmod token
  DC A(SECTION) Section name
  DC A(BDY) Boundary value
  DC A(CLASSL) Class list. Optional.
ALIGNT DC H'31' ALIGNT function code
  DC H'version' Interface version number
       
Note: X'80000000' must be added to either the SECTION parameter (for Version 1 through 7) or the CLASSL parameter (for Version 8 or higher).

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014