Using the USAGE option, you can choose different semantics for selected built-in functions.
.-+---+--------------------------. | '-,-' | V .-SIZE--------. | >>-USAGE--(----+-HEX--(--+-CURRENTSIZE-+--)-+-+--)------------->< | .-IBM-. | +-ROUND--(--+-ANS-+--)-------+ | .-STRICT-. | +-SUBSTR--(--+-LOOSE--+--)---+ | .-IBM-. | '-UNSPEC--(--+-ANS-+--)------'
Under the HEX(CURRENTSIZE) suboption, when HEX is applied to a VARYING or VARYINGZ string, it will a return a hex string that represents the current amount of storage used by the string.
Under the ROUND(ANS) suboption, the ROUND built-in function is implemented as described in the PL/I Language Reference.
Under the SUBSTR(LOOSE) suboption, the same reference will return a string whose length is z.
The SUBSTR(LOOSE) suboption might be useful for those who have SUBSTR(x,y,z) references where x is a CHAR(1) BASED variable.
Under the UNSPEC(ANS) suboption, UNSPEC can be applied to structures, and when applied to a structure or an array, UNSPEC returns a single bit string.
Default: USAGE( HEX(SIZE) ROUND(IBM) SUBSTR(STRICT) UNSPEC(IBM) )