> Tech > Externaliser les touches de fonctions

Externaliser les touches de fonctions

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

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.

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

HP Elite Slice G2 : optimisez la collaboration… et votre budget !

HP Elite Slice G2 : optimisez la collaboration… et votre budget !

Téléchargez cette étude Forrester et découvrez comment booster la collaboration tout en dégageant un excellent R.O.I grâce au système de vidéoconférence HP Elite Slice G2 avec Microsoft Teams !

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