> Tech > Engranger les bénéfices

Engranger les bénéfices

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

  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

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

Comment sécuriser une PME avec l’approche par les risques ?

Comment sécuriser une PME avec l’approche par les risques ?

Disposant de moyens financiers et humains contraints, les PME éprouvent des difficultés à mettre en place une véritable stratégie de cybersécurité. Opérateur de services et d’infrastructures, Naitways leur propose une approche pragmatique de sécurité « by design » en priorisant les risques auxquelles elles sont confrontées.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010