[an error occurred while processing this directive]
![]() |
![]() HP OpenVMS Systems Documentation |
![]() |
OpenVMS Debugger Manual
C.8 COBOL
The following subtopics describe debugger support for COBOL.
Supported COBOL operators in language expressions include:
C.8.2 Constructs in Language and Address ExpressionsSupported constructs in language and address expressions for COBOL follow:
C.8.3 Data TypesSupported COBOL data types follow:
Floating-point numbers of type COMP-1 may be represented by F_Floating or IEEE S_Floating, depending on compiler switches.
Floating-point numbers of type COMP-2 may be represented by D_Floating
or IEEE T_Floating, depending on compiler switches.
The debugger can show source text included in a program with the COPY, COPY REPLACING, or REPLACE statement. However, when COPY REPLACING or REPLACE is used, the debugger shows the original source text instead of the modified source text generated by the COPY REPLACING or REPLACE statement.
The debugger cannot show the original source lines associated with the
code for a REPORT section. You can see the DATA SECTION source lines
associated with a REPORT, but no source lines are associated with the
compiled code that generates the report.
On OpenVMS Alpha systems, the debugger can take an unusually great amount of time and resources if you use the STEP command to execute an INITIALIZE statement in a COBOL program when a large table (array) is being initialized.
To work around this problem, set a breakpoint on the first executable
line past the INITIALIZE statement, rather than stepping across the
INITIALIZE statement.
The following subtopics describe debugger support for Fortran.
Supported Fortran operators in language expressions include:
C.9.2 Constructs in Language and Address ExpressionsSupported constructs in language and address expressions for Fortran follow:
C.9.3 Predefined SymbolsSupported Fortran predefined symbols follow:
C.9.4 Data TypesSupported Fortran data types follow:
Even though the data type codes for unsigned integers (BU, WU, LU, QU) are used internally to describe the LOGICAL data types, the debugger (like the compiler) treats LOGICAL variables and values as being signed when they are used in language expressions. The debugger prints the numeric values of LOGICAL variables or expressions instead of .TRUE. or .FALSE. Normally, only the low-order bit of a LOGICAL variable or value is significant (0 is .FALSE. and 1 is .TRUE.). However, Fortran does allow all bits in a LOGICAL value to be manipulated and LOGICAL values can be used in integer expressions. For this reason, it is at times necessary to see the entire integer value of a LOGICAL variable or expression, and that is what the debugger shows. COMPLEX constants such as (1.0,2.0) are not supported in debugger expressions. Floating-point numbers of type REAL*4 and COMPLEX*8 may be represented by F_Floating or IEEE S_Floating, depending on compiler switches. Floating-point numbers of type REAL*8 and COMPLEX*16 may be represented by D_Floating, G_Floating, or IEEE T_Floating, depending on compiler switches.
On OpenVMS Alpha systems, the debugger cannot evaluate expressions that
contain complex variables. To work around this problem, examine the
complex variable and then evaluate the expression using the real and
imaginary parts of the complex variable as shown by the EXAMINE command.
When you debug a program that compiled with the /CHECK=UNDERFLOW or /PARALLEL qualifier, a message appears, as in the following example:
The "Type GO to reach MAIN program" message indicates that
execution is supended before the start of the main program, so that you
can execute initialization code under debugger control. Entering the GO
command places you at the start of the main program. At that point,
enter the GO command again to start program execution, as with other
types of Fortran programs.
The following subtopics describe debugger support for MACRO-32.
The MACRO-32 language does not have expressions in the same sense as high-level languages. Only assembly-time expressions and only a limited set of operators are accepted. To permit the MACRO-32 programmer to use expressions at debug-time as freely as in other languages, the debugger accepts a number of operators in MACRO-32 language expressions that are not found in MACRO-32 itself. In particular, the debugger accepts a complete set of comparison and Boolean operators modeled after BLISS. It also accepts the indirection operator and the normal arithmetic operators.
C.10.2 Constructs in Language and Address ExpressionsSupported constructs in language and address expressions for MACRO-32 follow:
The DST information generated by the MACRO-32 assembler treats a label that is followed by an assembler directive for storage allocation as an array variable whose name is the label. This enables you to use the array syntax of a high-level language when examining or manipulating such data. In the following example of MACRO-32 source code, the label LAB4 designates hexadecimal data stored in four words:
The debugger treats LAB4 as an array variable. For example, the following command displays the value stored in each element (word):
The following command displays the value stored in the fourth word (the first word is indexed as element "0"):
C.10.3 Data TypesMACRO-32 binds a data type to a label name according to the assembler directive that follows the label definition. Supported MACRO-32 directives follow:
C.10.4 MACRO-32 Compiler (AMACRO) (Alpha Only)Programmers who are porting applications written in MACRO-32 to Alpha systems use the MACRO-32 compiler (AMACRO). A debugging session for compiled MACRO-32 code is similar to that for assembled code. However, there are some important differences that are described in this section. For complete information on porting these applications, see the Porting VAX MACRO Code from OpenVMS VAX to OpenVMS Alpha manual.
|