> Tech > Connaître les éléments de base

Connaître les éléments de base

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

La figure 2 montre le code RPG IV pour une procédure simple. Cette procédure EndOfMonth renvoie une date qui représente la fin du mois pour toute date spécifiée (jusqu'au 1er décembre 9999). Pour exécuter cette procédure dans un programme, il faut inclure l'appel de procédure dans une expression. Par exemple

Connaître les éléments de base

:

EndDate = EndOfMonth(TodaysDate);
ou
If ShipDate <= EndOfMonth(TodaysDate);
BillCycle = *On;
Else
BillCycle = *Off;
Endif;

La figure 2 met en evidence les
points forts pour coder la procédure
elle-même. En A, j’ai inclus le
mot-clé NoMain dans la spécification
de contrôle pour le membre
source. Ce mot-clé indique que le
membre source n’a pas de procédure
principale et, par conséquent,
ne peut pas lui-même être un programme
complet. Il sera plutôt
compilé dans un objet *MODULE
et le module résultant sera ensuite
lié dans un programme (ou un programme
de service, que nous verrons
plus loin).
La définition de prototype (les
deux D-specs codées en B) fournit
quelques règles au compilateur
pour qu’il sache à  quoi ressemble
l’interface d’appel de EndOfMonth
– c’est-à -dire, le nom de la procédure,
les attributs de données de la
valeur de renvoi, le nombre de paramètres
à  transmettre, leurs attributs
de données, et la méthode de
transmission des paramètres. La
première ligne du prototype
nomme la procédure et définit les
attributs de données de sa valeur
de renvoi (le champ résultat). Les
lignes suivantes dictent les attributs
de données des éventuels paramètres
qui seront transmis et leur
méthode de transmission.
Dans la figure 2, la première
ligne du prototype indique que
EndOfMonth renverra une date à 
son appelant. La ligne suivante précise
que le premier (et seul) paramètre
est aussi une date. Si cette
procédure devait avoir plus d’un
paramètre, le prototype aurait des
lignes supplémentaires après le
premier paramètre. Dans cet
exemple, le mot-clé Value empêche
le stockage de la procédure appelante
d’être modifiée par la procédure
appelée ; si le code dans la
procédure EndOfMonth change la
valeur du paramètre, le reste du
programme ne reconnaîtra pas le
changement.
Je dois ajouter une définition
de prototype dans chaque membre
source qui inclut une référence à  la
procédure EndOfMonth – non seulement
dans le membre source qui
définit la procédure EndOfMonth
mais aussi dans chaque membre
source qui appelle EndOfMonth –
afin que le compilateur puisse vérifier
l’interface d’appel au moment
de la compilation. Le prototype
permet au compilateur de vérifier
si l’interface contient une procédure,
même si le code d’implémentation
de la procédure existe dans
un autre membre source (ou
même s’il n’a pas encore été codé).
En incluant un prototype dans
chaque membre source qui fait référence
à  une procédure, on permet
au compilateur de savoir ce
que devraient être la valeur de renvoi
et les paramètres. Il est bon de
stocker tous les prototypes dans un
membre /COPY pour les incorporer
ensuite plus facilement dans vos
programmes.
La définition de procédure elle-même commence avec la première spécification de limite de
procédure (figure 2 en C) et se termine avec le P-spec final
(en G). Les P-specs délimitent les limites de début et de fin
de la procédure – indiquées par le B ou le E en colonne 24.
Comme cette procédure se trouve dans un membre source
indépendant, qui se veut accessible aux autres portions du
programme en dehors de ce membre source, j’ai inclus le
mot-clé Export sur le P-spec de début (en C). Sans le mot-clé
Export, les autres parties du programme, codées dans
d’autres membres sources, seraient incapables d’appeler la
procédure EndOfMonth.
L’interface de procédure, codée en D, sert de liste des paramètres
d’entrée pour la procédure. Comme le prototype,
l’interface de procédure définit les attributs de la valeur de
renvoi et énumère les paramètres que la procédure acceptera.
Toutefois, contrairement au prototype, l’interface de
procédure définit en fait les variables qui accepteront ces paramètres.
Dans ce cas, le seul paramètre sera référé comme
InDate dans la procédure.
Les éventuelles données (variables, structures de données,
constantes) définies entre les limites des deux P-specs
sont locales vis-à -vis de la procédure EndOfMonth. Ces variables
locales incluent la variable paramètre InDate, ainsi
que le champ de travail DayOfMonth (codé en E). Le code à 
l’extérieur de la procédure EndOfMonth ne peut pas faire référence
aux variables déclarées à  l’intérieur de la procédure.
Le reste de la procédure en figure 2 est un code RPG IV
relativement classique et familier, à  l’exception de l’opération
Return, codée en F. Si une procédure a une valeur de
renvoi, l’opération Return retransmet la valeur de renvoi à  la
procédure appelante. Pour le renvoi, j’ai trois choix : la valeur
d’une variable, un littéral ou une expression. Dans ce cas, je
renvoie la valeur de l’expression

(InDate = %DAYS(DayOfMonth))

qui sera une date représentant la fin du
mois. L’opération Return quitte la procédure
et redonne le contrôle à  la procédure
appelante.

Téléchargez cette ressource

Guide de Sécurité IA et IoT

Guide de Sécurité IA et IoT

Compte tenu de l'ampleur des changements que l'IA est susceptible d'entraîner, les organisations doivent élaborer une stratégie pour se préparer à adopter et à sécuriser l'IA. Découvrez dans ce Livre blanc Kaspersky quatre stratégies efficaces pour sécuriser l'IA et l'IoT.

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