Rexx - Análise

Um dos recursos mais poderosos do Rexx é sua capacidade de analisar valores de texto. Você provavelmente não verá isso em nenhuma outra linguagem de programação.

O formato geral da instrução de análise é o seguinte -

Sintaxe

PARSE {UPPER|LOWER|CASELESS} source {template}

Where,

  • UPPER - A fonte é convertida para maiúsculas antes da análise.

  • LOWER - A fonte é convertida para minúsculas antes da análise.

  • CASELESS - Quando este parâmetro é passado, a caixa é ignorada.

  • source- Esta é a fonte que precisa ser analisada. Existem muitas opções disponíveis para isso e podem ser qualquer uma das seguintes -

    • ARG - Os argumentos para o programa ou procedimento podem ser usados ​​como fonte.

    • LINEIN - A próxima entrada de linha pode ser usada como fonte.

    • SOURCE - A informação da fonte do programa pode ser usada como fonte.

    • VAR name - O valor de um nome de variável pode ser usado como fonte.

  • template- Este parâmetro especifica como analisar a fonte. Existem muitas opções disponíveis para isso. Alguns deles são mencionados abaixo.

    • variable name - Este é o valor atribuído à variável.

    • literal string - Uma string literal que pode ser usada como padrão para dividir a string.

    • #- Uma posição absoluta de caractere dentro da própria fonte. Portanto, se você especificar um valor de 5, o caractere será usado.

    • +#- Uma posição relativa do caractere dentro da própria fonte. Então, se você especificar um valor de 5, o 5 º personagem vai ser utilizado relativamente.

Vejamos um exemplo simples de como a análise pode ser realizada no Rexx.

Exemplo

/* Main program */ 
parse value 'This is a Tutorial' with word1 word2 word3 word4 
say "'"word1"'" 
say "'"word2"'" 
say "'"word3"'" 
say "'"word4"'"

O programa acima analisa as palavras da frase. Quando um valor consiste em palavras separadas por apenas um espaço e não há espaços à esquerda ou à direita, o valor é fácil de analisar em um número conhecido de palavras como segue.

A função de análise é usada no Rexx para pegar um valor de string e depois dividi-lo em palavras. No exemplo acima, as palavras são então divididas e armazenadas nas variáveis ​​da palavra.

A saída do programa acima seria a seguinte -

'This' 
'is' 
'a' 
'Tutorial'

Outro exemplo de análise é mostrado no programa a seguir. Desta vez, estamos usando uma cláusula while para fazer a análise.

Exemplo

/* Main program */ 
phrase = 'This is a Tutorial' 

do while phrase <> '' 
   parse var phrase word phrase 
   say "'"word"'" 
   end

O programa acima fornecerá a seguinte saída -

'This' 
'is' 
'a' 
'Tutorial'

Análise Posicional

Rexx também permite trabalhar com análise de posição. Vamos ver um exemplo de como podemos alcançar a análise posicional com a instrução parse.

Exemplo

/* 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

No exemplo acima, você pode observar que, junto com o nome da variável, também especificamos onde a string deve terminar. Portanto, para nome1, devemos terminar no 11º caractere e, em seguida, começar a analisar o nome2.

O resultado do programa acima será o seguinte -

Doe 
John M. 
03/03/78 
Mumbai 
India

Você também pode usar relative positional parsing nesse caso.

Exemplo

/* 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

A saída do programa acima será conforme mostrado abaixo.

Doe 
John M. 
03/03/78 
Mumbai 
India