> Tech > Compilation conditionnelle en RPG

Compilation conditionnelle en RPG

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

par Julian Monypenny Mis en ligne le 17/01/2006 - Publié en Mai 2005

Aimeriez-vous
• désactiver le code sans le retirer d’un programme ?
• permuter entre plusieurs versions d’une procédure pendant le développement?
• compiler les fonctions du langage pour différentes releases cibles ?
• basculer sur les traces de données pendant le test ?
• utiliser des définitions centrales des types de données et des prototypes de procédures ?

Si vous avez répondu oui à une ou plusieurs des questions ci-dessus, il vous faut la compilation conditionnelle. C’est pourquoi je l’explique ici et montre comment l’utiliser pour résoudre ces problèmes.

La compilation conditionnelle dit à l’ordinateur ce qu’il doit compiler. A l’aide de directives et d’options de compilateur, elle ordonne au compilateur d’inclure ou d’exclure des sections de source facultatives. Le processus est contrôlé par des noms de conditions et des directives de compilation conditionnelle.

Un nom de condition est un commutateur logique connu du compilateur. Celui-ci gère une liste des noms de conditions. La directive /DEFINE ajoute un nom de condition à la liste du compilateur. Par exemple,
/DEFINE VERSION1
ajoute le nom de condition VERSION1 à la liste. Un programme peut définir des noms de conditions multiples. On peut aussi spécifier jusqu’à 32 noms de conditions en utilisant le paramètre DEFINE des commandes CRTBNDRPG (Create Bound RPG Program) et CRTRPGMOD (Create RPG Module):
CRTBNDRPG
.
.
/DEFINE(VERSION1)

La directive /UNDEFINE supprime un nom de condition de la liste du compilateur. Par exemple,
/UNDEFINE VERSION1
enlève le nom de condition VERSION1 de la liste.

Le compilateur RPG définit les noms de conditions suivants au début de chaque compilation :

*ILERPG définit le compilateur.
*CRTBNDRPG ou *CRTRPGMOD définitla commande qui appelle le compilateur.
*VxRxMx définit la version du compilateur en progressant à partir de V4R4M0. Par exemple, *V5R3M0 est défini par le compilateur V5R3 et
*V5R1M0 est défini par tous les compilateurs depuis la V5R1.

Les directives /IF, /ELSEIF, /ELSE et /ENDIF contrôlent les lignes de source traitées par le compilateur. Le bloc de condition
/IF DEFINED(VERSION1)
.
.
.
/ENDIF

ordonne au compilateur de traiter les lignes de source entre les directives /IF et /ENDIF si le nom de condition VERSION1 est défini. Si VERSION1 n’est pas défini, le compilateur saute à la ligne qui suit la directive /ENDIF.

Le bloc de condition négatif
/IF NOT DEFINED(VERSION1)
.
.
.
/ENDIF

ordonne au compilateur de traiter les lignes de source entre les directives /IF et /ENDIF si le nom de condition VERSION1 n’est pas défini.

Les directives /ELSEIF et /ELSE peuvent être ajoutées entre les directives /IF et /ENDIF pour créer des blocs de conditions avec des sections de code alternatives :

/IF DEFINED(VERSION1)
.
.
.
/ELSEIF DEFINED(VERSION2)
.
.
.
/ELSEIF DEFINED(VERSION3)
.
.
.
/ELSE
.
.
.
/ENDIF

Les expressions de condition sur les directives /IF et /ELSEIF servent simplement à tester si un nom de condition est actuellement défini ou non. Les expressions logiques complexes avec AND et OR ne sont pas acceptées. En revanche, les blocs de conditions imbriqués le sont.

Une directive finale, /EOF, force le compilateur à sauter à la fin du membre source courant sans traiter les lignes restantes :

/IF DEFINED(VERSION1)
/EOF
/ENDIF

Cette directive est particulièrement utile dans les membres de copy, comme nous le verrons plus loin.

Les directives de compilation conditionnelle peuvent être codées n’importe où dans un membre source, sauf dans les données de compilation à la fin du membre. Les directives peuvent être en retrait si elles sont codées dans les sections en format libre d’un programme, et ce bien que le RPG IV Reference d’IBM indique qu’elles doivent commencer en colonne 7.

Téléchargez gratuitement cette ressource

Endpoint Security : Etude IDC Enjeux & Perspectives

Endpoint Security : Etude IDC Enjeux & Perspectives

Quel est l'état de l'art des solutions de Endpoint Security et les perspectives associées à leur utilisation ? Comment garantir la sécurité des environnements sensibles en bloquant au plus tôt les cyber attaques sophistiquées, avant qu’elles n'impactent durablement vos environnements de travail ?

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