Procedure Division in COBOL Debug [ COBOL/HP-UX Language Reference for the Series 700 and 800 ] MPE/iX 5.0 Documentation
COBOL/HP-UX Language Reference for the Series 700 and 800
Procedure Division in COBOL Debug
________________________________________________________________________
|The READY TRACE Statement |
| |
|(OSVS) (VSC2) |
| |
|Function |
| |
|The READY TRACE statement is a debugging feature which causes each |
|section and paragraph name subsequently reached to appear on the |
|screen in order of execution. |
| |
|General Format |
| |
| READY TRACE |
| |
|General Rules |
| |
| |
| 1. The COBOL system directive TRACE must be set to on to allow |
| execution of the statement. READY TRACE is documentary only |
| when the directive is not set. (See your COBOL System |
| Reference for details on setting the TRACE directive.) |
| |
| 2. READY TRACE is accepted, but is treated as documentary only. |
| (VSC2) |
________________________________________________________________________
________________________________________________________________________
|The RESET TRACE Statement |
| |
|(OSVS) (VSC2) |
| |
|Function |
| |
|The RESET TRACE statement disables the tracing of section and |
|paragraph names on the screen. |
| |
|General Format |
| |
| RESET TRACE |
| |
|General Rules |
| |
| |
| * The COBOL system directive TRACE must be set to on to allow |
| execution of the statement. RESET TRACE is documentary only |
| when the directive is not set or when no previous READY TRACE |
| is in effect. (See you COBOL System Reference for details on |
| setting the TRACE directive.) |
| |
| * RESET TRACE is accepted, but is treated as documentary only. |
| (VSC2) |
________________________________________________________________________
The USE FOR DEBUGGING Statement
Function
The USE FOR DEBUGGING statement
identifies the user items that are to be monitored by the associated
debugging section.
General Format
Syntax Rules
1. Debugging section(s), if specified, must appear together
immediately after the DECLARATIVES header.
2. Except in the USE FOR DEBUGGING statement itself, there must be no
reference to any non-declarative procedure within the debugging
section.
3. Statements appearing outside of the set of debugging sections must
not reference procedure-names defined within the set of debugging
sections.
4. Except for the USE FOR DEBUGGING statement itself, statements
appearing within a given debugging section can reference
procedure-names defined within a different USE procedure only with
a PERFORM statement.
5. Procedure-names defined within debugging sections must not appear
within USE FOR DEBUGGING statements.
6. Any given identifier, cd-name, file-name, or procedure-name can
appear in only one USE FOR DEBUGGING statement and can appear only
once in that statement.
7. The ALL PROCEDURES phrase
can appear only once in a program.
8. When the ALL PROCEDURES phrase is specified, procedure-name-1,
procedure-name-2, ... must not be specified in any USE FOR
DEBUGGING statement.
9. If the data description entry of the data item referenced by
identifier-1, identifier-2, ..., contains an OCCURS clause or is
subordinate to a data description entry that contains an OCCURS
clause, identifier-1, identifier-2, ..., must be specified without
the subscripting or indexing normally required.
10. References to the special register DEBUG-ITEM
are restricted to references from within a debugging section.
General Rules
1. In the following general rules all references to cd-name,
identifier-1, procedure-name-1, and file-name-1 apply equally to
cd-name-2, identifier-2, procedure-name-2 and file-name-2
respectively.
2. Automatic execution of a debugging section is not caused by a
statement appearing in a debugging section.
3. When file-name-1 is specified in a USE FOR DEBUGGING statement,
that debugging section is executed:
a. After the execution of any OPEN or CLOSE statement that
references file-name-1, and:
b. After the execution of any READ statement (after any other
specified USE procedure) not resulting in the execution of
an associated AT END or INVALID KEY imperative statement,
and:
c. After the execution of any DELETE or START statement that
references file-name-1.
4. When procedure-name-1 is specified in a USE FOR DEBUGGING
statement
that debugging section is executed:
a. Immediately before each execution of the named procedure.
b. Immediately after the execution of an ALTER statement which
references procedure-name-1.
5. The ALL PROCEDURES phrase
causes the effects described in General Rule 4 to occur for every
procedure-name in the program, except those appearing within a
debugging section.
6. When the phrase, ALL REFERENCES OF identifier,
is specified, that debugging section is executed for every
statement that explicitly references identifier-1 at each of the
following times:
a. In the case of a WRITE or REWRITE statement immediately
before the execution of that WRITE or REWRITE statement and
after the execution of any implicit move resulting from the
presence of the FROM phrase.
b. In the case of a GO TO statement with a DEPENDING ON
phrase, immediately before control is transferred and prior
to the execution of any debugging section associated with
the procedure-name to which control is to be transferred.
c. In the case of a PERFORM statement in which a VARYING,
AFTER, or UNTIL phrase references identifier-1, immediately
after each initialization, modification or evaluation of
the contents of the data item referenced by identifier-1.
d. In the case of any other COBOL statement, immediately after
execution of that statement.
If identifier-1 is specified in a phrase that is not executed or
evaluated, the associated debugging section is not executed.
7. When identifier-1 is specified without the ALL REFERENCES OF
phrase,
that debugging section is executed at each of the following times:
a. In the case of a WRITE or REWRITE statement that explicitly
references identifier-2, immediately before the execution
of that WRITE or REWRITE statement and after the execution
of any implicit move resulting from the presence of the
FROM phrase.
b. In the case of a PERFORM statement in which a VARYING,
AFTER or UNTIL phrase references identifier-1, immediately
after each initialization, modification or evaluation of
the contents of the data item referenced by identifier-1.
c. Immediately after the execution of any other COBOL
statement that explicitly references and causes the
contents of the data item referenced by identifier-1 to be
changed.
If identifier-1 is specified in a phrase that is not executed or
evaluated, the associated debugging section is not executed.
8. The associated debugging section is not executed for a specific
operand more than once as a result of the execution of a single
statement, regardless of the number of times that operand is
explicitly specified. In the case of a PERFORM statement which
caused iterative execution of a referenced procedure, the
associated debugging section is executed once for each iteration.
Within an imperative statement, each individual occurrenceof an
imperative verb identifies a separate statement for the purpose of
debugging.
9. When cd-name-1 is specified in a USE FOR DEBUGGING statement,
that debugging section is executed:
a. After the execution of any ENABLE, DISABLE, and SEND
statement that references cd-name-1,
b. After the execution of a RECEIVE statement referencing
cd-name-1 that does not result in the execution of the NO
DATA imperative-statement, and
c. After the execution of an ACCEPT MESSAGE COUNT statement
that references cd-name-1.
10. A reference to file-name-1, identifier-1, procedure-name-1 or
cd-name-1 as a qualifier does not constitute reference to that
item for the debugging described in the General Rules above.
11. Associated with each execution of a debugging section is the
special register DEBUG-ITEM,
which provides information about the conditions that caused the
execution of a debugging section.
DEBUG-ITEM has the following implicit description:
01 DEBUG-ITEM.
02 DEBUG-LINE PIC IS X(6).
02 FILLER PIC IS X VALUE SPACE.
02 DEBUG-NAME PIC IS X(30).
02 FILLER PIC IS X VALUE SPACE.
02 DEBUG-SUB-1 PIC IS S9999 SIGN IS LEADING SEPARATE CHARACTER.
02 FILLER PIC IS X VALUE SPACE
02 DEBUG-SUB-2 PIC IS S9999 SIGN IS LEADING SEPARATE CHARACTER.
02 FILLER PIC IS X VALUE SPACE.
02 DEBUG-SUB-3 PIC IS S9999 SIGN IS LEADING SEPARATE CHARACTER.
02 FILLER PIC IS X VALUE SPACE.
02 DEBUG-CONTENTS PIC IS X(n).
12. Prior to each execution of a debugging section, the contents of
the data item referenced by DEBUG-ITEM are space-filled. The
contents of data items subordinate to DEBUG-ITEM are then updated,
according to the following general rules, immediately before
control is passed to that debugging section. The contents of any
data item not specified in the following general rules remains
spaces.
Updating is accomplished in accordance with the rules for the MOVE
statement, the sole exception being the move to DEBUG-CONTENTS
when the move is treated exactly as if it was an alphanumeric to
alphanumeric elementary move with no conversion of data from one
form of internal representation to another.
13. The contents of DEBUG-LINE is the relevant COBOL source line
number. This provides the means of identifying a particular
source statement.
14. DEBUG-NAME contains the first 30 characters of the name that
caused the debugging section to be executed.
All qualifiers of the name are separated in DEBUG-NAME by the word
IN or OF.
Subscripts/indices, if any, are not entered into DEBUG-NAME.
15. If the reference to a data item that causes the debugging section
to be executed is subscripted or indexed, the occurrence number of
each level is entered in DEBUG-SUB-1, DEBUG-SUB-2, DEBUG-SUB-3,
respectively, as necessary.
16. DEBUG-CONTENTS is a data item that is large enough to contain the
data required by the following General Rules.
17. If the first execution of the first nondeclarative procedure in
the program causes the debugging section to be executed, the
following conditions exist:
a. DEBUG-LINE identifies the first statement of that
procedure.
b. DEBUG-NAME contains the name of that procedure.
c. DEBUG-CONTENTS contains "START PROGRAM".
18. If a reference to procedure-name-1 in an ALTER statement causes
the debugging section to be executed, the following conditions
exist:
a. DEBUG-LINE identifies the ALTER statement that references
procedure-name-1.
b. DEBUG-NAME contains procedure-name-1.
c. DEBUG-CONTENTS contains the applicable procedure-name
associated with the TO phrase of the ALTER statement.
19. If the transfer of control associated with the execution of a GO
TO statement causes the debugging section to be executed, the
following conditions exist:
a. DEBUG-LINE identifies the GO TO statement whose execution
transfers control to procedure-name-1.
b. DEBUG-NAME contains procedure-name-1.
20. If reference to procedure-name-1 in the INPUT or OUTPUT phrase of
a SORT or MERGE statement causes the debugging section to be
executed, the following conditions exist:
a. DEBUG-LINE identifies the SORT or MERGE statement that
references procedure-name-1.
b. DEBUG-NAME contains procedure-name-1.
c. DEBUG-CONTENTS contains:
1. If the reference to procedure-name-1 is the INPUT
phrase of a SORT statement, "SORT INPUT".
2. If the reference to procedure-name-1 is in the
OUTPUT phrase of a SORT statement, "SORT OUTPUT".
3. If the reference to procedure-name-1 is in the
OUTPUT phrase of a MERGE statement, "MERGE OUTPUT".
21. If the transfer to control from the control mechanism associated
with a PERFORM statement causes the debugging section associated
with procedure-name-1 to be executed, the following conditions
exist:
a. DEBUG-LINE identifies the PERFORM statement that references
procedure-name-1.
b. DEBUG-NAME contains procedure-name-1.
c. DEBUG-CONTENTS contains "PERFORM LOOP".
22. If procedure-name-1 is a USE procedure that is to be executed, the
following conditions exist:
a. DEBUG-LINE identifies the statement that causes execution
of the USE procedure.
b. DEBUG-NAME contains procedure-name-1.
c. DEBUG-CONTENTS contains "USE PROCEDURE".
23. If an implicit transfer of control from the previous sequential
paragraph to procedure-name-1 causes the debugging section to be
executed, the following conditions exist:
a. DEBUG-LINE identifies the previous statement.
b. DEBUG-NAME contains procedure-name-1.
c. DEBUG-CONTENTS contains "FALL THROUGH".
24. If references to file-name-1, cd-name-1 causes the debugging
section to be executed, then:
a. DEBUG-LINE identifies the source statement that references
file-name-1, cd-name-1.
b. DEBUG-NAME contains the name of file-name-1, cd-name-1.
c. For READ, DEBUG-CONTENTS contains the entire record read.
d. For all other references to file-name-1, DEBUG-CONTENTS
contains spaces.
e. For any reference cd-name-1, DEBUG-CONTENTS contains the
contents of the area associated with the cd-name.
25. If a reference to identifier-1 causes the debugging section to be
executed, then:
a. DEBUG-LINE identifies the source statement that references
identifier-1,
b. DEBUG-NAME contains the name of identifier-1, and:
c. DEBUG-CONTENTS contains the contents of the data item
referenced by identifier-2 at the time that control passes
to the debugging section (see General Rules 6 and 7).
Debugging Lines
A debugging line
is any line with a "D" in the indicator area of the line. Any debugging
line that consists solely of spaces from margin A to margin R is
considered the same as a blank line.
The contents of a debugging line must be such that a syntactically
correct program is formed with or without the debugging lines being
considered as comment lines.
A debugging line will be considered to have all the characteristics of a
comment line, if the WITH DEBUGGING MODE clause is not specified in the
SOURCE-COMPUTER paragraph.
Successive debugging lines are allowed. Continuation of debugging lines
is permitted, except that each continuation line must contain a "D" in
the indicator area, and character-strings can not be broken across two
lines.
A debugging line is only permitted in the program after the
OBJECT-COMPUTER paragraph.
Note: Debugging lines are part of the ANSI Nucleus and
not the ANSI Debug module. Therefore, they are not
obsolete and are not scheduled to be deleted from
the next full revision of the ANSI Standard.
MPE/iX 5.0 Documentation