> Tech > A vos marques, prêts, Feu ! Pour l’utilisation de l’instruction SQL Set

A vos marques, prêts, Feu ! Pour l’utilisation de l’instruction SQL Set

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

Dans cette série d'articles, j'ai présenté SQL de manière assez systématique. J'ai commencé par la clause Select de l'instruction Select, puis je suis passé à  la clause Where et à  ses divers prédicats, et ai poursuivi avec certains prédicats impliquant des sous-requêtes, sur lesquelles je reviendrai prochainement (pour connaître la liste des articles précédents de cette série, voir l'encadré " Autres articles de cette série ").

Mais pour l'heure, une annonce importante justifie l'interruption momentanée de cette série : on peut utiliser une instruction SQL Set dans n'importe quel programme SQL imbriqué (pour en savoir plus sur l'instruction Set, voir l'article " Des procédures cataloguées en SQL/400 ", par Paul Conte, NEWSMAGAZINE, juin 1998). L'instruction Set permet d'employer n'importe quelle fonction intégrée (ou définie par l'utilisateur) SQL avec des variables hôtes comme paramètres.

SQL possède de nombreuses fonctions intégrées qui rendent des services qui ne sont pas directement disponibles en RPG IV. SQL comporte par exemple un ensemble complet de fonctions mathématiques. Bien que le RPG IV puisse invoquer des fonctions mathématiques via l'API IBM ou des appels de la fonction C, il est bien plus simple de le faire avec l'instruction Set de SQL. Voyons quelques exemples.
Cette instruction Set concise remplace avantageusement plusieurs lignes de code RPG

Sur le forum RPG du site Web as400network.com, il arrive que les programmeurs
demandent comment obtenir le jour de la semaine à  partir d’une date. Je leur réponds
habituellement en leur montrant une sous-procédure RPG IV qui calcule le nombre
de jours écoulés entre la date en question et une date connue. La sous-procédure
divise ensuite le nombre de jours écoulés par sept et prend le reste pour représenter
le jour de la semaine par rapport à  la date connue. Mais il y a un moyen bien
plus simple.



SQL possède une fonction scalaire intégrée appelée DayOfWeek. Cette fonction accepte
un paramètre date unique et renvoie une valeur entre un et sept représentant le
jour de la semaine (un pour dimanche, deux pour lundi, par exemple) pour une date
donnée. Si le champ date est dans l’un des formats caractère ou numérique supportés
(comme *ISO), une seule instruction RPG MoveL (Move Left) convertira le champ
date en un format date natif.



Après avoir converti la date en un champ date natif, on peut utiliser le fragment
de code de la figure 1 pour déterminer le jour de la semaine. Comme Set est une
instruction SQL, elle est prise en sandwich entre les instructions de précompilation
/Exec SQL et /End-Exec. Quand le précompilateur SQL voit ces instructions, il
sait qu’une instruction SQL imbriquée suit. Notons également que le type PDM pour
ce programme doit être SQLRPGLE et pas RPGLE.



L’instruction SQL Set est quelque peu analogue à  l’instruction Eval du RPG. L’instruction
Set attribue une variable à  gauche du signe égal (=) ; la valeur d’exécution de
l’expression est à  droite du signe (=). Dans une instruction SQL imbriquée, comme
l’instruction Set en figure 1, il faut référencer toutes les variables RPG avec
un signe deux-points. Ainsi, nous faisons référence au champ DayOfWk comme :DayOfWk
et au champ NtvDate comme :NtvDate. Après exécution de l’instruction Set, la variable
hôte RPG DayOfWk contiendra une représentation (de un à  sept) du jour de la semaine
correspondant à  la date dans le champ NtvDate. SQL possède également une fonction
intégrée DayOfYear que l’on peut utiliser de la même manière que la fonction DayOfWeek
de la figure 1. On voit bien que cette instruction Set concise remplace avantageusement
plusieurs lignes de code RPG (plutôt mystérieuses).

Téléchargez gratuitement cette ressource

Comment sécuriser la Digital Workplace ?

Comment sécuriser la Digital Workplace ?

Avec le recours généralisé au télétravail, les entreprises ont ouvert davantage leur SI. En dépit des précautions prises, elles ont mécaniquement élargi leur surface d’exposition aux risques. Découvrez 5 axes à ne pas négliger dans ce Top 5 Sécurité du Télétravail.

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