Macro Editing
Even the best macro writers make mistakes. That's why the BACKSPACE key was
invented. The two most common methods of locating a bug within a macro are
printing debugging messages and making assertions.
Printing Debugging Messages
Debugging messages print out to the terminal while executing
a macro with the /DEBUG
switch turned on. Here is an example of a debugging message that you can add
after Line 15 in the triangle macro (Macro
Example: triangle.mm.) which allows you to see the type value while the
macro is running:
if/debug then
say"type = ^type"
endif
If debugging is turned off (/debug=OFF ) this
message is not printed.
With this debugging message, a macro writer sees whether a
triangle is incorrectly identified as a 45 Deg. Right Triangle which might be the
result of a typo in Line 13 (such as using the GT comparison when EQ is
correct).
Using Assertions
The ASSERT
command makes assertions about variables within the macro. It performs a test
and prints out a message indicating whether the test passed or failed. If ASSERT is called with
the /DEBUG switch,
it only prints out messages if debugging is also turned on in the macro (i.e.,
the macro is called with the /DEBUG=ON
switch).
To test whether lengthA and lengthB values are less than lengthH (as is appropriate for a
triangle), try adding these lines after Line 9 in the triangle macro:
assert/debug/text="lengthA< lengthH" lengthA LT lengthH
assert/debug/text="lengthB< lengthH" lengthB LT lengthH
The results of these assertions show whether the
computations in Lines 8 and 9 are correct. Anyone running the macro with
debugging turned off (/DEBUG=OFF )
is unaware this test exists within the macro file.
|