I would debate with Rory Hewitt on using a "variant" for the third parm.
This is a common trap for expediency, but by not calling what something
really is - You are not encapsulating logic, but confounding it - you
are not using prototypes as they were intended - and you are leaving
confusion behind for the next maintenance programmer to understand.
If you end up cramming a numeric into an alpha field, is it left
justified, right justified ?
Within our programs, we are trying to write re-usable code, so are you
going to put the SELECT statement inside a /COPYBOOK - or inside another
procedure? You may even end up with a SELECT to load the field into the
interface, and then a SELECT to strip it out of the interface in the
It would just be better to just pass 4 blank fields and the one defined
field with a value and forget about using *OMIT than to confuse the
interface logic with a variant.