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


Scope and variability of system variable symbols

HLASM Language Reference
SC26-4940-06

Global Scope
Some system variable symbols have values that are established at the beginning of an assembly and are available both in open code and from within macros. These symbols have global scope. Most system variable symbols with global scope have fixed values, although there are some whose value can change within a single macro expansion. The global-scope system variables symbols with variable values are &SYSSTMT, &SYSM_HSEV, and &SYSM_SEV.
Local Scope
Some system variable symbols have values that are available only from within a macro expansion. These system variables have local scope. Since the value of system variable symbols with local scope is established at the beginning of a macro expansion and remains unchanged throughout the expansion, they are designated as having constant values, even though they might have different values in a later expansion of the same macro, or within inner macros.
Over half of the system variable symbols have local scope and therefore are not available in open code.
Figure 1. Exposing the value of a local scope variable to open code
                                      1          macro
                                      2          getlocalsys
                                      3 .*       Define globals for values of interest
                                      4          Gblc  &clock,&location,&dsname,&nest
                                      5          Gbla  &nesta
                                      6 .*       now update the globals from within the macro
                                      7 &clock    setc '&sysclock'
                                      8 &location setc '&sysloc'
                                      9 &dsname  setc  '&sysin_dsn'
                                     10 &nest    setc  '&sysnest'
                                     11 &nesta   seta  &sysnest
                                     12          mend
000000                00000 00020    14 r        csect
                                     15 *
                                     16 *        define globals in opencode
                                     17 *
                                     18          Gblc  &clock,&location,&dsname,&nest
                                     19          Gbla  &nesta
                                     20 *
                                     21 *        invoke macro to update the global values
                                     22 *
                                     23          getlocalsys
                                     24 *
                                     25 *        now use the updated values
                                     26 *
                                     27          dc    c'&clock'
000000 F2F0F0F460F0F660                +         dc    c'2008-07-11 17:48:42.914829'
                                     28          dc    c'&nest'
00001A F1                              +         dc    c'1'
                                     29          dc    f'&nesta'
00001B 00
00001C 00000001                        +         dc    f'1'
000000                               31          end r
Uses, values, and properties
System variable symbols have many uses, including:
  • Helping to control conditional assemblies
  • Capturing environmental data for inclusion in the generated object code
  • Providing program debugging data

Refer to Macro and conditional assembly language summary for a summary of the values and properties that can be assigned to system variable symbols.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014