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
