As cool as it is, recursion is caught by the compiler and not allowed in Studio/RSlogix 5K when it comes to AOIs or UDTs. A JSR call to "itself" is allowed but I haven't tried it without a way to "break" the call cycle. I would expect no less that a major fault.
I want to test it - but what if you JSR Routine_A, then have Routine_A JSR Routine_B, which in turn then has a JSR Routine_A. Similar for AOI_1 calling AOI_2, which calls AOI_1.
Would RSL/St5K catch that?