Comparison of macro and conditional assembly

Element DOS/VSE Assembler Assembler H Version 2 High Level Assembler
External Function calls using high level programming language No No Yes
Built-In Functions for SETA, SETB, and SETC expressions No No Yes
Substring length value

The second subscript value of the substring notation can be specified as an (*).

No No Yes
Library macros in source format No, library macros must be stored in edited format Yes Yes
Macro definitions can appear anywhere in your source module. No, they must be at the start of the source file. Yes Yes
Editing macro definitions

Use conditional assembly statement to avoid editing of macros.

No Yes Yes
Redefining macros

A macro definition can be redefined at any point in the source code.

No Yes Yes
Nesting macro definitions

Allow inner macro definitions.

No Yes Yes
Generated macro instruction operation codes

Macro instruction operation codes can be generated by substitution.

No Yes Yes
Multilevel sublists in macro instruction operands

Multilevel sublists (sublists within sublists) are permitted in macro instruction operands and in keyword default values in prototype statements.

No Yes Yes
DBCS language support

Double-byte data is supported by the macro language.

No Yes Yes
Macro names, variable symbols (including the ampersand) and sequence symbols (including the period) can be up to a maximum of 63 characters. No, limited to 8 characters Yes Yes
Comments (both ordinary comments beginning with '*' and internal macro comments beginning with '.*') can be inserted between the macro header and the prototype and, for library macros, before the macro header. No Yes Yes
Any mnemonic operation code, or any assembler operation code, can be defined as a macro instruction. No Yes Yes
Any instruction, except ICTL, is permitted within a macro definition. No Yes Yes
AIF statements

The AIF statement can include a string of logical expressions and related sequence symbols.

No Yes Yes
AGO statements

The AGO statement can contain computed branch sequence information.

No Yes Yes
SETx statements

The SETA, SETB and SETC statements can assign lists or arrays of values to subscripted SET symbols.

No Yes Yes
SET symbol format and definition changes
  • A macro definition or open code can contain more than one declaration for a given SET symbol, as long as only one is encountered during a given macro expansion or conditional assembly.
  • A SET symbol that has not been declared in a LCLx or GBLx statement is implicitly declared by appearing in the name field of a SETx statement.
  • A SET symbol can be defined as an array of values by adding a subscript after it, when it is declared, either explicitly or implicitly.
No Yes Yes
Created SET symbols

SET symbols may be created during the generation of a macro.

No Yes Yes
Using SETC variables in arithmetic expressions

You can use a SETC variable as an arithmetic term if its character string value represents a valid self-defining term.

No Yes Yes
Forward attribute references

If an attribute reference is made to a symbol that has not yet been encountered, the assembler scans the source code either until it finds the referenced symbol in the name field of a statement in open code, or until it reaches the end of the source module.

No Yes Yes
Attribute reference using SETC variables

You can take an attribute reference for a symbol specified as:

  • The name of the ordinary symbol itself
  • The name of a symbolic parameter whose value is the name of the ordinary symbol
  • The name of a SETC symbol whose value is the name of the ordinary symbol
No Yes Yes
Number attributes for SET symbols

The number attribute can be applied to SETx variables to determine the highest subscript value of a SET symbol array to which a value has been assigned in a SETx instruction.

No Yes Yes
Alternate format in conditional assembly

The alternate format allows a group of operands to be spread over several lines of code.

No Yes Yes
Maximum number of symbolic parameters and macro instruction operands 200 No fixed maximum No fixed maximum
Mixing positional and keyword symbolic parameters and macro instruction operands All positional parameters or operands must come first. Keyword parameters or operands can be interspersed among positional parameters or operands. Keyword parameters or operands can be interspersed among positional parameters or operands.
SET symbol declaration Declaration of local symbols must immediately precede declaration of global symbols.

Declaration of global and local symbols must immediately follow prototype statement if in macro definition.

Declaration of global and local symbols must immediately follow source macro definitions, if in open code.

Declaration of local and global symbols can be mixed.

Declaration of global and local symbols does not need to immediately follow prototype statement if in macro definition.

Declaration of global and local symbols does not need to immediately follow source macro definitions, if in open code.

Declaration of local and global symbols can be mixed.

Declaration of global and local symbols does not need to immediately follow prototype statement if in macro definition.

Declaration of global and local symbols does not need to immediately follow source macro definitions, if in open code.

Maximum dimension for subscripted SET Symbols 4095 Not limited Not limited
Duplication factor allowed in SETC instruction No Yes Yes
Dynamically extended SET symbol arrays No Yes Yes
Number of terms in arithmetic expressions in conditional assembly Up to 16 Not limited Not limited
Levels of parentheses in arithmetic expressions in conditional assembly Up to 5 Not limited Not limited
MNOTE with error in macro is flagged at each invocation Yes No No
Blank lines treated as equivalent to ASPACE 1. No No Yes
Name entry of macro instruction must be a valid symbol Yes Yes No
Ampersand preceding the SET symbols being declared is optional No No Yes
Predefined absolute symbols allowed in arithmetic expression No No Yes
Predefined absolute symbols allowed in SETx instruction No No Yes
Type attribute of CNOP Label is set to 'I' No, set to 'J' No, set to 'J' Yes
Length, scaling and integer attribute allowed for ordinary symbols, SETC symbols and literals in open code No No Yes
Sublists assigned to SETC symbols can be passed to macro definitions and be recognized as sublists No No Yes

[ Top of Page | Previous Page | Next Page | Contents | Index ]