PROGRAMACION RPG
Conceptos ILE
Ingeniero Giovanny Guillen Bustamante
Especialista Certificado IBM i – PMP – Scrum Master
Agenda
1. Conceptos ILE
2. Programación Modular
3. Prototipos y Procedimientos
4. Estructuras de Datos Calificadas
5. Gestión de errores y excepciones
6. Punteros
7. Manejo de XML
8. Emulación OOP
Ingeniero Giovanny Guillen Bustamante
Especialista Certificado IBM i – PMP – Scrum Master
Conceptos ILE
▪ Entorno donde se puede generar módulos en diferentes lenguajes.
Ingeniero Giovanny Guillen Bustamante
Especialista Certificado IBM i – PMP – Scrum Master
Conceptos ILE
▪ ILE permite escribir código modular y reutilizable.
➢ Grupos de Activación
Los programas se agrupan juntos para que puedan compartir
recursos entre sí y se puedan desactivar juntos.
➢ Subprocedimientos
Subrutinas con parámetros y variables locales.
➢ Módulos
Subprocedimientos agrupados juntos en un objeto.
➢ Programas
Módulos con un punto de entrada que se puede ejecutar con el
comando CALL.
➢ Programas de Servicio
Módulos con muchos puntos de entrada que se puede llamar
desde programas ILE.
Ingeniero Giovanny Guillen Bustamante
Especialista Certificado IBM i – PMP – Scrum Master
Conceptos ILE
▪ Grupos de activación: Permite la carga y descarga de programas en
conjunto.
▪ Directorios de enlace: Una lista, similar en concepto a una lista de
bibliotecas, que permite la búsqueda de una sub-procedimiento.
▪ Lenguaje de enlace: Una lista de los subprocedimientos en un
programa de servicio que puede ser llamado externamente.
▪ Enlace estático / Enlace por copia / Enlace Dinámico / Enlace por
referencia: Una copia de un subprocedimiento se incluye en el
programa que lo necesita, o no.
Ingeniero Giovanny Guillen Bustamante
Especialista Certificado IBM i – PMP – Scrum Master
Conceptos ILE
▪ Grupos de activación: Poner una aplicación en el mismo grupo de
activación hace posible descargar todos sus componentes a la vez,
sin afectar a otros programas.
Ingeniero Giovanny Guillen Bustamante
Especialista Certificado IBM i – PMP – Scrum Master
Conceptos ILE
▪ Grupos de activación: Valores especiales ACTGRP
➢ DFTACTGRP (*YES): Actúan como un programa OPM. No utiliza
las funciones de ILE. LR Finaliza la ejecución.
➢ DFTACTGRP (*NO): Programa permanece en la memoria hasta
que ACTGRP se destruye. LR cierra archivos y variables que
reinicializa en la siguiente llamada.
➢ ACTGRP (*CALLER): Usa el mismo ACTGRP como el programa
que me llamó.
➢ ACTGRP (*NEW): Crear un grupo de activación nuevo, con un
nombre generado por el sistema, cada vez que este programa
se llama.
Ingeniero Giovanny Guillen Bustamante
Especialista Certificado IBM i – PMP – Scrum Master
Conceptos ILE
▪ Módulos:
➢ Toma menos tiempo para comprender.
➢ Más fácil de probar y depurar.
➢ Se puede reutilizar de todas partes.
➢ Si una rutina se vuelve a utilizar en todas partes, sólo hay un
lugar donde encontrar errores o hacer cambios.
▪ ¿Qué es un módulo?
➢ Un miembro fuente se compila en un objeto *MODULE.
➢ Un módulo puede contener muchos subprocedimientos
diferentes. Cada uno puede ser "exportado” de modo que cada
uno puede ser llamado individualmente.
➢ Un objeto * MÓDULO contiene el código compilado y traducido,
pero que el código no se puede ejecutar.
Ingeniero Giovanny Guillen Bustamante
Especialista Certificado IBM i – PMP – Scrum Master
Conceptos ILE
▪ Módulos
➢ Cada objeto de tipo *MODULE se unen para crear un programa
o programa de servicio.
➢ Un programa (o programa de servicio) requiere al menos un
módulo, y puede constan de muchos.
➢ Los módulos no son necesarios una vez que el programa ha
sido creado. (Sin embargo, es posible que desee guardarlos para
acelerar futuras versiones del programa.)
➢ Típicamente:
✓ El primer módulo de un programa tiene un procedimiento
principal. Ese procedimiento principal es lo que se llama
cuando el programa se ejecuta por primera vez.
✓ El resto de los módulos no tienen ningún procedimiento
principal, sólo sub-procedimientos.
Ingeniero Giovanny Guillen Bustamante
Especialista Certificado IBM i – PMP – Scrum Master
Conceptos ILE
▪ Procedimiento Principal y sub-Procedimientos
➢ Los programas están compuestos de uno o más módulos.
➢ Módulos consisten en uno o más procedimiento.
➢ Hay dos tipos de procedimientos, procedimientos principales y
sub-procedimientos.
Ingeniero Giovanny Guillen Bustamante
Especialista Certificado IBM i – PMP – Scrum Master
Conceptos ILE
➢ Contiene las declaraciones de sub-
procedimientos “PR” en la hoja “D”.
➢ Realiza las llamadas a los sub-
procedimientos
➢ Ejecutan el ciclo RPG
➢ Son rutinas con parámetros.
➢ Pueden llamados usando CALLB
CALLP .
➢ Comienzan (B) y terminan (E) con la
especificación “P”.
➢ Internamente se declaran sus
parámetros (PI)
Ingeniero Giovanny Guillen Bustamante
Especialista Certificado IBM i – PMP – Scrum Master
Conceptos ILE
▪ Prototipos
➢ Es una declaración del llamado a un programa, sub-
procedimiento o clase Java. Contiene una lista de parámetros
(PLIST).
➢ La palabra clave EXTPGM especifica que un prototipo se utiliza
para llamar a un programa.
D Center PR ExtPgm('CTR001R4')
D String 65535A options(*varsize)
D Length 15P 5 const
Ingeniero Giovanny Guillen Bustamante
Especialista Certificado IBM i – PMP – Scrum Master
Conceptos ILE
▪ Prototipos
➢ CONST: Especifica que el parámetro es sólo de entrada
➢ Es auto-documentado. Se puede determinar qué parámetros
son para la entrada y que son para la salida.
➢ El compilador comprueba que el código no cambia el
parámetro.
D CALCTAX PR ExtPgm('CALCTAX')
D Amount 9S 2 const
D Tax 9S 4
D CALCTAX PI
D Amount 9S 2 const
D Tax 9S 4
C eval(h) Tax = Amount * 0.05
C return
Ingeniero Giovanny Guillen Bustamante
Especialista Certificado IBM i – PMP – Scrum Master
Conceptos ILE
▪ Prototipos
FPRICELIST IF E K DISK
/copy prototypes,getPrice
D GetPrice PI
D ItemNo 5P 0 const
D Zone 1A const
D Price 9P 2
D pCountry 3A const options(*nopass)
D Country S 3A inz('USA')
/free
if %parms >= 4;
Country = pCountry;
endif;
chain (ItemNo:Zone) PRICELIST;
if not %found;
Price = -1;
return;
endif;
callp EXCHRATE('USA': Country: plPrice: Price);
return;
/end-free
Ingeniero Giovanny Guillen Bustamante
Especialista Certificado IBM i – PMP – Scrum Master
Conceptos ILE
▪ Prototipos
FPRICELIST IF E K DISK
/copy prototypes,getPrice
D GetPrice PI
D ItemNo 5P 0 const
D Zone 1A const
D Price 9P 2
D pCountry 3A const options(*nopass)
D Country S 3A inz('USA')
/free
if %parms >= 4;
Country = pCountry;
endif;
chain (ItemNo:Zone) PRICELIST;
if not %found;
Price = -1;
return;
endif;
callp EXCHRATE('USA': Country: plPrice: Price);
return;
/end-free
➢ Indica que algunos de los
parámetros al final de la lista
pueden o no pasar en la
llamada.
➢ Con %PARMS se
determina si se
pasan los parámetros
totales.
Ingeniero Giovanny Guillen Bustamante
Especialista Certificado IBM i – PMP – Scrum Master
Conceptos ILE
▪ Prototipos
D GetPrice PI
D ItemNo 5P 0 const
D pZone 1A const options(*omit)
D Price 9P 2
D pCountry 3A const
D options(*nopass:*omit)
D Country S 3A inz('USA')
.
.
if %parms >= 4 AND %addr(pCountry) <> *NULL;
Country = pCountry;
endif;
callp GetPrice(ItemNo: *OMIT: Price: Country);
Ingeniero Giovanny Guillen Bustamante
Especialista Certificado IBM i – PMP – Scrum Master
Conceptos ILE
▪ Prototipos
D GetPrice PI
D ItemNo 5P 0 const
D pZone 1A const options(*omit)
D Price 9P 2
D pCountry 3A const
D options(*nopass:*omit)
D Country S 3A inz('USA')
.
.
if %parms >= 4 AND %addr(pCountry) <> *NULL;
Country = pCountry;
endif;
➢ Indica que el valor del
parámetro se puede
pasar o no.
➢ Con %ADDR() se
determina si el valor
del parámetro fue
pasado o no.
callp GetPrice(ItemNo: *OMIT: Price: Country);
Ingeniero Giovanny Guillen Bustamante
Especialista Certificado IBM i – PMP – Scrum Master
Conceptos ILE
▪ Prototipos
D MyProgram PR ExtPgm('MYPGM')
D Parm1 20A const options(*RightAdj)
/copy prototypes,joinname
D JoinName PI
D First 30A varying const
D options(*trim)
D Last 30A varying const
D options(*trim)
D WholeName 50A
/free
Wholename = Last + ', ' + First;
return;
/end-free
Ingeniero Giovanny Guillen Bustamante
Especialista Certificado IBM i – PMP – Scrum Master
Conceptos ILE
▪ Prototipos
D MyProgram PR ExtPgm('MYPGM')
D Parm1 20A const options(*RightAdj)
/copy prototypes,joinname
D JoinName PI
D First 30A varying const
D options(*trim)
D Last 30A varying const
D options(*trim)
D WholeName 50A
/free
Wholename = Last + ', ' + First;
return;
/end-free
➢ Indica que el valor del
parámetro se debe
ajustar a la derecha.
➢ Permite eliminar los
espacios en blanco de
una cadena de
caracteres.
➢ Indica que la variable
o parámetro tiene
una longitud máxima
y se puede utilizar o
no en su totalidad.
Ingeniero Giovanny Guillen Bustamante
Especialista Certificado IBM i – PMP – Scrum Master
Conceptos ILE
▪ Prototipos
Ingeniero Giovanny Guillen Bustamante
Especialista Certificado IBM i – PMP – Scrum Master
Conceptos ILE
▪ Exportación de sub-procedimientos
➢ Permite escribir toda una biblioteca de sub-procedimientos.
➢ Todo sub-procedimiento a ser llamado externamente se debe
marcar con EXPORT.
➢ Los prototipos de estos sub-procedimientos externos se deben
colocar en un archivo /COPY.
➢ Los sub-procedimientos que se utilizan internamente no se
exportan, su prototipos no se colocan en el archivo /copy.
Ingeniero Giovanny Guillen Bustamante
Especialista Certificado IBM i – PMP – Scrum Master
Ingeniero Giovanny Guillen Bustamante
PMP Certified
IBM i Certified Specialist
E-mail: giovanny_guillen_b@Hotmail.com
Gracias

