> Tech > Trucs & Astuces : requêtes RPG, commandes IFS

Trucs & Astuces : requêtes RPG, commandes IFS

Tech - Par iTPro.fr - Publié le 24 juin 2010
email

Les trucs & astuces de la semaine du 26 Juin au 2 Juillet 2006

Trucs & Astuces : requêtes RPG, commandes IFS

Il arrive que l’on veuille enlever certains caractères d’une chaîne en RPG. A cet effet, j’ai créé la procédure RmvChars (Remove characters) que je place dans le programme de service StringRtns, lui aussi de mon cru. Si vous avez un programme de service similaire pour des routines associées à des chaînes, vous pouvez simplement ajouter la procédure RmvChars. RmvChars accepte les paramètre d’entrée suivants :

• String
Chaîne d’où seront ôtés les caractères indésirables
• Caractères to remove
Champ contenant la liste des caractères à enlever

Pour accepter des paramètres de toute longueur (jusqu’à leur longueur maximale définie), la procédure spécifie les mots-clés Varying et Options (*VarSize) sur les définitions de paramètres. Comme chaque programme qui appelle la procédure RmvChars aura besoin du prototype, je l’ai placée dans son propre membre (figure 1). Quand vous en aurez besoin, vous pourrez utiliser la directive de compilateur /COPY pour amener le prototype dans votre programme. Si vous avez vos propres routines associées aux chaînes, les prototypes les concernant devraient être placés dans ce « copybook ».

La logique de suppression des caractères indésirables est simple et directe. Dans le programme de service StringRtns (figure 2), la procédure utilise un bloc For/EndFor pour faire une itération dans la liste des caractères indésirables (%Subst extrait chaque caractère) et les enlève de la chaîne d’entrée. Comme chaque caractère indésirable peut apparaître plusieurs fois dans la chaîne, la procédure scrute et supprime, de manière répétitive, chaque occurrence à l’intérieur d’un bloc DoU/EndDo. La boucle Do se termine quand %Scan ne trouve pas le caractère objet de sa recherche. Le bloc Monitor/EndMon rend cela possible.

Sans lui, %Replace causerait une exception quand %Scan n’a pas trouvé un caractère. Cela se vérifie parce que %Scan renvoie (0) zéro quand il ne trouve pas un caractère, et %Replace utilise ce résultat pour identifier la position dans la chaîne où le remplacement doit se produire. La position 0 n’est pas une valeur valide pour cet argument. Quand l’exception se manifeste, Monitor l’intercepte et passe le contrôle à la section On-Error où une condition (CharNotFound) est définie, qui met fin à la boucle Do. Le programme de la figure 3 montre bien la simplicité d’emploi de la procédure RmvChars. Il affiche simplement la chaîne originale, enlève les caractères point et virgule, puis affiche la chaîne modifiée.

Téléchargez cette ressource

Les mégatendances cybersécurité et cyber protection 2024

Les mégatendances cybersécurité et cyber protection 2024

L'évolution du paysage des menaces et les conséquences sur votre infrastructure, vos outils de contrôles de sécurité IT existants. EPP, XDR, EDR, IA, découvrez la synthèse des conseils et recommandations à appliquer dans votre organisation.

Tech - Par iTPro.fr - Publié le 24 juin 2010