programacion rpg: conceptos ile

22
PROGRAMACION RPG Conceptos ILE Ingeniero Giovanny Guillen Bustamante Especialista Certificado IBM i – PMP – Scrum Master

Upload: giovanny-guillen

Post on 23-Jan-2018

320 views

Category:

Software


20 download

TRANSCRIPT

Page 1: Programacion RPG: Conceptos ILE

PROGRAMACION RPG

Conceptos ILE

Ingeniero Giovanny Guillen BustamanteEspecialista Certificado IBM i – PMP – Scrum Master

Page 2: Programacion RPG: Conceptos ILE

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

Page 3: Programacion RPG: Conceptos ILE

Conceptos ILE

▪ Entorno donde se puede generar módulos en diferentes lenguajes.

Ingeniero Giovanny Guillen Bustamante

Especialista Certificado IBM i – PMP – Scrum Master

Page 4: Programacion RPG: Conceptos ILE

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

Page 5: Programacion RPG: Conceptos ILE

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

Page 6: Programacion RPG: Conceptos ILE

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

Page 7: Programacion RPG: Conceptos ILE

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

Page 8: Programacion RPG: Conceptos ILE

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

Page 9: Programacion RPG: Conceptos ILE

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

Page 10: Programacion RPG: Conceptos ILE

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

Page 11: Programacion RPG: Conceptos ILE

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

Page 12: Programacion RPG: Conceptos ILE

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

Page 13: Programacion RPG: Conceptos ILE

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

Page 14: Programacion RPG: Conceptos ILE

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

Page 15: Programacion RPG: Conceptos ILE

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 losparámetros al final de la listapueden o no pasar en lallamada.

➢ Con %PARMS sedetermina si sepasan los parámetrostotales.

Ingeniero Giovanny Guillen Bustamante

Especialista Certificado IBM i – PMP – Scrum Master

Page 16: Programacion RPG: Conceptos ILE

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

Page 17: Programacion RPG: Conceptos ILE

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 delparámetro se puedepasar o no.

➢ Con %ADDR() sedetermina si el valordel parámetro fuepasado o no.

callp GetPrice(ItemNo: *OMIT: Price: Country);

Ingeniero Giovanny Guillen Bustamante

Especialista Certificado IBM i – PMP – Scrum Master

Page 18: Programacion RPG: Conceptos ILE

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

Page 19: Programacion RPG: Conceptos ILE

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 delparámetro se debeajustar a la derecha.

➢ Permite eliminar losespacios en blanco deuna cadena decaracteres.

➢ Indica que la variableo parámetro tieneuna longitud máximay se puede utilizar ono en su totalidad.

Ingeniero Giovanny Guillen Bustamante

Especialista Certificado IBM i – PMP – Scrum Master

Page 20: Programacion RPG: Conceptos ILE

Conceptos ILE

▪ Prototipos

Ingeniero Giovanny Guillen Bustamante

Especialista Certificado IBM i – PMP – Scrum Master

Page 21: Programacion RPG: Conceptos ILE

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

Page 22: Programacion RPG: Conceptos ILE

Ingeniero Giovanny Guillen Bustamante

PMP Certified

IBM i Certified Specialist

E-mail: [email protected]

Gracias