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’