Rexx - Analyse

L'une des fonctionnalités les plus puissantes de Rexx est sa capacité à analyser les valeurs de texte. Vous ne verrez probablement cela dans aucun autre langage de programmation.

Le format général de l'instruction parse est le suivant -

Syntaxe

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

Where,

  • UPPER - La source est convertie en majuscules avant l'analyse.

  • LOWER - La source est convertie en minuscules avant l'analyse.

  • CASELESS - Lorsque ce paramètre est passé, la casse est ignorée.

  • source- C'est la source qui doit être analysée. De nombreuses options sont disponibles pour cela et peuvent être l'une des suivantes -

    • ARG - Les arguments du programme ou de la procédure peuvent être utilisés comme source.

    • LINEIN - L'entrée de ligne suivante peut être utilisée comme source.

    • SOURCE - Les informations sur la source du programme peuvent être utilisées comme source.

    • VAR name - La valeur d'un nom de variable peut être utilisée comme source.

  • template- Ce paramètre spécifie comment analyser la source. Il existe de nombreuses options disponibles pour cela. Certains d'entre eux sont mentionnés ci-dessous.

    • variable name - Il s'agit de la valeur affectée à la variable.

    • literal string - Une chaîne littérale qui peut être utilisée comme motif pour diviser la chaîne.

    • #- Une position de caractère absolue dans la source elle-même. Donc, si vous spécifiez une valeur de 5, le 5ème caractère sera utilisé.

    • +#- Une position relative de caractère dans la source elle-même. Donc, si vous spécifiez une valeur de 5, le 5ème caractère sera utilisé relativement.

Regardons un exemple simple de la façon dont l'analyse peut être réalisée dans Rexx.

Exemple

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

Le programme ci-dessus analyse les mots de la phrase. Lorsqu'une valeur se compose de mots séparés par un seul espace et qu'il n'y a pas d'espaces de début ou de fin, la valeur est facile à analyser en un nombre connu de mots comme suit.

La fonction d'analyse est utilisée dans Rexx pour prendre une valeur de chaîne, puis la décomposer en mots. Dans l'exemple ci-dessus, les mots sont ensuite fractionnés puis stockés dans les variables de mot.

La sortie du programme ci-dessus serait la suivante -

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

Un autre exemple d'analyse est montré dans le programme suivant. Cette fois, nous utilisons une clause while pour effectuer l'analyse.

Exemple

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

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

Le programme ci-dessus donnera la sortie suivante -

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

Analyse positionnelle

Rexx permet également de travailler avec une analyse positionnelle. Voyons un exemple de la façon dont nous pouvons réaliser une analyse positionnelle avec l'instruction parse.

Exemple

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

À partir de l'exemple ci-dessus, vous pouvez noter qu'avec le nom de la variable, nous spécifions également où la chaîne doit se terminer. Donc, pour name1, nous devrions terminer par le 11ème caractère, puis commencer l'analyse de name2.

La sortie du programme ci-dessus sera la suivante -

Doe 
John M. 
03/03/78 
Mumbai 
India

Vous pouvez aussi utiliser relative positional parsing dans ce cas.

Exemple

/* 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 sortie du programme ci-dessus sera comme indiqué ci-dessous.

Doe 
John M. 
03/03/78 
Mumbai 
India