CALL, CALLB, CALLP
CALL
Esta conocida instrucción se utiliza para invocar un
programa tradicional en OPM o un programa RPGLE, CLP, CLLE. No es necesario
explicar mucho más de este comando.
Cabe destacar que en RPGLE utilizando la facilidad de
declarar los programas o procedures externos en la hoja ‘D’, no es necesario
utilizar CALL cuando estamos programando en FREE. Con el nombre del procedure
declarado en la hoja ‘D’, es suficiente invocar el nombre del programa en el
cuerpo del programa se puede omitir el CALL:
PROGRAMA
MODELO
DPGMNAME PR EXTPGM(‘PGMNAME’)
D 10 A
D 20 A
/Free
PGMNAME(PARM1:PAMR2);
*inlr = *ON
//End-Free
El código
expuesto anteriormente corresponde a una “llamada dinámica”. Puede llamarse un
Procedure o Programa sin que hayan sido enlazados previamente mediante un
CRTPM.
PGMNAME
se refiere al nombre del programa que queremos invocar desde este Programa Modelo.
CALLB
Se utiliza para llamar a un
módulo que ha sido enlazado (Binded) con el programa llamador. Con el comando
CRTPGM se crea un programa en ILE que
puede ser enlazado con uno o varios módulos (programas a quienes se les ha
aplicado el CRTRPGMOD). Estos módulos enlazados pueden ser llamados con un CALLB.
Puntos a tomar en cuenta:
Ø
El segundo factor del CALLB, debe ser un módulo
enlazado con el programa “llamador”. Tambien puede ser un Subprocedure dentro
del programa llamador.
Ø
El segundo factor debe ser: una constante, un
literal o un apuntador a un procedure. Ejemplo:
CALL ‘PGM1’. NO Puede ser una variable ni el campo de un archivo.
CALL ‘PGM1’. NO Puede ser una variable ni el campo de un archivo.
CALLP
Se utiliza para llamar a un
procedure o subprocedure con prototipo en Ile o programa Externo OPM.
UN procedure con “prototipo”
tiene en su hoja ‘D’ una línea que tiene estas características.
PROGRAMA MAIN
DMAIN PR
D 10 A
D 20 A
El programa MAIN no tiene *entry
para declarar sus parámetros de entrada o Entry Points.
La declaración del prototipo hace
que el compilador reconozca que se trata de un procedure “prototyped”.
En un nivel elemental, Programa o Procedure es lo mismo. Hay sin
embargo diferencias:
En el Procedure, la declaración del prototipo
y su enlace con módulos (o su capacidad de ser enlazado con módulos) es lo que
lo distingue de un programa “normal”. Cuando se enlazan varios módulos, la
declaración del prototipo hace posible que el procedure pueda ser un modulo de
entrada o “programa principal” de todo el conjunto de procedures enlazados.
Puntos a tomar en Cuenta:
Ø
El CALLP puede utilizarse para llamar a un
programa, o a un procedure o subprocedure.
Ø
Si el procedure retorna un valor no puedes
utilizar CALLP. Debe llamarlo como se llama
a las funciones Built-In en Ile-Rpg.
Ø
Usa el CALLP(E) para llamar a un programa o
procedure cuando quieras monitorear el
error en la llamada con if %error
CALLP es el operador más amplio
de los tres operadores de llamadas que hemos visto en este artículo. Puede
utilizarse para llamar programas, procedure y subprocedures. Además tiene
código extendido E para monitoreo de errores de llamada.
Si te pareció
interesante, reenvíalo a un amigo haciendo click en el sobrecito que está al
final del artículo. El conocimiento es valioso, compártelo.
Autor:
Ing. Liliana Suárez
No comments:
Post a Comment