Thanks for the replies, I really appreciate them. I'm new to VB script and have been struggling with some of it. I created some VB script that I will insert into the M6 tool change file that when a tool change is ran, the script will find certain info in the gcode of the current open file. I use SheetCAM to write my gcode programs, which inserts certain info into the gcode (Processes, Tool Descriptions, Notes and etc.), always using the same format. The script I working on will scan the gcode and post this current info to several userlabels, as well, it will scan ahead to find the next tool change number and post the SheetCAM info that takes place with that tool. This way, while the machine is running, I can see what processes are taking place as well as the next tool number and next processes that will take place so I can get ready for them. It seems to work good, as long as there are no subroutines in the code. The problem that happens is that the script does not recognize that it is in a M98 subroutine, so it scans ahead but does not find the next blocks of SheetCAM info because they are in another file. My current part programs all use a Main Program with M98 calls using the M98(filename.nc) format, not the P word / O word format Ex. M98 P12345. I believe I can get around this by using the M98 P12345 O12345 format because all the gcode will be in one single file. I really don't want to have to edit all my programs that have already been written. Would it be wiser to use a Macro-pump to constantly scan for this info, instead of only searching for the info during tool changes? It seems like it might be a good idea because I could receive real time info of what processes are taking place, not just what processes will take place with a specific tool, Although I'm not sure this is what the Macro-pump is meant for.