Determining+how+a+macro+was+run

//by Jon Ripley, October 2007//

When writing a macro it is often useful to be able to determine whether it is being run as the main program or if it has been CALLed. Making this distinction allows more flexibility when writing macros.

To determine whether the currently executing code is running as the main program or as a called module you can use either of the following methods.

Method One
code format="bb4w" Called% = NOT(!384>=PAGE AND !384<=TOP) code

Method Two
code format="bb4w" P%=0 ON ERROR P%=!408:ON ERROR OFF IF P%=0 ERROR Called%=NOT(P%>=PAGE AND P% <=TOP) code

Both methods set **Called%** to TRUE if the program was run using and FALSE if the program is running as the main program.


 * Note:** The code for both methods is unsuitable for refactoring into a subroutine and must be called in-line to guarantee correct results; the code will fail in the case where a subroutine with the same name is present in the main program because the main program has precedence.