𝐄𝐥 𝐄𝐝𝐢𝐭𝐨𝐫 𝐝𝐞 𝐓𝐒𝐎:𝐄𝐱𝐩𝐫𝐞𝐬𝐢𝐨𝐧 𝐫𝐞𝐠𝐮𝐥𝐚𝐫,𝐞𝐱𝐭𝐫𝐚𝐨𝐫𝐝𝐢𝐧𝐚𝐫𝐢𝐚 𝐚𝐦𝐩𝐥𝐢𝐚𝐜𝐢𝐨𝐧 𝐝𝐞𝐥 𝐅𝐢𝐧𝐝 y 𝐄𝐱𝐜𝐥𝐮𝐝𝐞

𝐄𝐥 𝐄𝐝𝐢𝐭𝐨𝐫 𝐝𝐞 𝐓𝐒𝐎:𝐄𝐱𝐩𝐫𝐞𝐬𝐢𝐨𝐧 𝐫𝐞𝐠𝐮𝐥𝐚𝐫,𝐞𝐱𝐭𝐫𝐚𝐨𝐫𝐝𝐢𝐧𝐚𝐫𝐢𝐚 𝐚𝐦𝐩𝐥𝐢𝐚𝐜𝐢𝐨𝐧 𝐝𝐞𝐥 𝐅𝐢𝐧𝐝 y 𝐄𝐱𝐜𝐥𝐮𝐝𝐞

En los dos últimos artículos hemos enfocado nuestra atención en nuevos comandos que mejoran la experiencia del uso del Editor de TSO.

En esta edición mostraremos una mejora ya utilizada en algunos de los editores más modernos y es la habilitación del uso de expresiones regulares en los comandos de búsqueda, exclusión y cambio de cadenas de caracteres.

¿Que es una expresión regular o regular expression en su versión inglesa tal como habitualmente se la conoce y menciona? 

Es una secuencia de caracteres que especifica un patrón de búsqueda en un texto.

Para mejor comprensión, veamos un ejemplo sencillo que nos acerque al tipo de búsqueda por patrón.

Supongamos que tenemos un dataset de patentes automotrices de un país cualquiera. Supongamos que en ese país las chapas patentes de los vehículos cumplen la regla AA999AA, con A representando un carácter alfabético y 9 un numérico.  Esta regla genera un patrón de búsqueda que nos permitirá en una sesión de edición verificar rápidamente si todos los registros del archivo cumplen con esta configuración de caracteres.

No alt text provided for this image

Figura 1. Archivo de patentes automotrices. En recuadro amarillos los códigos.

Como saber si esos códigos encolumnados entre las posiciones 65 y 71 poseen las características determinadas por la regla AA999AA ? Utilizando este nuevo feature del editor de TSO con los comandos Find y/o eXclude.

Toda vez que utilicemos una expresión regular en un Find o un eXclude deberemos agregar una R y colocar la expresión entre apostrofes. En este caso el Find deberá escribirse como

F R'[A-Z]{2,}[0-9]{3,}[A-Z]{2,}' all 65 71  

el cual debe interpretarse como la búsqueda de todas las ocurrencias ( all ) de cadenas de caracteres entre las columnas 65 y 71 en cuyas sus dos primeras posiciones {2} se encuentren caracteres alfabéticos [A-Z] seguido de tres posiciones {3,} numéricas [0-9] y posean en las dos últimas posiciones {2} caracteres alfabéticos [A-Z].

No alt text provided for this image

Figura 2. Find con la expresión regular encuentra 36 ocurrencias

Como se advierte en la Figura.2 Find encuentra todas las ocurrencias, en total 36, ya que el archivo cuenta con 36 registros y la búsqueda se hace exclusivamente entre las columnas 65 y 71.

Hagamos ahora el ejercicio de agregar algunas inconsistencias en los códigos de las patentes automotrices y veamos de qué forma podemos encontrar todas las cadenas de caracteres que no cumplen con el patrón de búsqueda. Para ello, modificamos los códigos de los registros 12, 24 y 36 introduciendo algún carácter numérico donde se esperan caracteres alfabéticos y algún carácter no numérico donde se esperan numéricos.

No alt text provided for this image

Figura 3. La búsqueda por expresión regular ahora encuentra sólo 33 ocurrencias

