En este módulo, aprenderemos cómo manejar archivos en RPG. Trabajar con archivos es una habilidad esencial para cualquier programador, ya que permite almacenar, leer y manipular datos de manera persistente. Exploraremos cómo abrir, leer, escribir y cerrar archivos en RPG.

Conceptos Clave

  1. Tipos de Archivos: En RPG, los archivos pueden ser de varios tipos, como archivos físicos (PF), archivos lógicos (LF), y archivos de datos (DF).
  2. Operaciones Básicas: Las operaciones básicas incluyen abrir, leer, escribir y cerrar archivos.
  3. Declaración de Archivos: Cómo declarar archivos en el programa RPG.
  4. Lectura y Escritura de Datos: Métodos para leer y escribir datos en archivos.

Declaración de Archivos

En RPG, los archivos se declaran en la sección de especificaciones de archivo (F-spec). Aquí hay un ejemplo de cómo declarar un archivo físico:

FMYFILE    IF   E           K DISK
  • F: Indica que es una especificación de archivo.
  • MYFILE: Nombre del archivo.
  • I: Indica que el archivo es de entrada.
  • F: Indica que el archivo es de salida.
  • E: Indica que el archivo es de entrada/salida.
  • K: Indica que el archivo está indexado.
  • DISK: Indica que el archivo está en disco.

Abrir y Cerrar Archivos

En RPG, los archivos se abren automáticamente cuando se ejecuta el programa. Sin embargo, es importante saber cómo cerrarlos explícitamente si es necesario.

C     *INLR         SETON
  • *INLR: Indicador de fin de programa. Cuando se establece en ON, cierra todos los archivos abiertos.

Lectura de Archivos

Para leer un archivo, utilizamos la operación READ. Aquí hay un ejemplo:

C     MYFILE    READ      MYREC
C     *IN90     DOWEQ     *OFF
C     MYFILE    READ      MYREC
C     ENDDO
  • READ: Operación para leer un registro del archivo.
  • MYREC: Nombre del registro que se leerá.

Escritura en Archivos

Para escribir en un archivo, utilizamos la operación WRITE. Aquí hay un ejemplo:

C     MYREC     WRITE     MYFILE
  • WRITE: Operación para escribir un registro en el archivo.
  • MYREC: Nombre del registro que se escribirá.

Ejemplo Práctico

Vamos a crear un programa simple que lea datos de un archivo y los escriba en otro archivo.

Código de Ejemplo

FINPUTFILE  IF   E           K DISK
FOUTPUTFILE OF   E           K DISK

D MYREC       E DS                  EXTNAME(INPUTFILE)

C     *IN90     DOWEQ     *OFF
C     INPUTFILE READ      MYREC
C     IF        %EOF(INPUTFILE)
C     LEAVE
C     ENDIF
C     OUTPUTFILEWRITE     MYREC
C     ENDDO

C     *INLR     SETON

Explicación del Código

  1. Declaración de Archivos:

    FINPUTFILE  IF   E           K DISK
    FOUTPUTFILE OF   E           K DISK
    
    • INPUTFILE: Archivo de entrada.
    • OUTPUTFILE: Archivo de salida.
  2. Declaración de Estructura de Datos:

    D MYREC       E DS                  EXTNAME(INPUTFILE)
    
    • MYREC: Estructura de datos que representa un registro del archivo de entrada.
  3. Bucle de Lectura y Escritura:

    C     *IN90     DOWEQ     *OFF
    C     INPUTFILE READ      MYREC
    C     IF        %EOF(INPUTFILE)
    C     LEAVE
    C     ENDIF
    C     OUTPUTFILEWRITE     MYREC
    C     ENDDO
    
    • DOWEQ *OFF: Bucle que se ejecuta mientras no se alcance el final del archivo.
    • READ MYREC: Lee un registro del archivo de entrada.
    • IF %EOF(INPUTFILE): Verifica si se ha alcanzado el final del archivo.
    • LEAVE: Sale del bucle si se ha alcanzado el final del archivo.
    • WRITE MYREC: Escribe el registro en el archivo de salida.
  4. Cerrar Archivos:

    C     *INLR     SETON
    
    • *INLR SETON: Cierra todos los archivos abiertos al final del programa.

Ejercicio Práctico

Ejercicio 1: Copiar Contenido de un Archivo a Otro

Objetivo: Crear un programa que copie el contenido de un archivo de entrada a un archivo de salida.

Instrucciones:

  1. Declara dos archivos: uno de entrada y otro de salida.
  2. Lee cada registro del archivo de entrada.
  3. Escribe cada registro en el archivo de salida.
  4. Cierra los archivos al final del programa.

Solución

FINPUTFILE  IF   E           K DISK
FOUTPUTFILE OF   E           K DISK

D MYREC       E DS                  EXTNAME(INPUTFILE)

C     *IN90     DOWEQ     *OFF
C     INPUTFILE READ      MYREC
C     IF        %EOF(INPUTFILE)
C     LEAVE
C     ENDIF
C     OUTPUTFILEWRITE     MYREC
C     ENDDO

C     *INLR     SETON

Conclusión

En esta sección, hemos aprendido cómo manejar archivos en RPG. Hemos cubierto la declaración de archivos, la lectura y escritura de datos, y cómo cerrar archivos. También hemos visto un ejemplo práctico y un ejercicio para reforzar los conceptos aprendidos. En el próximo módulo, exploraremos cómo acceder a bases de datos en RPG.

© Copyright 2024. Todos los derechos reservados