Voyons un exemple avec des avantages plus évidents . L' ISO (International Standards Organization) définit un standard (ISO 8601) pour calculer la semaine de l'année dans laquelle tombe une certaine date. Selon ce standard, lundi marque le début de la semaine et la première semaine d'une année contient le premier
Engranger les bénéfices
![Engranger les bénéfices Engranger les bénéfices](https://www.itpro.fr/wp-content/uploads/2015/05/6c7c044dcb99d960627807aec5c3df77.jpg)
jeudi de l’année. Il s’en suit que la première semaine de l’année est celle qui contient le 4 janvier. Ecrire le code qui appliquera ces règles peut sembler simple à première vue. Et bien, sachez qu’un tel code réserve quelques surprises. Le fait que les semaines puissent chevaucher deux années calendaires accentue la complexité. La figure 2A montre un programme RPG qui calcule la valeur semaine de l’année (week-of-year) pour une date arbitraire (en pratique, on coderait un programme de service pour opérer sur n’importe quelle date).
Le programme contient deux procédures, RtvDayOfWeek et RtvISOWeek. L’exemple précédent vous a déjà familiarisé avec la procédure RtvDayOfWeek (figure 2A, en A). La procédure RtvISOWeek utilise RtvDayOfWeek pour appliquer la norme ISO 8601. La procédure RtvISOWeek accepte une date comme entrée et renvoie une valeur qui indique le numéro de la semaine standard en ISO 8601 dans laquelle tombe la date. Les définitions de données de RtvISOWeek commencent avec une structure de données que la procédure utilise pour construire une date 4 janvier et continue avec des variables utilisées dans les calculs de la procédure. La procédure calcule d’abord la date du dernier jour de la semaine (Sunday) dans lequel tombe la date cible. Toutes les dates qui tombent dans la semaine se terminant par ce Sunday (dimanche) sont dans la même semaine de l’année. Souvenez-vous qu’une semaine peut franchir les limites de l’année calendaire. Ensuite, RtvISOWeek construit une date 4 janvier en utilisant l’année juste calculée. La procédure utilise cette date pour tirer la date du premier Monday (lundi) de cette année.
Ensuite, la procédure calcule la valeur semaine de l’année (week-of-year) et la renvoie à l’appelant. Elle calcule le nombre de jours (Days) entre la fin de la semaine cible (SundayDate) et le premier Monday de l’année calculée (MondayDate). Une valeur négative pour ce nombre de jours indique que la semaine se termine avant le premier Monday de l’année calculée. Dans ce cas, la procédure décrémente l’année (utilise l’année précédente) et recalcule le nombre de jours entre la fin de la semaine cible et ce nouveau premier Monday de l’année. La procédure divise ensuite ce nombre de jours écoulés par sept. Quand le résultat de cette division est non négatif, RtvISOWeek ajoute 1 pour tirer la valeur week-ofyear (ISOWeek). La procédure définit la valeur week-of-year à 53 quand le nombre de jours écoulés est une valeur négative. Finalement, RtvISOWeek renvoie la valeur week-of-year à son appelant. Vous conviendrez que ce code est confus et prédisposé à l’introduction d’erreurs. Voyons maintenant l’instruction SQL Select suivante qui extrait une date et sa valeur week-of-year ISO 8601 associée :
Select SomeDate, Week_ISO(SomeDate) From SomeFile
à‡a semble simple, n’est-ce pas ? Voyons comment vous pouvez utiliser le support de la V5R1 pour la fonction scalaire Week_ISO dans un programme RPG. La figure 2B présente un programme de fonction identique à l’exemple précédent, mais utilise Week_ISO pour remplacer la logique du calcul de la semaine de l’année dans laquelle tombe une date. Le programme définit simplement une variable hôte (ISOWeek) dans laquelle placer la valeur week-of-year, puis utilise une instruction SQL Set pour attribuer la valeur à cette variable. Les avantages des fonctions scalaires SQL devraient maintenant apparaître clairement. La méthode SQL utilise beaucoup moins de code que la méthode RPG seule, est bien plus facile à comprendre et prête peu le flanc aux erreurs.
Téléchargez cette ressource
![Guide inmac wstore pour l’équipement IT de l’entreprise](https://www.itpro.fr/wp-content/uploads/2024/04/Guide-inmac-wstore-Juillet-2024.jpg)
Guide inmac wstore pour l’équipement IT de l’entreprise
Découvrez les dernières tendances et solutions IT autour des univers de Poste de travail, Affichage et Collaboration, Impression et Infrastructure, et notre nouveau dossier thématique sur l’éco-conception et les bonnes pratiques à adopter pour réduire votre impact environnemental.
Les articles les plus consultés
- Activer la mise en veille prolongée dans Windows 10
- Chiffrements symétrique vs asymétrique
- N° 2 : Il faut supporter des langues multiples dans SharePoint Portal Server
- Partager vos images, vidéos, musique et imprimante avec le Groupe résidentiel
- Afficher les icônes cachées dans la barre de notification