BIF's and matching methods do not accept arguments larger than 999999999, even under NUMERIC DIGITS > 9.
As an example COPIES() built-in function and copies() method do not accept n>999999999, even under NUMERIC DIGITS 18
numeric digits 18 say length(copies('x',1e9)) say 'x'~copies(1e9)~length
Error 40.12: COPIES argument 2 must be a whole number
Error 93.906: Method argument 1 must be zero or a positive whole number
length(copies(copies('x',1e9/2),2))works fine and will return 1000000000 (a number larger than 999999999, even under default NUMERIC DIGITS)
numeric digits 18; say datatype(1e9,'W')-> 1
Not sure if this qualifies as a bug or is working as designed. Rexx Reference has this paragraph that I can't really figure out what it means / if it applies here:
"The built-in functions internally work with NUMERIC DIGITS 9 for 32-bit systems or NUMERIC DIGITS 18 for 64-bit systems, and NUMERIC FUZZ 0 and are unaffected by changes to the NUMERIC settings, except where stated. Any argument named as a number is rounded, if necessary, according to the current setting of NUMERIC DIGITS (as though the number had been added to 0) and checked for validity before use."
REXX-ooRexx_4.1.2(MT) 6.03 28 Aug 2012, 64 Bit, Windows 7