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.

  1. 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:

DCL VAR(&CADENA) TYPE(*CHAR) LEN(50)

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:

DCL VAR(&CADENA) TYPE(*CHAR) LEN(50) VALUE('Hola, món!')

O bé:

DCL VAR(&CADENA) TYPE(*CHAR) LEN(50)
CHGVAR VAR(&CADENA) VALUE('Hola, món!')

  1. 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.

  1. 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.

© Copyright 2024. Tots els drets reservats