|
Data management macros follow the rules of assembler language and
are written in the following format:
Name |
Operation |
Operands (Parameters) |
Comments |
---|
Symbol or blank |
Macro name |
None, one or more operands separated
by commas |
|
Use the operands to specify services and options you need and code
them according to the following general rules:
If you need to substitute a name, value, or address, the notation
you use depends on the operand you are coding. The following two examples
show how an operand can be coded:
- DDNAME=symbol
- In this example, you can only code a valid assembler-language
symbol for the operand.
- dcb address-RX-Type Address,
(2-12), or (1)
- In the above example, you can substitute an RX-type address,
any general register 2 through 12, or general register 1.
The following examples show what each notation means and how you
can code an operand:
- symbol
- Any valid assembler-language symbol, which is an
alphabetic character followed by 0–61 alphanumeric or national
characters, with no special characters except underscore and no blanks.
- decimal digits
- Any decimal digits up to the maximum value allowed for the specific
operand. If both symbol and decimal digit are used, an absolute expression
is also allowed.
- (2-12)
- Any of the general registers 2 through 12, coded in parentheses,
to distinguish the register number from an A-type address. For example,
if you code register 3, use the form (3). The following is
an example with the CLOSE macro:
CLOSE ((3))
If you
want to use one of the registers 2 through 12, code it as a decimal
number, a symbol (equated to a decimal number), or an expression that
yields a value of 2 through 12.
- (1)
- You can use general register 1 as an operand. Specify the register
as (1). When register 1 is used as an operand, the instruction that
loads the parameter value into the register is not included in the
macro expansion.
- (0)
- You can use general register 0 as an operand. Specify the register
as (0). When register 0 is used as an operand, the instruction that
loads the parameter value into the register is not included in the
macro expansion.
- RX-Type Address
- Any valid assembler-language RX-type address. The following
shows examples of each valid RX-type address:
Name |
Operation |
Operand |
---|
ALPHA1 |
L |
1,39(4,10) |
ALPHA2 |
L |
REG1,39(4,TEN) |
BETA1 |
L |
2,ZETA(4) |
BETA2 |
L |
REG2,ZETA(REG4) |
GAMMA1 |
L |
2,ZETA |
GAMMA2 |
L |
REG2,ZETA |
GAMMA3 |
L |
2,=F'1000' |
LAMBDA1 |
L |
3,20(,5) |
Both ALPHA instructions specify explicit addresses; REG1
and TEN are absolute symbols. Both use index registers. Both BETA
instructions specify implied addresses. Indexing is omitted from the
BETA and GAMMA instructions. GAMMA1 and GAMMA2 specify implied addresses.
The second operand of GAMMA3 is a literal. LAMBDA1 specifies an explicit
address with no indexing.
- A-Type Address
- Any address that can be written as a valid assembler-language
A-type address constant. You can write an A-type address constant
as an absolute value, a relocatable symbol, or a relocatable expression.
Operands that require an A-type address are inserted into an A-type
address constant during the macro expansion process.
- absexp
- An absolute value or expression. An absolute expression can
be an absolute term or an arithmetic combination of absolute terms.
An absolute term can be a nonrelocatable symbol, a self-defining term,
or the length attribute reference.
- relexp
- A relocatable symbol or expression. A relocatable symbol or
expression is one whose value changes by n if the program in which
it appears is relocated n bytes away from its originally assigned
area of storage.
|