En este tema, aprenderemos cómo crear utilidades en REXX que pueden ser utilizadas para automatizar tareas repetitivas, mejorar la eficiencia y facilitar el trabajo diario. Las utilidades en REXX son programas que realizan funciones específicas y pueden ser reutilizados en diferentes contextos.

Objetivos del Tema

  • Comprender el concepto de utilidades en REXX.
  • Aprender a diseñar y desarrollar utilidades básicas.
  • Implementar ejemplos prácticos de utilidades en REXX.
  • Proporcionar ejercicios para reforzar los conceptos aprendidos.

Conceptos Clave

  1. Utilidades en REXX: Programas que realizan tareas específicas y pueden ser reutilizados.
  2. Modularidad: Dividir el código en módulos o funciones reutilizables.
  3. Automatización: Uso de scripts para realizar tareas repetitivas sin intervención manual.

Ejemplo Práctico: Contador de Palabras

Vamos a crear una utilidad simple que cuenta el número de palabras en un archivo de texto.

Paso 1: Leer el Archivo de Texto

Primero, necesitamos leer el contenido del archivo de texto. Utilizaremos la función LINEIN para leer cada línea del archivo.

/* Contador de Palabras en REXX */
filename = 'archivo.txt'
call readFile filename

readFile: procedure
  parse arg filename
  if stream(filename, 'C', 'QUERY EXISTS') = 'READY' then do
    file = open(filename)
    if file = '' then do
      say 'Error al abrir el archivo.'
      exit
    end
    else do
      content = ''
      do while lines(file) > 0
        line = linein(file)
        content = content || ' ' || line
      end
      call countWords content
    end
  end
  else do
    say 'El archivo no existe.'
    exit
  end
return

open: procedure
  parse arg filename
  return stream(filename, 'C', 'OPEN')

Paso 2: Contar las Palabras

Ahora que tenemos el contenido del archivo, podemos contar las palabras. Utilizaremos la función WORDS para contar el número de palabras en una cadena.

countWords: procedure
  parse arg content
  numWords = words(content)
  say 'El archivo contiene' numWords 'palabras.'
return

Código Completo

Aquí está el código completo de la utilidad de contador de palabras:

/* Contador de Palabras en REXX */
filename = 'archivo.txt'
call readFile filename

readFile: procedure
  parse arg filename
  if stream(filename, 'C', 'QUERY EXISTS') = 'READY' then do
    file = open(filename)
    if file = '' then do
      say 'Error al abrir el archivo.'
      exit
    end
    else do
      content = ''
      do while lines(file) > 0
        line = linein(file)
        content = content || ' ' || line
      end
      call countWords content
    end
  end
  else do
    say 'El archivo no existe.'
    exit
  end
return

open: procedure
  parse arg filename
  return stream(filename, 'C', 'OPEN')

countWords: procedure
  parse arg content
  numWords = words(content)
  say 'El archivo contiene' numWords 'palabras.'
return

Explicación del Código

  1. Lectura del Archivo: La función readFile abre el archivo y lee su contenido línea por línea, concatenando cada línea en una cadena llamada content.
  2. Conteo de Palabras: La función countWords utiliza la función WORDS para contar el número de palabras en la cadena content y muestra el resultado.

Ejercicio Práctico

Ejercicio 1: Contador de Líneas

Modifica la utilidad anterior para que también cuente el número de líneas en el archivo y muestre ambos resultados (número de palabras y número de líneas).

Solución

/* Contador de Palabras y Líneas en REXX */
filename = 'archivo.txt'
call readFile filename

readFile: procedure
  parse arg filename
  if stream(filename, 'C', 'QUERY EXISTS') = 'READY' then do
    file = open(filename)
    if file = '' then do
      say 'Error al abrir el archivo.'
      exit
    end
    else do
      content = ''
      lineCount = 0
      do while lines(file) > 0
        line = linein(file)
        content = content || ' ' || line
        lineCount = lineCount + 1
      end
      call countWordsAndLines content, lineCount
    end
  end
  else do
    say 'El archivo no existe.'
    exit
  end
return

open: procedure
  parse arg filename
  return stream(filename, 'C', 'OPEN')

countWordsAndLines: procedure
  parse arg content, lineCount
  numWords = words(content)
  say 'El archivo contiene' numWords 'palabras y' lineCount 'líneas.'
return

Retroalimentación y Consejos

  • Errores Comunes: Asegúrate de que el archivo existe antes de intentar abrirlo. Utiliza stream(filename, 'C', 'QUERY EXISTS') para verificar la existencia del archivo.
  • Consejo: Divide tu código en funciones o procedimientos para mejorar la legibilidad y la reutilización.

Conclusión

En este tema, hemos aprendido a crear una utilidad básica en REXX para contar palabras en un archivo de texto. Hemos visto cómo leer archivos, manipular cadenas y contar palabras utilizando funciones integradas de REXX. Además, hemos practicado con un ejercicio para contar líneas en el archivo. Estas habilidades son fundamentales para crear utilidades más complejas y útiles en REXX.

En el próximo tema, exploraremos cómo acceder a bases de datos utilizando REXX, lo que nos permitirá crear aplicaciones más avanzadas y funcionales.

© Copyright 2024. Todos los derechos reservados