Call
La sentencia de control call invoca una subrutina que debe ir definida por una sentencia sub anterior.
Sintaxis:
Call name ( [ paramlist ])
Argumentos:
Argumento | Descripción |
---|---|
name | El nombre de la subrutina. |
paramlist | Una lista separada por comas de los parámetros que se habrán de enviar a la subrutina. Cada elemento de la lista puede ser un nombre de campo, una variable o una expresión arbitraria. |
La subrutina llamada por una sentencia call debe definirse mediante una sentencia sub que se encuentre anteriormente durante la ejecución del script.
Los parámetros se copian en la subrutina y, si el parámetro en la sentencia call es una variable y no una expresión, se copia nuevamente al salir de la subrutina.
Limitaciones:
-
Puesto que la sentencia call es una sentencia de control y, como tal, finaliza con un punto y coma o un final de línea, no debe superar el límite de una línea.
-
Cuando define una subrutina con Sub..end sub dentro de una sentencia de control, por ejemplo: if..then, solo puede llamar a la subrutina desde dentro de la misma sentencia de control.
Ejemplo:
Este ejemplo enumera todos los archivos relacionados con Qlik en una carpeta y sus subcarpetas, y almacena la información de archivos en una tabla. Supongamos que ha creado una conexión de datos con el nombre Apps en la carpeta.
La subrutina DoDir se llama con la referencia a la carpeta, 'lib://Apps', como parámetro. Dentro de la subrutina, hay una llamada recursiva, Call DoDir (Dir), que hace que la función busque archivos de manera recursiva en subcarpetas.