I wrote this program for fanuc. It runs 8 positions, forward or reverse. If you set your post up so each toolchange is an N number, as in N100 is tool 1, N200 is the next toolchange, etc... this program will run the first tool on all 8 positions, then the second tool, as opposed to the whole program running position 1, then position 2. Saves toolchange time, wear on toolchanger, etc... This particular setup uses G54.1, G54.2, etc... I havn't had a chance to debug it. Sometimes I make small syntax errors first try, but usually my logic is ok.
Use it if you want, don't if you don't.