En aquest tema, aprendrem a crear utilitats pràctiques amb REXX que poden ajudar a automatitzar tasques repetitives i millorar l'eficiència en el treball diari. Explorarem com dissenyar, codificar i provar aquestes utilitats, així com alguns exemples pràctics.

Objectius del Tema

  • Comprendre el concepte d'utilitats en REXX.
  • Aprendre a dissenyar utilitats efectives.
  • Desenvolupar utilitats pràctiques amb exemples de codi.
  • Provar i depurar les utilitats creades.

  1. Què és una Utilitat en REXX?

Una utilitat en REXX és un programa o script que realitza una tasca específica de manera automàtica. Aquestes utilitats poden ser petites eines que ajuden en tasques diàries o programes més complexos que gestionen processos més grans.

Exemples d'Utilitats

  • Scripts per processar fitxers de text.
  • Eines per gestionar fitxers i directoris.
  • Programes per automatitzar tasques administratives.

  1. Disseny d'Utilitats

Abans de començar a codificar, és important planificar la utilitat. Aquí tens alguns passos per dissenyar una utilitat efectiva:

Passos per al Disseny

  1. Identificar la Necessitat: Determina quina tasca vols automatitzar.
  2. Definir els Requisits: Quines funcionalitats ha de tenir la utilitat?
  3. Especificar l'Entrada i la Sortida: Quins seran els inputs i outputs del programa?
  4. Planificar l'Estructura del Codi: Decideix com organitzaràs el codi i quines funcions necessitaràs.

  1. Desenvolupament d'Utilitats

Exemple 1: Utilitat per Comptar Paraules en un Fitxer de Text

Aquesta utilitat llegirà un fitxer de text i comptarà el nombre de paraules que conté.

Codi

/* Comptar Paraules en un Fitxer de Text */
parse arg filename

if filename = '' then do
    say 'Ús: rexx comptar_paraules.rexx <nom_fitxer>'
    exit
end

/* Obrir el fitxer en mode lectura */
call stream filename, 'C', 'OPEN READ'
if stream(filename, 'S') = 'READY:' then do
    word_count = 0
    do while lines(filename) > 0
        line = linein(filename)
        words = words(line)
        word_count = word_count + words
    end
    call stream filename, 'C', 'CLOSE'
    say 'Nombre de paraules en el fitxer:' word_count
end
else do
    say 'Error: No es pot obrir el fitxer' filename
end

Explicació del Codi

  1. Lectura de l'Argument: parse arg filename llegeix el nom del fitxer passat com a argument.
  2. Verificació de l'Argument: Si no es proporciona cap fitxer, es mostra un missatge d'ús.
  3. Obertura del Fitxer: call stream filename, 'C', 'OPEN READ' obre el fitxer en mode lectura.
  4. Comptatge de Paraules: Es llegeix cada línia del fitxer, es compten les paraules i s'afegeixen al comptador total.
  5. Tancament del Fitxer: call stream filename, 'C', 'CLOSE' tanca el fitxer.
  6. Resultat: Es mostra el nombre total de paraules.

Exemple 2: Utilitat per Renombrar Fitxers en un Directori

Aquesta utilitat renombrarà tots els fitxers d'un directori afegint un prefix especificat.

Codi

/* Renombrar Fitxers en un Directori */
parse arg directory prefix

if directory = '' | prefix = '' then do
    say 'Ús: rexx renombrar_fitxers.rexx <directori> <prefix>'
    exit
end

/* Obtenir la llista de fitxers en el directori */
call lineout 'dirlist.txt', 'ls 'directory
call stream 'dirlist.txt', 'C', 'OPEN READ'

do while lines('dirlist.txt') > 0
    file = linein('dirlist.txt')
    if file \= '' then do
        new_name = prefix || file
        call 'rename', directory || '/' || file, directory || '/' || new_name
        say 'Renombrat:' file 'a' new_name
    end
end

call stream 'dirlist.txt', 'C', 'CLOSE'
call 'rm', 'dirlist.txt'

Explicació del Codi

  1. Lectura dels Arguments: parse arg directory prefix llegeix el directori i el prefix passats com a arguments.
  2. Verificació dels Arguments: Si no es proporcionen arguments, es mostra un missatge d'ús.
  3. Llista de Fitxers: call lineout 'dirlist.txt', 'ls 'directory crea una llista de fitxers en el directori.
  4. Renombrament de Fitxers: Es llegeix cada fitxer de la llista, es genera un nou nom amb el prefix i es renombra el fitxer.
  5. Neteja: Esborra el fitxer temporal dirlist.txt.

  1. Prova i Depuració

Prova

  • Casos de Prova: Defineix diferents casos de prova per assegurar-te que la utilitat funciona correctament en diverses situacions.
  • Verificació de Resultats: Comprova que els resultats obtinguts són els esperats.

Depuració

  • Missatges de Depuració: Afegeix missatges de depuració al codi per ajudar a identificar problemes.
  • Revisió del Codi: Revisa el codi per trobar errors lògics o sintàctics.

Resum

En aquest tema, hem après a crear utilitats pràctiques amb REXX. Hem vist com dissenyar, desenvolupar, provar i depurar aquestes utilitats amb exemples concrets. Aquestes habilitats són essencials per automatitzar tasques i millorar l'eficiència en el treball diari.

Exercici Pràctic

Exercici: Crea una utilitat en REXX que llegeixi un fitxer de text i compti el nombre de línies que contenen una paraula específica proporcionada com a argument.

Solució

/* Comptar Línies amb una Paraula Específica */
parse arg filename word

if filename = '' | word = '' then do
    say 'Ús: rexx comptar_linies.rexx <nom_fitxer> <paraula>'
    exit
end

/* Obrir el fitxer en mode lectura */
call stream filename, 'C', 'OPEN READ'
if stream(filename, 'S') = 'READY:' then do
    line_count = 0
    do while lines(filename) > 0
        line = linein(filename)
        if wordpos(word, line) > 0 then
            line_count = line_count + 1
    end
    call stream filename, 'C', 'CLOSE'
    say 'Nombre de línies que contenen la paraula' word ':' line_count
end
else do
    say 'Error: No es pot obrir el fitxer' filename
end

Amb aquesta pràctica, hauràs consolidat els teus coneixements sobre la creació d'utilitats en REXX.

© Copyright 2024. Tots els drets reservats