Saltar al contenido principal

Call

La sentencia de control call invoca una subrutina que debe ir definida por una sentencia sub anterior.

Sintaxis:  

Call name ( [ paramlist ])

 

Argumentos:  

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 esa 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.

sub DoDir (Root) For Each Ext in 'qvw', 'qvo', 'qvs', 'qvt', 'qvd', 'qvc', 'qvf' For Each File in filelist (Root&'\*.' &Ext) LOAD '$(File)' as Name, FileSize( '$(File)' ) as Size, FileTime( '$(File)' ) as FileTime autogenerate 1; Next File Next Ext For Each Dir in dirlist (Root&'\*' ) Call DoDir (Dir) Next Dir End Sub Call DoDir ('lib://Apps')

¿Esta página le ha sido útil?

No dude en indicarnos en qué podemos mejorar si encuentra algún problema en esta página o su contenido, como, por ejemplo, errores tipográficos, pasos que falta o errores técnicos.