Carlos,
El CALL se usa para llamar programas (*PGM) dentro de programas RPG400 o
RPGIV, Es una llamada dinámica, por lo que se resuelve en el momento en que
se llama, esto quiere decir que al ejecutar el programa llamador (el que
hace el CALL) el sistema se encarga de validar el nombre de objeto llamado
sea un nombre válido, que exista como objeto, y verifica la cantidad de
parámetros pasados. Es decir se ejecutan siempre ciertas rutina del sistema
en cada CALL, por lo cual un CALL puede verse como DOS LLAMADAS REALES, la
de la maquina y la propia llamada.
El CALLP (que la P hacer referencia no a una llamada de Procedimientos, si
no una llamada de Prototipos) se utiliza para llamar objetos *PGM o
procedimientos sean estos internos (sub-procedimientos) o de un programa de
servicio. También se usa para invocar API's enlazables (esto es para
sustituir al CALLB, pero vamos por partes).
Si es un *PGM el que se llama - ExtPgm('UNPGM') - Entonces funciona igual
que el CALL. Sin embargo si es un procedimiento (ExtProc) o API enlazable,
entonces se dice que la llamada es estática, el compilador genera
instrucciones directamente en el llamador, para bifurcar al procedimiento
llamado. Es decir al compilar el modulo. Estas instrucciones realmente no
validan si el objeto existe, si no que asumen que la dirección final de la
llamada será complementada por el gestor de enlace cuando es un
procedimiento interno (enlazado por copia) o por el proceso de activación
del programa llamador cuando es un programa de servicio (enlace por
referencia), es decir al crear el programa enlazado.
Entonces la primera vez que se hace una llamada estática es más lenta pero a
continuación será más rápida, completamente diferente a un simple CALL. El
procedimiento invocado se incrusta en mi fuente llamador como si yo lo
hubiera programado internamente, entonces ESO es ILE. Llamar...
Finalmente el CALLB se utiliza para llamar una API enlazable, que de igual
modo se incrustan por referencia como si se tratara de un procedimientos
propio. Sobre las APIs enlazables y que se puede hacer con ellas hay
bastante documentación por ahí.
Ya no se recomienda utilizar el CALLB porque ya tenemos a los prototipos que
de por si permiten muchas más cosas por ejemplo llamarlos desde /FREE.
Saludos
MAURICIO HERRERA
.:*~*:._.:*~*:._.:*~*:._.:*~*:.
Message: 1
Date: Wed, 3 Dec 2008 12:55:29 -0400
From: Carlos Pedrozo <[EMAIL PROTECTED]>
Subject: RE: Una opinion
To: <[email protected]>
Message-ID: <[EMAIL PROTECTED]>
Content-Type: text/plain; charset="iso-8859-1"
Alguien puede indicarme cual es la diferencia entre :
call
callb
callp
Gracias
__________________________________________________
Forum.HELP400 es un servicio m&#225;s de NEWS/400.
&#169; Publicaciones Help400, S.L. - Todos los derechos reservados
http://www.help400.es
_____________________________________________________
Para darte de baja visita la siguente URL:
http://listas.combios.es/mailman/listinfo/forum.help400