High Level Assembler for z/OS & z/VM & z/VSE. Language Reference (Version 1 Release 6) - page 7

 

  Главная      Manuals     High Level Assembler for z/OS & z/VM & z/VSE. Language Reference (Version 1 Release 6)

 

Search            copyright infringement  

 

 

 

 

 

 

 

 

 

 

 

Content      ..     5      6      7      8     ..

 

 

 

High Level Assembler for z/OS & z/VM & z/VSE. Language Reference (Version 1 Release 6) - page 7

 

 

Table 10. Assembler instructions
(continued)
Type of Instruction
Instruction
Page No.
Program Section and Linking
ALIAS
“ALIAS
instruction” on
page 112
AMODE
“AMODE
instruction” on
page 113
CATTR (z/OS and CMS)
“CATTR
instruction (z/OS
and CMS)” on
page 115
COM
“COM instruction”
on page 124
CSECT
“CSECT
instruction” on
page 126
CXD
“CXD instruction”
on page 128
DSECT
“DSECT
instruction” on
page 182
DXD
“DXD instruction”
on page 185
ENTRY
“ENTRY
instruction” on
page 187
EXTRN
“EXTRN
instruction” on
page 193
LOCTR
“LOCTR
instruction” on
page 196
RMODE
“RMODE
instruction” on
page 215
RSECT
“RSECT
instruction” on
page 216
START
“START
instruction” on
page 218
WXTRN
“WXTRN
instruction” on
page 232
XATTR (z/OS and CMS)
“XATTR
instruction (z/OS
and CMS)” on
page 233
Chapter 5. Assembler instruction statements
101
Table 10. Assembler instructions
(continued)
Type of Instruction
Instruction
Page No.
Base Register
DROP
“DROP
instruction” on
page 176
USING
“USING
instruction” on
page 222
Data Definition
CCW
“CCW and CCW0
instructions” on
page 118
CCW0
“CCW and CCW0
instructions” on
page 118
CCW1
“CCW1
instruction” on
page 120
DC
“DC instruction”
on page 129
DS
“DS instruction”
on page 179
Symbol Definition
EQU
“EQU instruction”
on page 188
Associated Data
ADATA
“ADATA
instruction” on
page 110
Assembler Options
*PROCESS
“*PROCESS
statement”
ACONTROL
“ACONTROL
instruction” on
page 104
64 bit addressing mode
Some instructions have an operand or operands that pertain to 64 bit addressing
mode (for example, 64 for AMODE). This operand is accepted and processed by the
assembler. However, other operating system components and utility programs
might not be able to accept and process information related to this operand.
*PROCESS statement
Process (*PROCESS) statements specify assembler options in an assembler source
program. You can include them in the primary input data set or provide them
from a SOURCE user exit.
You can specify up to 10 process statements in each source program. Except for the
ICTL instruction, process statements must be the first statements in your source
program. If you include process statements anywhere else in your source program
the assembler treats them as comments.
A process statement has a special coding format, unlike any other assembler
instruction, although it is affected by the column settings of the ICTL instruction.
102
HLASM V1R6 Language Reference
You must code the characters *PROCESS starting in the begin column of the source
statement, followed by one or more spaces. You can code as many assembler
options that can fit in the remaining columns up to, and including the end column
of the source statement. Options scanning on a *PROCESS record ends at the first
space not enclosed in apostrophes.
You cannot continue a process statement on to the next source record.
,
►►
*PROCESS
assembler option
►◄
,
OVERRIDE(
assembler option
)
assembler_option
Is any assembler option except the following, which are not accepted from a
process statement:
ADATA
LANGUAGE
SYSPARM
ASA
LINECOUNT
TERM
DECK
LIST
TRANSLATE
EXIT
OBJECT
XOBJECT
GOFF
SIZE
OVERRIDE
Ensures that certain assembler options cannot be changed for a given source
file. Put the OVERRIDE keyword as the first and only keyword on the process
statement, followed by a list of options. This means that default and invocation
options cannot override the specified options.
assembler_option
Is any assembler option except the following, which are not accepted from
a process statement:
ADATA
LANGUAGE
SYSPARM
ASA
LINECOUNT
TERM
DECK
LIST
TRANSLATE
EXIT
OBJECT
XOBJECT
GOFF
SIZE
If the option specified on a process override statement differs from the
option in effect at the time of processing the statement, the assembler
issues a warning message.
When the assembler detects an error in a process statement, it produces an error
message in the High Level Assembler Option Summary section of the assembler
listing. If the installation default option PESTOP is set then the assembler stops
after it finishes processing any remaining process statements.
The assembler lists the options from process statements in the High Level Assembler
Option Summary section of the assembler listing. Refer to “High Level Assembler
option summary” in the HLASM Programmer's Guide.
The process statements are also shown as comment lines in the Source and Object
section of the assembler listing.
Chapter 5. Assembler instruction statements
103
ACONTROL instruction
The ACONTROL instruction can change these HLASM options and controls within
a program:
v AFPR
Note: The AFPR option is not available as an assembler option at invocation of
the assembler. It can only be used on ACONTROL instructions.
v COMPAT
v FLAG (except the RECORD/NORECORD and the PUSH/NOPUSH suboptions)
v LIBMAC
v RA2
v TYPECHECK
The selections which can be specified are documented here for completeness.
,
►►
ACONTROL
selection
►◄
sequence_symbol
sequence_symbol
Is a sequence symbol.
selection
Is one or more selections from the following options.
Because ACONTROL changes existing values, there are no default values for the
ACONTROL instruction.
►►
AFPR
►◄
NOAFPR
AFPR
Instructs the assembler that the additional floating point registers 1, 3, 5, and 7
through 15 can be specified in the program.
Note: The assembler starts with AFPR enabled.
NOAFPR
Instructs the assembler that no additional floating point registers, that is, only
floating point registers 0, 2, 4, and 6 can be specified in the program.
104
HLASM V1R6 Language Reference
►►
NOCOMPAT
►◄
,
COMPAT
(
keyword
)
keyword:
CASE
NOCASE
LITTYPE
NOLITTYPE
MACROCASE
NOMACROCASE
SYSLIST
NOSYSLIST
NOTRANSDT
TRANSDT
COMPAT(CASE), abbreviation CPAT(CASE)
Maintains uppercase alphabetic character set compatibility with earlier
assemblers.
COMPAT(NOCASE), abbreviation CPAT(NOCASE)
Allows mixed case alphabetic character set.
COMPAT(LITTYPE), abbreviation CPAT(LIT)
Returns 'U' as the type attribute for all literals.
COMPAT(NOLITTYPE), abbreviation CPAT(NOLIT)
Returns the correct type attribute for literals.
COMPAT(MACROCASE), abbreviation CPAT(MC)
Converts internally lowercase alphabetic characters in unquoted macro
operands to uppercase alphabetic characters prior to macro expansion. (The
source statement is unchanged).
COMPAT(NOMACROCASE), abbreviation CPAT(NOMC)
Instructs the assembler not to convert lowercase alphabetic characters (a
through z) in unquoted macro operands.
COMPAT(SYSLIST), abbreviation CPAT(SYSL)
Treats sublists in SETC symbols as compatible with earlier assemblers.
COMPAT(NOSYSLIST), abbreviation CPAT(NOSYSL)
Instructs the assembler not to treat sublists in SETC symbols as character
strings, when passed to a macro definition in an operand of a macro
instruction.
COMPAT(TRANSDT),abbreviation CPAT(TRS)
Extends use of the translation table, as specified by the TRANSLATE assembler
option, to any C-type character Self-Defining Terms.
COMPAT(NOTRANSDT),abbreviation CPAT(NOTRS)
Instructs the assembler not to translate any C-type character Self-Defining
Terms.
NOCOMPAT, abbreviation NOCPAT
Instructs the assembler to:
Chapter 5. Assembler instruction statements
105
v Allow lowercase alphabetic characters in all language elements.
v Treat sublists in SETC symbols as sublists when passed to a macro definition
in the operand of a macro instruction.
v Return the correct type attribute for literals.
,
►►
FLAG(
integer
)
►◄
ALIGN
NOALIGN
CONT
NOCONT
EXLITW
NOEXLITW
IMPLEN
NOIMPLEN
PAGE0
NOPAGE0
SUBSTR
NOSUBSTR
USING0
NOUSING0
integer
Specifies that error diagnostic messages with this or a higher severity code are
printed in the source and object section of the assembly listing.
FLAG(ALIGN), abbreviation FLAG(AL)
Issues diagnostic message ASMA033I, ASMA212W, or ASMA213W when an
inconsistency is detected between the operation code and the alignment of
addresses in machine instructions.
FLAG(NOALIGN), abbreviation FLAG(NOAL)
Instructs the assembler not to issue diagnostic message ASMA033I, ASMA212W, or
ASMA213W when an inconsistency is detected between the operation code and
the alignment of addresses in machine instructions.
FLAG(CONT)
Specifies that the assembler is to issue diagnostic messages ASMA430W through
ASMA433W when an inconsistent continuation is encountered in a statement.
FLAG(NOCONT)
Specifies that the assembler is not to issue diagnostic messages ASMA430W
through ASMA433W when an inconsistent continuation is encountered in a
statement.
FLAG(EXLITW)
Issues diagnostic warning ASMA016W when a literal is specified as the object
of an EX instruction.
FLAG(NOEXLITW)
Suppresses diagnostic warning message ASMA016W when a literal is specified
as the object of an EX instruction.
106
HLASM V1R6 Language Reference
FLAG(IMPLEN)
Issues diagnostic message ASMA169I when an explicit length subfield is omitted
from an SS-format machine instruction.
FLAG(NOIMPLEN)
Instructs the assembler not to issue diagnostic message ASMA169I when an
explicit length subfield is omitted from an SS-format machine instruction.
FLAG(PAGE0)
Issues diagnostic message ASMA309W when an operand is resolved to a baseless
address and a base and displacement is expected.
FLAG(NOPAGE0)
Instructs the assembler not to issue diagnostic message ASMA309W when an
operand is resolved to a baseless address and a base and displacement is
expected.
FLAG(SUBSTR), abbreviation FLAG(SUB)
Issues warning diagnostic message ASMA094I when the second subscript value
of the substring notation indexes past the end of the character expression.
FLAG(NOSUBSTR), abbreviation FLAG(NOSUB)
Instructs the assembler not to issue warning diagnostic message ASMA094I
when the second subscript value of the substring notation indexes past the end
of the character expression.
FLAG(USING0), abbreviation FLAG(US0)
Issues diagnostic warning message ASMA306W for a USING that is coincident
with or overlaps the implied USING 0,0, when the USING(WARN) suboption
includes the condition numbers 1 and 4.
FLAG(NOUSING0), abbreviation FLAG(NOUS0)
Suppresses diagnostic warning message ASMA306W
►►
NOLIBMAC
►◄
LIBMAC
LIBMAC, abbreviation LMAC
Specifies that, for each macro, macro definition statements read from a macro
library are to be embedded in the input source program immediately
preceding the first invocation of that macro.
NOLIBMAC, abbreviation NOLMAC
Specifies that macro definition statements read from a macro library are not to
be included in the input source program.
Chapter 5. Assembler instruction statements
107
|
,NOLIST
►►
OPTABLE( DOS
)
►◄
ESA
,LIST
XA
370
YOP
ZOP
ZS3
ZS4
ZS5
ZS6
ZS7
ZS8
OPTABLE
Lets you switch to a different opcode table. This table is then used to resolve
any opcodes after the ACONTROL statement.
DOS
Uses the DOS operation code table. The DOS operation code is designed
specifically for assembling programs previously assembled using the
DOS/VSE assembler. The operation code table contains the System/370
machine instructions, excluding those with a vector facility.
ESA
Uses the operation code table that contains the ESA/370 and ESA/390
architecture machine instructions, including those with a vector facility.
Equivalent to MACHINE(S390E).
UNI
Uses the operation code table that contains the System/370, System/390®
architecture machine instructions and z/Architecture machine instructions.
Note that the System/370 and System/390 vector facility instructions are
not available in this operation table.
XA
Uses the operation code table that contains the System/370 extended
architecture machine instructions, including those with a vector facility.
Equivalent to MACHINE(S370XA).
370
Uses the operation code table that contains the System/370 machine
instructions, including those with a vector facility. Equivalent to
MACHINE(S370).
YOP
Same as OPTABLE(ZOP) but with the addition of the long displacement
facility. Equivalent to MACHINE(ZSERIES-2).
ZOP
Uses the operation code table that contains the symbolic operation codes
for the machine instructions specific to z/Architecture systems. Equivalent
to MACHINE(ZSERIES).
ZS3
Same as OPTABLE(YOP) but with the addition of support for the z9-109
instructions. Equivalent to MACHINE(ZSERIES-3).
108
HLASM V1R6 Language Reference
ZS4
Same as OPTABLE(ZS3) but with the addition of support for the z10
instructions. Equivalent to MACHINE(ZSERIES-4).
ZS5
Same as OPTABLE(ZS4) but with the addition of support for the z196
instructions. Equivalent to MACHINE(ZSERIES-5).
ZS6
Same as OPTABLE(ZS5) but with the addition of support for the
zEnterprise® EC12 (zEC12) instructions. Equivalent to MACHINE(ZSERIES-
6).
ZS7
Same as OPTABLE(ZS6) but with the addition of support for the IBM z13
instructions.
|
ZS8
|
Same as OPTABLE(ZS7) but with the addition of support for the IBM z14
|
instructions. Equivalent to MACHINE(ZSERIES-8).
LIST
Produces the Operation Code Table Contents section in the listing.
Equivalent to MACHINE(LIST).
NOLIST
Instructs the assembler not to produce the Operation Code Table Contents
section in the listing. Equivalent to MACHINE(NOLIST).
Notes:
v Any macros that are fetched from SYSLIB receive the current optable setting.
If a switch is made to a different table, any previously resolved macros
might be fetched again. Conversely if a switch is made back to a previously
used table, any macros that were fetched earlier are available again.
|
v Any macros that are defined instream receive the optable setting at the point
|
when they were defined and these macros are unavailable when any other
|
optable setting is in place. For this reason, you must define the macros with
|
each optable setting that the macros are used with.
►►
NORA2
►◄
RA2
RA2
Suppresses error diagnostic message ASMA066W when 2 byte relocatable address
constants are defined in the source
NORA2
Issues error diagnostic message ASMA066W when 2 byte relocatable address
constants are defined in the source
Chapter 5. Assembler instruction statements
109
►►
►◄
NOTYPECHECK
,
MAGNITUDE
(1)
TYPECHECK(
)
NOMAGNITUDE
REGISTER
NOREGISTER
Notes:
1
Choose at least one option.
TYPECHECK(MAGNITUDE)
Specifies that the assembler performs magnitude validation of signed
immediate-data fields of machine instruction operands.
TYPECHECK(NOMAGNITUDE)
Specifies that the assembler not perform magnitude validation of signed
immediate-data fields of machine instruction operands.
TYPECHECK(REGISTER)
Specifies that the assembler performs type checking of register fields of
machine instruction operands.
TYPECHECK(NOREGISTER)
Specifies that the assembler not perform type checking of register fields of
machine instruction operands.
NOTYPECHECK
Specifies that the assembler not perform any type checking of machine
instruction operands.
For further details of the TYPECHECK option, refer to the appendix “TYPECHECK
Assembler Option” in the HLASM Programmer's Guide.
ADATA instruction
The ADATA instruction writes records to the associated data file.
►►
ADATA
sequence_symbol
value1,value2,value3,value4,character_string
►◄
sequence_symbol
Is a sequence symbol.
value1-value4
Up to four values can be specified, separated by commas. If a value is omitted,
the field written to the associated data file contains binary zeros. You must
110
HLASM V1R6 Language Reference
code a comma in the operand for each omitted value. If specified, value1
through value4 must be a decimal self-defining term with a value in the range
-231 to +231-1.
character_string
Is a character string up to 255 bytes long, enclosed in single quotes. If omitted,
the length of the user data field in the associated data file is set to zero.
Notes:
1. All operands can be omitted to produce a record containing binary zeros in all
fields except the user data field.
2. The record written to the associated data file is described in the section
“User-Supplied Information Record X'0070'” in the HLASM Programmer's Guide.
3. If you do not specify the ADATA assembler option, or the GOFF(ADATA) or
the XOBJECT(ADATA) assembler option (z/OS or CMS), the assembler only
checks the syntax of an ADATA instruction, and prints it in the assembler
listing.
4. The assembler writes associated data records to the SYSADATA (z/OS or CMS),
or the SYSADAT (z/VSE) file if the ADATA assembler option has been
specified.
AINSERT instruction
The AINSERT instruction inserts records into the input stream. These records are
queued in an internal buffer until the macro generator has completed expanding
the current outermost macro instruction. At that point the internal buffer queue
provides the next record or records. An operand controls the sequence of the
records within the internal buffer queue.
Note: You can place inserted records at either end of the buffer queue, the records
are removed only from the front of the buffer queue.
►►
AINSERT 'record'
,BACK
►◄
sequence_symbol
,FRONT
sequence_symbol
Is a sequence symbol.
record
Is the record stored in the internal buffer. It can be any characters enclosed in
apostrophes.
The rules that apply to this character string are:
v Variable symbols are allowed.
v The string can be up to 80 characters in length. If the string is longer than 80
characters, only the first 80 characters are used, the rest of the string is
ignored.
BACK
The record is placed at the back of the internal buffer.
FRONT
The record is placed at the front of the internal buffer.
Chapter 5. Assembler instruction statements
111
Notes:
1. The ICTL instruction does not affect the format of the stored records. The
assembler processes these records according to the standard begin, end, and
continue columns.
2. The assembler does not check the sequence field of the stored records, even
when the ISEQ instruction is active.
3. Continuation is ignored for the last record in the AINSERT buffer but is active
for all other records.
Example:
MACRO
MAC1
.A
AINSERT ’INSERT
RECORD NUMBER ONE’,FRONT
Insert record into the input stream
.B
AINSERT ’INSERT
RECORD NUMBER TWO’,FRONT
Insert record at the top of the input stream
.C
AINSERT ’INSERT
RECORD NUMBER THREE’,BACK
Insert record at the bottom of the input stream
&FIRST
AREAD
Retrieve record TWO from the top of the input stream
.D
AINSERT ’INSERT
RECORD NUMBER FOUR’,FRONT
Insert record at the top of the input stream
&SECOND
AREAD
Retrieve record FOUR from the top of the input stream
MEND
CSECT
MAC1
END
In this example, the variable &FIRST receives the operand of the AINSERT
statement created at .B. &SECOND receives the operand of the AINSERT statement
created at .D. The operand of the AINSERT statements at .A and .C are in the
internal buffer in the sequence .A followed by .C and are the next statements
processed when the macro generator has finished processing.
ALIAS instruction
The ALIAS instruction specifies an alternate name for an external symbol that
identifies control sections, entry points, and external references. The instruction has
nothing to do with the link-time aliases in libraries.
►► symbol ALIAS alias_string
►◄
symbol
Is an external symbol that is represented by one of the following:
v An ordinary symbol
v A variable symbol that has been assigned a character string with a value that
is valid for an ordinary symbol
alias_string
Is the alternate name for the external symbol, represented by one of the
following:
v A character constant in the form C'aaaaaaaa', where aaaaaaaa is a string of
characters each of which has a hexadecimal value in the range X'42' - X'FE'.
112
HLASM V1R6 Language Reference
v A hexadecimal constant in the form X'xxxxxxxx', where xxxxxxxx is a string
of hexadecimal digits, each pair of which is in the range X'42' - X'FE'.
The ordinary symbol denoted by symbol must also appear in one of the following
in this assembly:
v The name entry field of a START, CSECT, RSECT, COM, or DXD instruction
v The name entry field of a DSECT instruction and the nominal value of a Q-type
offset constant
v The operand of an ENTRY, EXTRN, or WXTRN instruction
v The nominal value of a V-type address constant
The assembler uses the string denoted by alias_string to replace the external symbol
denoted by symbol in the external symbol dictionary records in the object module.
Because the change is made only in the external symbol dictionary, references to
the ALIASed symbol in the source program must use the original symbol. If the
string is shorter than eight characters, or 16 hexadecimal digits, it is padded on the
right with EBCDIC spaces (X'40'). If the string is longer than eight characters, it is
truncated. Some programs that process object modules do not support external
symbols longer than 8 characters.
z/VM and z/OS
If the extended object format is being generated (GOFF assembler option),
the alias_string can be up to 256 characters, or 512 hexadecimal digits.
The following examples show both formats of the alternate name denoted by
alias_string.
EXTSYM1
ALIAS
C’lower1’
EXTSYM2
ALIAS
X’9396A68599F2’
The alias_string must not match any external symbol, regardless of case. References
to an ALIASed symbol must be made using the original name; the original symbol
is changed only in the external symbol dictionary. For example, you write
EXTRN
EXTSYM1
to refer to the external symbol 'lower1'.
Aliased names are not checked against ALIASes for possible duplicates or conflicts.
For an example of an ALIAS instruction, refer to “External Symbol Dictionary
(ESD)” in the HLASM Programmer's Guide
AMODE instruction
The AMODE instruction specifies the addressing mode for a control section,
ENTRY symbol, or EXTRN symbol. See also “Establishing residence and
addressing mode” on page 68 and “RMODE instruction” on page 215.
Chapter 5. Assembler instruction statements
113
►►
AMODE
24
►◄
name
31
64
ANY
ANY31
ANY64
name
Name of the control section or, if the GOFF assembler option is specified, the
ENTRY symbol or EXTRN symbol. If name is omitted or is a sequence symbol
(see “Symbols” on page 29), the addressing mode applies to the unnamed
control section.
z/VM and z/OS
If the extended object format is being generated (GOFF assembler
option), name is a relocatable symbol that names an entry point
specified on an ENTRY instruction, or on an external symbol specified
on an EXTRN instruction.
24
Specifies that 24 bit addressing mode is to be associated with a control section,
or entry point.
31
Specifies that 31 bit addressing mode is to be associated with a control section,
or entry point.
64
Specifies that 64 bit addressing mode is to be associated with a control section,
or entry point (see “64 bit addressing mode” on page 102).
ANY
The same as ANY31.
ANY31
The control section or entry point is not sensitive to whether it is entered in
AMODE 24 or AMODE 31.
ANY64
The control section or entry point is not sensitive to whether it is entered in
AMODE 24, AMODE 31, or AMODE 64.
Any field of this instruction can be generated by a macro, or by substitution in
open code.
Notes:
1. AMODE can be specified anywhere in the assembly. It does not initiate an
unnamed control section.
2. AMODE is permitted on external labels (EXTRNs) and Entry labels for both
GOFF formats and Parts for GOFF formats.
3. An assembly can have multiple AMODE instructions; however, two AMODE
instructions cannot have the same name field.
4. The valid and invalid combinations of AMODE and RMODE are shown in the
following table. Combinations involving AMODE 64 and RMODE 64 are
subject to the support outlined in “64 bit addressing mode” on page 102.
114
HLASM V1R6 Language Reference
Table 11. AMODE/RMODE combinations
RMODE 24
RMODE 31
RMODE 64
AMODE 24
OK
invalid
invalid
AMODE 31
OK
OK
invalid
AMODE ANY|ANY31
OK
OK
invalid
AMODE 64|ANY64
OK
OK
OK
5. The defaults used when there is no mode or one MODE is specified are shown
in the following table. Combinations involving AMODE 64 and RMODE 64 are
subject to the support outlined in “64 bit addressing mode” on page 102.
Table 12. AMODE/RMODE defaults
Specified
Default
Neither
AMODE 24, RMODE 24
AMODE 24
RMODE 24
AMODE 31
RMODE 24
AMODE ANY|ANY31
RMODE 24
RMODE 24
AMODE 24
RMODE 31
AMODE 31
AMODE 64
RMODE 31
AMODE ANY64
RMODE 31
RMODE 64
AMODE 64
CATTR instruction (z/OS and CMS)
The CATTR instruction establishes a program object external class name, and
assigns binder attributes for the class. This instruction is valid only when you
specify the GOFF or XOBJECT assembler option.
,
►► class_name CATTR
attribute
►◄
class_name
Is a valid program object external class name. The class name must follow the
rules for naming external symbols, except that:
v Class names are restricted to a maximum of 16 characters
v Class names with an underscore (_) in the second character are reserved for
IBM use; for example B_TEXT. If you use a class name of this format, it
might conflict with an IBM-defined binder class.
attribute
Is one or more binder attributes that are assigned to the text in this class:
ALIGN(n)
Aligns the text on a 2n boundary. n is an integer with value 0, 1, 2, 3, 4, or
12. If not specified, then the SECTALGN option value (8 is the default,
Chapter 5. Assembler instruction statements
115
corresponding to ALIGN(3)) is used (see the section “SECTALGN” in the
HLASM Programmer's Guide for more information).
Note: Execution-time support of the desired alignment depends on its
being respected by other operating system components such as linkers and
loaders.
DEFLOAD
The text is not loaded when the program object is brought into storage, but
is probably requested, and therefore partially loaded, for fast access.
EXECUTABLE
The text can be branched to or executed—it is instructions, not data.
|
FILL(nnn)
|
The fill character to be attached to this part. The value must be specified as
|
an unsigned decimal number and must lie between 0 and 255. An invalid
|
priority is ignored and the diagnostic message 'ASMA062E Illegal operand
|
format xxxxxx' is issued.
|
The FILL attribute can be specified on the first CATTR instruction for the
|
part. If the FILL attribute is specified on the second or subsequent CATTR
|
instruction for the part, the FILL attribute is ignored and the diagnostic
|
message ASMA191W is issued.
|
The FILL attribute is ignored if there is no PART attribute on the CATTR
|
instruction and the diagnostic message 'ASMA062E Illegal operand format
|
xxxxxx' is issued.
MOVABLE
The text can be moved, and is reenterable (that is, it is free of
location-dependent data such as address constants, and executes normally
if moved to a properly aligned boundary).
NOLOAD
The text for this class is not loaded when the program object is brought
into storage. An external dummy section is an example of a class which is
defined in the source program but not loaded.
NOTEXECUTABLE
The text cannot be branched to or executed (that is, it is data, not
instructions).
NOTREUS
The text is marked not reusable.
PART(part-name)
Identifies or continues the part with the name part-name. The part-name can
be up to 63 characters in length. An invalid part-name is ignored and
diagnostic message 'ASMA062E Illegal operand format xxxxxx' is issued.
Binding attributes assigned to the class are also assigned to the part. Both
the class and the part are assigned to Name Space 3 and are assigned the
merge attribute.
Text within a part cannot contain an entry point. If an entry point is found
within the part it is ignored and diagnostic message 'ASMA048E Entry
error - xxxxxxxx' is issued.
The following rules apply to the validation of the PART attribute on the
CATTR instruction:
116
HLASM V1R6 Language Reference
v If the PART attribute has not been specified on the first CATTR
statement for the class, but is specified on subsequent CATTR statements
for the class, the attribute is ignored and diagnostic message
ASMA191W is issued.
v If the PART attribute has been specified on the first CATTR statement
for the class, but is not specified on subsequent CATTR statements for
the class, the diagnostic message ASMA155S is issued.
v Multiple parts can be defined within a class.
PRIORITY(nnnnn)
The binding priority to be attached to this part. The value must be
specified as an unsigned decimal number and must lie between 0 and
231-1. An invalid priority is ignored and diagnostic message 'ASMA062E
Illegal operand format xxxxxx' is issued.
The PRIORITY attribute can be specified on the first CATTR instruction for
the part. If the PRIORITY attribute is specified on second or subsequent
CATTR instructions for the part it is ignored and the diagnostic message
ASMA191W is issued.
The PRIORITY attribute is ignored if there is no PART attribute on the
CATTR instruction and the diagnostic message 'ASMA062E Illegal operand
format xxxxxx' is issued.
READONLY
The text is storage-protected.
REFR
The text is marked refreshable.
REMOVABLE
The content of this class can be discarded from the program object at bind
time if the user specifies an appropriate binder option. This might help
reduce the size of the program object.
RENT
The text is marked reenterable.
REUS
The text is marked reusable.
RMODE(24)
The text has a residence mode of 24.
RMODE(31)
The text has a residence mode of 31.
|
RMODE(64)
|
The text has a residence mode of 64.
RMODE(ANY)
The text can be placed in any addressable storage.
These attributes are accepted by the assembler and encoded in the GOFF object
file, but some are not processed by the binder.
Refer to the z/OS MVS Program Management: User's Guide and Reference,
SA22-7643 for details about the binder attributes.
Default Attributes: When you do not specify attributes on the CATTR instruction
the defaults are: ALIGN(3),EXECUTABLE,NOTREUS,RMODE(24) The LOAD
attribute is the default if DEFLOAD or NOLOAD are not specified.
Chapter 5. Assembler instruction statements
117
Where to Use the CATTR Instruction: Use the CATTR instruction anywhere in a
source module after any ICTL or *PROCESS statements. The CATTR instruction
must be preceded by a START, CSECT, or RSECT statement, otherwise the
assembler issues diagnostic message ASMA190E.
A section can contain any number of classes. Any machine language instructions or
data appearing after a CATTR instruction are components of the element defined
by the section and class names. An element is a separately relocatable component
of the resulting program object, and is typically bound with other elements having
the same attributes.
If several CATTR instructions within a source module have the same class name,
the first occurrence establishes the class and its attributes, and the rest indicate the
continuation of the text for the class. If you specify attributes on subsequent
CATTR instructions having the same class name as a previous CATTR instruction,
the assembler ignores the attributes and issues diagnostic message ASMA191W.
If you specify conflicting attributes on the same instruction, the assembler uses the
last one specified. In the following example, the assembler uses RMODE(ANY):
MYCLASS CATTR RMODE(24),RMODE(ANY)
Syntax Checking Only: If you code a CATTR instruction but do not specify the
GOFF or XOBJECT option, the assembler checks the syntax of the instruction
statement and does not process the attributes.
CCW and CCW0 instructions
The CCW and CCW0 instructions define and generate an 8 byte, format-0 channel
command word for input/output operations. A format-0 channel command word
allows a 24 bit data address. The CCW and CCW0 instructions have identical
functions. If a control section has not been established, CCW and CCW0 initiate an
unnamed (private) control section.
►►
CCW
command_code,data_address,flags,data_count
►◄
symbol
CCW0
symbol
Is one of the following:
v An ordinary symbol
v A variable symbol that has been assigned a character string with a value that
is valid for an ordinary symbol
v A sequence symbol
command_code
Is an absolute expression that specifies the command code. This expression's
value is right-aligned in byte 0 of the generated channel command word.
data_address
Is a relocatable or absolute expression that specifies the address of the data to
operate upon. This value is treated as a 3 byte, A-type address constant. The
value of this expression is right-aligned in bytes 1 to 3 of the generated
channel command word.
118
HLASM V1R6 Language Reference
flags
Is an absolute expression that specifies the flags for bits 32 to 39, and is
right-aligned, of the generated channel command word. The value of this
expression is right-aligned in byte 4 of the generated channel command word.
Byte 5 is set to zero by the assembler.
data_count
Is an absolute expression that specifies the byte count or length of data. The
value of this expression is right-aligned in bytes 6 and 7 of the generated
channel command word.
The generated channel command word is aligned at a doubleword boundary. Any
skipped bytes are set to zero.
The internal machine format of a channel command word is shown in Table 13.
Table 13. Channel command word, format 0
Byte
Bits
Usage
0
0-7
Command code
1-3
8-31
Address of data to operate upon
4
32-39
Flags
38-39
Must be specified as zeros
5
40-47
Set to zeros by assembler
6-7
48-63
Byte count or length of data
If symbol is an ordinary symbol or a variable symbol that has been assigned an
ordinary symbol, the ordinary symbol is assigned the value of the address of the
first byte of the generated channel command word. The length attribute value of
the symbol is 8.
Here is an example of a channel program:
LocRcd CCW X’47’,LocData,X’48’,L’LocData Locate record
CCW0
X’06’,MyData,X’40’,MyBlkSize
Read Data
CCW0
X’06’,MyData+MyBlkSize,0,80
Read Data
LocData DC
XL16’0’
Locate Record data, set at run time
z/OS Using EXCP or EXCPVR access methods: If you use the EXCP or EXCPVR
access method, you must use CCW or CCW0, because EXCP and EXCPVR
do not support 31-bit data addresses in channel command words.
Specifying RMODE: Use RMODE 24 with CCW or CCW0 if you wish to ensure
that valid data addresses are generated. If you use RMODE ANY with CCW or
CCW0, an invalid data address in the channel command word can result at
execution time. If your program has an RMODE value other than 24, you might
choose to code 0 or an absolute expression for the data addresses. When your
program runs, it can copy the channel program to 24-bit storage for execution and
set or relocate the address fields.
Chapter 5. Assembler instruction statements
119
CCW1 instruction
The CCW1 instruction defines and generates an 8 byte format-1 channel command
word for input/output operations. A format-1 channel command word allows 31
bit data addresses. A format-0 channel command word generated by a CCW or
CCW0 instruction allows only a 24 bit data address. If a control section has not
been established, CCW1 initiates an unnamed (private) control section.
►►
CCW1
command_code,data_address,flags,data_count
►◄
symbol
symbol
Is one of the following:
v An ordinary symbol
v A variable symbol that has been assigned a character string with a value that
is valid for an ordinary symbol
v A sequence symbol
command_code
Is an absolute expression that specifies the command code. This expression's
value is right-aligned in byte 0 of the generated channel command word.
data_address
Is a relocatable or absolute expression that specifies the address of the data to
operate upon. This value is treated as a 4 byte, A-type address constant. The
value of this expression is right-aligned in bytes 4 to 7 of the generated
channel command word.
flags
Is an absolute expression that specifies the flags for bits 8 to 15 of the
generated channel command word. The value of this expression is
right-aligned in byte 1 of the generated channel command word.
data_count
Is an absolute expression that specifies the byte count or length of data. The
value of this expression is right-aligned in bytes 2 and 3 of the generated
channel command word.
The generated channel command word is aligned at a doubleword boundary. Any
skipped bytes are set to zero.
The internal machine format of a channel command word is shown in Table 14.
Table 14. Channel command word, format 1
Byte
Bits
Usage
0
0-7
Command code
1
8-15
Flags
2-3
16-31
Count
4
32
Must be zero
4-7
33-63
Data address
120
HLASM V1R6 Language Reference

 

 

 

 

 

 

 

Content      ..     5      6      7      8     ..