Ganz einfach:
Du erstellst ein Programm mit dem Namen XXX und erhältst ein Objekt vom Typ *PGM.
Das Objekt wird in einen eindeutigen Namen Qxxx umbenannt und die Elterneigenschaft in QRPLOBJ geändert. Da es, wiederholt, keine Kopie sondern das laufende Programm ist, behält es ja außer seinem Namen die vollkommene Identität als Programmobjekt.