Rexx - Análisis
Una de las características más poderosas de Rexx es su capacidad para analizar valores de texto. Probablemente no verá esto en ningún otro lenguaje de programación.
El formato general de la declaración de análisis es el siguiente:
Sintaxis
PARSE {UPPER|LOWER|CASELESS} source {template}
Where,
UPPER - La fuente se convierte a mayúsculas antes de analizar.
LOWER - La fuente se convierte a minúsculas antes de analizar.
CASELESS - Cuando se pasa este parámetro, se ignora la carcasa.
source- Esta es la fuente que debe analizarse. Hay muchas opciones disponibles para esto y puede ser cualquiera de las siguientes:
ARG - Los argumentos del programa o procedimiento se pueden utilizar como fuente.
LINEIN - La entrada de la siguiente línea se puede utilizar como fuente.
SOURCE - La información de la fuente del programa se puede utilizar como fuente.
VAR name - El valor de un nombre de variable se puede utilizar como fuente.
template: Este parámetro especifica cómo analizar la fuente. Hay muchas opciones disponibles para esto. Algunos de ellos se mencionan a continuación.
variable name - Este es el valor asignado a la variable.
literal string - Una cadena literal que se puede usar como patrón para dividir la cadena.
#- Una posición de carácter absoluta dentro de la propia fuente. Así que si se especifica un valor de 5, el 5 º será utilizada carácter.
+#- Una posición de carácter relativa dentro de la propia fuente. Así que si se especifica un valor de 5, el 5 º carácter se utiliza relativamente.
Veamos un ejemplo simple de cómo se puede realizar el análisis en Rexx.
Ejemplo
/* Main program */
parse value 'This is a Tutorial' with word1 word2 word3 word4
say "'"word1"'"
say "'"word2"'"
say "'"word3"'"
say "'"word4"'"
El programa anterior analiza las palabras de la frase. Cuando un valor consta de palabras que están separadas por un solo espacio, y no hay espacios iniciales ni finales, el valor es fácil de analizar en un número conocido de palabras de la siguiente manera.
La función de análisis se usa en Rexx para tomar un valor de cadena y luego dividirlo en palabras. En el ejemplo anterior, las palabras se dividen y luego se almacenan en las variables de palabra.
El resultado del programa anterior sería el siguiente:
'This'
'is'
'a'
'Tutorial'
Otro ejemplo de análisis se muestra en el siguiente programa. Esta vez usamos una cláusula while para realizar el análisis.
Ejemplo
/* Main program */
phrase = 'This is a Tutorial'
do while phrase <> ''
parse var phrase word phrase
say "'"word"'"
end
El programa anterior dará el siguiente resultado:
'This'
'is'
'a'
'Tutorial'
Análisis posicional
Rexx también permite trabajar con análisis posicional. Veamos un ejemplo de cómo podemos lograr el análisis posicional con la declaración de análisis.
Ejemplo
/* Main program */
testString = "Doe John M. 03/03/78 Mumbai India";
parse var testString name1 11 name2 21 birthday 31 town 51 country
say name1
say name2
say birthday
say town
say country
En el ejemplo anterior, puede observar que junto con el nombre de la variable, también estamos especificando dónde debe terminar la cadena. Entonces, para name1, deberíamos terminar con el undécimo carácter y luego comenzar a analizar name2.
La salida del programa anterior será la siguiente:
Doe
John M.
03/03/78
Mumbai
India
También puedes usar relative positional parsing en este caso.
Ejemplo
/* Main program */
testString = "Doe John M. 03/03/78 Mumbai India";
parse var testString name1 +10 name2 +10 birthday +10 town +20 country
say name1
say name2
say birthday
say town
say country
La salida del programa anterior será como se muestra a continuación.
Doe
John M.
03/03/78
Mumbai
India