> Tech > Le mécanisme des fonctions scalaires imbriquées

Le mécanisme des fonctions scalaires imbriquées

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

  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 gratuitement cette ressource

Protection des Données : 10 Best Practices

Protection des Données : 10 Best Practices

Le TOP 10 des meilleures pratiques, processus et solutions de sécurité pour mettre en œuvre une protection efficace des données et limiter au maximum les répercutions d’une violation de données.

Tech - Par iTPro - Publié le 24 juin 2010