Asmg1025 PDF
Asmg1025 PDF
Asmg1025 PDF
z/VSE
1.6
General Information
IBM
GC26-4943-06
Note
Before using this information and the product it supports, be sure to read the general information under
“Notices” on page 75.
This edition applies to IBM High Level Assembler for z/OS & z/VM & z/VSE, Release 6, Program Number 5696-234 and
to any subsequent releases until otherwise indicated in new editions. Make sure you are using the correct edition for the
level of the product.
Order publications through your IBM® representative or the IBM branch office serving your locality.
IBM welcomes your comments. For information on how to send comments, see “How to send your comments to IBM” on
page xiii.
When you send information to IBM, you grant IBM a nonexclusive right to use or distribute the information in any way it
believes appropriate without incurring any obligation to you.
© Copyright International Business Machines Corporation 1992, 2021.
US Government Users Restricted Rights – Use, duplication or disclosure restricted by GSA ADP Schedule Contract with
IBM Corp.
Contents
Figures................................................................................................................ vii
Tables.................................................................................................................. ix
iii
External dummy sections.....................................................................................................................12
Number of external symbols................................................................................................................12
Addressing extensions...............................................................................................................................13
Labeled USINGs and qualified symbols.............................................................................................. 13
Dependent USINGs.............................................................................................................................. 14
Specifying assembler options in external file or library member.............................................................14
Specifying assembler options in the source program......................................................................... 14
IBM-supplied default assembler options................................................................................................. 15
iv
Macro and copy code cross-reference.................................................................................................49
DSECT cross-reference........................................................................................................................ 50
USING map........................................................................................................................................... 50
Diagnostic cross-reference and assembler summary.........................................................................52
Improved page-break handling........................................................................................................... 53
Macro-generated statements....................................................................................................................53
Sequence field in macro-generated statements................................................................................. 54
Format of macro-generated statements............................................................................................. 54
Macro-generated statements with PRINT NOGEN............................................................................. 54
Diagnostic messages in macro assembly..................................................................................................55
Error messages for a library macro definition..................................................................................... 55
Error messages for source program macro definitions....................................................................... 56
Terminal output..........................................................................................................................................56
Input/output enhancements..................................................................................................................... 56
CMS interface command............................................................................................................................57
Macro trace facility (MHELP)..................................................................................................................... 57
Abnormal termination of assembly........................................................................................................... 58
Diagnosis facility........................................................................................................................................ 58
Appendix A. Assembler options........................................................................... 63
Notices................................................................................................................75
Trademarks................................................................................................................................................ 76
Bibliography........................................................................................................ 77
Index.................................................................................................................. 79
v
vi
Figures
8. Relocation dictionary.................................................................................................................................. 44
14. Macro and copy code cross reference - with LIBMAC option.................................................................. 49
vii
viii
Tables
1. IBM High Level Assembler for z/OS & z/VM & z/VSE documents...............................................................xii
3. Multilevel sublists........................................................................................................................................20
4. Data attributes.............................................................................................................................................27
ix
x
Who should use this manual
• Prefix the text with platform-specific text (for example, "Under CMS…")
• Add parenthetical qualifications (for example, "(CMS)")
• A definition list, for example:
z/OS
Informs you of information specific to z/OS.
z/VM
Informs you of information specific to z/VM.
z/VSE
Informs you of information specific to z/VSE.
CMS is used in this manual to refer to Conversational Monitor System on z/VM.
Publications
Here are the High Level Assembler documents. The table shows tasks, and which document can help you
with that particular task. Then there is a list showing each document and a summary of its contents.
Table 1. IBM High Level Assembler for z/OS & z/VM & z/VSE documents
Task Document Order Number
Evaluation and HLASM V1R6 General Information GC26-4943
Planning
Installation and HLASM V1R6 Installation and Customization Guide SC26-3494
customization
HLASM V1R6 Programmer's Guide SC26-4941
HLASM V1R6 Toolkit Feature Installation and Customization GC26-8711
Guide
Application HLASM V1R6 Programmer's Guide SC26-4941
Programming
HLASM V1R6 Language Reference SC26-4940
HLASM V1R6 Toolkit Feature User's Guide GC26-8710
HLASM V1R6 Toolkit Feature Interactive Debug Facility User's GC26-8709
Guide
Diagnosis HLASM V1R6 Installation and Customization Guide SC26-3494
xii High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Organization of this manual
Related publications
See “Bibliography” on page 77 for a list of publications that supply information you might need while
using High Level Assembler.
xiv High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
What's new in High Level Assembler release 6
High Level Assembler Release 6 provides these enhancements over High Level Assembler Release 5:
Changed Assembler instructions
• New QY-type and SY-type address constants provide resolution into long-displacement.
• Support for three decimal floating-point data types, increasing instruction addressability and reducing
the need for additional instructions.
Unified Opcode table
• OPTABLE option
– The OPTABLE option is permitted on the *PROCESS statement.
Mnemonic tagging
• Suffix tags for instruction mnemonics let you use identically-named macro instructions and machine
instructions in the same source program.
New features
• High Level Assembler for Linux on z Systems®
• Support for IBM Z processors up to IBM z14®.
New options
• WORKFILE
Changed assembler instructions
• DC/DS
– Decimal floating-point constants
– Unsigned binary constants
Changed assembler statements
• OPTABLE option for ACONTROL
Services Interface
• HLASM Services Interface for I/O exits added
Miscellany
• Qualifiers identified in symbol cross-reference.
• References to System z® have been changed to IBM Z.
High Level Assembler Release 6 requires processors supporting z/Architecture® (Architecture Level
Set 2 or later), executing either in z/Architecture mode or (for CMS) in ESA/390 mode.
For example:
• zSeries z900, z990, and z800 servers (or compatible) and later IBM Z systems.
For details, see https://www.ibm.com/it-infrastructure/z/hardware.
2 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Language compatibility
High Level Assembler is an IBM licensed program that helps you develop programs and subroutines to
provide functions not typically provided by other symbolic languages, such as COBOL, FORTRAN, and
PL/I.
Language compatibility
The assembler language supported by High Level Assembler has functional extensions to the languages
supported by Assembler H Version 2 and DOS/VSE Assembler. High Level Assembler uses the same
language syntax, function, operation, and structure as these earlier assemblers. The functions provided
by the Assembler H Version 2 macro facility are all provided by High Level Assembler.
Migration from Assembler H Version 2 or DOS/VSE Assembler to High Level Assembler requires an
analysis of existing assembler language programs to ensure that they do not contain macro instructions
with names that conflict with the High Level Assembler symbolic operation codes, or SET symbols with
names that conflict with the names of High Level Assembler system variable symbols.
With the exception of these possible conflicts, and with appropriate High Level Assembler option values,
assembler language source programs written for Assembler H Version 2 or DOS/VSE Assembler, that
assemble without warning or error diagnostic messages, should assemble correctly using High Level
Assembler.
High Level Assembler, like its predecessor Assembler H Version 2, can assemble source programs that
use the following machine instructions:
• S/370
• System/370 Extended Architecture (370-XA)
• Enterprise Systems Architecture/370 (ESA/370)
• Enterprise Systems Architecture/390 (ESA/390)
• z/Architecture
The set of machine instructions that you can use in an assembler source program depend upon which
operation code table you use for the assembly.
4 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Additional assembler instructions
The instructions, syntax and coding conventions of the assembler language supported by High Level
Assembler include functional extensions to those supported by Assembler H Version 2 and DOS/VSE
Assembler. This chapter describes the most important of those extensions, and the language differences
between High Level Assembler and the earlier assemblers.
COPY instruction:
Any number of nestings (COPY instructions within code that has been brought into your program by
another COPY instruction) is permitted. However, recursive COPY instructions are not permitted.
A variable symbol that has been assigned a valid ordinary symbol may be used as the operand of a
COPY instruction in open code:
DC instruction:
The DC instruction has been enhanced to cater for the new binary and decimal floating-point
numbers, Unicode character constants, and doubleword fixed-point and A-type address constants.
As well, the J-type, Q-type and R-type address constants have been added.
A new data type, CA, has been added to indicate an ASCII character constant type to be represented.
This constant is not modified by the TRANSLATE option. The CE data type generates an EBCDIC
constant that is not modified by the TRANSLATE option.
A new subfield has been added for the program type of symbol.
DROP instruction:
The DROP instruction now lets you end the domain of labeled USINGs and labeled dependent
USINGs. See “Labeled USINGs and qualified symbols” on page 13 and “Dependent USINGs” on
page 14.
DS instruction:
A new subfield has been added for the program type of symbol.
DXD instruction:
The DXD instruction now aligns external dummy sections to the most restrictive alignment of the
specified operands (instead of that of the first operand).
EQU instruction:
Symbols appearing in the first operand of the EQU instruction do not need to be previously defined. In
the following example, both WIDTH and LENGTH can be defined later in the source code:
Two new operands are provided for the EQU instruction, a program-type operand, and an assembler-
type operand.
ISEQ instruction:
Sequence checking of any column on input records is allowed.
OPSYN instruction:
You can code OPSYN instructions anywhere in your source module.
ORG instruction:
Two new operands are provided for the ORG statement that will specify the boundary and offset to be
used to set the location counter.
The BOUNDARY operand is an absolute expression that must be a power of 2 with a range from 8
(doubleword) to 4096 (page).
The OFFSET operand is any absolute expression.
If BOUNDARY and/or OFFSET are used, then the resultant location counter will be calculated by
rounding the expression up to the next higher BOUNDARY and then adding the OFFSET value.
POP instruction:
An additional operand, NOPRINT, can be specified with the POP instruction to cause the assembler to
suppress the printing of the specified POP statement. The operand ACONTROL saves the ACONTROL
status.
6 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
2-Byte relocatable address constants
PRINT instruction:
Seven additional operands can be specified with the PRINT instruction. They are:
MCALL | NOMCALL
The MCALL operand instructs the assembler to print nested macro call instructions.
The NOMCALL operand suppresses the printing of nested macro call instructions.
MSOURCE | NOMSOURCE
The MSOURCE operand causes the assembler to print the source statements generated during
macro processing, as well as the assembled addresses and generated object code of the
statements.
The NOMSOURCE operand suppresses the printing of the generated source statements, but does
not suppress the printing of the assembled addresses and generated object code.
UHEAD | NOUHEAD
The UHEAD operand causes the assembler to print a summary of active USINGs following the
TITLE line on each page of the source and object program section of the assembler listing.
The NOUHEAD operand suppresses the printing of this summary.
NOPRINT
The NOPRINT operand causes the assembler to suppress the printing of the PRINT statement that
is specified.
The assembler has changed the way generated object code is printed in the assembler listing when
the PRINT NOGEN instruction is used. Now the object code for the first generated instruction, or the
first 8 bytes of generated data is printed in the object code column of the listing on the same line
as the macro call instruction. The DC, DS, DXD, and CXD instructions can cause the assembler to
generate zeros as alignment data. With PRINT NOGEN the generated alignment data is not printed in
the listing.
PUSH instruction:
An additional operand, NOPRINT, can be specified with the PUSH instruction to cause the assembler
to suppress the printing of the specified PUSH statement. The operand ACONTROL restores the
ACONTROL status.
USING statements:
Labeled USINGs and dependent USINGs provide you with enhanced control over the resolution of
symbolic expressions into base-displacement form with specific base registers. Dependent USINGs
can be labeled or unlabeled.
The end of range parameter lets you specify a range for the USING statement, rather than accepting
the default range. See “Labeled USINGs and qualified symbols” on page 13 and “Dependent
USINGs” on page 14.
In addition, all EBCDIC characters can be used in comments and remarks, and anywhere that characters
can appear between paired single quotation marks.
Translation table
In addition to the standard EBCDIC set of characters, High Level Assembler can use a user-specified
translation table to convert the characters contained in character (C-type) data constants (DCs) and
literals. High Level Assembler provides a translation table to convert the EBCDIC character set to the
ASCII character set. The assembler can also use a translation table supplied by the programmer.
Unicode support
High Level Assembler can be used to create Unicode character constants. The CODEPAGE option selects
which codepage to use and the CU constant is used to define the data that will be translated into the
Unicode.
Blank lines
High Level Assembler allows blank lines to be used in the source program. In open code, each blank line is
treated as equivalent to a SPACE 1 statement. In the body of a macro definition, each blank line is treated
as equivalent to an ASPACE 1 statement.
Comment statements
A macro comment statement consists of a period in the begin column, followed by an asterisk, followed by
any character string. An open code comment consists of an asterisk in the begin column followed by any
character string.
High Level Assembler allows open code statements to use the macro comment format, and processes
them like an open code comment statement.
8 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Assembler language syntax extensions
Mixed-case input
High Level Assembler allows mixed-case input statements, and maintains the case when it produces the
assembler listing. You can use the COMPAT and FOLD assembler options to control how the assembler
treats mixed-case input.
Continuation lines
You are allowed as many as nine continuation lines for most ordinary assembler language statements.
However, you are allowed to specify as many continuation lines as you need for the following statements:
• Macro prototype statements
• Macro instruction statements
• The AIF, AGO, SETx, LCLx, and GBLx conditional assembly instructions.
When you specify the FLAG(CONT) assembler option, the assembler issues new warning messages if it
suspects that a continuation statement might be incorrect.
Symbol length
High Level Assembler supports three types of symbols:
Ordinary symbols
The format of an ordinary symbol consists of an alphabetic character, followed by a maximum of 62
alphanumeric characters.
Variable symbols
The format of a variable symbol consists of an ampersand (&) followed by an alphabetic character,
followed by a maximum of 61 alphanumeric characters.
Sequence symbols
The format of a sequence symbol consists of a period (.) followed by an alphabetic character, followed
by a maximum of 61 alphanumeric characters.
External symbols are ordinary symbols used in the name field of START, CSECT, RSECT, COM, DXD, and
ALIAS statements, and in the operand field of ENTRY, EXTRN, WXTRN, and ALIAS statements. Symbols
used in V-type and Q-type address constants are restricted to 8 characters, unless the GOFF option is
specified, which allows symbols up to 63 characters. You can specify an alias string of up to 64 characters
to represent an external symbol.
Underscore
High Level Assembler accepts the underscore character as alphabetic. It is accepted in any position in any
symbol name.
Literals
The following changes have been made to previous restrictions on the use of literals:
• Literals can be used as relocatable terms in expressions. They no longer have to be used as a complete
operand.
• Literals can be used in RX-format instructions in which an index register is used.
10 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Programming sectioning and linking controls
64
64-bit addressing mode - See note below
ANY
The same as ANY31
ANY31
24-bit or 31-bit addressing mode
ANY64
24-bit, 31-bit, or 64-bit addressing mode
Use the RMODE instruction to specify the residence mode to be associated with the control sections in
the object program. The residence modes are:
24
Residence mode of 24. The control section must reside below the 16MB line.
31
Residence mode of either 24 or 31. The control section can reside above or below the 16MB line.
64
Residence mode of 64 - See note below.
ANY
Is understood to mean RMODE(31).
You can specify the AMODE and RMODE instructions anywhere in the assembly source. If the name field
in either instruction is left blank, you must have an unnamed control section in the assembly. These
instructions do not initiate an unnamed control section.
Note: The 64-bit addressing and residence modes are accepted and processed by the assembler.
However, other operating system components and utility programs may not be able to accept and process
information related to these operands.
12 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Addressing extensions
Assembler instructions that can produce independently relocatable items and appear in the ESD are:
• START
• CSECT
• RSECT
• COM
• DXD
• EXTRN
• WXTRN
• ALIAS
• CATTR
• V-type address constant
• DSECT if the DSECT name appears in a Q-type address constant
Many instructions can cause the initiation of an unnamed CSECT if they appear before a START or CSECT
statement. Unnamed CSECTs appear in the external symbol dictionary with a type of PC.
Addressing extensions
High Level Assembler extends the means that you can use to establish addressability of a control section
with two powerful new facilities:
• Labeled USINGs and qualified symbols
• Dependent USINGs
base register specified in the ordinary USING to resolve the address into base-displacement form. You
can specify an optional parameter on the USING instruction. This option sets the range of the USING,
overwriting the default of 4096.
Dependent USINGs
The format of the assembler USING instruction now lets you specify a relocatable expression instead of
a base register in the instruction operand. When you specify a relocatable expression, it is known as the
supporting base address, and the USING is known as a dependent USING. If a valid ordinary symbol, or
a variable symbol that has been assigned a valid ordinary symbol, is specified in the name entry of a
dependent USING instruction, the USING is known as a labeled dependent USING.
A dependent USING depends on the presence of one or more corresponding ordinary or labeled USINGs
to resolve the symbolic expressions in the dependent USING range.
Dependent USINGs provide you with further control over the resolution of symbolic expressions into
base-displacement form. With dependent USINGs you can reduce the number of base registers you need
for addressing by using an existing base register to provide addressability to the symbolic address.
14 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
IBM-supplied default assembler options
the assembler treats further process statements as comment statements. You cannot continue a process
statement from one statement to the next.
When the assembler detects an error in a process statement, it produces one or more warning messages.
If the installation default option PESTOP is set, then the assembler stops after it finishes processing any
process statements. If the keyword OVERRIDE is added to a process statement, then the nominated
assembler option is not overridden by specifications at a lower level of precedence. If the specified option
is not accepted on a process statement and a different value has been supplied as an invocation or input
file option, the option is not accepted and a warning message is issued.
The ACONTROL instruction lets you specify selected assembler options anywhere through the assembler
source program, rather than at the beginning of the source (as provided by *PROCESS statements).
The assembler recognizes the assembler options in the following order of precedence (highest to lowest):
1. Fixed installation defaults
2. Options on *PROCESS OVERRIDE statements
3. Options in the External File (z/OS and CMS) or Library member (z/VSE)
4. Options on the PARM parameter of the JCL EXEC statement under z/OS and z/VSE or the High Level
Assembler command under CMS
5. Options on the JCL OPTION statement (z/VSE only)
6. Options specified via the STDOPT (Standard JCL Options) command (z/VSE)
7. Options on *PROCESS statements
8. Non-fixed installation defaults
Options specified by the ACONTROL instruction take effect when the specifying ACONTROL instruction
is encountered during the assembly. An option specified by an ACONTROL instruction may override an
option specified at the start of the assembly.
The assembler lists the options specified in process statements in the High Level Assembler Option
Summary section of the assembler listing.
Process statements are also shown as comment lines in the source and object section of the assembler
listing.
See Appendix A, “Assembler options,” on page 63 for a list of all assembler options.
16 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
The macro language
The macro and conditional assembly language supported by High Level Assembler provides a number
of functional extensions to the macro languages supported by Assembler H Version 2 and DOS/VSE
Assembler. This chapter provides an overview of the language, and describes the major extensions.
Redefining macros
You can redefine a macro definition at any point in your source module. When a macro is redefined, the
new definition is effective for all subsequent macro instructions that call it.
You can save the function of the original macro definition by using the OPSYN instruction before you
redefine the macro. If you want to reestablish the initial function of the operation code, you can include
another OPSYN instruction to redefine it. The following example shows this:
MACRO
MAC1 , The symbol MAC1 is assigned as the name
of this macro definition.
⋮
MEND
⋮
MAC2 OPSYN MAC1 MAC2 is assigned as an alias for MAC1.
MACRO
MAC1 , MAC1 is assigned as the name of this new macro definition.
⋮
MEND
⋮
MAC1 OPSYN MAC2 MAC1 is assigned to the first definition.
The second definition is lost.
You can issue a conditional assembly branch (AGO or AIF) to a point before the initial definition of the
macro and reestablish a previous source macro definition. Then that definition will be edited and effective
for subsequent macro instructions calling it.
See “Redefining conditional assembly instructions” on page 29.
18 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Macro language extensions
the outer macro is not called, or if the inner macro is not encountered in the generation of the outer
macro, the inner macro definition is never edited. Figure 2 on page 19 shows the editing of inner macro
definitions.
First MAC1 is edited, and MAC2 and MAC3 are not. When MAC1 is called, MAC2 is edited (unless its definition
is bypassed by an AIF or AGO branch); when MAC2 is called, MAC3 is edited. No macro can be called until
it has been edited.
There is no limit to the number of nestings allowed for inner macro definitions.
MAC1 (A,B,(W,X,(R,S,T),Y,Z),C,D)
MAC2 &KEY=(1,12,(8,4),64)
The depth of this nesting is limited only by the constraint that the total length of an individual operand
cannot exceed 1024 characters.
To access individual elements at any level of a multilevel operand, you use additional subscripts after
&SYSLIST or the symbolic parameter name. Table 3 on page 20 shows the value of selected elements if
&P is the first positional parameter and the value assigned to it in a macro instruction is (A,(B,(C)),D).
Sublists may also be assigned to SETC symbols and used in macro instruction operands. However, if
you specify the COMPAT(SYSLIST) assembler option, the assembler treats sublists in SETC symbols as
character strings, not sublists, when used in the operand of macro instructions.
20 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Macro language extensions
Implied input:
Parameter values and global SET symbol values that are passed to the macro
Implied output:
Generated statements passed to the assembler for later processing. See also the AINSERT operation
below.
Direct input:
AREAD
Direct output:
MNOTE for printed messages; PUNCH for punched records
Conditional I/O:
SET symbol values provided by external functions, using the SETAF and SETCF conditional assembly
instructions.
For example, you can use AREAD and PUNCH to write simple conversion programs. The following macro
interchanges the left and right halves of records placed immediately after a macro instruction calling it.
End-of-input is indicated with the word FINISHED in the first columns of the last record in the input to the
macro.
MACRO
SWAP
.loop ANOP
&CARD AREAD
AIF ('&CARD'(1,8) EQ 'FINISHED').MEND
&CARD SETC '&CARD'(41,40).'&CARD'(1,40)
PUNCH '&CARD'
AGO .LOOP
.MEND MEND
22 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Conditional assembly language extensions
• You can include any instruction, except ICTL and *PROCESS statements, in a macro definition.
• You no longer need to precede the SET symbol name with an ampersand in LCLx and GBLx instructions,
except for created SET symbols.
• The SETA and SETB instructions now allow you to use predefined absolute symbols in arithmetic
expressions.
Built-in functions
The assembler provides you with many built-in functions that you can use in SETx instructions to perform
logical, arithmetic, and character string operations on SETA, SETB and SETC expressions.
For a complete list, refer to the table "Summary of Built-In Functions and Operators" in the HLASM
Language Reference.
AIF instruction
The AIF instruction can include a string of logical expressions and related sequence symbols that is
equivalent to multiple AIF instructions. This form of the AIF instruction is described as an extended AIF
instruction. There is no limit to the number of expressions and symbols that you can use in an extended
AIF instruction.
AGO instruction
An AGO instruction lets you make branches according to the value of an arithmetic expression in the
operand. This form of the AGO instruction is described as a computed AGO instruction.
LCLA &J(50)
24 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Conditional assembly language extensions
&A3 SETA 5
You can use created SET symbols wherever ordinary SET symbols are permitted, including declarations;
they can even be nested in other created SET symbols.
The created SET symbol can be thought of as a form of indirect addressing. With nested created SET
symbols, you can use such indirect addressing to any level.
Created SET symbols can also offer an "associative memory" facility. For example, a symbol table of
numeric attributes can be referenced by an expression of the form &(&SYM)(&I) to yield the I-th
element of the symbol substituted for &SYM. Note that the value of &SYM need not be the name of a valid
symbol; thus created SET symbols may have arbitrary names.
Created SET symbols also allow you to achieve some of the effect of multidimensional arrays by creating
a separate named item for each element of the array. For example, a three-dimensional array of the form
&X(&I,&J,&K) can be addressed as &(X&I.$&J.$&K). Then &X(2,3,4) is represented as a reference
to the symbol &X2$3$4.
Note that what is being created here is a SET symbol. Both creation and recognition occur at macro-
generation time. In contrast, the names of parameters are recognized and encoded (fixed) at macro-edit
time. If a created SET symbol name happens to coincide with a parameter name, the coincidence is
ignored and there is no interaction between the two.
where:
&SYM
is a dimensioned SET symbol
exp
is a SETA arithmetic expression
SETx
is SETA, SETB, or SETC
An operand can be omitted by specifying two commas without intervening blanks. Whenever an operand
is omitted, the corresponding element of the dimensioned variable SET symbol (&SYM) is left unchanged.
BEGIN CSECT
⋮
CSECTLEN EQU *-BEGIN
&CSCTLEN SETA CSECTLEN
Similarly, in addition to character expressions and type attribute references, predefined symbols that have
absolute values can be used in SETC statements. For example, the following code could be used to assign
a string of fifty spaces to a SETC symbol:
FIFTY EQU 50
⋮
&SPACES SETC (FIFTY)' '
26 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Conditional assembly language extensions
Attribute references
Data such as instructions, constants, and areas have characteristics called data attributes. The assembler
assigns attribute values to the ordinary symbols and variable symbols that represent the data.
You can determine up to eight attributes of symbols you define in your program by means of an attribute
reference. By testing attributes in conditional assembly instructions, you can control the conditional
assembly logic.
Attributes of symbols produced by macro generation or substitution in open code are available
immediately after the referenced statement is generated.
Table 4 on page 27 shows the data attributes.
Attribute references to the count (K') and number (N') attributes, however, can only be used in conditional
assembly instructions.
28 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Conditional assembly language extensions
&A(1) SETA 0
&A(2) SETA 0
&A(3) SETA &A(2)
&A(5) SETA 5
&A(10) SETA 0
In this example, AIF and MVC instructions are used in a macro definition. AIF is a conditional assembly
instruction, and MVC is a machine instruction. OPSYN statements assign the properties of AGO to AIF and
assign the properties of MVI to MVC. In subsequent calls of the macro MACRDEF, AIF is still defined, and
used as an AIF operation, but the generated MVC is treated as an MVI operation. In open code following
the macro call, the operations of both instructions are derived from their new definitions assigned by the
OPSYN statements. If the macro is redefined (by another macro definition), the new definitions of AIF and
MVC (that is, AGO and MVI) are used for further generations.
This description does not apply to nested macro definitions because the assembler does not edit inner
macro definitions until it encounters them during the generation of its outer macro. An OPSYN statement
placed before the outer macro instruction can affect conditional assembly statements in the inner macro
definition.
30 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Conditional assembly language extensions
&SYSM_HSEV:
Provides the highest MNOTE severity code for the assembly so far.
&SYSM_SEV:
Provides the highest MNOTE severity code for the macro most recently called from this macro or open
code.
&SYSOPT_XOBJECT:
Determines if the XOBJECT assembler option was specified.
&SYSNDX and &SYSNEST:
All previous assemblers have supported the &SYSNDX variable symbol, which is incremented by one
for every macro invocation in the program. This permits macros to generate unique ordinary symbols
if they are needed as local labels. Occasionally, in recursively nested macro calls, the value of the
&SYSNDX variable was used to determine either the depth of nesting, or to determine when control
had returned to a particular level.
Alternatively, the programmer could define a global variable symbol, and in each macro insert
statements to increment that variable on entry and decrement it on exit. This technique is both
cumbersome (because it requires extra coding in every macro) and unreliable (because not every
macro called in a program is likely to be under the programmer's control).
High Level Assembler provides the &SYSNEST variable to keep track of the level of macro-call
nesting in the program. The value of &SYSNEST is incremented globally on each macro entry, and
decremented on each exit.
32 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
User exit types
The High Level Assembler EXIT option lets you provide an exit module that can replace or complement
the assembler's data set input/output processing. This chapter describes the exits available to you and
how to use them.
Statistics
The assembler writes the exit usage statistics to the Diagnostic Cross Reference and Assembler Summary
section of the assembler listing.
Disabling an exit
A return code of 16 allows an EXIT to disable itself. The EXIT is not called again during this assembly, or
any following assemblies if the BATCH option is being used.
34 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Sample exits provided with High Level Assembler (z/OS and CMS)
Sample exits provided with High Level Assembler (z/OS and CMS)
The following sample exits are provided with High Level Assembler:
ADATA exit:
The ADATA exit handles the details of interfaces to the assembler. It provides ADATA records to a
number of filter routines, and also to exits which control the ADATA record output, or reformat ADATA
records from new to old format.
The filter routines inspect the records to extract the information they require. This lets you add or
modify a filter routine without impacting either the exit or the other filter routines.
The design of the exit:
• Supports multiple simultaneous filter routines.
• Simplifies the ADATA-record interface for each filter, because you do not need to be concerned
about the complex details of interacting directly with the assembler.
• Supports filter routines written in high-level languages.
• Supports an exit to control the ADATA record output.
• Supports an exit to reformat ADATA records from new to old format.
There are three components that make up the functional ADATA filter routine:
1. The exit, ASMAXADT, which the assembler invokes.
2. A table of filter-routine names, contained in a Filter Management Table (FMT), module ASMAXFMT.
The exit routine loads the FMT.
3. The filter routines. The exit loads these as directed by the FMT.
The functional ADATA exit, ASMAXADC, controls ADATA record output. ASMAXADC uses parameters
specified on the assembler EXIT option to determine if it, or the assembler, will perform output
processing for the ADATA records, and which record types are to be kept or discarded.
The functional exit, ASMAXADR, reformats ADATA records from the High Level Assembler Release 5
format, back to the Release 4 format. ASMAXADR uses parameters specified on the assembler EXIT
option to determine which ADATA types are to be reformatted.
No exit modules are provided with High Level Assembler. "" in the HLASM Programmer's Guide
describes the exit and the input format of the exit routines.
LISTING exit:
Use the LISTING exit to suppress the High Level Assembler Options Summary section, or the
Diagnostic Cross Reference and Assembler Summary section, or both from the assembler listing. The
exit can also direct the assembler to print the options summary at the end of the assembler listing.
You specify keywords as suboptions of the EXIT option to control how the assembler processes these
sections of the listing.
The LISTING exit is called ASMAXPRT.
"Sample LISTING user exit (z/OS and CMS)" in the HLASM Programmer's Guide describes the exit and
the keywords you can use to select the print options.
SOURCE exit:
Use the SOURCE exit to read variable-length source data sets. Each record that is read is passed to
the assembler as an 80-byte source statement. If any record in the input data set is longer than 71
characters the remaining part of the record is converted into continuation records.
The exit also reads a data set with a fixed record length of 80 bytes.
The SOURCE exit is called ASMAXINV.
"Sample SOURCE user exit (z/OS and CMS)" in the HLASM Programmer's Guide describes this exit.
36 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Assembler listings
High Level Assembler has many assembler listing and diagnostic features to aid program development
and to simplify the location and analysis of program errors. You can also produce terminal output to assist
in diagnosing assembly errors. This chapter describes these features.
Assembler listings
High Level Assembler produces a comprehensive assembler listing that provides information about a
program and its assembly. Each section of the assembler listing is clear and easily readable. The following
assembler options are used to control the format and which sections of the listing to produce:
ASA
(z/OS and CMS) Allows you to use American National Standard printer control characters, instead of
machine printer control characters.
DXREF
Produces the DSECT Cross Reference section.
ESD
Produces the External Symbol Dictionary section.
EXIT(PRTEXIT(mod3))
Supplies a listing exit to replace or complement the assembler's listing output processing.
FOLD
Instructs the assembler to print the assembler listing in uppercase characters, except for quoted
strings and comments.
LANGUAGE
Produces error diagnostic messages in the following languages:
• English mixed case (EN)
• English uppercase (UE)
• German (DE)
• Japanese (JP)
• Spanish (ES)
When you select either of the English languages, the assembler listing headings are produced in the
same case as the diagnostic messages.
When you select either the German language or the Spanish language, the assembler listing headings
are produced in mixed case English.
When you select the Japanese language, the assembler listing headings are produced in uppercase
English.
The assembler uses the installation default language for messages produced in CMS by the High Level
Assembler command.
LINECOUNT
Specifies how many lines should be printed on each page, including the title and heading lines.
LIST
Controls the format of the Source and Object section of the listing. NOLIST suppresses the entire
listing.
MXREF
Produces one, or both, of the Macro and Copy Code Source Summary and Macro and Copy Code Cross
Reference sections.
PCONTROL
Controls what statements are printed in the listing, and overrides some PRINT instructions.
RLD
Produces the Relocation Dictionary section.
RXREF
Produces the General Purpose Register Cross Reference section.
USING(MAP)
Produces the Using Map section.
XREF
Produces one, or both, of the Ordinary Symbol and Literal Cross Reference and the Unreferenced
Symbols Defined in CSECTs sections.
Option summary
High Level Assembler provides a summary of the options current for the assembly, including:
• A list of the overriding parameters specified in the external file or library member (z/VSE only)
• A list of the overriding parameters specified when the assembler was called
• The options specified on *PROCESS statements
• In-line error diagnostic messages for any overriding parameters and *PROCESS statements in error
You cannot suppress the option summary unless you suppress the entire listing, or you supply a user exit
to control which lines are printed.
On z/OS and CMS, High Level Assembler provides a sample LISTING exit that allows you to suppress the
option summary or print it at the end of the listing. See the description of the sample LISTING exit.
Figure 4 on page 40 shows an example of the High Level Assembler Option Summary. The example
includes assembler options that have been specified in the external file or library member, the invocation
parameters and in *PROCESS statements. It also shows the *PROCESS statements in the Source and
Object section of the listing.
38 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Assembler listings
3
** ASMA400W Error in invocation parameter - SIZE(4MEG)
** ASMA438N Attempt to override ASMAOPT parameter. Option NORXREF ignored.
** ASMA425N Option conflict in invocation parameters. NOADATA overrides an earlier setting.
** ASMA423N Option ADATA, in a *PROCESS OVERRIDE statement conflicts with invocation or default option. Option is not
permitted in a
*PROCESS statement and has been ignored.
** ASMA422N Option LANGUAGE(ue) is not valid in a *PROCESS statement.
** ASMA437N Attempt to override invocation parameter in a *PROCESS statement. Suboption FULL of XREF option ignored.
4
3 Invocation Parms NOADATA
5 *PROCESS ALIGN
NOASA
BATCH
CODEPAGE(047C)
NOCOMPAT
5 *PROCESS NODBCS
NODECK
DXREF
ESD
NOEXIT
FAIL(NOMSG,NOMNOTE,MAXERRS(500))
5 *PROCESS FLAG(0,ALIGN,CONT,EXLITW,NOIMPLEN,NOPAGE0,PUSH,RECORD,NOSUBSTR,USING0)
5 *PROCESS NOFOLD
3 Invocation Parms GOFF(NOADATA)
NOINFO
3 Invocation Parms LANGUAGE(EN)
5 *PROCESS NOLIBMAC
LINECOUNT(60)
2 ASMAOPT LIST(MAX)
MACHINE(,NOLIST)
1 *PROCESS OVERRIDE MXREF(FULL)
3 Invocation Parms NOOBJECT
OPTABLE(UNI,NOLIST)
NOPCONTROL
NOPESTOP
NOPROFILE
5 *PROCESS NORA2
NORENT
RLD
2 ASMAOPT RXREF
SECTALGN(8)
5
No Overriding DD Names
External Symbol Dictionary Page 3
Symbol Type Id Address Length Owner Id Flags Alias-of HLASM R6.0 2015/02/20 18.42
SAMP01 SD 00000001
B_IDRL ED 00000002 00000001
B_PRV ED 00000003 00000001
B_TEXT ED 00000004 00000000 0000006C 00000001 00
SAMP01 LD 00000005 00000000 00000004 00
ENTRY1 LD 00000006 00000000 00000004 00
DateRcvd ER 00000007 00000001 RCNVDATE
RCNVTIME ER 00000008 00000001
Page 4
Active Usings: None
Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2015/02/20 18.42
6
1 *PROCESS OVERRIDE(ADATA,MXREF(full))
2 *PROCESS ALIGN
3 *PROCESS noDBCS
4 *PROCESS MXREF(FULL),nolibmac
5 *PROCESS FLAG(0)
6 *PROCESS noFOLD,LANGUAGE(ue)
7 *PROCESS NORA2
8 *PROCESS NODBCS
9 *PROCESS XREF(FULL)
Sample Program - HLASM Page 5
Active Usings: None
Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2015/02/20 18.42
11 ***********************************************************************
12 * *
13 * Licensed Materials - Property of IBM *
14 * *
15 * 5696-234 *
16 * *
17 * Copyright IBM Corporation 2008, 2015 All Rights Reserved. *
18 * *
19 * US Government Users Restricted Rights - Use, duplication *
20 * or disclosure restricted by GSA ADP Schedule Contract *
21 * with IBM Corp. *
22 * *
23 ***********************************************************************
00000000 00000000 0000006C 24 Samp01 Csect
25 ASMDREG include standard registers
26+ PUSH
PRINT 01-ASMDREG
126+ POP
PRINT 01-ASMDREG
127 Entry1 MACSAMP Parm1=YES
00000000 18CF 128+Entry1 LR
12,15 01-MACSAMP
129+ ENTRY
Entry1 01-MACSAMP
R:C 00000000 130+ USING Entry1,12 Ordinary
Using 01-MACSAMP
40 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Assembler listings
ASMA438N -
The option RXREF is specified in the ASMAOPT file and the conflicting option NORXREF is
specified as an invocation parameter. The ASMAOPT options have precedence over the invocation
parameters and the NORXREF option is ignored.
ASMA425N -
The ADATA option specified as an invocation parameter overrides the option NOADATA which was
also specified as an invocation parameter. When conflicting options are received from the same
source, the last occurrence takes precedence.
ASMA423N -
The option ADATA has been specified in a *PROCESS statement with the OVERRIDE option. The
option cannot be set by a *PROCESS statement, and the option conflicts with an invocation
or default option. This message is printed when an option that cannot be set by a *PROCESS
statement is included in a *PROCESS OVERRIDE statement and the option conflicts with an
invocation or default option. If the option does not conflict with the invocation or default option no
message is printed. (For more information on *PROCESS statement, refer to "*PROCESS statement
options" in the HLASM Programmer's Guide.)
ASMA422N -
The option LANGUAGE is not permitted in a *PROCESS statement.
ASMA437N -
The option XREF(FULL) which is specified in the last *PROCESS statement conflicts with the option
NORXREF which is specified as an invocation parameter. The option XREF(FULL) is ignored.
4
Each option may be preceded by a flag that indicates the option’s source. If the flag is omitted, the
option came from the installation defaults.
5
On z/OS and CMS, if the assembler has been called by a program and any standard (default) DDnames
have been overridden, both the default DDnames and the overriding DDnames are listed. Otherwise,
this statement appears:
No Overriding DD
Names
6
The *PROCESS statements are written as comment statements in the Source and Object section of
the listing.
1
Shows the name of every external dummy section, control section, entry point, external symbol, and
class.
2
Indicates whether the symbol is the name of a label definition, external reference, unnamed
control section definition, common control section definition, external dummy section, weak external
reference, or external definition.
3
Shows the length of the control section.
4
When you define a symbol in an ALIAS instruction, this field shows the external symbol name of which
the symbol is an alias.
You can suppress this section of the listing by specifying the NOESD assembler option.
42 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Assembler listings
1
Loc Object Code Addr1 Addr2 Stmt Source Statement
000000 00000 0006C 24 Samp01 Csect
25 ASMDREG include standard registers
26+ PUSH PRINT 01-ASMDR
126+ POP PRINT 01-ASMDR
127 Entry1 MACSAMP Parm1=YES
000000 18CF 128+Entry1 LR 12,15 01-MACSA
129+ ENTRY Entry1 01-MACSA
2
R:C 00000 130+ USING Entry1,12 Ordinary Using 01-MACSA
000002 0000 0000 00000 131+ LA Savearea,10 01-MACSA
** ASMA044E Undefined symbol - Savearea
** ASMA029E Incorrect register specification - Savearea
** ASMA435I Record 10 in SMORSA.BOOK.SAMPLE.MACS(MACSAMP) on volume: 37P004
000006 50D0 A004 00004 132+ ST 13,4(,10) 01-MACSA
00000A 50A0 D008 00008 133+ ST 10,8(,13) 01-MACSA
00000E 18DA 134+ LR 13,10 01-MACSA
3
R:A35 00010 135+ USING *,10,3,5 Ordinary Using,Multiple Base 01-MACSA
** ASMA303W Multiple address resolutions may result from this USING and the USING on statement number 130
** ASMA435I Record 14 in SMORSA.BOOK.SAMPLE.MACS(MACSAMP) on volume: 37P004
136+ DROP 10,3,5 Drop Multiple Registers 01-MACSA
000010 D4C1C3E2C1D4D7C4 137+Entry1Date DC CL16'MACSAMPDATE' 01-MACSA
138 COPY memsamp
139=* Start of copybook - MEMSAMP
140=* 5696-234
141=* Copyright IBM Corporation 2008, 2015 All Rights Reserved.
142=* This copybook member is incled by sample HLASM programs
000020 C481A385D6958540 143=DateOne DC CL16'DateOne Field'
144=* End of copybook - MEMSAMP
145 push using
R:2 00000 146 PlistIn Using Plist,2 Establish Plist addressability
R:3 00000 147 PlistOut Using Plist,3
000030 1851 148 ?LoadMe LR R5,R1 Save Plist pointer
** ASMA147E Symbol too long, or first character not a letter - ?LoadMe
** ASMA435I Record 31 in SMORSA.BOOK.SAMPLE.ASM(SAMP01) on volume: 37P003
R:9 00000 149 using WorkingStorage,R9
000032 5820 5000 00000 150 L R2,0(,R5) R2 = address of request list
C 050 00000 00050 151 STAT Using STATDS,StaticData
000036 152 Label1 dc 0h Label1
000036 5810 C060 00060 153 L R1,=f'1' load
00003A 5010 9008 00008 154 st r1,WSNumber and save
00003E 5870 C064 00064 155 l R7,=V(RCNVDATE)
000042 5880 C068 00068 156 l r8,=V(RCNVTIME)
157 RETURN
Sample Program - HLASM Page 15
Active Usings (1):WorkingStorage,R9 Entry1,R12 PlistIn.Plist,R2 PlistOut.Plist,R3 STAT.STATDS(X'FB0'),R12+X'50'
Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2015/04/14 08.50
000046 07FE 159+ BR 14 RETURN 01-RETUR
000048 00000036 160 pLabel1 dc a(Label1) address of Label1
161 RCNVDATE ALIAS c'DateRcvd'
000050 162 StaticData ds 0D'0'
000050 E2E3C1E3C9C3C440 163 StatDate dc CL16'STATICD'
000000 00000 00018 164 STATDS dsect
000000 165 SDATA ds CL16' '
000010 00000014 166 pNumDays DC A(NumDays)
000014 00000064 167 NumDays DC A(100)
000000 00000 00014 168 Plist DSECT SAMP01 input parameter list
000000 169 inputN ds F'0' input identifier
000004 170 inputD ds cl16' ' input description
000000 00000 0001C 171 WorkingStorage DSECT program w/s
000000 172 WSID ds cl8'WORKAREA' identifier
000008 173 WSNumber ds f
00000C 174 WSDate ds cl16' ' WS Date
175 End
** ASMA138W Non-empty PUSH USING stack
** ASMA435I Record 56 in SMORSA.BOOK.SAMPLE.ASM(SAMP01) on volume: 37P003
000060 00000001 176 =f'1'
000064 00000000 177 =V(RCNVDATE)
000068 00000000 178 =V(RCNVTIME)
1
The assembled address of the object code occupies six characters.
2
The Addr1 and Addr2 columns show six-character operand addresses.
3
The first five characters of the macro name are shown in the identification-sequence field.
1
The assembled address of the object code occupies 6 characters.
2
The Addr1 and Addr2 columns show 6-character operand addresses.
3
The first five characters of the macro name are shown in the identification-sequence field.
Relocation dictionary
Figure 8 on page 44 shows an example of the Relocation Dictionary section of the listing, which contains
information passed to the linkage editor, or z/OS Program Management Binder, in the object module. The
entries describe the address constants in the assembled program that are affected by relocation.
1
Indicates the ESD ID assigned to the ESD entry for the control section in which the address constant is
defined.
44 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Assembler listings
2
Indicates the ESD ID assigned to the ESD entry for the control section to which this address constant
refers.
3
Shows the assembled address of the address constant.
4
Indicates the type and length of the address constant. The type may be one of the following:
A
A-type address constant
V
V-type address constant
Q
Q-type address constant
J
J-type address constant or CXD instruction
R
R-type address constant
RI
Relative Immediate offset
5
Indicates the relocation action. The action may be one of the following:
+
the relocation operand is added to the address constant
-
the relocation operand is subtracted from the address constant
ST
the relocation operand overwrites the address constant
You can suppress this section of the listing by specifying the NORLD assembler option.
1
Each symbol or literal. Symbols are shown in the form in which they are defined, either in the
name entry of a machine or assembler instruction, or in the operand of an EXTRN or WXTRN
instruction. Symbols defined using mixed-case letters are shown in mixed-case letters, unless the
FOLD assembler option was specified.
2
The byte length of the field represented by the symbol, in decimal notation.
3
Shows the hexadecimal address that the symbol or literal represents, or the hexadecimal value to
which the symbol is equated.
4
Shows the ESD ID assigned to the ESD entry for the control section in which the symbol or literal is
defined.
5
Column title R is an abbreviation for “Relocatability Type”.
6
Indicates the type attribute of the symbol or literal.
7
Indicates the assembler type of the symbol.
7
Indicates the program type of the symbol.
9
Indicates the number of the statement in which the symbol or literal was defined.
10
Shows the statement numbers of the statements in which the symbol or literal appears as an operand.
Additional indicators are suffixed to statement numbers as follows:
B
The statement contains a branch instruction, and the symbol is used as the branch-target
operand.
D
The statement contains a DROP instruction, and the symbol is used in the instruction operand.
M
The statement caused the field named by the symbol to be modified.
46 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Assembler listings
U
The statement contains a USING instruction, and the symbol is used in one of the instruction
operands.
X
The statement contains an EX machine instruction and the symbol, in the second operand, is the
symbolic address of the target instruction.
You can suppress this section of the listing by specifying the NOXREF assembler option. You can also
suppress all symbols not referenced in the assembly by specifying the XREF(SHORT) assembler option.
1
Shows the statement number that defines the symbol.
2
Shows the symbol name.
1
Lists the sixteen general registers (0–15).
2
The statements within the program that reference the register. Additional indicators are suffixed to
the statement numbers as follows:
(blank)
Referenced
M
Modified
B
Used as a branch address
U
Used in USING statement
D
Used in DROP statement
N
Used as an index register
3
The assembler indicates when it has not detected any references to a register.
You can produce this section of the listing by specifying the RXREF
Note: The implicit use of a register to resolve a symbol to a base and displacement does not create a
reference in the General Purpose Register Cross Reference.
1
Shows the concatenation value representing the source of the macros and copy code members. This
number is not shown if the source is PRIMARY INPUT. The number is prefixed with L which indicates
Library. The concatenation value is cross referenced in the Macro and Copy Code Cross Reference
section, and the Diagnostic Cross Reference and Assembler Summary section.
2
Shows the name of each library from which the assembler read a macro or a copy code member. The
term PRIMARY INPUT is used for in-line macros.
3
Shows the volume serial number of the volume on which the library resides.
4
Shows the names of the macros or copy members.
48 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Assembler listings
You can suppress this section of the listing by specifying the NOMXREF assembler option, or by specifying
the MXREF(XREF) assembler option.
1
Shows the macro or copy code member name.
2
Shows the concatenation value representing the source of the macro or copy code member. This
value is cross-referenced in the Macro and Copy Code Source Summary section, and under Datasets
Allocated for this Assembly in the Diagnostic Cross Reference and Assembler Summary section.
3
Shows the name of the macro that calls this macro or copy code member, or PRIMARY INPUT,
meaning that the macro or copy code member was called directly from the primary input source.
4
Shows one of the following:
• The statement number for macros defined in the primary input file
• A dash (–) for macros or copy code members read from a library.
5
Shows the statement number that contains the macro call or COPY instruction.
6
Shows the statement reference number with a suffix of C, which indicates that the member is
specified on a COPY instruction.
Figure 14 on page 49 shows an example of the Macro and Copy Code Cross Reference section when you
specify the LIBMAC assembler option.
Figure 14. Macro and copy code cross reference - with LIBMAC option
1
The "X" flag indicates the macro was read from a macro library and imbedded in the input source
program immediately preceding the invocation of that macro. For example, in Figure 14 on page 49,
you can see that MACSAMP was called by the PRIMARY INPUT stream from LIBRARY L1, at statement
number 345, after being embedded in the input stream at statement number 333.
You can suppress this section of the listing by specifying the NOMXREF assembler option, or the
MXREF(SOURCE) assembler option.
DSECT cross-reference
Figure 15 on page 50 shows an example of the DSECT Cross Reference section of the listing. This section
shows the names of all internal and external dummy sections defined in the program, and the statement
number where the definition of the dummy section begins.
1
Shows the name of each dummy section defined in your program.
2
Shows, in hexadecimal notation, the assembled byte length of the dummy section.
3
Shows the ESD ID assigned to the ESD entry for external dummy sections. For internal dummy
sections it shows the control section ID assigned to the dummy control section. You can use this field
in conjunction with the ID field in the Ordinary Symbol and Literal Cross Reference section to relate
symbols to a specific DSECT.
4
Shows the number of the statement where the definition of the dummy section begins.
You can suppress this section of the listing by specifying the NODXREF assembler option.
USING map
Figure 16 on page 50 shows an example of the Using Map section of the listing. It shows a summary of
the USING, DROP, PUSH USING, and POP USING instructions used in your program.
1
Shows the number of the statement that contains the USING, DROP, PUSH USING, or POP USING
instruction.
2
Shows the value of the location counter when the USING, DROP, PUSH USING, or POP USING
statement was encountered.
50 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Assembler listings
3
Shows the value of the ESDID of the current section when the USING, DROP, PUSH USING, or POP
USING statement was encountered.
4
Shows whether the instruction was a USING, DROP, PUSH, or POP instruction.
5
For USING instructions, this field indicates whether the USING is an ordinary USING, a labeled USING,
a dependent USING, or a labeled dependent USING.
6
For ordinary and labeled USING instructions, this field indicates the base address that is specified in
the USING. For dependent USING instructions, this field is prefixed with a plus sign (+) and indicates
the hexadecimal offset of the address of the second operand from the base address that is specified
in the corresponding ordinary USING.
For a USING statement which specified a lower limit, an extra line is added where the field below the
base address shows the lower limit relative to the location addressed by the first base register.
7
Shows the range of the USING. For more information, see "USING instruction" in the HLASM Language
Reference.
For a USING statement which specified an upper limit, an extra line is added where the field below the
range value shows the upper limit relative to the location addressed by the first base register.
8
For USING instructions, this field indicates the ESDID of the section that is specified on the USING
statement.
9
For ordinary and labeled USING instructions, and for DROP instructions, this field indicates the
register or registers specified in the instruction. There is a separate line in the USING map for each
register that is specified in the instruction. If the DROP instruction has no operands, all registers and
labels are dropped and this field contains two asterisks (**).
For dependent USING instructions, the field indicates the register for the corresponding ordinary
USING instruction that is used to resolve the address. If the corresponding ordinary USING instruction
has multiple registers that are specified, only the first register that is used to resolve the address is
displayed.
10
For each base register specified in an ordinary USING instruction or a labeled USING instruction, this
field shows the maximum displacement that is calculated by the assembler when resolving symbolic
addresses into base-displacement form by using that base register.
11
For ordinary and labeled USING instructions, this field indicates the statement number of the last
statement that used the specified base register to resolve an address. Where an ordinary USING
instruction is used to resolve a dependent USING, the statement number printed reflects the use of
the register to resolve the dependent USING.
12
For USING and DROP instructions, this field lists the text that is specified on the USING or DROP
instruction, which is truncated if necessary. For labeled USING instructions, the text is preceded by
the label specified for the USING.
If a DROP instruction drops more than one register or labeled USING, the text for each register or
labeled USING is printed on the line corresponding to the register that is dropped.
You can suppress this section of the listing by specifying the USING(NOMAP) assembler option, or the
NOUSING assembler option.
1
The statement number of a statement that causes an error message, or contains an MNOTE
instruction, appears in this list. Flagged statements are shown in either of two formats. When
assembler option FLAG(NORECORD) is specified, only the statement number is shown. When
assembler option FLAG(RECORD) is specified, the format is: statement(dsnum:member,record), where:
statement
is the sequential, absolute statement number as shown in the source and object section of the
listing.
dsnum
is the value applied to the source or library dataset, showing the type of input file and the
concatenation number. "P" indicates the statement was read from the primary input source, and
"L" indicates the statement was read from a library. This value is cross-referenced to the input
datasets listed under the sub-heading "Datasets Allocated for this Assembly" 4 .
member
is the name of the macro from which the statement was read. On z/OS, this may also be the name
of a partitioned data set member that is included in the primary input (SYSIN) concatenation.
record
is the relative record number from the start of the dataset or member which contains the flagged
statement.
2
The number of statements flagged, and the highest non-zero severity code of all messages issued.
3
Provides information about the system on which the assembly was run.
4
On z/OS and CMS, all data sets used in the assembly are listed by their standard DDname. The data
set information includes the data set name, and the serial number of the volume containing the data
set. On z/OS, the data set information may also include the name of a member of a partitioned data
set (PDS).
52 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Macro-generated statements
If a user exit provides the data set information, then the data set name is the value extracted from the
Exit-Specific Information Block described in "" in the HLASM Programmer's Guide.
The "Con" column shows the concatenation value assigned for each input data set. You use this value
to cross-reference flagged statements, and macros and copy code members listed in the Macro and
Copy Code Cross Reference section.
5
Output data sets do not have a concatenation value.
6
The usage statistics of external functions for the assembly. The following statistics are reported:
SETAF function calls
The number of times the function was called from a SETAF assembler instruction.
SETCF function calls
The number of times the function was called from a SETCF assembler instruction.
Messages issued
The number of times the function requested that a message be issued.
Messages severity
The maximum severity for the messages issued by this function.
Function name
The name of the external function module.
10
On z/VSE, the assembly start and stop times in hours, minutes and seconds.
On z/OS and CMS, the assembly start and stop times in hours, minutes and seconds and the
approximate amount of processor time used for the assembly, in hours, minutes, and seconds to
four decimal places.
Macro-generated statements
A macro-generated statement is a statement generated by the assembler after a macro call. During
macro generation, the assembler copies any model statements processed in the macro definition into the
input stream for further processing. Model statements are statements from which assembler language
statements are generated during conditional assembly. You can use variable symbols as points of
substitution in a model statement to vary the contents or format of a generated statement.
Open code: Model statements can also be included in open code by using variable symbols as points of
substitution.
Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2008/07/11 17.48
1 macro
2 macgen
3 &A SETC 'abcdefghijklmnopq'
4 &A LA 1,4 Comment
5 &B SETC 'abc'
6 &B LA 1,4 Comment
7 mend
8 macgen
000000 4110 0004 00004 9+abcdefghijklmnopq LA 1,4 Comment 01-00004
000004 4110 0004 00004 10+abc LA 1,4 Comment 01-00006
11 end
54 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Diagnostic messages in macro assembly
When the assembler forces alignment of an instruction or data constant, it generates zeros in the object
code and prints the generated object code in the listing. When you use the PRINT NOGEN instruction the
generated zeros are not printed.
Note: If the next line to print after macro call or model statement is a diagnostic message, the object code
or generated data is not shown in the assembler listing.
Figure 19 on page 55 shows the object code of the first statement generated for the wto macro
instruction when PRINT NOGEN is effective. The data constant (DC) for jump causes 7 bytes of binary
zeroes to be generated before the DC to align the constant on a double word. With PRINT NOGEN
effective, these are not shown, but the location counter accounts for them.
Loc Object Code Addr1 Addr2 Stmt Source Statement HLASM R6.0 2008/07/11 17.48
⋮
000016 1851 13 lr 5,1
14 print nogen
000018 4510 F026 00002 15 wto 'Hello'
000028 C1 23 dc cl1'A'
000030 4238000000000000 24 jump dc d'56'
⋮
MACRO
MAC1
⋮
LCLC &.A Invalid variable symbol
⋮
&N SETA &A
⋮
MEND
Figure 21 on page 56 shows the placement of error messages when the macro is called:
1 MAC1
** ASMA024E Invalid variable symbol - MACRO - MAC1
⋮
** ASMA003E Undeclared variable symbol; default=0, null, or type=U - LIBMA/A
⋮
36 MAC1
⋮
** ASMA003E Undeclared variable symbol; default=0, null, or type=U - LIBMA/A
⋮
66 END
Terminal output
On z/OS and CMS, the TERM option lets you receive a summary of the assembly at your terminal. You may
direct the terminal output to a disk data set.
On z/VSE, the TERM option lets you send a summary of the assembly to SYSLOG.
The output from the assembly includes all error diagnostic messages and the source statement in error. It
also shows the number of flagged statements and the highest severity code.
The terminal output can be shown in two formats. Figure 23 on page 56, the wide format, shows the
source statements in the same columns as they were in the input data set. Figure 22 on page 56,
the narrow format, shows the source statements which have been compressed by replacing multiple
consecutive blanks with a single blank. Use the TERM assembler option to control the format.
You can replace or modify the terminal output using a TERM user exit. See Chapter 5, “Using exits to
complement file processing ,” on page 33.
Input/output enhancements
High Level Assembler includes the following enhancements:
• QSAM Input/Output
The assembler uses QSAM input/output for all sequential data sets.
56 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
CMS interface command
• System-Determined Blocksize
Under z/OS, High Level Assembler supports DFSMS System-Determined Blocksize (SDB) for all output
datasets.
SDB is applicable when all of the following conditions are true:
– You run High Level Assembler under a z/OS operating system that includes a DFSMS level of 3.1 or
higher.
– You DO NOT allocate the data set to SYSOUT.
– Your JCL omits the blocksize, or specifies a blocksize of zero.
– You specify a record length (LRECL).
– You specify a record format (RECFM).
– You specify a data set organization (DSORG).
If these conditions are met, DFP selects the appropriate blocksize for a new data set depending on the
device type you select for output.
If the System-Determined Blocksize feature is not available, and your JCL omits the blocksize, or
specifies a blocksize of zero, the assembler uses the logical record length as the blocksize.
The assembly continues but issues message ASMA400W ERROR IN INVOCATION PARAMETER in the
High Level Assembler Options Summary section of the assembly listing.
The correct way to specify the option is as follows:
ASMAHL XREF(SHORT)
The Assembler H Version 2 CMS-specific options NUM, STMT, and TERM have been removed. SYSTERM
support is provided by the standard assembler TERM option.
The new SEG and NOSEG options let you specify from where CMS should load the High Level Assembler
modules. By default the assembler loads its modules from the Logical Saved Segment (LSEG), but if the
LSEG is not available, it loads the modules from disk. You can specify the NOSEG option to force the
assembler to load its modules from disk, or you can specify the SEG option to force the assembler to
load its modules from the Logical Saved Segment (LSEG). If the assembler cannot load its modules it
terminates with an error message.
Diagnosis facility
If there is an error in the assembler, the IBM service representative may ask for the output produced
by the assembler, and the source program to help debug the error. A new internal trace facility in the
assembler can provide the IBM service representative with additional debugging information. The IBM
service representative determines the need for this information and the circumstances under which it can
be produced. Until this facility is invoked, its inclusion in the assembler does not impact the performance.
58 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Associated Data Architecture
This chapter describes High Level Assembler support for the associated data architecture. Associated
data was previously known as assembler language program data. This support includes a general-use
programming interface which lets you write programs to use the associated data records the High Level
Assembler produces.
The associated data (ADATA) file contains language-dependent and language-independent records.
Language-dependent records contain information that is relevant only to programs assembled by the High
Level Assembler. Language-independent records contain information that is common to all programming
languages that produce ADATA records, and includes information about the environment the program is
assembled in. You use the ADATA assembler option to produce this file.
The ADATA file contains variable-length blocked records. The maximum record length is 32756 bytes, and
the maximum block size is 32760 bytes.
The file contains records classified into different record types. Each type of record provides information
about the assembler language program being assembled. Each record consists of two parts:
• A 12-byte header section which has the same structure for all record types
• A variable-length data section, which varies by record type
The header section contains:
• The language code
• The record code, which identifies the type of record
• The associated data file architecture level
• A continuation flag indicator
• The record edition number
• The length of data following
The records written to the ADATA file are:
Job identification
This record provides information about the assembly job, and its environment, including the names of
primary input files.
ADATA identification
This record contains the Universal Time, and the Coded Character Set used by the assembler.
ADATA compilation-unit (Start)
This record contains the assembly start time.
ADATA compilation-unit (End)
This record contains the assembly stop time, and the number of ADATA records written.
Output file information
This record provides information about the data sets the assembler produces.
Options file information
This record provides information about the external options file the assembler read, if provided
Options
This record contains the assembler options specified for the assembly.
External Symbol Dictionary (ESD)
This record describes all the control sections, including DSECTs, defined in the program.
Source analysis
This record contains the assembled source statements, with additional data describing the type and
specific contents of the statement.
Source error
This record contains error message information the assembler produces after a source statement in
error.
DC/DS
This record describes the constant or storage defined by a source program statement that contains
a DC or DS instruction. If a source program statement contains a DC or DS instruction, then a DC/DS
record is written following the Source record.
DC extension
This record describes the object code generated by a DC statement when the DC statement has
repeating fields. This record is only created if the DC statement has a duplication factor greater than 1
and at least one of the operand values has a reference to the current location counter (*).
Machine instruction
This record describes the object code generated for a source program statement. If a source program
statement causes machine instructions to be generated, then a Machine Instruction record is written
following the Source record.
Relocation Dictionary (RLD)
This record describes the relocation dictionary information that is included in the object module.
Symbol
This record describes a single symbol or literal defined in the program.
Ordinary symbol and literal cross-reference
This record describes references to a single symbol.
Macro and copy code source summary
This record describes the source of each macro and copy code member retrieved by the program.
Macro and copy code cross-reference
This record describes references to a single macro or copy code member.
USING map
This record describes all USING, DROP, PUSH USING, and POP USING statements in the program.
Statistics
This record describes the statistics about the assembly.
User-supplied information
This record contains data from the ADATA instruction.
Register cross-reference
This record describes references to a single General Purpose register.
60 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Factors improving performance
This chapter describes some of the methods used by High Level Assembler that improve assembler
execution performance relative to earlier assemblers. These improvements are gauged on the
performance of typical assemblies, and there might be cases where the particular circumstances of your
application or system configuration do not achieve them. The main factors that improve the performance
of High Level Assembler are:
• Logical text stream and tables that are a result of the internal assembly process remain resident in
virtual storage, whenever possible, throughout the assembly.
• High Level Assembler can be installed in shared virtual storage.
• High Level Assembler exploits 31-bit addressing.
• High Level Assembler runs entirely in storage: the utility files, SYSUT1 or IJSYS03, are no longer used.
• Two or more assemblies can be done with one invocation of the assembler.
• High Level Assembler edits only the macro definitions that it encounters during a given macro
generation or during conditional assembly of open code, as controlled by AIF and AGO statements.
• Source text assembly passes are consolidated. The edit and generation of macro statements are done
on a demand basis in one pass of the source text.
Resident tables and source text: Keeping intermediate text, macro definition text, dictionaries, and
symbol tables in main storage whenever possible improves performance. High Level Assembler writes
working storage blocks to the assembler work data set only if necessary, and then only if the WORKFILE
option is specified. Less input and output reduces system overhead and frees channels and input/output
devices for other uses.
The amount of working storage allocated to High Level Assembler is determined by the SIZE assembler
option, and is limited only by the amount available in the address space.
Shared virtual storage: High Level Assembler is a reentrant program that can be installed in shared
virtual storage, such as the z/OS Link Pack Area (LPA), a CMS logical saved segment or in a VSE
Shared Virtual Area (SVA). When High Level Assembler is installed in shared virtual storage, the demand
for system resources associated with loading the assembler load modules is reduced. In a multi-user
environment, multiple users are able to share one copy of the assembler load modules.
31-bit addressing: High Level Assembler takes advantage of the extended address space, available
in extended architecture operating systems, by allowing most of its data areas to reside above the
16-megabyte line. I/O areas and exit parameter lists remain in storage below the 16-megabyte line
to satisfy access method requirements and user exits using 24-bit addressing mode. The High Level
Assembler's modules can be loaded above the 16-megabyte line, except for some initialization routines.
31-bit addressing increases the assembler's available work area, which allows larger programs than
previously possible to be assembled in-storage. In-storage assemblies reduce the input and output
system overhead and free channels and input/output devices for other uses.
Multiple assembly: You can run multiple assemblies, known as batching, with one invocation of the
assembler. Source records are placed together, with no intervening ‘/*’ JCL statement.
Batch assembly improves performance by eliminating job and step overhead for each assembly. It is
especially useful for processing related assemblies such as a main program and its subroutines.
Macro-editing process: High Level Assembler edits only those macro definitions encountered during
a given macro generation or during conditional assembly or open code, as controlled by AIF and AGO
statements.
A good example of potential savings by this feature is the process of system generation. During system
generation, High Level Assembler edits only the set of library macro definitions that are expanded; as a
result, High Level Assembler may edit fewer library macro definitions than previous assemblers.
Unlike DOS/VSE Assembler, High Level Assembler requires that library macros be stored in source format.
This removes the necessity to edit library macros before they can be stored in the library.
Consolidating source text passes: Consolidating assembly source text passes and other new
organization procedures reduce the number of internal processor instructions used to handle source text
in High Level Assembler, which causes proportionate savings in processor time. The saving is independent
of the size or speed of the system processor involved; it is a measure of the relative efficiency of the
processor.
62 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Assembler options
High Level Assembler provides you with many assembler options for controlling the operation and output
of the assembler. You can set default values at assembler installation time for most of these assembler
options. You can also fix a default option so the option cannot be overridden at assembly time. See
“IBM-supplied default assembler options” on page 15 for a list of the changes to the IBM-supplied
default assembler options from High Level Assembler Release 4.
You specify the options at assembly time on:
• An external file (z/OS and CMS) or library member (z/VSE)
• The JCL PARM parameter of the EXEC statement on z/OS and z/VSE, or the ASMAHL command on CMS.
• The JCL OPTION statement On z/VSE.
• The *PROCESS assembler statement.
The assembler options are:
ADATA | NOADATA
Produce the associated data file.
ALIGN | NOALIGN
Check alignment of addresses in machine instructions and whether DC, DS, DXD, and CXD are aligned
on correct boundaries.
ASA | NOASA
(z/OS and CMS) Produce the assembly listing using American National Standard printer-control
characters. If NOASA is specified the assembler uses machine printer-control characters.
BATCH | NOBATCH
Specify multiple assembler source programs are in the input data set.
CODEPAGE(X'047C')
Specify the code page module to be used to convert Unicode character constants
COMPAT(suboption) | NOCOMPAT
Direct the assembler to remain compatible with earlier assemblers in its handling of lowercase
characters in the source program, and its handling of sublists in SETC symbols, and its handling of
unquoted macro operands. The LITTYPE suboption instructs the assembler to return 'U' as the type
attribute for all literals.
DBCS | NODBCS
Specify that the source program contains double-byte characters.
DECK | NODECK
Produce an object module.
DXREF | NODXREF
Produce the DSECT Cross Reference section of the assembler listing.
ERASE | NOERASE
(CMS) Delete specified files before running the assembly.
ESD | NOESD
Produce the External Symbol Dictionary section of the assembler listing.
EXIT(suboption1,suboption2,…) | NOEXIT
Provide user exits to the assembler for input/output processing.
ADEXIT(name(string)) | NOADEXIT
Identify the name of a user-supplied ADATA exit module.
INEXIT(name(string)) | NOINEXIT
Identify the name of a user-supplied SOURCE exit module.
LIBEXIT(name(string)) | NOLIBEXIT
Identify the name of a user-supplied LIBRARY exit module.
OBJEXIT(name(string)) | NOOBJEXIT
Identify the name of a user-supplied OBJECT exit module.
PRTEXIT(name(string)) | NOPRTEXIT
Identify the name of a user-supplied LISTING exit module.
TRMEXIT(name(string)) | NOTRMEXIT
Identify the name of a user-supplied TERM exit module.
FAIL(suboption1,suboption2,…) | NOFAIL
MSG(msgval) | NOMSG
Specify the minimum severity messages which should have their severity raised.
MNOTE(mnoteval) | NOMNOTE
Specify the minimum severity MNOTEs which should have their severity raised.
MAXERRS(maxerrs) | NOMAXERRS
Specify the number of error message to be issued before assembly terminates.
FLAG(suboption1,suboption2,…)
Specify the level and type of error diagnostic messages to be written.
FOLD | NOFOLD
Convert lowercase characters to uppercase characters in the assembly listing.
GOFF | NOGOFF
(z/OS and CMS) Set generalized object format.
ILMA | NOILMA
Specifies that inline macros are accessible from all OPTABLE definitions.
INFO | NOINFO
Display service information selected by date.
LANGUAGE(EN | ES | DE | JP | UE)
Specify the language in which assembler diagnostic messages are presented. High Level Assembler
lets you select any of the following:
• English mixed case (EN)
• English uppercase (UE)
• German (DE)
• Japanese (JP)
• Spanish (ES)
When you select either of the English languages, the assembler listing headings are produced in the
same case as the diagnostic messages.
When you select either the German language or the Spanish language, the assembler listing headings
are produced in mixed case English.
When you select the Japanese language, the assembler listing headings are produced in uppercase
English.
The assembler uses the default language for messages produced on CMS by the High Level Assembler
command.
LIBMAC | NOLIBMAC
Instruct the assembler to imbed library macro definitions in the input source program.
LINECOUNT(integer)
Specify the number of lines to print in each page of the assembly listing.
64 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Assembler options
TEST | NOTEST
Specify whether special symbol table data is to be generated as part of the object module.
THREAD | NOTHREAD
Specify whether or not the location counter is to be reset at the beginning of each CSECT.
TRANSLATE(AS | suffix) | NOTRANSLATE
Specify whether characters contained in character (C-type) data constants (DCs) and literals should
be translated using a user-supplied translation table. The suboption AS directs the assembler to use
the ASCII translation table provided with High Level Assembler.
TYPECHECK(suboption1,suboption2) | NOTYPECHECK
Control whether or not HLASM performs type checking of machine instruction operands.
USING(suboption1,suboption2,…) | NOUSING
Specify the level of monitoring of USING statements required, and whether the assembler is to
generate a USING map as part of the assembly listing.
WORKFILE | NOWORKFILE
If storage apart from central storage is required during assembly, use the utility file for temporary
storage.
XREF(SHORT | UNREFS | FULL) | NOXREF
Produce the Ordinary Symbol and Literal Cross Reference, or the Unreferenced Symbols Defined in
CSECTs, or both, in the assembly listing.
66 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
System variable symbols
System variable symbols are a special class of variable symbols, starting with the characters &SYS. The
values are set by the assembler according to specific rules. You cannot declare system variable symbols
in local SET symbols or global SET symbols, nor can you use them as symbolic parameters.
You can use these symbols as points of substitution in model statements and conditional assembly
instructions. You can use some system variable symbols both inside macro definitions and in open code,
and some system variable symbols only in macro definitions.
In High Level Assembler enhancements have been made to some system variable symbols and many new
system variable symbols have been introduced.
No new system variables are introduced in High Level Assembler Release 5.
No new system variables are introduced in High Level Assembler Release 4.
The system variable symbols introduced in High Level Assembler Release 3 are:
Variable
Description
&SYSCLOCK
A local-scope variable that holds the date and time at which a macro is generated.
&SYSMAC
A local-scope variable that can be subscripted, thus referring to the name of any of the macros
opened between open code and the current nesting level.
&SYSOPT_XOBJECT
A global-scope variable that indicates if the XOBJECT assembly option was specified.
&SYSM_HSEV
A global-scope variable that indicates the latest MNOTE severity so far for the assembly.
&SYSM_SEV
A global-scope variable that indicates the latest MNOTE severity for the macro most recently called
from this level.
The system variable symbols introduced in High Level Assembler Release 2 are:
Variable
Description
&SYSADATA_DSN
A local-scope variable containing the name of the data set where associated data (ADATA) records are
written.
&SYSADATA_MEMBER
A local-scope variable containing the name of the partitioned data set member where associated data
(ADATA) records are written.
&SYSADATA_VOLUME
A local-scope variable containing the volume identifier of the first volume containing the ADATA data
set.
&SYSLIN_DSN
A local-scope variable containing the name of the data set where object module records are written.
&SYSLIN_MEMBER
A local-scope variable containing the name of the partitioned data set member where object module
records are written.
&SYSLIN_VOLUME
A local-scope variable containing the volume identifier of the first volume containing the object
module data set.
&SYSPRINT_DSN
A local-scope variable containing the name of the data set where listing records are written.
&SYSPRINT_MEMBER
A local-scope variable containing the name of the partitioned data set member where listing records
are written.
&SYSPRINT_VOLUME
A local-scope variable containing the volume identifier of the first volume containing the listing data
set.
&SYSPUNCH_DSN
A local-scope variable containing the name of the data set where object module records are written.
&SYSPUNCH_MEMBER
A local-scope variable containing the name of the partitioned data set member where object module
records are written.
&SYSPUNCH_VOLUME
A local-scope variable containing the volume identifier of the first volume containing the object
module data set.
&SYSTERM_DSN
A local-scope variable containing the name of the data set where terminal messages are written.
&SYSTERM_MEMBER
A local-scope variable containing the name of the partitioned data set member where terminal
messages are written.
&SYSTERM_VOLUME
A local-scope variable containing the volume identifier of the first volume containing the terminal
messages data set.
System variable symbols introduced in High Level Assembler Release 1 are:
Variable
Description
&SYSASM
A global-scope variable containing the name of the assembler product being used.
&SYSDATC
A global-scope variable containing the date, with the century designation included, in the form
YYYYMMDD.
&SYSIN_DSN
A local-scope variable containing the name of the input data set.
&SYSIN_MEMBER
A local-scope variable containing the name of the current member in the input data set.
&SYSIN_VOLUME
A local-scope variable containing the volume identifier of the first volume containing the input data
set.
&SYSJOB
A global-scope variable containing the job name of the assembly job, if available, or '(NOJOB)'.
&SYSLIB_DSN
A local-scope variable containing the name of the library data set from which the current macro was
retrieved.
&SYSLIB_MEMBER
A local-scope variable containing the name of the current macro retrieved from the library data set.
&SYSLIB_VOLUME
A local-scope variable containing the volume identifier of the first volume containing the library data
set from which the current macro was retrieved.
68 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
System variable symbols
&SYSNEST
A local-scope variable containing the current macro nesting level. &SYSNEST is set to 1 for a macro
called from open code.
&SYSOPT_CURR_OPTABLE
Use &SYSOPT_CURR_OPTABLE to obtain the optable that is in use.
&SYSOPT_DBCS
A global-scope Boolean variable containing the value 1 if the DBCS assembler option was specified, or
0 if NODBCS was specified.
&SYSOPT_OPTABLE
A global-scope variable containing the name of the operation code table specified in the OPTABLE
assembler option.
&SYSOPT_RENT
A global-scope Boolean variable containing the value 1 if the RENT assembler option was specified, or
0 if NORENT was specified.
&SYSSEQF
A local-scope variable containing the identification-sequence field information of the macro
instruction in open code that caused, directly or indirectly, the macro to be called.
&SYSSTEP
A global-scope variable containing the step-name, if available, or '(NOSTEP)'.
&SYSSTMT
A global-scope variable that contains the statement number of the next statement to be generated.
&SYSSTYP
A local-scope variable containing the current control section type (CSECT, DSECT, RSECT or COM) at
the time the macro is called.
&SYSTEM_ID
A global-scope variable containing the name and release level of the operating system under which
the assembly is run.
&SYSVER
A global-scope variable containing the maintenance version, release, and modification level of the
assembler.
In addition, High Level Assembler provides the following system variable symbols not provided by
DOS/VSE Assembler but provided by Assembler H Version 2:
Variable
Description
&SYSDATE
A global-scope variable containing the date in the form MM/DD/YY.
&SYSLOC
A local-scope variable containing the name of the location counter now in effect. &SYSLOC can only be
used in macro definitions.
&SYSNDX
A local-scope variable containing a number from 1 to 9999999. Each time a macro definition is called,
the number in &SYSNDX increases by 1.
&SYSTIME
A global-scope variable containing the time the assembly started, in the form HH.MM.
70 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Hardware requirements
This appendix describes the environments in which High Level Assembler runs.
Hardware requirements
High Level Assembler, and its generated object programs, can run in any IBM Z processor supported
by the operating systems listed in the “ Software requirements” on page 71. However, you can only
run a generated object program that uses 370-XA machine instructions on a 370-XA mode processor
under an operating system that provides the necessary architecture support for the 370-XA instructions
used. Similarly, you can only run a generated object program that uses ESA/370, ESA/390, zSeries, or
zEnterprise® machine instructions on an associated processor under an operating system that provides
the necessary architecture support for the ESA/370, ESA/390, zSeries, and zEnterprise instructions used.
Software requirements
High Level Assembler runs under the operating systems listed below. Unless otherwise stated, the
assembler also operates under subsequent versions, releases, and modification levels of these systems:
• z/VM Version 5 Release 2
• z/VSE Version 3 Release 1 and Version 4
• z/OS Version 1 Release 2.0
• Linux for z Systems
In addition, installation of High Level Assembler requires one of the following:
z/OS
IBM System Modification Program/Extended (SMP/E). All load modules are reentrant, and you can
place them in the link pack area (LPA).
z/VM
IBM VM Serviceability Enhancements Staged/Extended (VMSES/E) and VMFPLC2. Most load modules
are reentrant, and you can place them in a logical saved segment.
z/VSE
Maintain System History Program (MSHP). Most phases are reentrant, and you can place them in the
shared virtual area (SVA).
Note:
1. You can specify a user-supplied exit in place of this device. For more information about the EXIT
option, see Appendix A, “Assembler options,” on page 63.
72 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Assembling under VSE
Note:
1. You can specify a user-supplied exit in place of this device. For more information about the EXIT
option, see Appendix A, “Assembler options,” on page 63.
Note:
1. You can specify a user-supplied exit in place of this device. For more information about the EXIT
option, see Appendix A, “Assembler options,” on page 63.
74 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Notices
This information was developed for products and services offered in the U.S.A.
IBM may not offer the products, services, or features discussed in this document in other countries.
Consult your local IBM representative for information on the products and services currently available in
your area. Any reference to an IBM product, program, or service is not intended to state or imply that
only that IBM product, program, or service may be used. Any functionally equivalent product, program, or
service that does not infringe any IBM intellectual property right may be used instead. However, it is the
user's responsibility to evaluate and verify the operation of any non-IBM product, program, or service.
IBM may have patents or pending patent applications covering subject matter described in this
document. The furnishing of this document does not give you any license to these patents. You can
send license inquiries, in writing, to:
IBM Director of Licensing
IBM Corporation
North Castle Drive
Armonk, NY 10504-1785
U.S.A.
Licensees of this program who wish to have information about it for the purpose of enabling: (i) the
exchange of information between independently created programs and other programs (including this
one) and (ii) the mutual use of the information which has been exchanged, should contact:
IBM Corporation
Mail Station P300
2455 South Road
Poughkeepsie New York 12601-5400
U.S.A.
Such information may be available, subject to appropriate terms and conditions, including in some cases,
payment of a fee.
The licensed program described in this document and all licensed material available for it are provided by
IBM under terms of the IBM Customer Agreement, IBM International Program License Agreement or any
equivalent agreement between us.
For license inquiries regarding double-byte (DBCS) information, contact the IBM Intellectual Property
Department in your country or send inquiries, in writing, to:
IBM World Trade Asia Corporation
Licensing
2-31 Roppongi 3-chome, Minato-ku
Tokyo 106-0032, Japan
The following paragraph does not apply to the United Kingdom or any other country where such
provisions are inconsistent with local law: INTERNATIONAL BUSINESS MACHINES CORPORATION
PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR
IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of
express or implied warranties in certain transactions, therefore, this statement may not apply to you.
This information could include technical inaccuracies or typographical errors. Changes are periodically
made to the information herein; these changes will be incorporated in new editions of the publication.
IBM may make improvements and/or changes in the product(s) and/or the program(s) described in this
publication at any time without notice.
Any references in this information to non-IBM Web sites are provided for convenience only and do not in
any manner serve as an endorsement of those Web sites. The materials at those Web sites are not part of
the materials for this IBM product and use of those Web sites is at your own risk.
If you are viewing this information softcopy, the photographs and color illustrations may not appear.
Trademarks
IBM, the IBM logo, and ibm.com are trademarks or registered trademarks of International Business
Machines Corp., registered in many jurisdictions worldwide. Other product and service names might be
trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at
Copyright and trademark information at http://www.ibm.com/legal/copytrade.shtml.
Linux is a registered trademark of Linus Torvalds in the United States, other countries, or both.
UNIX is a registered trademark of The Open Group in the United States and other countries.
76 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Bibliography
High Level Assembler Documents
HLASM General Information, GC26-4943
HLASM Installation and Customization Guide, SC26-3494
HLASM Language Reference, SC26-4940
HLASM Programmer's Guide, SC26-4941
78 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
Index
Index 79
assembler options (continued) CMS (continued)
RENT 65, 69 interface command 57
RLD 65 use of saved segment by High Level Assembler 61
RXREF 48, 65 virtual storage requirements 72
SECTALGN 65 CNOP instruction 5
SEG 65 CNOP label, type attribute 28
SIZE 61, 65 code and data areas 12
SUPRWARN 53, 65 CODEPAGE assembler option 63
SYSPARM 65 comment statements 8, 22
TERM 56, 57, 65, 72–74 COMPAT assembler option 30, 63
TEST 66 COMPAT(SYSLIST) with multilevel sublists 20
THREAD 66 conditional assembly extensions
TRANSLATE 66 alternate format 9
TRMEXIT 64 attribute reference
TYPECHECK 66 defined attribute (D') 28
USING 51, 66 forward 29
WORKFILE 66 number attribute (N') for SET symbols 29
XOBJECT 10, 72 operation code attribute (O') 28
XREF 47, 66 with SETC symbols 28
assembling under CMS 72 created SET symbols 25
assembling under VSE extended AGO instruction 24
VSE requirements 73 extended AIF instruction 24
assembling under z/OS 71 extended continuation statements 24
assembling under z/VM 72 extended GBLx instruction 24
assembly extended LCLx instruction 24
abnormal termination of 58 extended SETx instruction 24, 25
processor time 53 system variable symbols
start time 53 &SYSLIST with multilevel sublists 19
stop time 53 &SYSNDX, MHELP control on 58
associated data file output 63 CONT, FLAG assembler option 9
attribute references continuation
CNOP label, type attribute 28 error warning messages 9
defined attribute (D') 28 extended indicator for double-byte data 9, 20
forward 29 extended line format 24
number attribute (N') for SET symbols 29 lines with double-byte data 9
operation code attribute (O') 28 number of lines 9
with literals 28 control sections, read-only 12
with SETC variables 28 COPY instruction 6
created SET symbols 25
Customization book xii
B
BATCH assembler option 63 D
batch assembly, improving performance 61
binary floating-point numbers DBCS assembler option 63, 69
changes to DC instruction 6 DC instruction 6
blank lines 8 DECK assembler option 33, 63, 72–74
books xii declaration of SET symbols
built-in functions, macro 3, 23 dimensioned SET symbols 24
implicit declaration 24
multiple declaration 24
C deferred loading 5
C-type defined attribute (D') 28
constant 8 dependent USING 14
self-defining term 8 diagnostic facilities
CATTR instruction 5 diagnostic cross reference and assembler summary
CCW0 instruction 11 listing 52
CEJECT instruction 5 error messages for library macros 55
channel command words 11 error messages for source macros 56
character set 7, 8 internal trace 58
character variables used in arithmetic expressions 26 dimension of SET symbol, maximum 24
clock functions 21 documents
CMS High Level Assembler xii, 77
assembli ng under 72 HLASM Toolkit 77
machine instructions 77
80 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
documents (continued) extended object support (continued)
z/OS 77 instructions 10
z/VM 78 NOGOFF assembler option 64
z/VSE 78 NOILMA assembler option 64
double-byte data NOTHREAD assembler option 66
C-type constant 8 THREAD assembler option 66
C-type self-defining term 8 extended source and object listing 65
concatenation of 20 extended symbol length 9
continuation of 9, 20 external
double-byte character set 8 symbols, length of 9
G-type constant 8 external dummy sections 12
G-type self-defining term 8, 20, 26 external function calls, macro 21, 23
in AREAD and REPRO 8 external symbol dictionary (ESD)
in MNOTE, PUNCH and TITLE 8, 20 listing 41
macro language support 20 restrictions on 12
MNOTE operand 8 external symbol dictionary listing 41
PUNCH operand 8 external symbols, number of 12
pure DBCS data 8, 20
SI/SO 8, 9, 20
TITLE operand 8
F
DROP instruction 6 factors improving performance 61
DS instruction FAIL assembler option 64
changes to DS instruction 6 FLAG assembler option 9, 53, 64
DSECT FOLD assembler option 46, 64
cross-reference listing 50 formatted dump, produced by abnormal termination 58
referenced in Q-type address constant 12 forward attribute-reference scan 29
dummy sections
aligning with DXD 6
DXD instruction 6 G
DXD, referenced in Q-type address constant 12
G-type
DXREF assembler option 63
constant 8
self-defining term 8, 20, 26
E General Information book xii
general purpose register cross-reference listing 47
E-Decks, reading 34 generated macro operation codes 19
edited macros 34 generated statement
editing inner macro definitions 19 attribute reference for 27
editing macro definitions 18 format of 54
EJECT instruction 53 sequence field of 54
ENTRY instruction 10 suppress alignment zeroes 54
EQU instruction 6 with PRINT NOGEN 54
ERASE assembler option 63 global SET symbol
error messages declaration 24
in library macros 55 suppression of dump (in MHELP options) 58
in source macros 56 GOFF assembler option 5, 64
ESD assembler option 63
ESD symbols, number of 12
ESDID H
in USING Map 51
hardware requirements 71
EXIT
High Level Assembler
communicating 34
documents xii
disabling 34
highlights 3
EXIT assembler option 34, 53, 63
machine requirements 71
EXITCTL instruction 5, 34
planning for 4
extended
required operating environments 71
AGO instruction 24
use of CMS saved segment 61
AIF instruction 24
use of VSE shared virtual area (SVA) 61
continuation indicator 9, 20
use of z/OS link pack area (LPA) 61
SETx instruction 24, 25
High Level Assembler option summary 38
extended addressing support 10
extended continuation statements 24
extended object support I
CODEPAGE assembler option 63
GOFF assembler option 64 I/O exits
Index 81
I/O exits (continued) macro (continued)
description 33 branch trace 58
usage statistics 34 buil t-in functions 23
ILMA assembler option 64 call trace 58
implicit declaration of SET symbols 24 calls by substitution 19
INEXIT assembler option 63 comment statements 8, 22
INFO assembler option 64 entry dump 58
inner macro definitions 19 exit dump 58
input/output capability of macros 21 general advantages 17
input/output enhancements 33, 56 hex dump 58
installation and customization input/output capability of 21
book information xii suppressing dumps 58
internal macro comment statements 8, 22 use of 17
ISEQ instruction 6 macro and copy code
cross-reference listing 49
source summary listing 48
L macro definition
labeled USING 13 bypassing 18
LANGUAGE assembler option 64 editing 18
language compatibility 3 inner macro definitions 19
Language Reference xiii instructions allowed in 22
LCLx and GBLx Instructions 23 listing control 22
LIBEXIT assembler option 64 nesting 19
LIBMAC assembler option 49, 55, 64 placement 17
library macro, error messages for 55 redefinition of 18
license inquiry 75 macro editing
LINECOUNT assembler option 64 for inner macro definitions 19
link pack area (LPA) 61 improving performance 61
LIST assembler option 42, 54, 65, 72–74 in general 18
listing macro input/output capability 21
*PROCESS statements 38 macro instruction
121-character format 42 name entries 20
133-character format 42 nested 19
diagnostic cross-reference and assembler summary 52 macro instruction operation code, generated 19
DSECT cross-reference 50 macro language extensions
external symbol dictionary 41 declaration of SET symbols 24
general purpose register cross-reference 47 instructions permitted in body of macro definition 22
macro and copy code cross-reference 49 mnemonic operation codes redefined as macros 22
macro and copy code source summary 48 nesting definitions 19
option summary 38 overview 18
ordinary symbol and literal cross-reference 45 placement of definitions 17
page-break improvements 53 redefinition of macros 18
relocation dictionary 44 sequence symbol length 9
source and object 42, 43 source stream language input, AREAD 21
source and object, 121-character format 42 substitution, macro calls by 19
source and object, 133-character format 44 variable symbol length 9
unreferenced symbols defined in CSECTs 47 macro language overview 17
USING map 50 macro name, length of 22
literals, removal of restrictions 10 macro prototype 17
local SET symbol macro-generated statements 53
declaration 24 macro-generated text
location counters, multiple 12 format of 54
LOCTR instruction 12 sequence field of 54
with PRINT NOGEN 54
manuals xii
M MHELP instruction 57
migration considerations 3
MACHINE assembler option 65
mixed-case input, changes to 9
machine instructions
mnemonic operation codes used as macro operation codes
documents 77
22
machine requirements 71
MNOTE assembler option 64
macro
MNOTE operand, double-byte character set 8
AIF dump 58
model statements 53
assembly diagnostic messages 55
MSG assembler option 64
82 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
multilevel sublists 19 processor time (continued)
multiple assembly 61 reduced instruction path 62
multiple declaration of SET symbols 24 processor time for the assembly 53
multiple location counters 12 PROFILE assembler option 65
MXREF assembler option 48–50, 65 Programmer's Guide xiii
prototype, in macro definitions 17
PRTEXIT assembler option 64
N PSECT 12
nesting macro definitions 19 publications xii
NODBCS assembler option 69 PUNCH operand, double-byte character set 8
NODXREF assembler option 50 PUNCH output capability 21
NOESD assembler option 42 PUSH instruction 7
NOGOFF assembler option 64
NOILMA assembler option 64 R
NOMXREF assembler option 49, 50
NORENT assembler option 69 RA2 assembler option 65
NORLD assembler option 45 range, in USING Map 51
NOSEG assembler option 57 read-only control sections 12
NOTHREAD assembler option 66 reading edited macros 34
NOUSING assembler option 51 redefining conditional assembly instructions 29
NOXREF assembler option 47 redefining macro names 18
number attribute (N') for SET symbols 29 redefining standard operation codes as macro names 22
Release 6, what's new 1
relocatable address constants, 2-byte 7
O relocation dictionary listing 44
OBJECT assembler option 33, 65, 72–74 RENT assembler option 65, 69
object module output 64 requirements
object modules, extended format 10 hardware 71
OBJEXIT assembler option 64 software 71
operating systems for High Level Assembler 71 storage 73
operation code attribute (O') 28 resident macro definition text 61
operation codes, redefining conditional assembly 29 resident source text 61
OPSYN instruction resident tables 61
operation codes 6 revised assembler instructions 5
placement 6 RLD assembler option 65
to redefine conditional assembly instructions 29 RMODE instruction 11
to rename macro 18 RSECT instruction 5, 12
OPTABLE assembler option 65 RXREF assembler option 48, 65
option
MHELP 57 S
summary listing 38
option summary listing 38 sample I/O exits 35
ordinary symbol and literal cross-reference listing 45 sample interchange program using macros 21
ORG instruction 6 saved segment in CMS 61
organization of this manual xi SDB 57
SECTALGN assembler option 65
sectioning and linking extensions
P external dummy sections 12
page-break improvements 53 multiple location counters 12
parentheses 10 no restrictions on ESD items 12
PCONTROL assembler option 65 read-only control sections 12
performance SEG assembler option 65
improvement factors 61 sequence field in macro-generated statements 54
PESTOP assembler option 65 sequence symbol length 9, 22
planning for High Level Assembler 4 SET symbol
POP instruction 6 built-in macro functions 23
precedence of options 15 created 25
PRINT assembler option 65 declaration
PRINT instruction 7 implicit 24
printer control characters 63 multiple 24
process (*PROCESS) statements 14 defined as an array of values 24
processor time dimension 24
in assembly listing 53 global scope 24
Index 83
SET symbol (continued) T
local scope 24
SET symbol format and definition changes 24 TERM assembler option 56, 57, 65, 72–74
SETAF instruction 23 terminal output 56, 64
SETC symbol terms, number of, in expressions 10
attribute reference with 28 TEST assembler option 66
in arithmetic expressions 26 THREAD assembler option 66
SETCF instruction 23 time of assembly 31
SETx instruction TITLE instruction 53
built-in macro functions 23 TITLE operand, double-byte character set 8
extended 24, 25 Toolkit Customization book xiii
using ordinary symbols 26 Toolkit installation and customization
shared virtual area (SVA) 61 book information xiii
shared virtual storage 61 TRANSLATE assembler option 66
shift-in (SI) character (DBCS) 8 translation table 8
shift-out (SO) character (DBCS) 8 TRMEXIT assembler option 64
SI (shift-in) character (DBCS) 8 type attribute of a CNOP label 28
SIZE assembler option 61, 65 TYPECHECK assembler option 66
SO (shift-out) character (DBCS) 8
software requirements 71
source and object listing
U
121-character format 42 underscore, in symbol names 10
133-character format 44 Unicode support 8
description 42 unreferenced symbols defined in CSECTs 47
source macro, error messages for 56 USING assembler option 51, 66
source stream input (AREAD) 21 USING instruction
source stream insertion (AINSERT) 22 dependent USING 14
SPACE instruction 53 example of map listing 50
start time of assembly 53 labeled USING 13
statistics using map listing 50
I/O exit usage 34
in the listing 53
stop time of assembly 53 V
sublists, multilevel 19
variable symbol length 9
substitution in macro instruction operation code 19
virtual storage
substring length value 26
CMS requirements 72
suppress
performance improvements 61
alignment zeroes in generated text 54
VSE requirements 73
dumping of global SET symbols (in MHELP options) 58
z/OS requirements 71
suppressed messages listing 53
SUPRWARN assembler option 65
symbol and literal cross-reference listing 45 W
symbol name definition 9, 10
symbolic parameter what's new in High Level Assembler release 6 1
conflicting with created SET symbol 25 WORKFILE assembler option 66
syntax extensions
blank lines 8 X
character variables in arithmetic expressions 26
continuation lines, number of 9 XATTR instruction 5
levels of parentheses XOBJECT assembler option 10, 72
in macro instruction 19 XREF assembler option 47, 66
in ordinary assembler expressions 10
number of terms in expression 10
removal of restrictions for literals 10 Z
symbol length 9 z/OS
SYSLIST (&SYSLIST) with multilevel sublists 20 assembling under 71
SYSNDX (&SYSNDX), MHELP control on 58 use of link pack area by High Level Assembler 61
SYSPARM assembler option 65 virtual storage requirements 71
system determined blocksize 57 z/OS documents 77
system variable symbols z/VM
&SYSLIST with multilevel sublists 20 assembling under CMS 72
&SYSNDX, MHELP control on 58 CMS interface command 57
system-determined blocksize 57 CMS saved segment 61
SYSTERM output 56 z/VSE documents 78
84 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
zeroes, suppress alignment 54
Index 85
86 High Level Assembler for z/OS & z/VM & z/VSE: HLASM V1R6 General Information
IBM®
GC26-4943-06