Das mag für den SQL-Server ja noch gelten, aber dies gilt nicht mehr für die AS/400.
Egal ob UDF/Procedure oder direktes SQL, der Optimizer schlägt immer gleich zu.
Zumal du mit DISALLOW PARALLEL ja auch noch Performanceeinschränkungen definierst.

Mach lieber, wie Dieter vorgeschlagen hat , eine View und geh direkt mit SQL dran.

Wenn ich mir deinen Join so ansehe, dann benötigst du ja keine Felder aus dem Join.
In diesem Fall arbeite lieber mit:

where ... exists ...