User Tools

Site Tools


This is an old revision of the document!

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

      Called% = NOT(!384>=PAGE AND !384<=TOP)

Method Two

      IF P%=0 ERROR
      Called%=NOT(P%>=PAGE AND P% <=TOP)

Both methods set Called% to TRUE if the program was run using “CALL “filename”” 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.

determining_20how_20a_20macro_20was_20run.1522502355.txt.gz · Last modified: 2018/03/31 13:19 by