The QBNLPGMI API can be used to identify the *MODULEs and *SRVPGMs that are bound together to make the *PGM object. You could use this api to identify which programs are affected by a module or service program change and issue the UPDPGM command.
I have a utility that uses this API as well as the QBNLSPGM (identifies all *MODULEs and *SRVPGMs bound together to make a *SRVPGM object) on my website available for download. The utility can be found at www.astradyne-uk.com/downloads.htm
All the best
If it’s a service program, there should only be one. Anybody making the change should have to know what it is before evening knowing what source to change.
And if a module is going into multiple programs, then stop doing that. Put it into a service program.
The problem should simply go away.