Home | Tips | Library | Other Authors | Other WP Sites | Writer's Links | Contact | Site Map | Donate

Barry MacDonnell's
Toolbox for WordPerfect

Macros, tips, and templates for Corel® WordPerfect® for Windows®
© Copyright 1996-2017 by Barry MacDonnell. All Rights Reserved.

Page updated Jul 10, 2012

WordPerfect Tips
Main tips page | Browse tips
Simple tricks
to help debug
your macros
I. Two simple methods

Back up your macro first.

Method #1 - slow down the macro to see what's happening

If you've created a macro that doesn't seem to work right or it just freezes up when you play it, here's a simple trick to help you figure out what's wrong:

Edit the macro, and on the line under the "Application( ... )" command -- generally this is the first line in your macro, so start on line 2 -- add these two commands:

Display (On!)
Speed (1)

Then click Save & Compile on the Macro Toolbar.

Turn WordPerfect's Reveal Codes window ON, then play the macro. Watch what happens in the Reveal Codes window. You may be able to tell where the macro is going wrong as it executes its commands.

When you are done fixing things (also see the TIP below), delete the Speed() command and restore the Display command from Display(On!) to Display(Off!).

The first command, Display(On!), will display all events during the macro's playback (if you get any dialog box error messages such as "... not found," just click OK and the macro should continue). Be sure there isn't a Display(Off!) under these commands; if there is, delete it or comment it out with double forward slash marks.

The Speed() command slows down the macro's execution. You can set this to a higher number than "1" to really slow it down. As the macro plays, watch the screen and the Reveal Codes window. [More recent versions of WordPerfect support the Step() command (see below), but new users may find the Speed() command easier to use and understand.]

Method #2 - stop the macro at different points

You can also edit the macro and add the single command at the likely problem location:

Quit 

Quit causes the macro to stop immediately at that point. (The command is not case sensitive so you can use QUIT, and even use bold or Redline or Very Large size to make it easy to find while editing the macro code.)

For debugging purposes this is usually placed just after the command(s) that performs some action that you suspect might be causing a problem or because you wish to see the results of the macro at that point in the code. 

Then click Save & Compile the macro on the Macro Toolbar.

Play the macro: If things worked OK to that point, delete the Quit command and enter another Quit command further down in the macro code. 

Repeat the process until you find the segment of code that is causing the problem.

II. A slightly more advanced method

Back up your macro first.

Method #3 - "step" through the macro with key presses

Edit the macro. Add these two commands at the top of the code after any Application() command.

Display(On!)
Step(On!)

On the Macro Toolbar, click the Options button and check (enable) "Compile with Debug." 

Then click Save & Compile the macro on the Macro Toolbar.

Open the document the macro is to be played on. Open Reveal Codes (View, Reveal Codes) so you can observe the actions of the macro as it steps through its commands.

Play the macro. The PerfectScript Compiler Listing dialog appears, showing the name of a "listing" file that will be created. 

Click on OK (you can overwrite any existing .WCL listing file). The macro will start. 

When the macro reaches a new line of code, PerfectScript shows a new window, the PerfectScript Debugger. Drag it out of the way. F8 single-steps, F9 sets/removes a breakpoint, F5 runs the macro to the next breakpoint or the end of the macro. (Usually you have to tap F5 twice, to prove you really meant it.)

When done debugging: (1) remove the check mark from Options, "Compile with Debug"; (2) Remove Display(On!) and Step(On!); and (3) click Save & Compile.

Note: In the same folder as the macro you may find a file with the same name as the macro but with a .DBG extension. There may also be one with a .WCL extension. You can delete both.

[Thanks to Roy ("lemoto") Lewis for this tip.]