Ceux qui pensent que le SQL imbriqué est source de confusion et se demandent pourquoi s'en préoccuper, seront peut-être surpris en voyant la simplicité avec laquelle on peut imbriquer des fonctions scalaires dans les applications. Pour illustrer cela, examinons à nouveau la fonction scalaire DayOfWeek. La figure 1A présente un
Le mécanisme des fonctions scalaires imbriquées
programme de service dans lequel la procédure RtvDayOfWeek extrait le jour de la semaine pour une date donnée. Cette procédure accepte un champ date et renvoie une valeur indiquant le jour de la semaine auquel la date tombe. Le programme définit d’abord une date Sunday arbitraire ( Some Sunday ) sur laquelle RtvDayofWeek fonde ses calculs. Ensuite, la procédure détermine le nombre de jours entre SomeDay et la date fournie en entrée (DateIn). Enfin, la procédure utilise un modulo arithmétique pour convertir ce nombre de jours en une valeur comprise entre 0 et 6 et ajoute 1 avant de renvoyer la valeur à l’appelant. On pourra s’étonner que la procédure utilise des opérations %Rem imbriquées (nested) ; mais la procédure fait cela pour traiter toutes les dates d’entrée sans qu’il soit nécessaire de s’ajuster aux dates antérieures à la date scindée arbitraire SomeSunday.
Voyons maintenant un programme de service équivalent (figure 1B) qui utilise la fonction scalaire SQL DayOfWeek. Dans cet exemple, la procédure RtvDayOfWeek accepte à nouveau un champ date comme entrée et renvoie une valeur de 1 à 7 qui indique le jour de la semaine auquel la date tombe. Toutefois, dans ce cas, aucun calcul n’est nécessaire. La procédure définit simplement une variable hôte (DayOfWeekNbr) dans laquelle la fonction scalaire DayOfWeek place la valeur, puis exécute la fonction SQL pour extraire le jour de la semaine. Pour exécuter les instructions SQL dans vos programmes RPG, utilisez la forme générale :
C/exec SQL
C+ YourSQLStatement
C/end-exec
où YourSQLStatement est l'instruction SQL que vous voulez exécuter. Notez que dans la figure 1B, la procédure utilise l'instruction Set pour attribuer une valeur à une variable hôte. Notez également que la syntaxe SQL requiert qu'un signe deux-points précède le nom de la variable hôte. Vous vous interrogez peut-être sur l'avantage de la méthode SQL. Après tout, ces deux programmes de service sont pratiquement de même longueur et complexité. Je pourrais répondre que la méthode de la fonction scalaire est plus claire et moins sujette à erreur, mais ces exemples démontrent seulement le mécanisme d'utilisation des fonctions scalaires en RPG. Dans un code plus complexe, nous verrons que les avantages peuvent être plus substantiels.
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
- Travail hybride : pourquoi les salariés français restent les plus attachés au bureau en Europe
- Pourquoi la souveraineté des données relève du contrôle et non de la géographie
- L’incident OpenAI–Hugging Face n’est pas la révolution que vous imaginez
- Pourquoi les PME ne peuvent plus se permettre de négliger la sécurité de leur parc d’imprimantes
Articles les + lus
Couchbase lance AI Data Plane pour industrialiser l’IA agentique
Windows 11 : Microsoft généralise le point-in-time restore pour accélérer la remise en service des PC
Computex 2026 : 5 signaux forts à retenir
La chaîne d’approvisionnement, point de rupture récurent du SI
Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
À la une de la chaîne Tech
- Couchbase lance AI Data Plane pour industrialiser l’IA agentique
- Windows 11 : Microsoft généralise le point-in-time restore pour accélérer la remise en service des PC
- Computex 2026 : 5 signaux forts à retenir
- La chaîne d’approvisionnement, point de rupture récurent du SI
- Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
