All built-in functions and pseudovariables that can have arguments can have array arguments (if more than one is an array, the bounds must be identical).
Specifying an array argument is equivalent to placing the function reference or pseudovariable in a do-group where one or more arguments is a subscripted array reference that is modified by the control variable.
For example:
dcl A(2) char(2) varying;
dcl B(2) char(2)
init('AB','CD');
dcl C(2) fixed bin
init(1,2);
A=substr(B,1,C);results in A(1) having the value A and A(2) having the value CD.
The built-in functions and pseudovariables that can accept structure or union arguments are ADDR, ALLOCATION, CURRENTSIZE, SIZE, STRING, and UNSPEC. UNSPEC may be applied to a structure or union only if the compiler option USAGE(UNSPEC((ANS)) is in effect.