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

Rapport Forrester sur la sécurité des workloads cloud (CWS)
Dans son rapport, Forrester Consulting passe au crible et note les produits des 13 principaux fournisseurs de solutions de sécurité des workloads cloud (CWS). Bénéficiez d’un état des lieux complet du marché, explorez tous les enjeux associés à la convergence des fonctions de sécurité cloud et les avantages des solutions complètes.
Les articles les plus consultés
- Et si les clients n’avaient plus le choix ?
- Activer la mise en veille prolongée dans Windows 10
- Partager vos images, vidéos, musique et imprimante avec le Groupe résidentiel
- Afficher les icônes cachées dans la barre de notification
- Cybersécurité Active Directory et les attaques de nouvelle génération
Les plus consultés sur iTPro.fr
- Les stratégies IA pour la survie de l’entreprise !
- Protégez l’accès non authentifié de vos réunions
- Télécommunications et durabilité : les défis d’une transition verte dans un secteur en mutation
- Vulnerability Operation Center : concepts, mise en œuvre et exploitation
- Faire face à l’évolution des cyberattaques : l’urgence d’une cybersécurité proactive
