# Chamadas de Função do VBScript a partir do Script

As funções do VBScript ou JScript definidas no módulo de macro de um documento QlikView podem ser chamadas a partir do script. Se uma função chamada não for reconhecida como uma função de script padrão, será feito um teste para verificar se uma função personalizada reside no módulo. Isso lhe permite um alto grau de liberdade para definir suas próprias funções. Evidentemente que o uso de funções de macro personalizadas será um pouco mais lento que a execução das funções padrão.

`Rem` `rem ***THIS IS VBSCRIPT CODE FROM THE MODULE*********` `rem**************************************************` `rem ********* Global variables ********************` `dim flag` `rem *******functions accessible from script *********` `rem ************ wrap for input box ******************` `function VBin(prompt)` `VBin=inputbox(prompt)` `end function` ` ` `rem ************ clear global flag ******************` `function VBclearFlag()` `flag=0` `end function` `rem ********* test if reference has passed ***********` `function VBrelPos(Ref, Current)` `if Ref=Current then` `VBRelPos="Reference"` `flag=1` `elseif flag=0 then` `VBRelPos="Before "&Ref&" in table"` `else` `VBRelPos="After "&Ref&" in table"` `end if` `end function` `// **************************************************` `// *************THIS IS THE SCRIPT *****************` `// *************************************************` ` ` `let MaxPop=VBin('Max population in millions :');` `// Ask limit` ` ` `let RefCountry=VBin('Reference country :');` ` // Ask ref.  ` ` ` `let dummy=VBclearFlag(); // Clears the global flag` ` ` `Carregar` `Country,recno(),` `Capital,` `"Area(km.sq)",` `"Population(mio)",` `VBrelPos('$(RefCountry)',Country)` `as RelativePos` `from country1.csv` `(ansi, txt, delimiter is ',', embedded labels)` `where "Population(mio)" <= $(MaxPop);`

## Transferência de Parâmetros

As seguintes regras são aplicadas para a transferência de parâmetros entre o script de carga e o VBScript:

* Os parâmetros ausentes são transmitidos como NULL.
* Se a expressão real for avaliada como um número válido, o número será transmitido; se a expressão real for avaliada como um caractere válido, o caractere será transmitido; caso contrário, será transmitido NULL.
* NULL é transmitido como VT\_EMPTY.
* Os valores retornados são tratados de forma natural.