Hi,
WARNING THIS IS MY OWN UNDERSTANDING AND MAY, IN FACT PROBABLY,IS WRONG
If you have a Gcode file which includes one or more subroutines O#, and one or more macros M# then the main Gcode file can execute any of the
subroutines but the macros cannot.
The reasoning given was that the macro is in a sense a subroutine in itself. Thus the parent program, the Gcode file, calls a macro which attempts to
call a subroutine but that subroutine is defined in the parent and the call will fail. 'A parent can call on a child or children but a child cannot call on a parent'
Using this logic if a macro has a subroutine defined within itself it could be called successfully.
If you wish code to be called against the hierarchy then that code could/should be put in a panel.
Craig