At first I didn’t understand your answer because it didn’t seem an advantage to have separate programs over separate routines. If you read my comment in an email it probably changed over what you see here.
That’s because after I thought about it I realized that being able to reuse logic with the same (local program scoped) tag names is an advantage.
But right now my AOIs have been accepted. I have established a convention of putting a rev number on the AOI name e.g. Mold001 and incrementing it when I have to edit online. ("Edit online" means open up another instance of Logix, make the change, import the new rev Mold002 into the online instance, and change all the calls to be to Rev002 instead of to Rev001. Everyone in the group knows the rev with the highest number is the latest. When we have a chance to download we will delete all but the latest, change the name back to Rev001, and download. That's to keep the clutter down.
I think my next choice would be the classic subroutine with indexed indirect addressing.
If I just have to see the logic for each instance (instead of the blur of a common subroutine) and if I was forbidden to use AOI, then I would try your method. So thanks for explaining it.