Several syntax elements are used in multiple Debug Tool commands. These elements are described in the following topics. Some of these syntax elements are generic and do not require a syntax diagram.
Refer to the following topics for more information related to the material discussed in this topic.
A hexadecimal address for a location in memory. An address can contain up to 16 hexadecimal digits. If address contains more than 8 significant hexadecimal digits, Debug Tool assumes that address references 64-bit addressable storage. If address contains 7 or 8 significant hexadecimal digits, Debug Tool assumes that address references 31-bit addressable storage. Otherwise, Debug Tool assumes address references 24-bit addressable storage.
References to code (instructions) and save areas can contain no more than 8 significant hexadecimal digits.
address must have one of the following formats:
For COBOL or non-Language Environment COBOL, X followed by apostrophes (') or quotation marks (") surrounding the hexadecimal value.
A block_name identifies:
The current block qualification can be changed by using the SET QUALIFY BLOCK command.
You can use block_name only for blocks known in the current enclave.
A block_spec identifies a block in the program being debugged.

You can use block_name only for blocks known in the current enclave.
int function(int, int) is function(int, int)
Refer to the following topics for more information related to the material discussed in this topic.
A simple relational condition. Particular rules for forming the relational condition depend on the current programming language setting.
Refer to the following topics for more information related to the material discussed in this topic.
A compile_unit_name identifies any of the following items:
LIST CU2:>CU2:>var1To avoid the ambiguity, use the following statement to list the value of the variable var1 correctly scoped to the function CU2:
LIST "CU2":>CU2:>var1
If the compile unit name is not a valid identifier in the current programming language, it must be entered as a character string constant in the current programming language.
The current compile unit qualification can be changed using the SET QUALIFY CU command.
A cu_spec identifies a compile unit in the application being debugged. In PL/I, the compile unit name is the same as the outermost procedure name in the program.

If cu_spec is omitted, the current load module qualification is used.
You can use cu_spec to specify compile units only in an enclave that is currently running. Therefore, you can qualify only variable names, function names, labels, and statement_ids to blocks within compile units in the current enclave.
Refer to the following topics for more information related to the material discussed in this topic.
An expression is a combination of references and operators that result in a value. For example, it can be a single constant, a program, session, or Debug Tool variable, a built-in function reference, or a combination of constants, variables, and built-in function references, or operators and punctuation (such as parentheses).
Particular rules for forming an expression depend on the current programming language setting and what release level of the language run-time library under which Debug Tool is running. For example, if you upgrade your version of the HLL compiler without upgrading your version of Debug Tool, certain application programming interface inconsistencies might exist.
You can use expressions for only variables contained in the current enclave.
Refer to the following topics for more information related to the material discussed in this topic.
A load_module_name is the name of a file, object, or dynamic link library (DLL) that has been loaded by a supported HLL load service or a subsystem. For example, an enclave can contain load modules, which in turn contain compile units.
For C, escape sequences in load module names that are specified as strings are not processed if the string is part of a qualification statement.
If the load_module_name is omitted from a name that allows it as a qualifier, the current load module qualification is assumed. The load_module_name can be changed by using the SET QUALIFY LOAD command.
If two enclaves contain duplicate modules, references to compile units in the modules will be ambiguous, and will be flagged as errors. However, if the compile unit is in the currently executing load module, that load module is assumed and no check for ambiguity will be performed. Therefore, for Debug Tool, load module names must be unique.
A load_spec identifies a load module in the program being debugged.

The load_spec can be specified as a string constant in the current programming language, for example, a string literal in C or a character literal in COBOL. If not specified as such, it must be a valid identifier in the current programming language.
Refer to the following topics for more information related to the material discussed in this topic.
An offset_spec identifies an offset specification.

Refer to the following topics for more information related to the material discussed in this topic.
A reference is a subset of an expression that resolves to an area of storage, that is, a possible target of an assignment statement. For example, it can be a program, session, or Debug Tool variable, an array or array element, or a structure or structure element, and any of these can be pointer-qualified (in programming languages that allow it). Any identifying name in a reference can be optionally qualified by containing structure names and names of blocks where the item is visible. It is optionally followed by subscript and substring modifiers, following the rules of the current programming language.
The specification of a qualified reference includes all containing structures and blocks as qualifiers, and can optionally begin with a load module name qualifier. For example, when the current programming language setting is C, mod::>cu:>proc:>struc1.struc2.array[23]. However, in assembler, disassembly, and non-Language Environment COBOL, variable names cannot be qualified with load module, compile unit, or block names.
When the current programming language setting is C and C++, the term lvalue is used in place of reference.
If you are debugging a program that was compiled with a version earlier than Enterprise PL/I Version 3.5 with the PTFs for APARs PK35230 and PK35489 applied, Debug Tool does not support the use of a qualified reference that includes block_spec, cu_spec, or load_spec.
If you are debugging a program compiled with one of the following compilers and running in the following environment, Debug Tool does support the use of a qualified reference that includes block_spec, cu_spec, or load_spec:
If you are debugging a program that was compiled with an Enterprise PL/I compiler and Debug Tool is at an entry to a block, you can not list or reference any variable or expression that includes variables declared in the block being entered.
A COBOL reference can be a data name, which can be any of the following, according to the rules of the COBOL language:
A COBOL reference can be to any special register, except for the following special registers:
Particular rules for forming a reference depend on the current programming language setting and what release level of the language run-time library Debug Tool is running under. For example, if you upgrade your version of the HLL compiler without upgrading your version of Debug Tool, certain application programming interface inconsistencies might exist.
A statement_id identifies an executable statement in a manner appropriate for the current programming language. This can be a statement number, sequence number, or source line number. The statement id is an integer or integer.integer (where the first integer is the line number and the second integer is the relative statement number). For example, you can specify 3, 3.0, or 3.1 to signify the first relative statement on line 3. C, C++, COBOL, and PL/I allow multiple statements or verbs within a source line.
You can only use statement identifiers for statements that are known in the current enclave.
A statement_id_range identifies a source statement id or range of statement ids. Stmt_id_spec identifies a statement id specification.

A range of statements can be identified by specifying a beginning and ending statement id, separated by a hyphen (-). When the current programming language setting is COBOL, blanks are required around the hyphen (-). Blanks are optional for C and C++ and PL/I. Both statement ids must be in the same block, the second statement cannot occur before the first in the source program, and they cannot be equal.
A single statement id is also an acceptable statement id range and is considered to begin and end at the same statement. A single statement id range consists of only one statement or verb even in a multistatement line.
Refer to the following topics for more information related to the material discussed in this topic.
A statement_label identifies a statement using its source label. The specification of a qualified statement label includes all containing compile unit names or block names, and can optionally begin with a load module name qualifier. For example:
mod::>proc1:>proc2:>block1:>start
The form of a label depends on the current programming language:
You can only use statement labels for labels that are known in the current enclave.
A contiguous text string that represents a changeable value. You can create a variable_name that can be used in several different programming languages. The variable_name must comply with the following syntax rules:
Debug Tool also supports the creation of a variable_name that is written to programming language-specific syntax rules. However, if you create a variable_name that is written to a specific programming language syntax, you cannot use that variable_name in programs written in a different programming language. For example, in COBOL a variable name can contain the dash character (-). If you create a variable_name that contains a dash, you cannot use that variable_name in a PL/I or C/C++ program.