Arguments are passed in General Purpose Registers (GR) 26–23, Single-Precision Floating-Point Registers (FR) 4–7, Double-Precision Floating-Point Registers (FR) 5 and 7, and in the parameter area of the stack, according to the Open PL/I standard calling conventions.
- If the function returns a value in a temporary storage area, a pointer to that area is passed in GR28.
- The argument list contains addresses of the actual arguments in order or their appearance. If any arguments have the BYVALUE attribute, the actual argument is passed.
- If OPTIONS(VARIABLE) is used, any missing arguments are replaced by null pointers.
- If any of the function's parameters have variable extents, for example, asterisks(*), the addresses of dope vectors describing the arguments are appended to the explicit argument list.