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&amp;#225;s de NEWS/400.
&amp;#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

Responder a