Dann ist die Liste der betroffenen Objekte genau 2 Einträge lang *PGM, *SRVPGM, da DSPPGMREF eben nur Programme bearbeitet.

Dann kannst du ja doch einen DSPOBJD der PGMLIB's machen und per SQL einen
delete from mypgmref where not exists (select * from myobjlst where fromnameundlib = tonameundlib)