En aquest tema, aprendrem com treballar amb cadenes de text en CL (Control Language). Les cadenes són una part fonamental de la programació, ja que sovint necessitem manipular text per a diverses tasques, com ara processar dades d'entrada, generar informes, o construir missatges dinàmics.
Objectius
- Comprendre què són les cadenes en CL.
- Aprendre a definir i inicialitzar cadenes.
- Utilitzar funcions bàsiques per manipular cadenes.
- Realitzar operacions comunes com concatenació, extracció de subcadenes i cerca de text.
- Definició i Inicialització de Cadenes
En CL, les cadenes es defineixen utilitzant la paraula clau DCL
(Declare). Aquí teniu un exemple de com definir una cadena:
En aquest exemple, &CADENA
és el nom de la variable de cadena, TYPE(*CHAR)
indica que és una cadena de caràcters, i LEN(50)
especifica la longitud màxima de la cadena.
Inicialització de Cadenes
Podem inicialitzar una cadena en el moment de la seva declaració o assignar-li un valor més tard:
O bé:
- Funcions Bàsiques per Manipular Cadenes
Concatenació de Cadenes
Per concatenar cadenes en CL, utilitzem l'operador ||
:
DCL VAR(&NOM) TYPE(*CHAR) LEN(20) VALUE('Joan') DCL VAR(&COGNOM) TYPE(*CHAR) LEN(20) VALUE('Garcia') DCL VAR(&NOM_COMPLET) TYPE(*CHAR) LEN(40) CHGVAR VAR(&NOM_COMPLET) VALUE(&NOM || ' ' || &COGNOM)
En aquest exemple, &NOM_COMPLET
contindrà el valor Joan Garcia
.
Extracció de Subcadenes
Per extreure una subcadena, utilitzem la funció %SST
(Substring):
DCL VAR(&TEXT) TYPE(*CHAR) LEN(50) VALUE('Hola, món!') DCL VAR(&SUBCADENA) TYPE(*CHAR) LEN(4) CHGVAR VAR(&SUBCADENA) VALUE(%SST(&TEXT 1 4))
En aquest exemple, &SUBCADENA
contindrà el valor Hola
.
Cerca de Text
Per cercar text dins d'una cadena, utilitzem la funció POS
(Position):
DCL VAR(&TEXT) TYPE(*CHAR) LEN(50) VALUE('Hola, món!') DCL VAR(&POSICIO) TYPE(*DEC) LEN(5 0) CHGVAR VAR(&POSICIO) VALUE(%SCAN('món' &TEXT))
En aquest exemple, &POSICIO
contindrà la posició on es troba la paraula món
dins de &TEXT
.
- Operacions Comunes
Longitud de la Cadena
Per obtenir la longitud d'una cadena, utilitzem la funció %LEN
:
DCL VAR(&TEXT) TYPE(*CHAR) LEN(50) VALUE('Hola, món!') DCL VAR(&LONGITUD) TYPE(*DEC) LEN(5 0) CHGVAR VAR(&LONGITUD) VALUE(%LEN(&TEXT))
En aquest exemple, &LONGITUD
contindrà el valor 10
.
Conversió a Majúscules/Minúscules
Per convertir una cadena a majúscules o minúscules, utilitzem les funcions %UPPER
i %LOWER
respectivament:
DCL VAR(&TEXT) TYPE(*CHAR) LEN(50) VALUE('Hola, món!') DCL VAR(&MAJUSCULES) TYPE(*CHAR) LEN(50) DCL VAR(&MINUSCULES) TYPE(*CHAR) LEN(50) CHGVAR VAR(&MAJUSCULES) VALUE(%UPPER(&TEXT)) CHGVAR VAR(&MINUSCULES) VALUE(%LOWER(&TEXT))
En aquest exemple, &MAJUSCULES
contindrà HOLA, MÓN!
i &MINUSCULES
contindrà hola, món!
.
Exercicis Pràctics
Exercici 1: Concatenació de Cadenes
Escriu un programa CL que demani a l'usuari el seu nom i cognom, i després mostri el nom complet.
DCL VAR(&NOM) TYPE(*CHAR) LEN(20) DCL VAR(&COGNOM) TYPE(*CHAR) LEN(20) DCL VAR(&NOM_COMPLET) TYPE(*CHAR) LEN(40) RTVJOBA USRPRF(&NOM) RTVJOBA USRPRF(&COGNOM) CHGVAR VAR(&NOM_COMPLET) VALUE(&NOM || ' ' || &COGNOM) SNDPGMMSG MSG(&NOM_COMPLET)
Exercici 2: Extracció de Subcadenes
Escriu un programa CL que extregui i mostri els primers 5 caràcters d'una cadena introduïda per l'usuari.
DCL VAR(&TEXT) TYPE(*CHAR) LEN(50) DCL VAR(&SUBCADENA) TYPE(*CHAR) LEN(5) RTVJOBA USRPRF(&TEXT) CHGVAR VAR(&SUBCADENA) VALUE(%SST(&TEXT 1 5)) SNDPGMMSG MSG(&SUBCADENA)
Exercici 3: Cerca de Text
Escriu un programa CL que cerqui una paraula específica dins d'una cadena i mostri la seva posició.
DCL VAR(&TEXT) TYPE(*CHAR) LEN(50) VALUE('Hola, món!') DCL VAR(&PARAULA) TYPE(*CHAR) LEN(10) VALUE('món') DCL VAR(&POSICIO) TYPE(*DEC) LEN(5 0) CHGVAR VAR(&POSICIO) VALUE(%SCAN(&PARAULA &TEXT)) SNDPGMMSG MSG('Posició: ' || &POSICIO)
Resum
En aquest tema, hem après a treballar amb cadenes en CL. Hem vist com definir i inicialitzar cadenes, així com utilitzar funcions bàsiques per manipular-les. També hem realitzat operacions comunes com la concatenació, l'extracció de subcadenes i la cerca de text. A més, hem practicat aquests conceptes amb exercicis pràctics.
En el proper tema, explorarem les estructures de control en CL, incloent sentències condicionals i construccions de bucle.
Curs de CL (Llenguatge de Control)
Mòdul 1: Introducció al CL
- Què és el Llenguatge de Control?
- Configuració del Teu Entorn
- Sintaxi i Estructura Bàsiques
- Escrivint el Teu Primer Programa CL
Mòdul 2: Comandes Bàsiques de CL
- Introducció a les Comandes de CL
- Comandes de Gestió de Fitxers
- Comandes de Gestió de Treballs
- Comandes de Gestió del Sistema
Mòdul 3: Variables i Expressions
- Comprenent les Variables
- Definint i Utilitzant Variables
- Expressions i Operadors
- Manipulació de Cadenes
Mòdul 4: Estructures de Control
Mòdul 5: Comandes Avançades de CL
- Operacions Avançades de Fitxers
- Programació Avançada de Treballs
- Comandes de Configuració del Sistema
- Seguretat i Permisos