Un array solo puede pasarse por referencia, si lo haces por valor solo pasa el primer valor.
Puedes hacerlo para todos los casos con
SET UDFPARMS TO REFERENCE
o puede hacerlo en casos específicos anteponiendo un @ al parámetro que quieres pasar por referencia.
En mi caso, configuraba para trabajar todo por referencia porque con la debida prolijidad de programación es mucho más rápido pasar parámetros por referencia que por valor.
Al pasar por valor, la función/método/procedimiento receptor debe:
a) "crear" variables locales (o privadas) para manejar los valores pasados.
b) copiar los datos
c) crear referencias a esos datos (que el código son el nombre de los parámetros)
Cuando pasas por referencia, solo se debe asignar nuevas referencias a los lugares de los datos.
Tiene la ventaja además que se pueden devolver datos cambiados al punto de llamada.
El return solo permite devolver un valor (u objeto).
Usando parámetros por referencia, retornan valores vía parámetros.
Eso ya era posible con FoxDOS
Saludos: Miguel, La Pampa (RA)
Larga Vida y Prosperidad
Que la Fuerza los acompañe, aunque sea por referencia