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.
- 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.
- 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
- Identificar la Necessitat: Determina quina tasca vols automatitzar.
- Definir els Requisits: Quines funcionalitats ha de tenir la utilitat?
- Especificar l'Entrada i la Sortida: Quins seran els inputs i outputs del programa?
- Planificar l'Estructura del Codi: Decideix com organitzaràs el codi i quines funcions necessitaràs.
- 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
- Lectura de l'Argument:
parse arg filename
llegeix el nom del fitxer passat com a argument. - Verificació de l'Argument: Si no es proporciona cap fitxer, es mostra un missatge d'ús.
- Obertura del Fitxer:
call stream filename, 'C', 'OPEN READ'
obre el fitxer en mode lectura. - Comptatge de Paraules: Es llegeix cada línia del fitxer, es compten les paraules i s'afegeixen al comptador total.
- Tancament del Fitxer:
call stream filename, 'C', 'CLOSE'
tanca el fitxer. - 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
- Lectura dels Arguments:
parse arg directory prefix
llegeix el directori i el prefix passats com a arguments. - Verificació dels Arguments: Si no es proporcionen arguments, es mostra un missatge d'ús.
- Llista de Fitxers:
call lineout 'dirlist.txt', 'ls 'directory
crea una llista de fitxers en el directori. - Renombrament de Fitxers: Es llegeix cada fitxer de la llista, es genera un nou nom amb el prefix i es renombra el fitxer.
- Neteja: Esborra el fitxer temporal
dirlist.txt
.
- 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.
Curs de Programació REXX
Mòdul 1: Introducció a REXX
- Què és REXX?
- Configuració de l'Entorn REXX
- Hola Món en REXX
- Sintaxi i Estructura Bàsica
- Variables i Tipus de Dades
Mòdul 2: Conceptes Bàsics de Programació
- Operadors i Expressions
- Estructures de Control: IF/THEN/ELSE
- Bucles: DO i LEAVE
- Entrada i Sortida
- Manipulació Bàsica de Cadenes
Mòdul 3: Programació Intermèdia en REXX
- Funcions i Subrutines
- Funcions Incorporades
- Gestió d'Errors
- Operacions d'Entrada/Sortida de Fitxers
- Treballant amb Arrays
Mòdul 4: Programació Avançada en REXX
- Manipulació Avançada de Cadenes
- Tècniques de Parsing
- Interfície amb Programes Externs
- Macros REXX
- Optimització del Rendiment