par Jeff Yanoviak - Mis en ligne le 20/07/2005 - Publié en Novembre 2004
Excepté les îles Galapagos, peu de choses démontrent autant la diversité de
l'évolution que les techniques de coding rencontrées en visitant des sites en
Europe. La boîtes à outils de programmation de l'iSeries offre pléthore d'outils
nous permettant de réaliser le même travail de plusieurs manières, plus ou
moins élégantes.
Depuis l'origine d'ILE, les pointeurs de procédure nous accompagnent. Ils
sont un peu comme le mouton noir de la famille : on ne les voit pas souvent.
C'est dommage car ils ont beaucoup à offrir sur le plan de la dynamique et de
la souplesse ...Cet article donne un exemple pratique d'utilisation des pointeurs de procédure.
Il contient aussi des éléments applicables dans de plus grandes applications.
Mon exemple présente les pointeurs de procédure, démontre leur
souplesse et stocke nettement tout le code de touches de fonction dans un
bloc de code visible, accessible, facile à
maintenir, à la fin du module. De sorte que
les procédures n'encombrent pas le corps
du module principal.
Externaliser les touches de fonctions
Que ceux d’entre vous qui ne sont pas familiarisés
avec les pointeurs sachent qu’ils
les utilisent pourtant depuis longtemps.
Quand on définit un champ,
on définit en réalité un pointeur : statique
certes, mais pointeur quand même. Quand le programme s’exécute, le système
alloue le stockage chargé de contenir la définition du champ et associe
l’adresse de l’emplacement du stockage au nom du champ.
Un pointeur est une variable dynamique qui peut contenir toute adresse de
stockage choisie pendant l’exécution. Un pointeur de procédure est un
pointeur qui contient l’adresse d’une procédure exécutable (c’est-à -dire un
programme, la procédure principale d’un module, ou l’une de ses sous-procédures) qui est liée au programme en
cours d’exécution.
Si vous définissez Field_A comme un
champ alphabétique de 11 octets initialisé à
« Hello World », il y a quelque part dans le
stockage un emplacement contenant
« Hello World ». Si vous voulez le trouver,
vous pouvez utiliser la fonction intégrée
%Addr (obtenir l’adresse de la variable)
pour l’extraire :
Eval Ptr = %Addr(Field_A)
Si vous voulez déterminer l’emplacement
d’une procédure nommée Proc_A qui
affiche « Hello World », vous pouvez utiliser
la fonction intégrée %PAddr (obtenir
l’adresse de procédure) :
Eval Ptr = %PAddr('Proc_A')
Il existe une différence entre les pointeurs et les pointeurs
de procédure : s’il est vrai que vous n’avez pas besoin
de définir les variables pointeur dans le code, vous devez définir
les pointeurs de procédure comme type procptr – c’est
un champ de 16 octets indiqué par un astérisque
(*) dans la colonne 40 de votre carte
D.
roc (provenant de l’exemple ci-dessus) se
présenterait ainsi :
D Proc S * procptr inz(*null)
Téléchargez cette ressource
Guide de Threat Intelligence contextuelle
Ce guide facilitera l’adoption d’une Threat Intelligence - renseignement sur les cybermenaces, cyberintelligence - adaptée au "contexte", il fournit des indicateurs de performance clés (KPI) pour progresser d' une posture défensive vers une approche centrée sur l’anticipation stratégique
Les articles les plus consultés
- IBM i célèbre ses 25 ans
- Afficher les icônes cachées dans la barre de notification
- Partager vos images, vidéos, musique et imprimante avec le Groupe résidentiel
- N° 2 : Il faut supporter des langues multiples dans SharePoint Portal Server
- Cybersécurité Active Directory et les attaques de nouvelle génération
Les plus consultés sur iTPro.fr
- Scality bouscule le marché du stockage avec une cyber garantie de 100 000 $
- Portails développeurs internes : accélérer l’innovation sans alourdir les budgets
- L’intelligence de « l’innovation actionnable » pour anticiper les disruptions plutôt que les subir
- Stratégie de cyber résilience : la France en avance sur la prise de conscience mais en retard sur les moyens
Articles les + lus
Analyse Patch Tuesday Mars 2026
Confiance et curiosité : les clés pour entrer (et grandir) en tant que femme dans la tech
Portails développeurs internes : accélérer l’innovation sans alourdir les budgets
Pourquoi Shopify Plus s’impose dans la transformation du e-commerce B2B
Quand l’innovation échappe à ses créateurs: Comment éviter l’effet Frankenstein à l’ère de l’IA
À la une de la chaîne Tech
- Analyse Patch Tuesday Mars 2026
- Confiance et curiosité : les clés pour entrer (et grandir) en tant que femme dans la tech
- Portails développeurs internes : accélérer l’innovation sans alourdir les budgets
- Pourquoi Shopify Plus s’impose dans la transformation du e-commerce B2B
- Quand l’innovation échappe à ses créateurs: Comment éviter l’effet Frankenstein à l’ère de l’IA
