Un programa puede llamar otro programa como una subrutina. La subrutina puede ser externa (un programa independiente) o interna (incluida en el programa principal). Las subrutinas son útiles cuando un programa necesita repetir el mismo grupo de comandos en varios lugares diferentes.
Para llamar un programa independiente, use la misma sintaxis que usted usa para ejecutar el programa desde la línea de ingreso.
Para definir una subrutina interna, use el comando Definir con Prgm...TerminarPrgm. Dado que una subrutina se debe definir antes de que se pueda llamar, es una buena práctica definir las subrutinas al principio del programa principal.
Una subrutina interna se llama y ejecuta de la misma manera que un programa independiente.
|
Define subtest1()= Prgm local subtest2 À Define subtest2(x,y)= Á Prgm Disp x,y EndPrgm ©Comienzo del programa principal For i,1,4,1 subtest2(i,I*1000) Â EndFor EndPrgm |
|
À |
Declara la subrutina como una variable local. |
|
Á |
Define la subrutina. |
|
 |
Llama a la subrutina. |
Nota: Use el menú Var del Editor de Programas para ingresar los comandos Definir y Prgm...TerminarPrgm .
Al final de una subrutina, la ejecución regresa al programa que llama. Para salir de una subrutina en cualquier otro momento, use Return sin ningún argumento.
Una subrutina no puede acceder a las variables locales declaradas en el programa que llama. Asimismo, el programa que llama no puede acceder a las variables locales declaradas en una subrutina.
Lbl son locales para los programas en los cuales se localizan. Por lo tanto, un comando de Goto en el programa que llama no se puede ramificar en una etiqueta en una subrutina o viceversa.
Cuando se evalúa una función definida por el usuario o se ejecuta un programa, usted puede especificar un argumento que incluya la misma variable que se usó para definir la función o para crear el programa. No obstante, para evitar errores de definición circular, usted debe asignar un valor para las variables que se usan al evaluar la función o al ejecutar el programa. Por ejemplo:
|
x+1&x À |
– o –
|
For i,i,10,1 Disp i À EndFor |
|
À |
Causa un mensaje de error de definición Circular si x o i no tiene un valor. El error no ocurre si a x o i ya se les ha asignado un valor. |