That would depend on what is already stored in #550. If its the same as the Index Angle that is passed to the Macro, then the Program will fall through to the end.
Post a copy of your current program so we can see if their are still errors in it. Every time I look at the first program you Posted, I find more errors.
If you're really executing the program in Single Block, then you should be able to determine why its not indexing. Unless a parameter bit and a System Variable are set accordingly, Macro Statements won't be executed in Single Block. For example, lets say that there are twenty, consecutive Macro Statements in a program; notwithstanding that Single Block has been turned on, without the correct setting of the parameter bit and System Variable, one press of the Cycle Start Button at the first Block of twenty Macro Statements will have all twenty Blocks execute as if one Block only.
Another way to force each Macro Statement to execute Block by Block in Single Block, without the need to set the parameter bit and System Variable, is to add a blank line between each Macro Statement, that is, just an End Of Block.
It looks like the following is the Block that makes the Index occur
G53X#32
therefore, put an M00 in a Block immediately before it and run the Program. If all the ducks are aligned to make an Index, the program will stop at the M00. At that point, look up the value of #32 in the Variable Register to determine if an Index should occur or not. In Single Block, if your program has made it to the M00, then the next Block should have an index occur.
Regards,
Bill