RE:Pasar un recordset como parametro
Santiago
Generalmente los argumentos entre corchetes, se utiliza para Funciones, cuya devolución se guarda en una variable, o es evaluada en un bloque If o case
Un procedimiento o subrutina como no devuelve ningún valor, no es preciso escribirla entre corchetes.
Pero en sí la instrucción call se encarga de transferir el proceso o hilo de programación a una función o una subrutina. Su utilización es opcional y sirve solo en caso de las funciones para descartar el valor de devolución.
Microsoft dice:
No es necesario que utilice la palabra clave Call cuando llama a un procedimiento. Sin embargo, si utiliza la palabra clave Call para llamar a un procedimiento que requiere los argumentos, listaargumentos debe estar entre paréntesis. Si omite la palabra clave Call, debe omitir también los paréntesis de listaargumentos. Si utiliza cualquiera de las formas de la sintaxis Call para llamar a cualquier función intrínseca o a una función definida por el usuario, se descartará el valor devuelto por la función.
Lo comico, es que aunque no pongas la instruccion Call, y coloques la Función sin corchetes y con sus respectivos argumentos, si no evaluas la devolución de la función o bien si no la guardás en una variable, la devolución se descarta igual.
Entonces nos queda una sola pregunta. Para que Microsoft puso la Instrucción Call en el Lenguaje.
Dos respuestas lógicas pueden ser
1) Compatibilidad con versiones anteriores, por ejemplo en la Version 3 era obligatorio en los procedimientos.
2) Quizás fue por convención de programación.
Sea lo que sea. Nunca lo sabremos con certeza.
Como tampoco sabemos porque extraño motivo subsiste aún la función GoSub, o la Instrucción End.
Si su utilización ha sido y son tan criticada por el mismo Microsoft.
Puede que algún purista, alguna vez pase por estas líneas.y nos aclare estos puntos.