En VBScript existen tres formas b�sicas de ejecuci�n. La primera de ellas se conoce con el nombre de ejecuci�n inmediata. Es un c�digo VBScript insertado dentro de un c�digo HTML y que se ejecuta all� donde est� insertado. Es la forma de ejecuci�n de todos los ejemplos que hemos visto hasta ahora en este temario. Hay otras dos formas de ejecuci�n en las que el c�digo se carga en memoria en segundo plano, sin ejecutarse hasta que es invocado en alg�n punto concreto de la p�gina. Estas dos formas de ejecuci�n se conocen con el nombre de funciones y procedimientos. Dada su propia naturaleza, el c�digo de las funciones y los procedimientos suele ir al principio de la p�gina, normalmente dentro de la cabecera. Ah� se cargan en memoria pero no se ejecutar�n hasta que sean invocados desde alg�n punto de la p�gina. Esto se hace as� porque es importante haberlas definido (cargado en memoria) antes de invocarlas. Vamos a ver como funcionan ambos sistemas de ejecuci�n.
�FUNCIONES
Una funci�n es un fragmento de c�digo que recoge unos par�metros (valores que se le pasan para su ejecuci�n) y devuelve un resultado. El c�digo de la funci�n se incluye entre las palabras clave FUNCTION y END FUNCTION. Todo lo que haya entre estas dos l�neas ser� considerado como parte de la funci�n. Adem�s, a la funci�n se le asigna un nombre, por el que se la invocar� desde el c�digo y ser� el nombre del resultado que devuelva. As� pues, en VBScript una funci�n s�lo puede devolver un resultado. Veamos un ejemplo que lo dejar� todo mas claro. Vamos a escribir un programa que pida dos n�meros por teclado y los sume entre s�:
<HTML> <HEAD> <TITLE>Ejemplo del uso de funciones</TITLE> <SCRIPT LANGUAGE = "VBScript"> ' En la siguiente l�nea empieza la funci�n. FUNCTION sumar (sumando_1, sumando_2) sumar = (CLNG(sumando_1) + CLNG(sumando_2)) END FUNCTION ' Ya se ha acabado la funci�n. </SCRIPT> </HEAD> <BODY> <SCRIPT LANGUAGE = "VBScript"> OPTION EXPLICIT ' A continuaci�n se definen las tres variables que se usar�n. ' La variable resultado almacenar� el resultado que devuelva la funci�n. ' Las variables sum1 y sum2 almacenan los valores que se pasar�n ' como par�metros a la funci�n. DIM sum1 DIM sum2 DIM resultado sum1 = 0 sum2 = 0 resultado = 0 ' El siguiente bloque pide por teclado el primer sumando, comprobando que ' se trate de un numero positivo. DO UNTIL (sum1 > 0) sum1 = INPUTBOX ("Introduzca el primer sumando:") LOOP ' El siguiente bloque pide por teclado el segundo sumando, comprobando que ' sea tambi�n un n�mero positivo. DO UNTIL (sum2 > 0) sum2 = INPUTBOX ("Introduzca el segundo sumando:") LOOP resultado = sumar (sum1, sum2) MSGBOX ("El resultado es " & resultado) </SCRIPT> </BODY> </HTML>
El resultado de este c�digo es que pide al usuario que introduzca que introduzca un n�mero que ser� el primer sumando de la suma, como ya conocemos:

En este caso hemos introducido un 5. A continuaci�n se nos pide de igual modo el segundo sumando:

Como ves hemos introducido un 7. El programa invoca entonces a la funci�n de la suma a la que hemos llamado sumar. Esta funci�n devuelve un resultado que es mostrado en la siguiente forma:

Vamos a entrar en detalle en el funcionamiento de este proceso. En primer lugar deberemos reparar en que el nombre de las variables que se pasan a la funci�n como par�metros (tambi�n llamados argumentos de la funci�n) no tiene por que coincidir con los nombres que se le dieron a los par�metros en el momento de definirla. Si te fijas ver�s que, en la definici�n de la funci�n se han incluido como par�metros sumando_1 y sumando_2, tal como vemos en la correspondiente l�nea de c�digo:
FUNCTION sumar (sumando_1, sumando_2)
Sin embargo en la invocaci�n se usan las variables sum1 y sum2:
resultado = sumar (sum1, sum2)
Esto es as� porque el sistema coge la primera variable de la invocaci�n y la asigna al primer argumento de la funci�n; la segunda variable de la invocaci�n la asigna al segundo argumento de la funci�n, y as� sucesivamente si hubiera que pasar mas par�metros. De esta forma, para invocar una funci�n nos basta con saber el n�mero de par�metros que es necesario pasarle. Los par�metros deben estar encerrados entre par�ntesis y separados por comas, tanto los de la definici�n como los de la invocaci�n. Dentro de la definici�n de la funci�n vemos tambi�n la siguiente l�nea:
sumar = (CLNG(sumando_1) + CLNG(sumando_2))
En ella apreciamos que el resultado que devolver� la funci�n, sale de �sta con el mismo nombre que la funci�n (sumar) , aunque luego se alojar� en la variable resultado, que es la que invoca a la funci�n.
Adem�s observamos la palabra clave CLNG (). Tiene todo el aspecto de ser una funci�n que se aplica a sumando_1 y a sumando_2. Sin embargo en nuestro c�digo no aparece definida en ninguna parte. Esto es as� porque CLNG ()no es una funci�n de usuario, sino una funci�n del lenguaje y, por lo tanto, su comportamiento est� definido en el int�rprete. Hablaremos de las funciones del lenguaje en el apartado del mismo nombre, dentro de �ste cap�tulo. De momento nos basta saber que si no aplicamos esta funci�n, el resultado no es el que esperamos (la suma aritm�tica de los par�metros), si no la concatenaci�n de ambos como si fueran cadenas alfanum�ricas. Una �ltima consideraci�n acerca de las funciones. Es posible definir y utilizar funciones que no reciban ning�n argumento, pero siempre devuelven un resultado.