Besides allowing programmer-written function procedures, PL/I provides a set of built-in functions. Built-in functions include commonly used arithmetic functions, as well as functions for manipulating strings and arrays, using storage, and others. You invoke built-in functions the same way that you invoke programmer-defined functions. However, many built-in functions can return an array of values, whereas a programmer-defined function can return only an element value. The built-in names for built-in functions can be explicitly declared with the BUILTIN attribute. (For more information on the BUILTIN attribute or for the description of any built-in function, see Built-in functions, pseudovariables, and subroutines..)