I think, strings and entire arrays are always passed by reference no matter what.
It seems logic to me, think of passing a big string or array, maybe with 1000s of chars or elements, by value? - Wouldn't it in worst case not simply blow up the stack (stackoverflow), especially if done so in many nested SUB/FUNCs or even in a recursivly called function?
I've no idea how much stack space is available for a program assigned by the OS at startup time of a program, nor I know if there is some mechanism which can automatically increase the stack size at runtime if required.