Print debugging statement: Difference between revisions

Add COBOL
(Add COBOL)
Line 48:
result: 10
</pre>
 
=={{header|COBOL}}==
Works with GnuCOBOL.
 
Explicit debug usually just uses DISPLAY, and usually directed at SYSERR. Compiler Directing Facility debug is supported with <code>>>D</code> directive statements. GnuCOBOL also supports full on line step tracing, controlled by both compile time switch, <code>-ftraceall</code>, and a truthy setting in a `COB_SET_TRACE` environment variable (so program step logging can be switched on and off without a recompile (for tracking down pesky production run mysteries)).
 
<lang cobol>gcobol*>
*> steptrace.cob
*> Tectonics: cobc -xj -fdebugging-line -ftraceall steptrace.cob
*> export COB_SET_TRACE=Y
*>
identification division.
program-id. steptrace.
 
data division.
working-storage section.
 
procedure division.
steptrace-main.
 
display "explicit line" upon syserr
 
>>Ddisplay "debug line" upon syserr
 
goback.
end program steptrace.</lang>
 
That is fixed form COBOL, columns 1 through 6 ignored by the preprocessor (historical format, from the days of punch card input) with column 7 being a special indicator column, star for comments, dash for continuations, and D is supported by GnuCOBOL for Debug lines. The <code>>>D</code> form is a newer addition to the Compiler Directing Facility, and can float anywhere on a free format compile line.
 
{{out}}
<pre>prompt$ cobc -xj -fdebugging-line -ftraceall steptrace.cob
explicit line
debug line
 
prompt$ cobc -xj -ftraceall steptrace.cob
explicit line
 
prompt$ export COB_SET_TRACE=Y
prompt$ ./steptrace
Source: 'steptrace.cob'
Program-Id: steptrace Entry: steptrace Line: 22
Program-Id: steptrace Section: (None) Line: 22
Program-Id: steptrace Paragraph: steptrace-main Line: 22
Program-Id: steptrace Statement: DISPLAY Line: 24
explicit line
Program-Id: steptrace Statement: GOBACK Line: 28
Program-Id: steptrace Exit: steptrace</pre>
 
=={{header|D}}==
Anonymous user