Symbolic debugging with AID permits data items, compilation units, sections, and paragraphs to be addressed using the names defined in the source text.
However, in order to reference a line in the Procedure Division, the programmer must specify a name in the form
S’n’ (for a line with a section or paragraph name) or
S’nverbm’ (for a line with COBOL verbs).
Such an LSD name is created by COBOL2000 for each line in the Procedure Division and for each COBOL verb in a statement line (see Example 7-1). Its components have the following meaning:
n | is the number (5 digits at most) of the line in the Procedure Division. The number, which is assigned by COBOL2000 at compile time, must be specified without leading zeros. If the sequence number of the compilation unit (max. 6 positions) is to be used as the line number, then this must be requested by the user with the SDF operand STMT-REFERENCE=COLUMN-1-TO-6 in the TEST-SUPPORT option or with COMOPT TEST-WITH-COLUMN1. |
verb | is the predefined abbreviation of a COBOL verb in the line concerned. A list of the abbreviations is given below. |
m | is a one- or two digit number specifying which of several identical verbs within a line n is to be indicated.If k is equal to 1, it is omitted. |
Example 7-1
Creation of LSD names
000026 IF A = B MOVE A TO D MOVE B TO E. |
In this statement line
the first verb has the LSD name S’26IF’,
the second verb has the LSD name S’26MOV’, and
the third verb has the LSD name S’26MOV2’.
A detailed example explaining how a COBOL program can be debugged with AID is provided in the “AID“ [8].
List of COBOL verbs and their abbreviations:
ACC | ACCEPT | INI | INITIATE |
ADD | ADD | INSP | INSPECT |
ADDC | ADD CORRESPONDING | INV | INVOKE |
ALLO | ALLOCATE | KEE | KEEP |
ALT | ALTER | MOD | MODIFY |
CALL | CALL | MOV | MOVE |
CANC | CANCEL | MOVC | MOVE CORRESPONDING |
CLO | CLOSE | MRG | MERGE |
COM | COMPUTE | MUL | MULTIPLY |
CON | CONNECT | OPE | OPEN |
CONT | CONTINUE | PER | PERFORM oder EXIT PERFORM |
DEL | DELETE | end of main part of loop 2) | |
DIS | DISPLAY | PERT | TEST OF PERFORM |
DIV | DIVIDE | RAIS | RAISE |
DSC | DISCONNECT | REA | READ |
END | END-xxx 1) 2) | REDY | READY |
ENTR | ENTRY | REL | RELEASE |
ERA | ERASE | RES | RESUME |
EVAL | EVALUATE | RET | RETURN |
EXI | EXIT | REW | REWRITE |
EXI | EXIT PARAGRAPH | SEA | SEARCH |
EXI | EXIT SECTION | SET | SET |
EXIT | EXIT METHOD | SOR | SORT |
EXIT | EXIT PROGRAM | STA | START |
FET | FETCH | STO | STOP |
FIN | FINISH | STOR | STORE |
FND | FIND | STRG | STRING |
FRE | FREE | SUB | SUBTRACT |
GEN | GENERATE | SUBC | SUBTRACT CORRESPONDING |
GET | GET | TER | TERMINATE |
GO | GOBACK | UNST | UNSTRING |
GOT | GO TO | WRI | WRITE |
IF | IF | XML | XML |
INIT | INITIALIZE |
1) | Explicit scope terminator (e.g. END-ADD) |
2) | The point at which END is to stop comes after the scope terminator; for ENDPERFORM, in particular, this point comes after the PERFORM has been completed. A further stopping point exists prior to END-PERFORM, after a single loop. You can use PER to address this second stopping point. |