The maximum number of arguments that may be passed in an Open PL/I program is given by the following formula, which holds generally for any function or subroutine call argument list:
N + M= 241
where:
| N | Is the actual number of arguments specified. |
| M | Is the position of the last *-extent argument, or zero if none exists. |
Example:
DECLARE (S, T, U, V) CHAR (32),
(I, J, K, L) BINARY (15),
MYSUB ENTRY (BINARY(15), BINARY (15), CHAR(*),
CHAR(*), BINARY(15), BINARY(15));
.
.
.
CALL MYSUB(I,J,K,S,T,L);
where:
| N | = 6 (the number or arguments specified) |
| M | = 5 (the position of "T" in the argument list) |
which gives:
| N+ M | = 11 (6 actual arguments; 3 dummy descriptors for I, J, and K; and 2 actual descriptors for S and T). |