En este módulo, vamos a aplicar los conocimientos adquiridos en los módulos anteriores para construir una aplicación simple en RPG. Este ejercicio práctico te ayudará a consolidar tus habilidades y a entender cómo se integran los diferentes conceptos en un proyecto real.
Objetivos del Módulo
- Crear una aplicación simple en RPG.
- Aplicar conceptos de manejo de archivos, estructuras de control y funciones.
- Implementar buenas prácticas de programación.
Descripción de la Aplicación
Vamos a construir una aplicación de gestión de contactos. La aplicación permitirá:
- Agregar un nuevo contacto.
- Listar todos los contactos.
- Buscar un contacto por nombre.
- Eliminar un contacto.
Estructura del Proyecto
- Definición de la estructura de datos: Definiremos cómo se almacenarán los contactos.
- Funciones principales: Implementaremos las funciones para agregar, listar, buscar y eliminar contactos.
- Interfaz de usuario: Crearemos una interfaz simple para interactuar con la aplicación.
Paso 1: Definición de la Estructura de Datos
Primero, definimos la estructura de datos para almacenar los contactos. Utilizaremos un archivo físico para almacenar la información de los contactos.
Definición del Archivo Físico
Explicación
- NAME: Nombre del contacto (50 caracteres alfanuméricos).
- PHONE: Número de teléfono del contacto (15 caracteres alfanuméricos).
- EMAIL: Dirección de correo electrónico del contacto (50 caracteres alfanuméricos).
- K NAME: Clave primaria para el archivo, basada en el nombre del contacto.
Paso 2: Funciones Principales
Agregar un Nuevo Contacto
** Programa: ADDCONTACT H DFTACTGRP(*NO) ACTGRP(*NEW) FCONTACTS UF E K DISK D Name S 50A D Phone S 15A D Email S 50A C *ENTRY PLIST C PARM Name C PARM Phone C PARM Email C WRITE CONTACTR C SETON LR
Explicación
- FCONTACTS: Define el archivo físico
CONTACTS
como un archivo de actualización. - Name, Phone, Email: Variables para almacenar los datos del contacto.
- WRITE CONTACTR: Escribe un nuevo registro en el archivo
CONTACTS
.
Listar Todos los Contactos
** Programa: LISTCONTACTS H DFTACTGRP(*NO) ACTGRP(*NEW) FCONTACTS IF E K DISK D Name S 50A D Phone S 15A D Email S 50A C READ CONTACTR C DOW NOT %EOF(CONTACTS) C EXSR DisplayContact C READ CONTACTR C ENDDO C SETON LR C DisplayContact BEGSR C DSPLY 'Name: ' + Name C DSPLY 'Phone: ' + Phone C DSPLY 'Email: ' + Email C ENDSR
Explicación
- READ CONTACTR: Lee el primer registro del archivo
CONTACTS
. - DOW NOT %EOF(CONTACTS): Bucle que continúa hasta el final del archivo.
- EXSR DisplayContact: Llama a la subrutina
DisplayContact
para mostrar los datos del contacto.
Buscar un Contacto por Nombre
** Programa: SEARCHCONTACT H DFTACTGRP(*NO) ACTGRP(*NEW) FCONTACTS IF E K DISK D Name S 50A D Phone S 15A D Email S 50A D SearchName S 50A C *ENTRY PLIST C PARM SearchName C CHAIN SearchName CONTACTR C IF %FOUND(CONTACTS) C DSPLY 'Name: ' + Name C DSPLY 'Phone: ' + Phone C DSPLY 'Email: ' + Email C ELSE C DSPLY 'Contact not found' C ENDIF C SETON LR
Explicación
- CHAIN SearchName CONTACTR: Busca un registro en el archivo
CONTACTS
con el nombre especificado. - %FOUND(CONTACTS): Verifica si el registro fue encontrado.
Eliminar un Contacto
** Programa: DELETECONTACT H DFTACTGRP(*NO) ACTGRP(*NEW) FCONTACTS UF E K DISK D Name S 50A C *ENTRY PLIST C PARM Name C CHAIN Name CONTACTR C IF %FOUND(CONTACTS) C DELETE CONTACTR C DSPLY 'Contact deleted' C ELSE C DSPLY 'Contact not found' C ENDIF C SETON LR
Explicación
- DELETE CONTACTR: Elimina el registro encontrado en el archivo
CONTACTS
.
Paso 3: Interfaz de Usuario
Programa Principal
** Programa: MAIN H DFTACTGRP(*NO) ACTGRP(*NEW) D Option S 1A D Name S 50A D Phone S 15A D Email S 50A C DOU Option = '4' C DSPLY '1. Add Contact' C DSPLY '2. List Contacts' C DSPLY '3. Search Contact' C DSPLY '4. Delete Contact' C DSPLY '5. Exit' C ACCEPT Option C SELECT C WHEN Option = '1' C DSPLY 'Enter Name:' C ACCEPT Name C DSPLY 'Enter Phone:' C ACCEPT Phone C DSPLY 'Enter Email:' C ACCEPT Email C CALLP ADDCONTACT(Name: Phone: Email) C WHEN Option = '2' C CALLP LISTCONTACTS C WHEN Option = '3' C DSPLY 'Enter Name to Search:' C ACCEPT Name C CALLP SEARCHCONTACT(Name) C WHEN Option = '4' C DSPLY 'Enter Name to Delete:' C ACCEPT Name C CALLP DELETECONTACT(Name) C WHEN Option = '5' C LEAVE C OTHER C DSPLY 'Invalid Option' C ENDSELECT C ENDDO C SETON LR
Explicación
- DOU Option = '4': Bucle que continúa hasta que el usuario elige salir.
- SELECT/WHEN: Estructura de control para manejar las diferentes opciones del menú.
- CALLP: Llama a los programas de funciones correspondientes.
Conclusión
En este módulo, hemos construido una aplicación simple de gestión de contactos utilizando RPG. Hemos cubierto la definición de la estructura de datos, la implementación de funciones principales y la creación de una interfaz de usuario básica. Este ejercicio te proporciona una base sólida para desarrollar aplicaciones más complejas en RPG.
Resumen
- Definimos un archivo físico para almacenar contactos.
- Implementamos funciones para agregar, listar, buscar y eliminar contactos.
- Creamos una interfaz de usuario simple para interactuar con la aplicación.
Próximos Pasos
En el siguiente módulo, aplicaremos estos conceptos en un estudio de caso más complejo, como un sistema de gestión de inventarios. Esto te permitirá ver cómo se integran y escalan estos conceptos en aplicaciones del mundo real.
Curso de Programación RPG
Módulo 1: Introducción a la Programación RPG
- ¿Qué es RPG?
- Configuración de tu Entorno de Desarrollo
- Sintaxis y Estructura Básica
- Programa Hola Mundo
Módulo 2: Conceptos Básicos
- Tipos de Datos y Variables
- Operadores y Expresiones
- Estructuras de Control
- Funciones y Procedimientos
Módulo 3: Trabajando con Datos
Módulo 4: Técnicas Avanzadas de Programación
Módulo 5: RPG IV y Más Allá
Módulo 6: Integrando RPG con Tecnologías Modernas
Módulo 7: Aplicaciones del Mundo Real
- Construyendo una Aplicación Simple
- Estudio de Caso: Sistema de Gestión de Inventarios
- Estudio de Caso: Sistema de Nómina
- Mejores Prácticas y Revisión de Código