¿Cómo devolver una tabla_datos desde una FUNCIÓN?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />guion
Hola,
Soy un usuario relativamente nuevo del lenguaje de secuencias de comandos JMP/SAS y solo estoy acostumbrado a otros lenguajes "estándar" como C, VBA, PASCAL, etc... así que tal vez mi pregunta sea obvia...
No puedo entender cómo devolver limpiamente el resultado TABLA de una función.
Si no uso la opción DEFAULT LOCAL, por supuesto la tabla regresa si uso el nombre de la tabla en la FUNCIÓN, pero cuando intento hacer algo como
d_result= MiFunción(Entrada1,Entrada2;Entrada3); la variable d_result es "."
Me gustaría usar la opción {LOCAL predeterminada} para programar limpiamente y evitar problemas con las variables LOCAL/GLOBAL, por lo que me gustaría generar la tabla.
En general, no entiendo cómo especificar los resultados que devuelve una FUNCIÓN.
Intenté con RETURN() en los parámetros de entrada, pero parece que solo funciona con un parámetro simple (número o cadena), no con una tabla (consulte la página 212 de la referencia de sintaxis JSL):
Función({argumentos}, <{variables locales}>, )>, script)
Muchas gracias por tu ayuda !!!
Atentamente.
Alex
Re: ¿Cómo devolver una tabla de datos desde una FUNCIÓN?Hola PMRoz,
muchas gracias por las explicaciones claras.
Ojalá esto estuviera explicado claramente en los manuales 
Atentamente,
Alex
Re: ¿Cómo devolver una tabla de datos desde una FUNCIÓN?La mesa permanece abierta.
La variable dt , que se usa dentro de la función, es local y ya no tiene valor.
En mi ejemplo, el programa que llama usa la variable uno_dt para obtener los resultados de la función.Por lo tanto la variable uno_dt es visible para el programa que llama.
Cuando proporcionas un argumento a tabla de datos actual [es decir tabla de datos actual (dt) ], establece la tabla de datos actual a lo que sea que apunte dt y devuelve ".".
Re: ¿Cómo devolver una tabla de datos desde una FUNCIÓN?Hola
PMroz,
¡Gracias por responder tan rápido!
De hecho, es un poco especial, pero uno se acostumbra... 
Mientras tanto, lo intenté y cuando hice un Resumen (todas las filas), o una función "transparente" similar, también funciona.
Recibí un error cuando estaba en la última línea:
tabla de datos actual (dt);
Ahora entiendo que en realidad lo que se devuelve es la "salida" de la tabla de datos actual, que probablemente sea ".", así que probablemente ese fue mi error. ¿Está bien?
¿Qué sucede con los archivos abiertos en funciones locales después de regresar al programa principal? Al parecer la mesa permanece abierta, aunque es "local".
BR,
Alex
Re: ¿Cómo devolver una tabla de datos desde una FUNCIÓN?Las funciones JMP no utilizan una declaración de devolución.Más bien, la última expresión que se evalúa es la que se devuelve.He aquí un ejemplo sencillo:
//------------------------------------------------ ------------------------------
/*
Nombre de la función: get_table
Descripción: Devuelve un identificador de tabla seleccionado por el usuario
Argumentos:
(ninguno)
*/
obtener_tabla = Función ( {} ,
{ Local predeterminado } ,
dt = abierto () ;
dt ;
) ;
// pruébalo
uno_dt = obtener_tabla () ;
Técnicamente la línea de la función con solo "dt;" es redundante.Lo dejé como ejemplo.