Programacion RPG: Conceptos ILE

  • 1.
    PROGRAMACION RPG Conceptos ILE IngenieroGiovanny Guillen Bustamante Especialista Certificado IBM i – PMP – Scrum Master
  • 2.
    Agenda 1. Conceptos ILE 2.Programación Modular 3. Prototipos y Procedimientos 4. Estructuras de Datos Calificadas 5. Gestión de errores y excepciones 6. Punteros 7. Manejo de XML 8. Emulación OOP Ingeniero Giovanny Guillen Bustamante Especialista Certificado IBM i – PMP – Scrum Master
  • 3.
    Conceptos ILE ▪ Entornodonde se puede generar módulos en diferentes lenguajes. Ingeniero Giovanny Guillen Bustamante Especialista Certificado IBM i – PMP – Scrum Master
  • 4.
    Conceptos ILE ▪ ILEpermite escribir código modular y reutilizable. ➢ Grupos de Activación Los programas se agrupan juntos para que puedan compartir recursos entre sí y se puedan desactivar juntos. ➢ Subprocedimientos Subrutinas con parámetros y variables locales. ➢ Módulos Subprocedimientos agrupados juntos en un objeto. ➢ Programas Módulos con un punto de entrada que se puede ejecutar con el comando CALL. ➢ Programas de Servicio Módulos con muchos puntos de entrada que se puede llamar desde programas ILE. Ingeniero Giovanny Guillen Bustamante Especialista Certificado IBM i – PMP – Scrum Master
  • 5.
    Conceptos ILE ▪ Gruposde activación: Permite la carga y descarga de programas en conjunto. ▪ Directorios de enlace: Una lista, similar en concepto a una lista de bibliotecas, que permite la búsqueda de una sub-procedimiento. ▪ Lenguaje de enlace: Una lista de los subprocedimientos en un programa de servicio que puede ser llamado externamente. ▪ Enlace estático / Enlace por copia / Enlace Dinámico / Enlace por referencia: Una copia de un subprocedimiento se incluye en el programa que lo necesita, o no. Ingeniero Giovanny Guillen Bustamante Especialista Certificado IBM i – PMP – Scrum Master
  • 6.
    Conceptos ILE ▪ Gruposde activación: Poner una aplicación en el mismo grupo de activación hace posible descargar todos sus componentes a la vez, sin afectar a otros programas. Ingeniero Giovanny Guillen Bustamante Especialista Certificado IBM i – PMP – Scrum Master
  • 7.
    Conceptos ILE ▪ Gruposde activación: Valores especiales ACTGRP ➢ DFTACTGRP (*YES): Actúan como un programa OPM. No utiliza las funciones de ILE. LR Finaliza la ejecución. ➢ DFTACTGRP (*NO): Programa permanece en la memoria hasta que ACTGRP se destruye. LR cierra archivos y variables que reinicializa en la siguiente llamada. ➢ ACTGRP (*CALLER): Usa el mismo ACTGRP como el programa que me llamó. ➢ ACTGRP (*NEW): Crear un grupo de activación nuevo, con un nombre generado por el sistema, cada vez que este programa se llama. Ingeniero Giovanny Guillen Bustamante Especialista Certificado IBM i – PMP – Scrum Master
  • 8.
    Conceptos ILE ▪ Módulos: ➢Toma menos tiempo para comprender. ➢ Más fácil de probar y depurar. ➢ Se puede reutilizar de todas partes. ➢ Si una rutina se vuelve a utilizar en todas partes, sólo hay un lugar donde encontrar errores o hacer cambios. ▪ ¿Qué es un módulo? ➢ Un miembro fuente se compila en un objeto *MODULE. ➢ Un módulo puede contener muchos subprocedimientos diferentes. Cada uno puede ser "exportado” de modo que cada uno puede ser llamado individualmente. ➢ Un objeto * MÓDULO contiene el código compilado y traducido, pero que el código no se puede ejecutar. Ingeniero Giovanny Guillen Bustamante Especialista Certificado IBM i – PMP – Scrum Master
  • 9.
    Conceptos ILE ▪ Módulos ➢Cada objeto de tipo *MODULE se unen para crear un programa o programa de servicio. ➢ Un programa (o programa de servicio) requiere al menos un módulo, y puede constan de muchos. ➢ Los módulos no son necesarios una vez que el programa ha sido creado. (Sin embargo, es posible que desee guardarlos para acelerar futuras versiones del programa.) ➢ Típicamente: ✓ El primer módulo de un programa tiene un procedimiento principal. Ese procedimiento principal es lo que se llama cuando el programa se ejecuta por primera vez. ✓ El resto de los módulos no tienen ningún procedimiento principal, sólo sub-procedimientos. Ingeniero Giovanny Guillen Bustamante Especialista Certificado IBM i – PMP – Scrum Master
  • 10.
    Conceptos ILE ▪ ProcedimientoPrincipal y sub-Procedimientos ➢ Los programas están compuestos de uno o más módulos. ➢ Módulos consisten en uno o más procedimiento. ➢ Hay dos tipos de procedimientos, procedimientos principales y sub-procedimientos. Ingeniero Giovanny Guillen Bustamante Especialista Certificado IBM i – PMP – Scrum Master
  • 11.
    Conceptos ILE ➢ Contienelas declaraciones de sub- procedimientos “PR” en la hoja “D”. ➢ Realiza las llamadas a los sub- procedimientos ➢ Ejecutan el ciclo RPG ➢ Son rutinas con parámetros. ➢ Pueden llamados usando CALLB CALLP . ➢ Comienzan (B) y terminan (E) con la especificación “P”. ➢ Internamente se declaran sus parámetros (PI) Ingeniero Giovanny Guillen Bustamante Especialista Certificado IBM i – PMP – Scrum Master
  • 12.
    Conceptos ILE ▪ Prototipos ➢Es una declaración del llamado a un programa, sub- procedimiento o clase Java. Contiene una lista de parámetros (PLIST). ➢ La palabra clave EXTPGM especifica que un prototipo se utiliza para llamar a un programa. D Center PR ExtPgm('CTR001R4') D String 65535A options(*varsize) D Length 15P 5 const Ingeniero Giovanny Guillen Bustamante Especialista Certificado IBM i – PMP – Scrum Master
  • 13.
    Conceptos ILE ▪ Prototipos ➢CONST: Especifica que el parámetro es sólo de entrada ➢ Es auto-documentado. Se puede determinar qué parámetros son para la entrada y que son para la salida. ➢ El compilador comprueba que el código no cambia el parámetro. D CALCTAX PR ExtPgm('CALCTAX') D Amount 9S 2 const D Tax 9S 4 D CALCTAX PI D Amount 9S 2 const D Tax 9S 4 C eval(h) Tax = Amount * 0.05 C return Ingeniero Giovanny Guillen Bustamante Especialista Certificado IBM i – PMP – Scrum Master
  • 14.
    Conceptos ILE ▪ Prototipos FPRICELISTIF E K DISK /copy prototypes,getPrice D GetPrice PI D ItemNo 5P 0 const D Zone 1A const D Price 9P 2 D pCountry 3A const options(*nopass) D Country S 3A inz('USA') /free if %parms >= 4; Country = pCountry; endif; chain (ItemNo:Zone) PRICELIST; if not %found; Price = -1; return; endif; callp EXCHRATE('USA': Country: plPrice: Price); return; /end-free Ingeniero Giovanny Guillen Bustamante Especialista Certificado IBM i – PMP – Scrum Master
  • 15.
    Conceptos ILE ▪ Prototipos FPRICELISTIF E K DISK /copy prototypes,getPrice D GetPrice PI D ItemNo 5P 0 const D Zone 1A const D Price 9P 2 D pCountry 3A const options(*nopass) D Country S 3A inz('USA') /free if %parms >= 4; Country = pCountry; endif; chain (ItemNo:Zone) PRICELIST; if not %found; Price = -1; return; endif; callp EXCHRATE('USA': Country: plPrice: Price); return; /end-free ➢ Indica que algunos de los parámetros al final de la lista pueden o no pasar en la llamada. ➢ Con %PARMS se determina si se pasan los parámetros totales. Ingeniero Giovanny Guillen Bustamante Especialista Certificado IBM i – PMP – Scrum Master
  • 16.
    Conceptos ILE ▪ Prototipos DGetPrice PI D ItemNo 5P 0 const D pZone 1A const options(*omit) D Price 9P 2 D pCountry 3A const D options(*nopass:*omit) D Country S 3A inz('USA') . . if %parms >= 4 AND %addr(pCountry) <> *NULL; Country = pCountry; endif; callp GetPrice(ItemNo: *OMIT: Price: Country); Ingeniero Giovanny Guillen Bustamante Especialista Certificado IBM i – PMP – Scrum Master
  • 17.
    Conceptos ILE ▪ Prototipos DGetPrice PI D ItemNo 5P 0 const D pZone 1A const options(*omit) D Price 9P 2 D pCountry 3A const D options(*nopass:*omit) D Country S 3A inz('USA') . . if %parms >= 4 AND %addr(pCountry) <> *NULL; Country = pCountry; endif; ➢ Indica que el valor del parámetro se puede pasar o no. ➢ Con %ADDR() se determina si el valor del parámetro fue pasado o no. callp GetPrice(ItemNo: *OMIT: Price: Country); Ingeniero Giovanny Guillen Bustamante Especialista Certificado IBM i – PMP – Scrum Master
  • 18.
    Conceptos ILE ▪ Prototipos DMyProgram PR ExtPgm('MYPGM') D Parm1 20A const options(*RightAdj) /copy prototypes,joinname D JoinName PI D First 30A varying const D options(*trim) D Last 30A varying const D options(*trim) D WholeName 50A /free Wholename = Last + ', ' + First; return; /end-free Ingeniero Giovanny Guillen Bustamante Especialista Certificado IBM i – PMP – Scrum Master
  • 19.
    Conceptos ILE ▪ Prototipos DMyProgram PR ExtPgm('MYPGM') D Parm1 20A const options(*RightAdj) /copy prototypes,joinname D JoinName PI D First 30A varying const D options(*trim) D Last 30A varying const D options(*trim) D WholeName 50A /free Wholename = Last + ', ' + First; return; /end-free ➢ Indica que el valor del parámetro se debe ajustar a la derecha. ➢ Permite eliminar los espacios en blanco de una cadena de caracteres. ➢ Indica que la variable o parámetro tiene una longitud máxima y se puede utilizar o no en su totalidad. Ingeniero Giovanny Guillen Bustamante Especialista Certificado IBM i – PMP – Scrum Master
  • 20.
    Conceptos ILE ▪ Prototipos IngenieroGiovanny Guillen Bustamante Especialista Certificado IBM i – PMP – Scrum Master
  • 21.
    Conceptos ILE ▪ Exportaciónde sub-procedimientos ➢ Permite escribir toda una biblioteca de sub-procedimientos. ➢ Todo sub-procedimiento a ser llamado externamente se debe marcar con EXPORT. ➢ Los prototipos de estos sub-procedimientos externos se deben colocar en un archivo /COPY. ➢ Los sub-procedimientos que se utilizan internamente no se exportan, su prototipos no se colocan en el archivo /copy. Ingeniero Giovanny Guillen Bustamante Especialista Certificado IBM i – PMP – Scrum Master
  • 22.
    Ingeniero Giovanny GuillenBustamante PMP Certified IBM i Certified Specialist E-mail: giovanny_guillen_b@Hotmail.com Gracias