HLASM Language Reference
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


&SYSECT System Variable Symbol

HLASM Language Reference
SC26-4940-06

Use &SYSECT in a macro definition to generate the name of the current control section. The current control section is the control section in which the macro instruction that calls the definition appears. You cannot use &SYSECT in open code.

The local-scope system variable symbol &SYSECT is assigned a read-only value each time a macro definition is called.

The value assigned is the symbol that represents the name of the current control section from which the macro definition is called. Note that it is the control section in effect when the macro is called. A control section that has been initiated or continued by substitution does not affect the value of &SYSECT for the expansion of the current macro. However, it might affect &SYSECT for a subsequent macro call. Nested macros cause the assembler to assign a value to &SYSECT that depends on the control section in force inside the outer macro when the inner macro is called.
Notes:
  1. The control section whose name is assigned to &SYSECT can be defined by a program sectioning statement. This can be a START, CSECT, RSECT, DSECT, or COM statement.
  2. The value of the type attribute of &SYSECT (T'&SYSECT) is always U.
  3. The value of the count attribute (K'&SYSECT) is equal to the number of characters assigned as a value to &SYSECT.
  4. Throughout the use of a macro definition, the value of &SYSECT is considered a constant, independent of any program sectioning statements or inner macro instructions in that definition.
The next example shows these rules:
         MACRO
         INNER           &INCSECT
&INCSECT CSECT                               Statement 1
         DC              A(&SYSECT)          Statement 2
         MEND

         MACRO
         OUTER1
CSOUT1   CSECT                               Statement 3
         DS              100C
         INNER           INA                 Statement 4
         INNER           INB                 Statement 5
         DC              A(&SYSECT)          Statement 6
         MEND

         MACRO
         OUTER2
         DC              A(&SYSECT)          Statement 7
         MEND
-------------------------------------------------------------------
MAINPROG CSECT                               Statement 8
         DS              200C
         OUTER1                              Statement 9
         OUTER2                              Statement 10
-------------------------------------------------------------------
Generated Program
-------------------------------------------------------------------
MAINPROG CSECT
         DS              200C
CSOUT1   CSECT
         DS              100C
INA      CSECT
         DC              A(CSOUT1)
INB      CSECT
         DC              A(INA)
         DC              A(MAINPROG)
         DC              A(INB)
In this example:
  • Statement 8 is the last program sectioning statement processed before statement 9 is processed. Therefore, &SYSECT is assigned the value MAINPROG for macro instruction OUTER1 in statement 9. MAINPROG is substituted for &SYSECT when it appears in statement 6.
  • Statement 3 is the program sectioning statement processed before statement 4 is processed. Therefore, &SYSECT is assigned the value CSOUT1 for macro instruction INNER in statement 4. CSOUT1 is substituted for &SYSECT when it appears in statement 2.
  • Statement 1 is used to generate a CSECT statement for statement 4. This is the last program sectioning statement that appears before statement 5. Therefore, &SYSECT is assigned the value INA for macro instruction INNER in statement 5. INA is substituted for &SYSECT when it appears in statement 2.
  • Statement 1 is used to generate a CSECT statement for statement 5. This is the last program sectioning statement that appears before statement 10. Therefore, &SYSECT is assigned the value INB for macro instruction OUTER2 in statement 10. INB is substituted for &SYSECT when it appears in statement 7.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014