fr en

RPG FreeForm - %SCANRPL

Fonction :

Permet de rechercher une chaine de caractères dans une chaine de caractères et de la remplacer par une autre chaine de caractères.

  •  

  •  

Syntaxe :

ma_chaine_resultat = %SCANRPL( ma_chaine_à_rechercher : ma_chaine_de_remplacement : ma_chaine_à_scanner : position_de_debut : longueur )

Avec en paramètres obligatoires :

  • ma_chaine_resultat : variable alphanumérique qui contiendra le résultat de l’opération.
  • ma_chaine_à_rechercher : chaine de caractères qui sera recherchée dans la chaine de caractères à scanner.
  • ma_chaine_de_remplacement : chaine de caractères qui remplacera chaque occurrence de la chaine à rechercher.
  • ma_chaine_à_scanner : chaine de caractères à scanner.

Et en paramètres facultatifs :

  • position_de_debut : position à partir de laquelle commencera la recherche et le remplacement.
  • longueur : longueur de la chaine de caractères qui sera scannée à partir de la position de début.

Les paramètres facultatifs permettent de ne pas traiter toute la chines de caractères à scanner en limitant la recherche à la portion définie par la position de début et la longueur à prendre en compte.

 

Exemples :


 DCL-S    s_chaine_a_scanner    varchar(50) inz(‘Ma chaine : A – B – C – AB – ABC’) ;
 DCL-S    s_resultat                      varchar(50) inz;

//——————————————————————————————————————
// Remplacer les ‘A’ par des ‘Z’
//——————————————————————————————————————
 s_resultat = %SCANRPL(‘A’, ‘Z’, s_chaine_a_scanner);

// => s_resultat = ‘Ma chaine : Z – B – C – ZB – ZBC’

 

//——————————————————————————————————————
// Remplacer ‘AB’ par ‘Z’
//——————————————————————————————————————
 s_resultat = %SCANRPL(‘AB’, ‘Z’, s_chaine_a_scanner);

// => s_resultat = ‘Ma chaine : A – B – C – Z – ZC’

 

//——————————————————————————————————————
// Remplacer ‘AB’ par ‘Z’ mais seulement sur les caractères de la position 21 à 26 de la chaine à scanner
//——————————————————————————————————————
 s_resultat = %SCANRPL(‘AB’, ‘Z’, s_chaine_a_scanner, 21, 6);

// => s_resultat = ‘Ma chaine : A – B – C – Z – ABC’

 

//——————————————————————————————————————
// Supprimer les espaces :
//——————————————————————————————————————
 s_resultat = %SCANRPL(‘ ‘,  », s_chaine_a_scanner);

// => s_resultat = ‘Machaine:A-B-C-AB-ABC’

 

//——————————————————————————————————————
// Supprimer les espaces et les tirets :
//——————————————————————————————————————
 s_resultat = %SCANRPL(‘ ‘,  », %SCANRPL(‘-‘,  », s_chaine_a_scanner));

// => s_resultat = ‘Machaine:ABCABABC’