Considérons les tables article maître (Item_Mast) et prix article (Item_Price),
figure 9. Comme les prix peuvent changer à n'importe quelle date, la table des
prix peut contenir plusieurs prix pour chaque article de la table maître.
Supposons qu'un utilisateur veuille obtenir la liste des articles avec les seuls
prix
Les UDF en production
d’aujourd’hui. La colonne prix du rapport devra indiquer (en imprimant « inconnu »,
par exemple) si un enregistrement prix de base est manquant ou si un article n’a
pas de prix courant. Il est difficile d’extraire les données nécessaires avec
une instruction Select sans UDF, comme le montre la figure 10. Pour s’assurer
que la dernière date effective (à la date du jour ou avant) est le seul enregistrement
sélectionné, il faut une sous-requête corrélée. Tandis qu’en écrivant une UDF
appelée RtvPrice, on peut réduire le SQL à l’instruction Select, figure 11.
La figure 12 présente l’instruction Create Function qui définit l’UDF RtvPrice.
La fonction a deux paramètres, item (article) et date effective (Eff_date), et
renvoie le dernier prix de base en vigueur à la date effective ou avant. La figure
13 présente le programme ILE RPG de l’UDF.
La section de code est constituée d’une instruction de position et d’un état de
lecture suivis d’une vérification pour voir si le prix a été trouvé. Si aucun
prix n’est trouvé, la variable d’indicateur null de la colonne de résultat (price_ind)
est mise à -1 afin que le résultat de l’UDF soit null.
Il faut bien veiller à ce qu’une fichier traite toutes les conditions d’erreur.
Si une fonction ne traite pas certaines erreurs, SQL s’en chargera, au risque
de fournir des résultats déplaisants. En général, une erreur UDF non traitée amène
SQL à répondre par une annulation, à tout message CPF qu’il reçoit, à terminer
l’exécution de l’instruction, et à émettre son propre message d’erreur sous la
forme d’un message informationnel ou d’un message d’échappement (selon l’application
SQL). Il est donc fortement conseillé de ne pas laisser les UDF se terminer anormalement.
Les programmes utilisant SQL doivent vérifier la variable SQLState après chaque
opération SQL. Les UDF écrites en CL doivent comporter des commandes MONMSG (Monitor
Message) aux endroits appropriés. Les UDF RPG peuvent utiliser la fonction intégrée
%Error sur les codes opération d’I/O appropriés (Les codeurs en RPG III peuvent
utiliser l’indicateur LO) et la sous-routine de traitement d’erreur *PSSR.
Figure 13, la sous-routine de traitement d’erreur *PSSR intercepte toutes les
erreurs de programmation (une erreur de donnée décimale, par exemple). En présence
d’une condition d’erreur, le programme donne aussitôt la main à cette sous-routine.
De même, comme Infsr(*PSSR) est indiqué sur la carte F, les éventuelles erreurs
associées au fichier Item_Price invoqueront aussi la sous-routine *PSSR.
Notons que le fichier est ouvert manuellement (alors que RPG ouvre le fichier
automatiquement). Donc, si l’opération Open échoue, la sous-routine *PSSR traitera
l’erreur. Cette sous-routine se contente de mettre SQL State à une condition d’erreur
(« 38I02 ») et de donner au paramètre Message Text le texte de message d’exception
extrait de la structure de données d’état du programme. L’application SQL qui
appelle la fonction aura son SQL State mis à « 38I02 » et le champ SQLErrMc dans
la SQLCA (SQL Communication Area) reçoit le texte de message associé.
Téléchargez cette ressource
Plan de sécurité Microsoft 365
Les attaquants savent comment prendre le contrôle de votre tenant Microsoft 365, et vous, savez-vous comment le reprendre en main ?
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Les coûts cachés des merge requests générées par l’IA
- WatchGuard lance Rai, une IA agentique taillée pour les MSP
- Mythos révèle les limites d’un Zero Trust centré sur le réseau
- Faire évoluer la souveraineté des données du statut d’ambition politique à son application opérationnelle
Articles les + lus
Analyse Patch Tuesday Mai 2026
Les coûts cachés des merge requests générées par l’IA
Femmes et métiers de la tech : une attractivité réelle freinée par des stéréotypes persistants
Moderniser le développement logiciel : de la fragmentation à l’intégration
Analyse Patch Tuesday Avril 2026
À la une de la chaîne Tech
- Analyse Patch Tuesday Mai 2026
- Les coûts cachés des merge requests générées par l’IA
- Femmes et métiers de la tech : une attractivité réelle freinée par des stéréotypes persistants
- Moderniser le développement logiciel : de la fragmentation à l’intégration
- Analyse Patch Tuesday Avril 2026
