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á:

  1. Agregar un nuevo contacto.
  2. Listar todos los contactos.
  3. Buscar un contacto por nombre.
  4. Eliminar un contacto.

Estructura del Proyecto

  1. Definición de la estructura de datos: Definiremos cómo se almacenarán los contactos.
  2. Funciones principales: Implementaremos las funciones para agregar, listar, buscar y eliminar contactos.
  3. 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

** Archivo Físico: CONTACTS
A          R CONTACTR
A            NAME          50A
A            PHONE         15A
A            EMAIL         50A
A          K NAME

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.

© Copyright 2024. Todos los derechos reservados