Como encontramos ahora esos 3 registros que incumplen con la regla de configuración de patentes? 

Tal cual se ve en Figura 3. la introducción de caracteres inválidos en 3 registros provoca que el Find con la misma expresión regular reduzca las ocurrencias encontradas a 33.

Este resultado ayuda a nuestra búsqueda de códigos de patentes invalidas, pero deberíamos recorrer los 33 registros con F5 y ver cuales son los registros no afectados, lo cual es una tarea por demás ingrata especialmente si nuestro archivo tuviese miles de registros.

¿Como hacemos entonces?

Utilizando el eXclude cuya ejecución excluye todos los registros seleccionados por la expresión regular en una pantalla oculta dejando en la pantalla visible aquellos registros que NO cumplen el patrón de búsqueda.

X R'[A-Z]{2,}[0-9]{3,}[A-Z]{2,}' all 65 71

No alt text provided for this image

Figura 4. Exclusión de los registros que cumplen con la expresión regular mostrando los incumplimientos

Ejecutando HIDE X, comando que vimos en el artículo anterior, observamos claramente que los registros 12, 24 y 36 incumplen con la expresión regular usada.

El tercer comando de edición que puede utilizar este feature es el Change.

Como es bien sabido, Change utiliza 2 cadenas de caracteres: la primera para realizar la búsqueda de caracteres y la segunda para reemplazar los caracteres buscados y encontrados.

Change puede ahora utilizar una expresión regular en la cadena de caracteres de búsqueda.

Siguiendo nuestro ejemplo anterior, abrimos una sesión de edición con el mismo dataset

No alt text provided for this image

Figura 5. Sesión de edición del dataset de Patentes

No alt text provided for this image

Figura 6. Expansión de la línea de comandos del Editor solicitando un Change con expresión regular

Change busca todas las patentes cuyos dos primeros caracteres sean alfabéticos, contengan un 5 en las siguientes 3 posiciones y finalicen con dos caracteres alfabéticos y todo esto entre las columnas 65 y 71.

La expresión regular que sintetiza esta búsqueda es la siguiente:

R'[A-Z]{2,}(5..|.5.|..5)[A-Z]{2,}' all 65 71

Las cadenas de caracteres que cumplan con esta expresión serán reemplazadas por la palabra PATENTE.

No alt text provided for this image

Figura 7. Reemplazos realizados por Change con una expresión regular como argumento de búsqueda

Como se observa en Figura.7, Change efectúa los reemplazos tal cual se deseaba al encontrar múltiples cadenas de caracteres que cumplen con la búsqueda entre las columnas 65 y 71.

El uso de expresiones regulares en la edicion nos da la posibilidad de análisis de datos rápidos a traves de consultas muy complejas en los datasets que habitualmente se realizan con utilitarios submitidos en batch con el consiguiente importante ahorro de tiempo.

En la próxima edición seguiremos indagando más sobre expresiones regulares, sus operadores y símbolos especiales.

Conocías la existencia de las “regular expressions” ?

Cual es tu parecer por su incorporación al Editor de TSO ?

Te invito a compartir este artículo si lo consideras de valor para tu comunidad COBOL o Mainframe.

Agradezco cualquier comentario que desees realizar en LinkedIn.

Hasta la próxima Curiosidad COBOL.

Leonardo Zrycki

IBM Champion 2022 – z System

👨🏫 Capacitación y Training IBM

Cel./WhatsApp +54911 41735920

Artículos Anteriores:

Encuentra todos los artículos publicados en

👉 https://lnkd.in/dBGygAjN 👈

y aquí mismo podrás sumarte a los más de 1.090 suscriptores de 𝐂𝐮𝐫𝐢𝐨𝐬𝐢𝐝𝐚𝐝𝐞𝐬 𝐂𝐎𝐁𝐎𝐋

Osvaldo Rodriguez

Arquitecto de soluciones en RHT

2 años

Genial. yo estoy usando IDZ y me estoy olvidando de los comandos de TSO. Tengo suerte de que los tengas a mano para cualquier consulta. Muchas gracias Leo

Inicia sesión para ver o añadir un comentario.

Más artículos de Leonardo Zrycki

Otros usuarios han visto

Ver temas